An Ounce of Goat or a Pound of Hero: Software Reviews and Inspections

[article]

just a few:

  1. 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.
  2. Automated Inspections. For the lazier among us, there are tools that will automatically inspect code for suspicious constructs.
  3. Unit testing. With the emergence of extreme programming, unit testing is now in fashion.

Early Detection vs. Late Night Heroism

  1. Early detection tools cost much less than finding showstopper bugs at the last minute.
  2. 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.
  3. Early detection tools require planning. Once you are in reactive mode, it's too late.
  4. 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.
  5. 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.

Further Reading

  1. For quick background on the effectiveness of code reviews, read " Inspections - Evolution and History: 1972-2001 " by Michael Fagan
  2. JUnit and www.NUnit.org provide good starting points for finding out about the latest craze in unit testing.
  3. For astounding photos of smokejumpers in action, visit Mike McMillan's website, www.spotfireimages.com.
  4. For un-astounding photos of goats in action, visit www.signonsandiego.com/uniontrib/20040416/news_1n16goats.html
  5. 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.

User Comments

44 comments
Gene Fellner's picture

Americans as a people are problem solvers, not problem preventers. We happily rebuild homes destroyed by hurricanes, brushfires, and mudslides. In their original locations! And our banks, insurance companies, police, firefighters, and relief agencies happily subsidize this insanity! (One definition of "insanity" is: "The belief that if you keep doing what you've always done you will somehow stop getting what you've always gotten.")<br/><br/>This archetype has been around for so long that it's got a name: The Loose Cannon Syndrome. Named after an infamous event on a British warship of the ropes-and-canvas era. As a storm approached, a young officer failed to double-check the knots he had tied when lashing a cannon to the deck. The pounding of the storm quickly undid the knots and the cannon began bouncing around the deck, smashing up the superstructure and creating the terrifying possibility of bashing through some really important timbers that would allow the ship to take on water.<br/><br/>The officer gallantly dashed out onto the heaving deck and, risking his life at every turn, managed to single-handedly immobilize the cannon and secure it properly.<br/><br/>When the storm had passed the captain assembled the entire crew on the deck for a ceremony to give this performance its due. He pinned a medal on the chest of the young officer for being a hero... and then shot him dead for being a careless idiot.<br/><br/>The Brits, bless their stodgy old hearts, got it right. They are a nation of problem avoiders. In America we give out the medals... and then send the careless idiots back to their duty stations.

October 12, 2004 - 12:35pm
Gene Fellner's picture

Americans as a people are problem solvers, not problem preventers. We happily rebuild homes destroyed by hurricanes, brushfires, and mudslides. In their original locations! And our banks, insurance companies, police, firefighters, and relief agencies happily subsidize this insanity! (One definition of "insanity" is: "The belief that if you keep doing what you've always done you will somehow stop getting what you've always gotten.")<br/><br/>This archetype has been around for so long that it's got a name: The Loose Cannon Syndrome. Named after an infamous event on a British warship of the ropes-and-canvas era. As a storm approached, a young officer failed to double-check the knots he had tied when lashing a cannon to the deck. The pounding of the storm quickly undid the knots and the cannon began bouncing around the deck, smashing up the superstructure and creating the terrifying possibility of bashing through some really important timbers that would allow the ship to take on water.<br/><br/>The officer gallantly dashed out onto the heaving deck and, risking his life at every turn, managed to single-handedly immobilize the cannon and secure it properly.<br/><br/>When the storm had passed the captain assembled the entire crew on the deck for a ceremony to give this performance its due. He pinned a medal on the chest of the young officer for being a hero... and then shot him dead for being a careless idiot.<br/><br/>The Brits, bless their stodgy old hearts, got it right. They are a nation of problem avoiders. In America we give out the medals... and then send the careless idiots back to their duty stations.

October 12, 2004 - 12:35pm
Gene Fellner's picture

Americans as a people are problem solvers, not problem preventers. We happily rebuild homes destroyed by hurricanes, brushfires, and mudslides. In their original locations! And our banks, insurance companies, police, firefighters, and relief agencies happily subsidize this insanity! (One definition of "insanity" is: "The belief that if you keep doing what you've always done you will somehow stop getting what you've always gotten.")<br/><br/>This archetype has been around for so long that it's got a name: The Loose Cannon Syndrome. Named after an infamous event on a British warship of the ropes-and-canvas era. As a storm approached, a young officer failed to double-check the knots he had tied when lashing a cannon to the deck. The pounding of the storm quickly undid the knots and the cannon began bouncing around the deck, smashing up the superstructure and creating the terrifying possibility of bashing through some really important timbers that would allow the ship to take on water.<br/><br/>The officer gallantly dashed out onto the heaving deck and, risking his life at every turn, managed to single-handedly immobilize the cannon and secure it properly.<br/><br/>When the storm had passed the captain assembled the entire crew on the deck for a ceremony to give this performance its due. He pinned a medal on the chest of the young officer for being a hero... and then shot him dead for being a careless idiot.<br/><br/>The Brits, bless their stodgy old hearts, got it right. They are a nation of problem avoiders. In America we give out the medals... and then send the careless idiots back to their duty stations.

October 12, 2004 - 12:35pm
Gene Fellner's picture

Americans as a people are problem solvers, not problem preventers. We happily rebuild homes destroyed by hurricanes, brushfires, and mudslides. In their original locations! And our banks, insurance companies, police, firefighters, and relief agencies happily subsidize this insanity! (One definition of "insanity" is: "The belief that if you keep doing what you've always done you will somehow stop getting what you've always gotten.")<br/><br/>This archetype has been around for so long that it's got a name: The Loose Cannon Syndrome. Named after an infamous event on a British warship of the ropes-and-canvas era. As a storm approached, a young officer failed to double-check the knots he had tied when lashing a cannon to the deck. The pounding of the storm quickly undid the knots and the cannon began bouncing around the deck, smashing up the superstructure and creating the terrifying possibility of bashing through some really important timbers that would allow the ship to take on water.<br/><br/>The officer gallantly dashed out onto the heaving deck and, risking his life at every turn, managed to single-handedly immobilize the cannon and secure it properly.<br/><br/>When the storm had passed the captain assembled the entire crew on the deck for a ceremony to give this performance its due. He pinned a medal on the chest of the young officer for being a hero... and then shot him dead for being a careless idiot.<br/><br/>The Brits, bless their stodgy old hearts, got it right. They are a nation of problem avoiders. In America we give out the medals... and then send the careless idiots back to their duty stations.

October 12, 2004 - 12:35pm
stephen kay's picture

This reminds me of the story of a chinese family of healers. One of them becomes famous for his skills and is called infront of the great emporer. The emporer asks him who is the greatest healer in his family. He says that he heals the sick, sometimes with dramatic results and is hailed a hero throughout the country. His elder brother heals those whose illness has just started to take root, and he is known only in the local village. His eldest brother prevents sickness before it starts, and he is unknown outside of his own home.

October 13, 2004 - 7:43am
stephen kay's picture

This reminds me of the story of a chinese family of healers. One of them becomes famous for his skills and is called infront of the great emporer. The emporer asks him who is the greatest healer in his family. He says that he heals the sick, sometimes with dramatic results and is hailed a hero throughout the country. His elder brother heals those whose illness has just started to take root, and he is known only in the local village. His eldest brother prevents sickness before it starts, and he is unknown outside of his own home.

October 13, 2004 - 7:43am
stephen kay's picture

This reminds me of the story of a chinese family of healers. One of them becomes famous for his skills and is called infront of the great emporer. The emporer asks him who is the greatest healer in his family. He says that he heals the sick, sometimes with dramatic results and is hailed a hero throughout the country. His elder brother heals those whose illness has just started to take root, and he is known only in the local village. His eldest brother prevents sickness before it starts, and he is unknown outside of his own home.

October 13, 2004 - 7:43am
stephen kay's picture

This reminds me of the story of a chinese family of healers. One of them becomes famous for his skills and is called infront of the great emporer. The emporer asks him who is the greatest healer in his family. He says that he heals the sick, sometimes with dramatic results and is hailed a hero throughout the country. His elder brother heals those whose illness has just started to take root, and he is known only in the local village. His eldest brother prevents sickness before it starts, and he is unknown outside of his own home.

October 13, 2004 - 7:43am
Anonymous's picture
Anonymous

Very funny. (I mean it.) But goats don't prevent bridges from collapsing or airplanes falling from the skies. Goats' big problem is that they require the entire ecology to be in place before they can get to work. Developers find that it takes more effort to create "testable" units for testers early in the process than to simply check their work themselves. Inexperienced and lazy developers don't even do it themselves (beyond the minimally useful "unit tests.") "Early detection" tools identify the kinds of simplistic errors that only beginners create. Software will remain only as good as its developers until the field matures and becomes as repeatable as bridge-building. That didn't happen by hiring goats - no matter how cheap.

October 13, 2004 - 11:15am
Anonymous's picture
Anonymous

Very funny. (I mean it.) But goats don't prevent bridges from collapsing or airplanes falling from the skies. Goats' big problem is that they require the entire ecology to be in place before they can get to work. Developers find that it takes more effort to create "testable" units for testers early in the process than to simply check their work themselves. Inexperienced and lazy developers don't even do it themselves (beyond the minimally useful "unit tests.") "Early detection" tools identify the kinds of simplistic errors that only beginners create. Software will remain only as good as its developers until the field matures and becomes as repeatable as bridge-building. That didn't happen by hiring goats - no matter how cheap.

October 13, 2004 - 11:15am

Pages

About the author

Harry Robinson's picture Harry Robinson

Harry Robinson is a Software Engineer in Test for Google. He coaches teams around the company in test generation techniques. His background includes ten years at AT&T Bell Labs, three years at Hewlett-Packard, and six years at Microsoft before joining Google in 2005. While at Bell Labs, he created a model-based testing system that won the 1995 AT&T Award for Outstanding Achievement in the Area of Quality. At Microsoft, he pioneered the test generation technology behind Test Model Toolkit, which won the Microsoft Best Practice Award in 2001. He holds two patents in software test automation methods, maintains the Web site Model-based Testing, and speaks and writes frequently on software testing and automation issues.

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!