The Pragmatic Programmer: from journeyman to master

In 2019, I read “The Pragmatic Programmer: From Journeyman to Master” by Andy Hunt and Dave Thomas. Despite being a senior software engineer, this book was a revelation. It profoundly changed my perspective on my work, making me understand the deeper “why” behind what I do and why I love doing it.

One of the most impactful lessons from the book was the importance of caring deeply about your craft. “Care about what you do so much that you do it perfectly,” the authors advise. This philosophy has since guided every aspect of my creation process. From the way I sort imports to how I structure and name functions, each detail matters. This meticulous attention to detail isn’t about pedantry; it’s about achieving a level of excellence and professionalism in every line of code.

Another crucial takeaway is the emphasis on mastering your tools. In the years following my first read, I invested significant time in understanding and utilizing Git. This knowledge transformed the way I manage and juggle my code, giving me the confidence and flexibility akin to a circus master with his routines. Later, I also dove into the 20th-anniversary edition of the book, which reinforced these principles and added new insights to my journey as a programmer.

Perfection vs. delivery

While attention to detail is essential, it’s equally important to balance this with the need for timely delivery. There’s a fine line between being thorough and being overly meticulous. As developers, we must recognize when perfecting the minutiae can become counterproductive. In a fast-paced development environment, understanding the difference between necessary precision and unnecessary perfectionism is key.

Caring deeply about your work doesn’t mean getting lost in endless refinements. It means making conscious choices about where to invest your time and effort to maximize value. For example, while ensuring code quality and maintainability is crucial, spending hours debating the ideal way to format a comment might not be the best use of time. The pragmatic approach advocated in the book is about striking this balance: delivering high-quality work efficiently.

Mastering your craft

Today, I find it evident when others don’t share this level of care. Relying solely on tools like Prettier and ESLint to format code without understanding the underlying reasons or how to achieve the same results manually can be limiting. It’s not just about making the code look good; it’s about embracing the core philosophy of caring deeply about what you do.

Mastering tools also means thoroughly understanding your programming language. While Language Server Protocols (LSP) and autocomplete features are incredibly useful, they should complement, not replace, your in-depth knowledge of the language. Knowing your tools and language inside out enables you to work more efficiently and creatively, even when these aids are unavailable.


In conclusion, “The Pragmatic Programmer” has profoundly influenced my approach to programming. By caring deeply about my work and mastering my tools, I’ve elevated my craft and continued to grow as a developer. For anyone serious about programming, I highly recommend diving into this book and embracing its lessons. It’s a timeless guide on the path from journeyman to master.

The Pragmatic Programmer - by Andy Hund and Dave Thomas