Lower Your Quality Debt Ceiling
All of us at one time (at least) in our careers have experienced the phenomena I call "creative defect management". You know, where you are reviewing the defects with the Business Owner, Project Manager and the developers and yesterday's Severity 1 defect magically becomes a Severity 3 because "... we are three days to the release date and we cannot fix this in time, we will patch it after the release..."
“For every [dollar] of competitive advantage gained by cuttng quality, it costs $4 to restore it; and software is an organizational asset and decisions to cut quality must be made by executive management and reflected in the financial statements.” http://www.infoq.com/presenta2ons/agile_quality_canary_coalmine
How many of us have worked on applications that have tens or even hundreds of unresolved known issues that were logged over several previous releases. What I thought was a radical idea a few years back, abandon bug tracking tools, has become a major theme for me. In my view, a better approach is to write a "test" story when you find a bug, review it during backlog grooming and if it doesn't reach the level of being assigned to the next sprint then archive it because it is likely never to be fixed. Perhaps you let it hang in the backlog for a a couple of sprints but if it is not a high priority to be assigned in a short period of time, then it likely will never be.
Do you Fund Your DoD?
Establishing and funding your "Definition of Done" is critical to lowering your Quality Debt. On a recent client engagement we used the following DoD:
- Accepted by Product Owner
- We do not work on stories that are not validated by the client
- The code has been peer reviewed
- Test Passes on all CI targets
- Locales & Languages
- PMD, checkstyle, & find bugs successfully executed and issues resolved
- Project Management tool (e.g Rally) has been updated
- Both positive & negative tests pass
- Every commit has relative and meaningful comment
- Don't overload checkins
- All broken build issues are fixed, no new feature checkins until build is GREEN
- All new classes, methods, and attributes have at least one usage
- No "unnecessary / zombie code"
- No "known" defects that have not been "resolved" either with remediation or a story in the backlog