Dan Ashby enquired on Twitter for information on the balance between the Cost of Delay vs the Cost of Poor Quality.
My immediate thought was that this a false dichotomy, its comparing apples with oranges.
Cost of Delay is a comparatively bounded context, whereas Cost of Poor Quality has so many facets I’m not sure how you could draw a boundary around it.
I was going to tweet Dan some links, but the question has piqued my interest so l’m going to attempt to answer it here 🙂
Has anyone seen any research or investigation into the balance between the cost of delay vs the cost of poor quality?
(I’m assuming there must be some research, since this would be extremely valuable in answering that challenging question so “good enough”…?)
— 𝑫𝒂𝒏 𝑨𝒔𝒉𝒃𝒚 (@DanAshby04) June 9, 2020
I’ve been focusing on Cost of Delay a lot recently & being in software testing since 2000, I have a keen interest in developing high quality software.
I should be able to answer Dan’s question easily, right? Seems not, so here we go…
It appears I don’t answer any questions in this post – I literally just getting my thoughts together in readiness for a raft of other posts which should go some way to answering Dan’s question…
Compare apples with apples
Firstly, before we can compare the two, we need to get a common denominator – value
Cost of delay is a combination of value with urgency (Joshua Arnold – Black Swan Framing)
Weinberg (in Quality Software Management) defines quality as “value to some person”
So now we can start looking into the relationships of delayed deliveries & poor quality on the value of our product.
What is value?
Value is more than money, but my thinking is that you can generally map non-financial value back to pounds & pence (e.g. a customer disregards your poor performing site for your competitor’s slick responsive site – lost sale).
Once again, I turn to Joshua Arnold has a great post on thinking about value.
In the post, Joshua shares this model (which I subscribe to) of 4 buckets of value:
I’m currently wondering if there’s a difference in the relationship between Cost of Delay & Cost of Poor Quality for each of these buckets? I’ll hopefully have an answer later…
What is quality?
I’ve referenced Weinberg above & his definition is one which I subscribe to. It brings the human relationship into software development.
For the purposes of this exercise, we should get into the tangible, more concrete definitions & examples of quality so that they can be quantified.
The ISTQB Glossary defines “Quality” as:
“The degree to which a component or system satisfies the stated and implied needs of its various stakeholders”
But “quality is the responsibility of the whole team!” I hear you cry. What about Wikipedia’s definition of Software Quality:
“Software functional quality reflects how well it complies with or conforms to a given design, based on functional requirements or specifications. That attribute can also be described as the fitness for purpose of a piece of software or how it compares to competitors in the marketplace as a worthwhile product. It is the degree to which the correct software was produced.
Software structural quality refers to how it meets non-functional requirements that support the delivery of the functional requirements, such as robustness or maintainability. It has a lot more to do with the degree to which the software works as needed. ”
Those statements will still be hard to quantify, so let’s go into specific quality characteristics. These include examples such as:
Now, these look like things we can quantify in order to compare with Cost of Delay!
Need to dig into code quality?
What is poor quality?
This is the beast I really want to get to.
As I mentioned before, there are sooo many variables to quality (which others have also mentioned in the Twitter thread) that trading off poor quality against cost of delay is hard!
I started with a Google search (other search engines are available)
Check out these gems…
Wikipedia summary of “Poor Quality Costs” (H. James Harrington, IBM “Quality Expert”). Interestingly, this entry also brings in the concept of waste.
Understanding what these are & how they come back to value will be another post.
When I saw Dan’s tweet, I immediately wondered how to quantify quality which is typically subjective. I then remembered the work of Tom Gilb who claims he can quantify anything! (apologies if I’ve misquoted you Tom!)
Tom talks about finding a “scale of measure” for the quality characteristic. This scale of measure is your unit of measurement. (See “Competitive Engineering”)
There’s also the work of Douglas Hubbard in “How to Measure Anything” I need to revisit.
Some quality characteristics already have well defined scales of measure, others don’t. This might be an interesting exercise in of itself! (e.g. measure charisma…)
I’m now also wondering if Goodhart’s Law also needs to be considered when answering Dan’s question.
So apologies, this post doesn’t answer the question, but IMO it does demonstrate how hard Dan’s question is to answer.
Some subsequent posts I currently plan on writing to investigate & research the balance between the Cost of Delay vs the Cost of Poor Quality include:
- Research Cost Of Poor Quality (COPQ)!
- Is there a difference in the relationship between Cost of Delay & Cost of Poor Quality for each of the buckets of value?
- What part does code quality play in the relationship between Cost of Delay & Cost of Poor Quality
- Define scales of measure for quality characteristics
- Does Goodhart’s law have any part to play in the relationship between Cost of Delay & Cost of Poor Quality
I should imagine I’ll think of others on the way…
Some further reading for me (& you if you want to!)