After finishing tech editing and reviewing Jon Shemitz’ excellent upcoming .NET 2.0 for Delphi programmers, I’ve got some more spare time to write blog articles and to read. Thanks to David Cummins and Pearson Publishing Group, we at Infront now have a small library of high-quality tech books, ranging from C# and .NET, to C++, security, hacking, methodology, science and more (the Delphi side we already had covered).
I often find myself reading two or thee books in parallel, but one of the first books I finished was Andrew Hunt and David Thomas’ already legendary book The Pragmatic Programmer. As the title indicates, this is a very pragmatic book, for programmers that want to keep improving their work. In contrast to so many other methodology books that wants to force you to follow a specific model of requirements gathering, specifications, design, coding, testing and deployment, this book drops all the self-righteous fluff. In many ways the advice in the book follows the now popular trends of eXtreme Programming and an Agile development process.
A few of the key concepts or advice in the book are:
- DRY – Don’t Repeat Yourself – don’t duplicate code, logic, structure, documentation etc. Use code generation techniques where needed to mechanically generate files from a common master-template (for instance, generate a C++ header file, a Delphi import unit and HTML documentation from a single common template).
- Understand the lower-level subsystems you talk to and depend on. Don’t use wizards that generate code unless you know how that code works. Don’t depend on mysterious magic. Know what you are doing.
- Focus on algorithmic performance, not micro-optimizations. Know how to estimate Big-Oh performance of an algorithm.
- Use and know productive tools such as IDEs, source control, bug and requirements tracking, testing frameworks etc.
The book covers much more ground that this, keeping an easy to read, approachable and down-to-earth style. It reinforced some of our existing work habits, reminded us about things we could do better and gave us a few tips for future exploration and experimentation to try and improve our development process.
This book is highly recommended!