Review: The Passionate Programmer
As an Elegant Coder, I suffer the fate of sitting in front of a computer screen for large parts of my day, and I can often be found at home in front of one as well. This can promote a fairly sedentary lifestyle if one is not careful. Over the years, I have been both more and less careful in this regard at various times. This has resulted in my current state – a state we will refer to (for purposes of this conversation) – as “overweight”. I’ve participated in a number of weight loss programs over the years until I finally wised up and realized that every successful program had at its heart two common factors – caloric restriction and exercise. I am now actively engaged in working both of those factors until I achieve a state we will call “fit”. However, becoming fit is not an immediate process. It is a daily process requiring both attention and discipline. I’m fond of saying, “It took me 15 years to achieve this weight. Do you expect it to be gone in 30 days?”
The Passionate Programmer: Creating a Remarkable Career in Software Development by Chad Fowler is a book focused on helping you become fit as a developer – leading you along the path of life decisions that make the difference between a job and a remarkable career. As Chad says, “You don’t win a race by trying not to lose. And you don’t win at life by trying not to suck.” You have to be tactical, strategic, and deliberate if you want to avoid your career being “one big series of undirected coincidences.”
I won’t belabor all of the points you can find in this book, but I’d like to call out some things that stood out to me.
- Be the worst
- If you’re the best, nothing is challenging and pushing you to grow/perform. Seek associations with people that are better/faster/smarter than you.
- You’re not as bad as you assume. Give yourself the chance to discover it.
- Practice at your limits
- Chad’s background as a musician provided opportunity to compare skill improvement to music practice. While performances are expected to be as perfect as possible, practice is raw, gritty, and doesn’t always sound good.
- If all you’re ever doing is sitting down churning out elegant code, you’re not pushing at the edges (where all the improvement comes from).
- Study the work of masters
- In the arts (and many other disciplines), much time is given to learning from the work of those that have gone before. In the past, this was more difficult in software development due to its proprietary nature, but the sheer volume and quality of open source projects makes this much more accessible now.
- Existing code reflects on your own capabilities for growth and new avenues of thought.
- Focus on the present
- If your head is always in the clouds of tomorrow, you’ll miss the daily victories.
One topic Chad alluded to but didn’t build much on was approaching your career development in an Agile fashion. I thought this was a great concept, and from some comments on his blog, it looks like he’d like to build on this in the future. My takeaway was that I’d better start my sprint planning for my career.
There were many other points and topics covered including interaction with peers, management, and customers. Chad includes a number of “Act on It” exercises which will challenge you to grow in the areas he covers. Overall, it was a great read with a message I needed to hear, and I’d highly recommend it.






I really like the idea of practicing your limits. One of the largest periods of growth I experienced in unit testing, was when I tried to unit test legacy code using mocks to prevent from calling all the interactions. It really stretched my ability to be able to write good unit tests and understand mocking inside out.
I couldn’t stop reading this book once I started. Compared with The Pragmatic Programmer, this book is more of a motivator to being successful as a programmer.
Did you put this review on Amazon as well? Dave was asking for some reviews there in the Software Craftsman Group.
Ah Cr*p I thought you where talking about an other book
just delete both these comments
I love the guidelines. But it is a little dishearting when it seems that right when I have something cleaned up and improved I am also implementing a new concept that is messy in a new way.