I just finished reading “So Good They Can’t Ignore You” by Cal Newport. The book is centered around Cal’s argument that skills trump passion when it comes to finding work you love. He breaks his argument down into tenets and incrementally proves his thesis as only someone with a Ph.D. in Computer Science could do. His proof was a pleasure to read, refreshing in its simplicity and contrarian perspective.

The four rules of finding work you love are as follows:
1) Don’t Follow Your Passion.
2) Be So Good They Can’t Ignore You (Or, The Importance of Skill)
3) Turn Down a Promotion (Or, The Importance of Control)
4) Think Small, Act Big (Or, The Importance of Mission)

In introducing the second rule, Cal introduces what he calls “the craftsman mindset.” In his words, the craftsman mindset represents a “focus on what value you’re producing in your job” and is juxtaposed with “the passion mindset” which is “a focus on what value your job offers you.” Cal reasons that the Craftsman Mindset (capital C, M) is crucial to being so good that “they” can’t ignore you which is, in turn, crucial to finding work you love.

This observation resonated with me. It’s one of those things that you read and realize that you already knew it, but didn’t know you knew. There is a fundamental problem with pursuing a pre-existing passion: it’s probably not valuable to anyone but you. If you focus instead on providing value to others, to the world, your chances of developing a passion increase ten-fold.

Software development is a craft. And I don’t mean just crafting what appears on a screen, or building a bulletproof database. I’m talking about the code itself. Well-written, organized, readable code is downright beautiful. It has an energy of it’s own – it’s almost poetic.

As software developers, we have countless tools at our disposal. And there is a low barrier of entry to acquiring the skill necessary to get something “functional,” pun intended. But true mastery of these tools is paramount in order to build something “elegant.” The only way to obtain this mastery is to adopt the craftsman mindset and build. Stretch your abilities and incrementally build more challenging projects – consistent, deliberate practice over hours and hours, years and years.

There is a certain satisfaction in eliminating that unnecessary variable declaration, or converting that for loop to a higher order function. Finding joy in those small victories and looking for them in every line of code you write is a surefire way to happiness in life as a software developer. Those tiny battles add up over time. They add up to hand-wavy, feel-good things like “loving your work,” “living your dream,” and “finding your passion.”

I don’t know about you, but that sounds pretty damn good to me.