Skip to main content

It's not Technical Debt - it's Unclean Code

I hear lots of colleagues using the term 'technical debt' and the scenario that plays in my brain's cineplex is from The Princess Bride when Inigo Montoya remarks to Vizzini; "You keep using that word.  I don't think it means what you think it means."

Inconceivable!




So what does "Technical Debt" mean?  And what do my colleague's typically mean if it is not truly technical debt.

The first is easy; the definition of Technical Debt:

He who coins the term gets to define the term (that's Ward Cunningham).



Ward Cunningham on Technical Debt Metaphor 

OK, so to be truly technical debt one must negotiate the debt with the business.  The business should achieve some objective sooner and incur an obligation to repay the technical team the time and effort required to put the system back into a proper state of clean well factored code.

But, wait... what could my colleagues mean when they misuse the term technical debt?  I think they mean many things, but since there is no good word for what they mean they appropriate the popular term.  I've referred to the concept as:

  • bugs just waiting to be discovered
  • short cuts that will come to haunt us later
  • things we will fix one day
  • engineering done by the new guy
  • design choices that time permitted 

There appears to be a problem here; there is no good word or phrase for this concept.  So let's create one!  How about unclean code.  Inverting the concept from Robert Martin's Clean Code: A Handbook of Agile Software Craftsmanship.

Let's define the term 'unclean code'.  Software code that might work, has known deficiencies, needs to be thoroughly tested, and probably would make a master craftsman's nose turn up at the smell.

Let's see if the term can replace the misappropriated 'technical debt' in a sentence.  "We have some technical debt unclean code this sprint that will need to be added to the backlog, but the features are all done."


See Also:

A Product Manager's Take on Technical Debt by Kevin Binnie
A Technical Debit - Collateralized Debt Obligation you should not invest in - David Koontz
No Test - Inconceivable - Agile Complexification Inverter
Managing Software Debt - book by Chris Sterling
Doc Norton Sez You're Using "Technical Debt" Wrong - Agile Amped at Agile2016
Ward Cunningham's Debt Metaphor Isn't a Metaphor by Rob Myers
WSJ: What Buzzwords Would You Ban in 2014?
Crisp's Blog: The Solution to Technical Debt by H. Kniberg - he calls it "Crappy Code"
Misunderstanding Technical Debt by Niklas Björnerstedt

The SQALE method is particularly devoted to the management of the Technical Debt (or Design Debt) of software developments. It allows:

  • To define clearly what creates the technical debt
  • To estimate correctly this debt
  • To analyse this debt upon technical and business perspective
  • To offer different prioritisation strategies allowing establishing optimised payback plan.
Martin Flower's Technical Debt quadrant model

The Technical Debt Trap - Doc Norton at NDC Conference 2016

Compute and Manage the Technical Debt with NDepend

"Using NDepend, code rules can be written through C# LINQ queries. Applied on a code base a rule yields issues. A dedicated debt API is proposed to estimate both the technical-debt and the annual-interest of the issue through formulas written in C#. Both the technical-debt and annual-interest of an issue are measured in man-time."
  • The technical-debt is the estimated man-time that would take to fix the issue.
  • The annual-interest is the estimated man-time consumed per year if the issue is left unfixed. This provides an estimate of the business impact of the issue.

Comments

Most Popular on Agile Complexification Inverter

David's notes on "Drive"

- "The Surprising Truth about what Motivates Us" by Dan Pink.

Amazon book order
What I notice first and really like is the subtle implication in the shadow of the "i" in Drive is a person taking one step in a running motion.  This brings to mind the old saying - "there is no I in TEAM".  There is however a ME in TEAM, and there is an I in DRIVE.  And when one talks about motivating a team or an individual - it all starts with - what's in it for me.

Introduction

Pink starts with an early experiment with monkeys on problem solving.  Seems the monkeys were much better problem solver's than the scientist thought they should be.  This 1949 experiment is explained as the early understanding of motivation.  At the time there were two main drivers of motivation:  biological & external influences.  Harry F. Harlow defines the third drive in a novel theory:  "The performance of the task provided intrinsic reward" (p 3).  This is Dan Pink's M…

Exercise:: Definition of Ready & Done

Assuming you are on a Scrum/Agile software development team, then one of the first 'working agreements' you have created with your team is a 'Definition of Done' - right?



Oh - you don't have a definition of what aspects a user story that is done will exhibit. Well then, you need to create a list of attributes of a done story. One way to do this would be to Google 'definition of done' ... here let me do that for you: http://tinyurl.com/3br9o6n. Then you could just use someone else's definition - there DONE!

But that would be cheating -- right? It is not the artifact - the list of done criteria, that is important for your team - it is the act of doing it for themselves, it is that shared understanding of having a debate over some of the gray areas that create a true working agreement. If some of the team believes that a story being done means that there can be no bugs found in the code - but some believe that there can be some minor issues - well, …

Do You Put “CSM” After Your Name?

I’ve noticed a new trend—people have been gaining titles. When I was younger, only doctors had initials (like MD) after their names. I always figured that was because society held doctors, and sometime priests (OFM) in such high regard that we wanted to point out their higher learning. I hope it was to encourage others to apply themselves in school and become doctors also. Could it have been boastful?

The Wikipedia describes these “post-nominal initials”:
Post-nominal letters, also called post-nominal initials, are letters placed after the name of a person to indicate that the individual holds a position, educational degree, accreditation, office, or honor. An individual may use several different sets of post-nominal letters. The order in which these are listed after a name is based on the order of precedence and category of the order. That’s good enough for me.
So I ask you: is the use of CSM or CSP an appropriate use of post-nominal initials?
If your not an agilista, you may wonder …

Agile Story Estimation via Dog Grooming Exercise

Practice story estimation techniques with this exercise in dog grooming.

Related Post:
Affinity Estimating: A How-To by Sterling Barton.
Dogfood David why I feel like an expert in the concept of eating one's own dogfood.
   Slideshare:  Affinity Estimation - Size 60 Stories in about 20 Minutes.
For each dog below, estimate the work effort (size) required to groom the dog.  Assuming that you have the tools and experience to groom dogs.  Grooming includes washing, drying, combing, nail clipping, and hair triming in some cases.


Start with the ever popular:
Golden Retriever (22-24 in, 50-90 lbs).




The short haired Dachshund (15-28 lbs).



The Standard Poodle (15-18in, 40-80 lbs).




Bernese Mountain Dog (25-28 in., 65-120 lbs).




German Shepherd (23-26 in, 50-90 lbs).



Yorkshire terrier (5 in, <10 lbs).




Beagle (13-16 in, 18-35 lbs).



Boxer (26-31 in, 55-110 lbs).




Bulldog (40-55 lbs).





Labrador Retriever (21-25 in, 55-130 lbs).





Great Dane (28-38 in, 120-200 lbs).




Komondor (25-32 in, 90-130 lbs).


Situational Leadership II Model & Theory

Have you ever been in a situation where you thought the technique needed to move forward was one thing, yet the person leading (your leader) assumed something else was what was needed?  Did you feel misaligned, unheard, marginalized?  Would you believe that 54% of all leaders only use ONE style of leadership - regardless of the situation?  Does that one style of leading work well for the many levels of development we see on a team?

Perhaps your team should investigate one of the most widely used leadership models in the world ("used to train over 5 million managers in the world’s most respected organizations").  And it's not just for the leaders.  The training is most effective when everyone receives the training and uses the model.  The use of a ubiquitous language on your team is a collaboration accelerator.  When everyone is using the same mental model, speaking the same vernacular hours of frustration and discussion may be curtailed, and alignment achieved, outcomes …