just a few:
- Code reviews and inspections. Code review is probably not on anyone's list of exciting ways to spend a few hours, but its reported 70-80% find rate certainly deserves attention.
- Automated Inspections. For the lazier among us, there are tools that will automatically inspect code for suspicious constructs.
- Unit testing. With the emergence of extreme programming, unit testing is now in fashion.
Early Detection vs. Late Night Heroism
- Early detection tools cost much less than finding showstopper bugs at the last minute.
- Early detection methods find bugs in a simple and boring way, which is good. Software development currently has too many nail-biting moments and death marches.
- Early detection tools require planning. Once you are in reactive mode, it's too late.
- These tools do not find all bugs. You still need testers and developers to fix bugs-hopefully not as many since the number of bugs will be smaller.
- Measuring the impact of these tools can be tricky since their real value is in preventing worse bugs down the line.
Keeping It All Under Control
Being a hero is great, but only if your heroism doesn't involve a situation you could have avoided in the first place. Good engineering doesn't consist of random acts of heroism. Good engineering should celebrate a subtler form of accomplishment.
- For quick background on the effectiveness of code reviews, read " Inspections - Evolution and History: 1972-2001 " by Michael Fagan
- JUnit and www.NUnit.org provide good starting points for finding out about the latest craze in unit testing.
- For astounding photos of smokejumpers in action, visit Mike McMillan's website, www.spotfireimages.com.
- For un-astounding photos of goats in action, visit www.signonsandiego.com/uniontrib/20040416/news_1n16goats.html
- And, finally, "Nobody Ever Gets Credit for Fixing Problems that Never Happened," at web.mit.edu/nelsonr/www/Repenning=Sterman_CMR_su01_.pdf is a good read about making sure that prevention techniques get recognized, rewarded, and sustained.