May 22, 2007

Driving for quality

Posted by Ben Simo

Years ago, I taught defensive driving classes to people cited for violating traffic law in Arizona. The central theme of my classes was that our attitudes behind the wheel often have a bigger impact on safe driving than our skill as drivers. I would start each class by having each student describe what they did to get in my class and what other drivers do that annoy them. We then reviewed the two lists (which usually ended up being identical) and the class discussed whether each item was mostly due to driver skill or attitude. Nearly everything on the lists could be traced to an attitude problem.

We are likely guilty of the same faults that we find in others. I believe the attitudes of those involved in software projects can impact the quality of software more than the skills of the team. And when skill is lacking, the right attitude fosters learning. A little patience and a good attitude can go a long way.

I used to teach the SIPDE mnemonic to my driving students to help improve safety on the road. This mnemonic can also be applied to software testing.

  • Scan all that's happening around you -- be aware
  • Identify potential hazards
  • Predict what hazards are most likely to impact you
  • Decide on a safe action to deal with those hazards
  • Execute the action
Another method I taught in the driving classes was the "Smith" system. This too can be applied to software testing.
  1. Aim high - look ahead
  2. Keep your eyes moving - don't get too focused on any single thing
  3. Get the big picture - watch all around
  4. Make sure others see you - communicate
  5. Always leave yourself an out - don't put yourself in a situation that you can't escape
Here's to better driving and better software.


1 Comment:

May 23, 2007  
Ben Simo wrote:

When testing...

* Scan the system
* Identify things to test
* Predict how the system will behave
* Decide on how to test
* Execute your tests

... then start back at the top with the new knowledge gained from the previous iteration.