Review & quotes from The Passionate Programmer: Creating a Remarkable Career in Software Development by Chad Fowler

Every programmer should read this, especially entry and mid-level. This book changed my attitude towards work in a way that made me a better employee and allowed me to level up my skills faster. It also made me happier.

Approach your work with passion:

Most people spend far more of their waking adulthood working than doing anything else. According to a 2006 survey by the U.S. Bureau of Labor Statistics,[1] average Americans spend half of their waking time at work. Leisure and sports are a distant 15 percent of waking time spent. The facts show that our lives basically are our work. If your life is primarily consumed by your work, then loving your work is one of the most important keys to loving your life.

Doing your job well means that the activity you do for 50 percent of your available time is something you’re good at. Conversely, if you don’t do your job well, a large amount of your time will be spent feeling inadequate or guilty over not performing at your best.

When I wasn’t making a dent at work, it spilled over to my personal life too.

But, though I’m unqualified to be a typical software developer, my background as a musician gave me one key insight that ultimately allowed me to skip the step of being a typical software developer (who wants to be typical, anyway?). Nobody becomes a musician because they want to get a job and lead a stable and comfortable life. The music industry is too cruel an environment for this to be a feasible plan. People who become professional musicians all want to be great.

It drives me crazy to ask people whether they’ve seen or used certain not-quite-mainstream technologies only to hear, “I haven’t been given the opportunity to work on that” in return. Given the opportunity? Neither was I! I took the opportunity to learn.

When I’m old and dying, I plan to look back on my life and say, “Wow, that was an adventure,” not “Wow, I sure felt safe.”

If you think about the biographies you read or the documentaries you watch about the greats in various fields, this same pattern of addictive, passionate behavior surfaces. Jazz saxophone great John Coltrane reportedly practiced so much that his lips would bleed.

If I were to ask a handful of jazz musicians, “Who is your mentor?” most of them would have an answer. Now ask the same question of programmers. In the United States, they’d probably respond with “What?”

Our industry tends to practice on the job. Can you imagine a professional musician getting onstage and replicating the gibberish from my university’s practice rooms? It wouldn’t be tolerated. Musicians are paid to perform in public — not to practice. Similarly, a martial artist or boxer stressing himself or herself to fatigue during matches wouldn’t go very far in the sport. As an industry, we need to make time for practice.

We in the jazz world weren’t special, of course. Classical composers do the same thing. So do novelists and poets. So do sculptors and painters. Studying the work of masters is an essential part of becoming a master.

Simply setting a goal (daily, weekly, or whatever you’re capable of) and tracking this type of accomplishment can radically change your behavior. When you start to search for outstanding accomplishments, you naturally go through the process of evaluating and prioritizing your activities based on the business value of what you might work on. Tracking hits at a reasonably high frequency will ensure that you don’t get stuck: if you’re supposed to produce a hit per day, you can’t spend two weeks crafting the perfect task. This type of thinking and work becomes a habit rather than a major production. And, like a developer addicted to the green bar of a unit test suite, you start to get itchy if you haven’t knocked out today’s hit. You don’t have to worry so much about tracking your progress, because performing at this level becomes more akin to a nervous tic than a set of tasks that need to be planned out.

Understand you work within the business:

The purpose of a business is to make money. To excel at a company, you’re going to have to understand how you fit into the business’s plan to make money. As we’ll explore later, keeping you employed costs your company a significant amount of money. Your company is investing in you. Your challenge is to become an obviously good investment. You will start to judge your own performance in terms of the business value you bring to the organization or customer who is employing you.

It’s not enough to think about what technologies you’re going to invest in. After all, the technology part is a commodity, right? You’re not going to be able to sit back and simply master a programming language or an operating system, letting the businesspeople take care of the business stuff. If all they needed was a code robot, it would be easy to hire someone in another country to do that kind of work. If you want to stay relevant, you’re going to have to dive into the domain of the business you’re in.

This is how your business clients feel about you: Imagine how much easier it would be to work with these programmers if they just understood what I was asking them for without me having to dumb everything down and be so ridiculously specific! And, guess what? It’s the business that pays your salary.

Your parents would rather you be OK than have a remarkable career at the cost of great personal risk. More than any other third party you might look to, your parents are going to give you fear-driven advice.

Ultimately, in a well-structured environment, the goals of your manager are the goals of your team. Solve your manager’s problem, and you’ve solved a problem for the team. Additionally, if your manager is taking the same approach you are, the problems you’re solving for him or her are really his or her boss’s problems. And so on, and so on, until it rolls up to the highest level of your company or organization — the CEO, the shareholders, or even your customers.

Most companies set a rate of return bar, under which an investment will not be made. Investments have to yield an agreed-upon percentage in an agreed-upon period of time, or they aren’t made. This number is called the hurdle rate. Find out what your company’s hurdle rate is, and apply it to your salary. Are you a good investment?

Attempting to be irreplaceable is a defensive maneuver that creates a hostile relationship with your employer (and your co-workers) where one may not have already existed. Using this same logic, attempting to be replaceable should create an unhostile working relationship. We’re all replaceable. Those of us who embrace and even work toward this actually differentiate ourselves and, unintuitively, improve our own chances. And, of course, if you are replaceable, nothing is stopping you from moving up to the next big job.

[Bob] Martin renamed forty-hour workweek to “eight-hour burn.” The idea is that you should work so relentlessly that there is no way that you could continue longer than eight hours.

Because we all make mistakes, we also know that everyone else makes mistakes. So, within reason, we don’t judge each other on the mistakes we make. We judge each other on how we deal with those inevitable mistakes.

It’s comfortable to play the idealist and pretend you don’t care what other people think about you. But, that’s a game. You can’t let yourself believe it. You should care what other people think about you. Perception is reality. Get over it.

As disturbing a proposition as it may be, put yourself into the mind of a manager or customer (I’ll just use the word customer throughout this section to refer to both). They’re responsible for something gravely important that they ultimately have to entrust to some scary IT guys for implementation. They do what they can to help move things along, but ultimately they’re at the mercy of these programmers. Moreover, they have no idea how to control them or even to communicate intelligently about what it is that they’re doing. In this situation, what’s the most important attribute they’ll be looking for in a team member? I’ll bet you the price of this book it’s not whether they’ve memorized the latest design patterns or how many programming languages they know. They’re going to be looking for someone who can make them comfortable about the project they’re working on.