The Passionate Programmer

I just finished reading The Passionate Programmer by Chad Fowler. I’ve frequently seen it recommended by more senior developers, and I really enjoyed reading it. The Passionate Programmer is not really a technical book. Instead, it’s divided up into 53 tips to make the most and go the furthest in a career in software development. The overarching idea is to start looking at yourself and your career as a business and take logical steps to make it the most successful and fulfilling career it can be. I came away from the book with a lot of new ideas (53 of them!) and inspiration, but I thought I would just touch on a few of the tips that really stuck with me.

Tip 4) Be the worst.

The author, Chad Fowler, frequently references his previous career as a jazz musician throughout the book. One such time, he mentions that advice often given to musicians is to “Be the worst guy in every band you’re in”. The idea behind this is that if you’re always surrounded by better musicians/developers/etc, you have a lot to learn from going on around you. This will force you to be in an environment where you’re always actively growing and learning. If you’re the best person in the office, there’s a much higher chance that you may not be stretching your abilities on a day to day basis. Being surrounded by more experienced people will force you to up your game. As Fowler writes:

“You find that you’re unexplainably smarter. You even speak and write more intelligently. Your code and designs get more elegant, and you find that you’re able to solve hard problems with increasingly creative solutions.”

As a junior developer in an office with a good number of people with 20+ years of experience, I am, luckily, far from being the best person in my band.

Tip 10) Love it or leave it

Life is short. If you don’t enjoy your job and enjoy the work you’re doing, don’t do it! Being in an environment every day that you hate is no way to work towards a successful and fulfilling career. Chad Fowler writes “You have to be passionate about your work if you want to be great at your work. If you don’t care, it will show.”

As software developers, we’re very privileged to have lots of options in the kind of jobs we can have and the kind of employers we can have. If you don’t feel like your current role is fulfilling, then there’s no point. Maybe you’re not saving the world with your gig, but are you happy every day to go to work? Do you feel like you’re learning every day? Is it fun? If you can’t answer yes to these questions at least most days, then maybe there’s a problem.

Tip 23) Be where you’re at

This piece of advice seems contradictory to the “Love it or leave it” tip, but I enjoy the balance of opinion it brings. This tip is more about the level you’re at in your career than in your place of employment.

We all love to think about the future. We’ll work as remote consultants 15 hours a week for ungodly amounts of money from a beach in Central America and spend the rest of our time creating The Next Big Thing. This is fun to think about for obvious reasons. Even if we otherwise enjoy our current jobs, it’s hard for anything to live up to that kind of scenario. Even the next rung up on the ladder is appealing and fun to think about when you’re still on the ground.

However, this isn’t very productive. We don’t get any closer to the next rung up by thinking about how nice that spot is. We get closer by doing really well at the rung we’re at until we’re ready to take the next step up. By being mindful and present in our current roles, we make future accomplishments happen, one day at a time. While it seems counterintuitive to some degree, Fowler suggests that by putting away our career goals, at least on a daily basis, we increase our ability to succeed in those goals.

Tip 44) Already obsolete

I think many people can agree with me in saying that one of the coolest and most enticing things about technology as an industry and an entity, is that it’s constantly growing and evolving and moving forward. It’s hard to say where the industry will be at in 2-5 years, and next to impossible to say where it will be at in 10, 15 or 30+ years.

The reverse of this is that every skillset you currently know will be obsolete at some point. Languages and frameworks that are incredibly popular right now will eventually become less and less popular and face a shrinking job market until they’re all but gone from popular use. Being a master in outdated technology has it’s niche market, but its not where most of us want to be with our careers. There was a time when COBOL was cutting edge technology, and while there are still COBOL jobs out there to support existing legacy code, there aren’t many people who would say learning COBOL and taking a COBOL job is good for your career. That being said, COBOL has enjoyed a much longer life than most languages ever will.

Right now, functional programming languages like Elixir, Clojure, and Rust are getting a lot of buzz. It’s hard to say whether or not that trend will pan out in the next few years and we’ll see a shift in the languages that companies are using, but a lot of people in the community are spending time learning about these new languages because they think the industry is headed that way. There are very clear benefits to these languages, mostly in speed increases compared to languages like Ruby or Python.

Whether or not this particular trend becomes widespread is hard to say, but its definitely worth your time to study something thats getting some buzz.

I really enjoyed reading The Passionate Programmer. It’s made me look at my career and personal development from the outside in. I’ve thought about my career quite bit over the past few months, but reading The Passionate Programmer has given me a much more structured way to view it and real concrete ideas with which to shape my career.