Debugging software is one of the complex actions in software development. It’s not just about using a debugger, it’s about how do you manage bugs. This book has a pragmatic (amazing, don’t you think?) approach on this matter.
Content and opinions
Thee parts, three views how what debugging actually is.
The first is the pragmatic debugging: reproduce your bug, diagnose it, fix it, and make it definitely go away. Each step is actually not mandatory done by a debugger, and in fact the book advocates the TDD approach. Making it go away is in fact thinking about what this bug meant: was it a design issue, a feature, and if it is a bug, how can all the consequences be erased?
The second is managing your bugs. The main action is to have a bug database that is healthy, meaning it must be taken care of. As the book is about a pragmatic approach, one may think the advice are pure logic, and that no one would not follow them. If this book serie has so much success, it is because those advice are in fact not that obvious for everyone!
Finally, the first two parts are in fact the theory. Practice is always a little bit different. What do you do of leagacy releases? Of third-parties libraries? Of bugs that you need to fix in a hurry in parallel? Tests is another facet of software closelly related to debugging. Once you’ve debugged something, you want your tests to assert that it won’t come again unless you see it. How can you be sure that you will have enough information when debugging your software? Finally, there are some pitfalls in software that hinder debugging. As those anti-patterns, this part is about concrete actions that must be implemented in every software project.
Pragmatic Bookshelf has the habit of having a lot of experience feedback in their books, and this one is not an exception. Sadly, there are mainly present in the first part of the book. Still, it’s not the main value of the book. I think the main value is placing debugging in the new landscape of agile software. Too many times, the word debugging is missing in agile books, replaced by only testing. They are the two sides of the same coin. The last part has its virtues as well. Debugging is not a simple workflow, there are differences for each software project.
As usual, the publisher has an excellent book on a practical subject that answers practical questions on debugging.