For this year's fall book club, we decided to read through The Pragmatic Programmer by David Thomas and Andrew Hunt. This book has been in our rotation for a few years now, and with all of the new hires we brought on this year, we thought it would be a great time to give it another read. The book offers many tips on making better decisions and creating a positive impact on any project you're working on.
Here are some takeaways from some of the attendees:
I've read this book before in 2021 with the Omnitech group (and the original version before that as well). It was a pleasure to discuss with this with many new Omnitech Engineers and some seasoned like me. The concepts and principles are timeless. This time around, with the rapidly improving AI coding tools, is that we need to continue to think, experiment and guide the AI. We need to know these Pragmatic principles. The authors assert that automated tests are more important for guiding the development rather than for running later to catch regression issues. I think both have value, but I will explore writing tests first and having AI fill in details, or at least guiding the AI to create good tests first. ~Kevin
The Pragmatic Programmer is one of my favorite software development books, as it offers practical advice rather than idealism. I believe that software development books commonly fall into the trap of describing theoretical perfection, making sweeping statements about practices that should never be done, but in the real world often have to be. I find it difficult to apply any tips from these books, as the advice seems to come from a vacuum where infinite resources exist and deadlines don't. This is not the case in The Pragmatic Programmer, (Tip 36. "You can't write perfect software"). Throughout the book, Dave and Andy remind engineers that code will fail and inefficiencies will exist, but it's okay! (Tip 30. "Don't Panic). The real world is messy, but it is possible to make a difference (Tip 3. "You Have Agency"), and it doesn't have to be a hugely daunting task (Tip 42. "Take Small Steps - Always"). Overall, I found it to be a really down-to-earth book with content that I have already applied to my everyday workflow. ~ Sam
I personally really liked topic seven from the book, "Communicate!" It helped me realize that one of the most important skills you should have as a software engineer, besides problem solving, is communication. Whether it's with machines through code, clients through meetings and emails, and even future developers through documentation and self-documenting code, we must constantly convey our thoughts in many different forms. If I had to describe my job in one word, it would be "Translator". There were a few tips I got from this book that I think will always stay with me: "English is Just Another Programming Language", "Test Your Software, or Your Users Will", and "Don't Live with Broken Windows". ~Jonah
I really enjoyed the different approach The Pragmatic Programmer took to giving advice. The tips were simple, practical things to improve your interactions with both code and people. My favorite tip from the book was to "Invest Regularly in Your Knowledge Portfolio" (Tip 9). This is something that we make a point of doing at Omnitech, and the way that the book expands on it is profound. It is important to diversify, build a broad skill set, brush up on existing skills, and try out new technologies. Setting aside time to learn is the best way to stay on top of these goals. ~ Keiran
The Pragmatic Programmer, along with Clean Architecture by Robert C. Martin, has been my favorite book study so far. Why? Because they both include practical software development direction and advice presented clearly. Both books are also content-dense; they don't use a chapter to present information that could be covered in a paragraph. The Pragmatic Programmer has the added benefit of being accessible to the curious reader who wants to learn about programming processes and best practices without having much (or any) actual programming experience. There is much in The Pragmatic Programmer that may seem remedial to an experienced software developer, but that is actually a strength of the book: it reinforces what you know, introduces new ideas to consider, and facilitates group discussions. I would recommend The Pragmatic Programmer to any software developer, especially to someone new to the industry looking to get up to speed on programming best practices as quickly as possible. ~ Bob
What I appreciated most about The Pragmatic Programmer is that it focuses on a mindset of being a craftsman rather than just a "coder." It does a great job at bridging the gap between theory and the messy reality of the real world, encouraging the programmer to take ownership of the entire lifecycle of what we build. While there were plenty of great takeaways, Tip 36, "You Can't Write Perfect Software," stuck out to me. It’s a good reminder that there are always trade-offs among time, budget, and scope, and chasing the last bit of perfection often consumes most of the effort. Instead of getting paralyzed by the ideal, the book encourages you to ask: "Is this good enough for our users right now?" This perspective has already helped me prioritize tasks and handle critiques with a much better mindset. ~Chase
Over my time at Omnitech, I’ve had the chance to participate in three different book clubs, and a surprising pattern has emerged. Despite covering a wide range of topics, many of the books share a common theme: the power of Tracer Bullets. In software development, Tracer Bullets refer to a thin, functional slice of a feature that a customer can actually use. The goal is simple: deliver real value early, get feedback fast, and adjust with confidence. It’s a mindset that prioritizes learning over polishing, momentum over perfection, and customer insight over assumptions. The Pragmatic Programmer underscored just how valuable Tracer Bullets can be, and it gave me a clearer understanding of how to use them more intentionally in my own development work. ~Gavin
As a newly graduated Computer Scientist, The Pragmatic Programmer has shown me what mistakes to avoid and what practices to strive for to become a great Software Engineer. My favorite chapter was Pragmatic Projects, which ties together many of the book's concepts and explains how to apply them in team settings. Two tips that really stood out were “Find Bugs Once” and “Don’t Use Manual Procedures.” These tips emphasize reducing human error in testing and deployment, which is critical for building reliable software. It also helps us reach "The Real Goal", which is to deliver features or bug fixes as soon as possible when users need it! ~Mason
The Practical Programmer touches on a number of good practices and approaches to keep in mind, or to introduce to newer developers. I liked their focus on the benefits of keeping things cleaned and improving at every opportunity - for instance, their comments on "broken windows", and the dynamics of a system that can lean toward disorder, or are purposely kept IN order. They encourage taking the time to do things well and not putting them off. I also appreciated a good discussion about avoiding repetition and how that can impact future code changes, which will inevitably come. I think this is a great discussion to have with a mix of newer and older developers, to reflect on how these things actually play out over time. ~Chad
The Pragmatic Programmer marks my eighth book club with Omnitech, if my count is correct, and this one turned out to be more of an enjoyable refresher to many concepts I have picked up over the years. I was happy to see that they called out an important detail about code duplication that often gets forgotten: just because two pieces of code end up functionally the same does not always mean they are duplicated. The purposes and knowledge of the code can be different and should not be combined. Additionally, I can always get behind advocating for more automation and testing in the last three chapters. Automation will be faster and more consistent than doing things manually every time, and it'll save you time that can be better spent elsewhere. If it can be automated, consider it. This is also your reminder to write tests for important sections if possible, but not just to achieve a high code coverage. ~Jarod
We've learned a lot through this book - it is a classic for a reason. The Pragmatic Programmer created many good discussions over lunch on how we can continue to get better at our craft as engineers. It'll be good to come back to it every once in a while, to see how well you've been utilizing the practical tips. You should definitely check it out!