- Read the manual
- You have to make it fail as regularly as possible
- Stimulate the failure (Don't wait for the next big storm)
- Record everything and find the signature of intermittent bugs
- Looking means putting in breakpoints, adding debug statements, monitoring program values...
- Narrow the search
- Upstream: good, clear water
- Downstream: bad, smelly pink water
- Fix the bugs you know about
- Isolate the key factor
- Compare with a good one
- What did you change since the last time it worked?
- Sometimes the problem has existed but doesn't show up until something else changes