I bought The Passionate Programmer by Chad Fowler during December 2019 sale. It spent a lot of time in my to-read stack. I’ve finally read it in November 2020.
I’ve read the 2nd edition with subtitle Creating a Remarkable Career in Software Development. As far as I understood it, the first edition of the book was called My Job Went to India with subtitle And All I Got Was This Lousy Book.
Both books have pretty good rating at Goodreads. The Passionate Programmer has 3.95 (4,003 ratings) and My Job Went to India has 3.96 (188 ratings). Surprisingly, both books have a decent number of low ratings and reviews.
It was a nice coincidence that I’ve read the book now. I’m working on a blog post with related topic, career development. This book will teach you how to build your career as you would build a product or a company. You are in charge of your career, you should develop it. Assess your current situation, assess the market, make a plan, build your career, invest some time and effort in marketing.
A few tips from the book resonated with me more than others.
Tip 4. Be the Worst
“Always be the worst guy in every band you’re in.” I have heard this advice years ago, probably from the same author. I’ve tried to follow it since. I’ve been in teams where I was obviously the worst and I’ve learned so much.
Tip 7. Be a Generalist
This is a topic I’ve been thinking a lot lately too. As a global society, we are focused too much on specialization. It’s impossible to know everything about everything, of course. It is possible to know the basics of many things.
Everybody should be able to express themselves in some art form. For me it’s playing a few instruments. Everybody should exercise regularly. For me it’s running. The basics of personal finances are really important, but from my experience most people don’t know much about that topic. Those are just a few things that come to my mind at the moment. There are many more.
The same stands for programming. We should know the basics of many technologies. I’m so far away from that, but the more I think about it, the more I’m convinced spending the time on it is time well spent.
Tip 8. Be a Specialist
Sometimes, there are benefits in specialization. For me, it’s test automation. I’ve stumbled upon this career, to be honest. There are a lot of people that are good in programming. There are also a lot of people good in testing. But, to my surprise, a lot of programmers have no clue about testing. Similarly, a lot of testers don’t know how to program. I’m not particularly good at either, but I know a bit of both. Enough of both to make it a career.
Tip 13. Find a Mentor
I don’t think I’ve had an official mentor at any point in my life. A few years ago that was something I’ve thought about a lot. I’ve even asked somebody whose work I admired to be my mentor. He agreed, but I never asked for advice.
I did have a lot of unofficial mentors. I had a few teachers that inspired me to do good work and that gave me opportunities to learn and grow. I’ve had managers and co-workers that taught me important lessons. Either what to do, or what not to do. One manager didn’t take any vacation for 10 years. He taught me that I don’t want to live like that. I take my vacation very seriously. One manager introduced me to Getting Things Done in 2008. It significantly changed my life for the better. He also encouraged me to start blogging. (Way back in 2005.) My current manager introduced me to Deep Work recently. It has already significantly improved my life, and I’ve just started to implement his advice. (Blog post about Deep Work is coming soon.)
Tip 14. Be a Mentor
I’ve been a mentor in a few internships. That was always a lot of fun, but also a lot of work. I would not count those official mentorships to be my main way of giving back. This blog is one way. Organizing and speaking at events (meetups, conferences) is another.
Tip 40. Build Your Brand
Building the brand is something programmers in general are not particularly good at. I include myself in that group. I don’t spend much time on it, but I think that maintaining a blog, organizing and speaking at events are good investments in building the brand.
Tip 41. Release Your Code
The vast majority of the code I wrote in the last few years is under an open source license. I’ve tried to set up my GihHub account to link to it all.
Tip 53. Go Independent
I’ve started freelancing in 2011 as a side job. In 2012 I’ve quit my job and opened a one-man company. Also in 2012, I’ve started working for Wikimedia Foundation as a contractor. I’ve had just a few minor clients since I’ve started working for Wikimedia. I’ve closed my company this year and started working full time for Wikimedia Foundation. I can’t say I had a long freelancing career, but I’ve learned so much in those few years.