Buggy definitions and the importance of ubiquitous language
Name It to Tame It
Dr. Dan Siegal coined the phrase 'Name It to Tame It' as a way of corralling difficult emotional responses. Applying a name to an emotion or a feeling can help you in managing or conquering it.
In the same way, applying common labels and definitions can help your team in conquering ambiguity.
Let's use the term 'bug' as an example. In digital product delivery, we often use the term 'bug' to describe every issue or flaw we encounter.
Flaws or deficiencies in a product can be described in many different ways. For our Agile team, the loose use of the term 'bug' was causing confusion, misinformation, and inappropriate expectations. We needed to name and tame our definitions of product flaws.
We started by looking at the various terms used in the industry. We discovered a great article by Katy Sherman with some clear definitions for distinct types of product flaws. You may disagree with the actual definitions and may want to use different terms for your team – what is important is that terms are defined and understood by the team. These terms work for our team.
Defect
Definition:
A flaw found in Sprint while testing a user story that prevents the story from being closed.
What to do:
- Fix it!
- Fix immediately
- Minimum documentation
- No sizing (the work to fix it is already reflected in the story’s estimate)
Why it was important to define this:
Part of the value proposition of Agile/Scrum is that we conduct QA within the development team. We are building brand new things each Sprint and we may not get it right the first time. When a defect is discovered while testing, developers can address it immediately. With this common definition, we know as a team that defects are an expected part of the process and we know how and when to address them.
Bug:
Definition:
A problem found in production that prevents software from functioning as we encoded it.
What to do:
o Prioritize it!
o Document the undesirable behavior
o Add to backlog and prioritize
o Size it and treat it like Sprint work
Why it was important to define this:
Bugs are flaws found in pilot or production that prevent a product from working. These are different from defects. When found, bugs are added to the product backlog and prioritized by the Product Owner. If critical bugs are discovered, we may address it right away and it is understood this takes us away from our Sprint work.
Escaped Defect:
Definition:
A flaw introduced by recent development and missed in testing.
What to do with it:
o Analyze it!
o Treat as a bug (backlog and prioritize)
o Label as Escaped Defect
o Perform root cause analysis
o Address root cause through quality, communication, technology etc.
Why it was important to define this:
These types of flaws are nasty. Escaped defects are things we missed during testing and may identify issues not only with our quality, but with our workflow. Escaped defects are usually found when we fix something or develop a new feature and inadvertently break something (like a regression). Ideally, we want to catch these flaws within the Sprint, but for some reason we missed it.
The amazing power of ubiquitous language
It is amazing, the power of simple definitions. Our team now speaks more carefully when it comes to flaws. We have these definitions up on the wall, poster format, and we reference them when we get stuck or when misunderstandings occur.
Do you find yourself challenged by loose terms and ambiguous language? Consider naming and taming terms with your own team so everyone is speaking the same language.
I would love to know if this resonates with you. Please share your thoughts and stories in the comments below.