In any software developer’s journey, there comes the point when learning seems stuck.
No matter how much you practice, your craft does not seem to improve.
In his best-selling book Atomic Habits, James Clear calls this state The Plateau of Latent Potential.
The Pragmatic Programmer is one book that can accelerate your coming out of the valley of disappointment and into the sublime world of first-rate programmers.
The book is a structured collection of tips and practical advice for programmers looking to improve their craft.
More importantly, the authors approach the complex subject of improving one’s craft by suggesting that it should begin with changing one’s mindset.
For example, the concept of software entropy is introduced in chapter 1.
“One broken window, left unrepaired for any substantial length of time, instills in the inhabitants of the building a sense of abandonment — a sense that the powers that be don’t care about the building. So another window gets broken. People start littering. Graffiti appears. Serious structural damage begins.”
Do you see how the above example relates to software development?
From philosophical concepts like stone soup and boiled frogs to pragmatic approaches like tracer bullets and programming techniques like design by contract and assertive programming, the book explores the bigger picture of what it takes to go from good to great as a software engineer.
In the book, I found answers to many of the doubts that I’d experienced for over a decade:
Is this approach the right one?
How to think about tradeoffs and alternative approaches?
Is my proposed architecture over-engineered?
Like Uncle Martin’s book Clean Code, The Pragmatic Programmer is a seminal book on programming that I should’ve read years ago.
Or maybe not.
The first edition was written in 1999… 23 years ago.
You see, most of the tools and code samples discussed in the first edition have become obsolete today.
The second edition from 2019, the one I read, is a modern rewrite.
While all code samples, as well as the recommended languages, frameworks, and tools, have been revised, what was true about being a ‘pragmatic’ programmer in 1999 remains unchanged 20 years later!
The gist of being a pragmatic programmer is that you deeply care about the quality of your software, write your code as a master craftsperson, and always keep your users at the forefront.
At the same time, you respect time commitments and know to stay away from the overengineering trap.
Some advice, of course, will feel ordinary to folks who’ve been programming for a while.
But plenty of it is rock-solid gold nuggets of wisdom that will make reading the book worthwhile.
Besides, the concepts we take for granted—like DRY and orthogonality—were literally born in this book!
I highly recommend getting the book’s hardcover edition, which you can permanently keep on your shelf or table for frequent and easy access.
I have linked the book’s Amazon page in the description.
Happy reading, and keep growing!