Bugs are great learning opportunities. So how do we make sure we learn as much as possible from the bugs we find and fix? One way is to reflect on what made the bug hard to solve, and how we could avoid this type of bug in the future. For the past 15 years I have written down short descriptions of the trickiest bugs I have solved. I have included the symptoms of the bug, the steps I took to find it, the fix, and the most important lessons I learned from it. This simple method has helped me distill patterns that have influenced how I write, test and debug code.
In this talk I will share my experience with this method. I will give examples of tricky bugs I have encountered, and show what the corresponding bug entries look like. I will also present the most important lessons I have learned from going through over 200 such bug entries. The lessons include rules for effective testing, and useful debugging techniques and heuristics.
- Present a simple technique to maximize learning from bugs, one that everybody can start using right away
- Describe several testing rules and heuristics that have resulted from the bug entries
- Detail the most useful debugging techniques I have learned for hard-to-find bugs