A friend coined that term on a recent project. He was shaking his head after a painful interaction and said - "We don't do TDD here man. We do DDD."
This post is going to cause some arguments, but hear me out.
I had never worked on a project that did not have some system for tracking their bugs, even if was just a horrible spreadsheet. Then I worked on one where we purposefully delayed setting one up, and delayed it again.
And then I questioned if we should ever have one.
Some observations:
On the projects that I did have intricate tracking systems, I spent a lot of time reviewing, prioritizing and assigning defects and escalations. So did my Development and QA managers; which was a significant loss in productivity. It got to the point that they implemented an "Aging" process.
<Cue screaming from QA folk.>
Yep - There were so many bugs logged that every few months they'd run a query to close out any incidents that were older than x days. If it was really that important - someone would have made noise or it would have been re-raised. Keeping them there was cluttering up the queue and making it hard to identify the real issues.
So what behaviors did I see when I didn't have a Defect Tracking system?
- Testers bringing issues to the devs straight away rather than bugs queuing up.
- Face to face interactions and discussions as opposed to relying on a system as the intermediary
- Less noise was created - bugs were actual bugs, requirements or anything sufficiently large got moved into the backlog and prioritized appropriately.
- Less lag time as a ticket was passed back and forth for "more info", "not reproducible" or "works on my machine"
- People started taking pride in the quality of their work
- I never had to deal with another "bug fix" sprint.
What are the usual arguments against this crazy concept?
- "I need reporting to track what quality levels are like" - That should be a quick report. You have zero bugs. Here's a pie chart.
- "But aren't you distracting developers who should be working on features?" The developers are currently writing code on top of existing buggy code. so they're currently coding more bugs, not features.
- "But the Devs are 'in the zone' I don't want to disturb them." Try disturbing them in 6 months with something they should have fixed at the time or that some other developer did and they have to debug.
- "Doesn't that impact your velocity?" Not noticeably. If you have that many defects - you have a much larger code quality and development process issue. Its going to impact your velocity much more if you pile up the technical debt and try and deal with it later.
- " This isn't a two-bit project like the one you're describing - This is large and really complicated"….
Trust me - I didn't think it would work either.
Then it did.