The goal of agile is be faster and produce better software. To do this, we need to reduce and minimize rework. One key metric for measuring rework is:

  • Fix Effort Ratio – Time to fix bugs/Total effort expended (hours)

This metric depends on valid data whereby people are logging real hours to tasks they take on. This ratio will decrease over time because the #defects will decrease and also because of better defect definition and reporting over time, which means quick understanding, and thus faster fixing by developers. This directly increases velocity for new features because developers are then working more on new stuff and less on defect fixing.

For rework to be reduced, it is important that reasons for defects be categorized for analysis and improvement. These reasons, or codes should be mandatory input for developers when they address defects. Reasons often can be classified into a few major categories:

Requirements

  • Change in requirements
  • Don’t understand requirements
  • Requirement does not exist

Coding

  • Caused by a fix (fixed defect caused another)
  • Missing code
  • Incorrect design or logic
  • Incorrect core component

Environment

  • Different
  • Unstable
  • Configuration management error
  • Data error

Testing

  • Not a defect (usually because tester didn’t understand well)
  • Not repeatable
  • Defect definition incomplete or inaccurate

By doing analysis on defects, we can discover when defects are injected into the software and eventually reduce and prevent defects from happening in the first place. This will drive down the Fix Effort Ratio leading to better quality and resulting in higher velocity.