Craftsmanship as a Software Developer

How to create meaningful work that brings you passion

Many assume the key to an incredible coding career is finding a job that is your one true passion. There is nothing wrong with passion, but you see, how many of us really knew when we were kids that we wanted to spend the day debugging or in long meetings talking about this pattern vs the other? I think not many of us, right? Passion should not be a pre-existing condition to choose a career and to grow in the career you picked. Passion is a byproduct of becoming a craftsman.

The Craftsman Mindset offers a better path to career growth. Rather than chasing temporary interests, this approach focuses on creating value through skill development. By committing to continuous improvement in your craft, you can build a meaningful career and avoid plateauing.

In his book "So Good They Can't Ignore You", Cal Newport makes the case that becoming a craftsman through deliberate practice is more fulfilling than just chasing your "passions" around. In this article, I would like to apply the book's teachings to the world of Software Development.

What does this look like in action for us aspiring master programmers? Here are 5 key principles of the craftsman mindset and how to apply them:

Focus Your Practice

Deliberate practice means structuring your learning for maximum skill improvement. It means actively identifying weak spots in your coding abilities through reviews and discomfort. Yes, discomfort. If you are feeling too comfortable with your tasks at work, or with your side projects, it probably means you've hit a plateau. On one hand, being comfortable is a good signal that you've reached a milestone, but on the other hand, if you don't change this you can get stuck.

Deliberate Practice is different from Passive Experience. The latter is just accruing coding hours without targeting deficiencies or asking for feedback. Deliberate practice requires energy, attention, and sometimes even pain (we'll talk about this next).

Ask yourself. Am I just coding and coding and coding, hoping that I'll accumulate enough years of doing this and that the sheer amount of accumulated years will magically make me a great developer?

Welcome Feedback to Refine Your Work

It is painful to get your whole work torn apart during a code review. But if you take it on the chin like a champ, ask meaningful questions, and apply what you learned, this will deliver exponential skill gains.

Don't view feedback and code reviews as attacks but as opportunities. Then make small improvements through many iterations. Don't expect that you will get it immediately right next time, but with consistency and deliberate practice, you can hopefully perform better. This refinement over time is the path to mastery.

Also, feedback doesn't always have to come from within your team. Digest books on best practices. Analyze open-source projects. Even if you are not asked, review code from people who are more experienced than yourself. By exposing yourself to these sources, you can compare what you learn with your own work and continue to make adjustments.

Cultivate Your Developer Capital

Developer capital means the combination of valuable skills, network connections, portfolio projects, and credentials that give you options. Keep learning new languages, frameworks, and best practices. But again, be deliberate about this. Don't just pick whatever is popular and don't just follow tutorials blindly. Be intentional.

Also, don't just consume but also share knowledge. Build in public, grow in public, learn in public.

This diverse capital gives you more sway to take your career in new directions when needed. It also makes you more resilient to changes in technologies and roles.

Remember, capital is to be used in the future. Right now it may seem like a chore sometimes, but future you will be grateful.

Stay Patient Yet Persistent

Legendary developers aren't formed overnight. Setbacks and plateaus are inevitable. But with consistent effort compounded over the years, skills grow. Remain patient through each stage of the journey while persevering past obstacles.

Power through the inevitable frustrations. Measure progress in months and years, not days and weeks. Slow down to maintain motivation and avoid burnout.

The craftsman mindset is about progress through patience. It forges legendary developers who create value for others, not just code for themselves. By embracing continuous skill-building while delivering increasingly outstanding work over time, you can leave a true imprint on your field.

By deliberately (here's that word again) applying these steps you can start to use your good work to generate passion, instead of waiting for passion to strike so you can generate good work.

Analyzing, Classifying and Focusing Your Efforts (Overcome Imposter Syndrome):

How to Watch a Coding Tutorial and Actually Learn: