Paying Technical Debt

15. Januar 2017
Kategorien
Newsletter abonnieren

Paying technical debt

The metaphor of technical debt in code and design can be defined as follows: You start at an optimal level of code. In the next release, you are adding a new feature. This would take an effort E. This, of course, assuming that estimations are somewhere near reality.
If the level of code was less than optimal, the effort will be E + T.

Where T is the technical debt. Writing bad code is like going further into debt. You take the loan now, and you repay the debt later. The bigger the mess, the larger the delay in the next release.

The term “technical debt” was first introduced by Ward Cunningham. It was in the early 90s when the disconnects between development and business were growing bigger and bigger. The business people would urge developers do release untested, ugly code in order to get their product or new features faster. The developers tried to explain why this was a bad mistake. Some things will never change…

Most products and projects are still released much earlier than the developers have wanted. Assuming that developers are not just being stubborn (I know, maybe an ever bigger assumption as decent estimations), you would think that we didn’t manage to get the message across to the business. We have done an awesome job explaining what technical debt is and what the results are going to be. The business people understand it. But they are just willing to take the loan now. Can you blame them? Business wants something out there, in the field, that will sell now.

Let’s assume that there is a discussion at one point before a release. It’s about delaying the release and making the code better or releasing now. My experience is that most times the decision will be in favor of an early release at the cost of less quality. There are a number of reasons for this:

– The business would rather have something now, and take the debt, because they have something new to sell.
– Besides the business decision, there are politics involved. People loose face with delayed releases because they promised their management that magic will happen.
– CapEx is paid from the project budget, but OpEx from a different budget. Meaning a lot of technical debt will not be paid by the project but a different department.

An example. On a recent project I was involved there were two very big debt creators.

1) Handling of a dependency on another System B. The team working on that system was completely overloaded. And instead of fixing the problems with that team, my team was forced by management to rebuild functionality that was already in place at System B. This was an architectural f*ç& up and caused many headaches later on.

2) The other one was not spending any time on test automation. Each regression test was done manually. This way we could never deliver each sprint something of good quality, nor could we deliver in fast cycles, cause after development manual testing started for multiple days.
Yes, we released some features earlier as we should, but o boy did the company paid for that later.

Tags

Das könnte Sie auch interessieren

The Reverse Triple Constraint of Troubled Projects

25. April 2017

Assuming you suspect or know that one of your projects is in trouble the first step is always an extensive project review. After such a review you hopefully have the necessary information for decision-making as well as the team’s support for the recovery of the project. It may be highly unlikely that the original requirements

Weiterlesen

8 Signs of troubled projects for project sponsors

19. April 2017

When you’re dealing with a troubled project, there are usually a number of red flags surrounding you. This article is written from the perspective of senior management (for instance the project sponsor, members of the Steering Committee, or the executive management). All of us have endured troubled projects that didn’t accomplish their intended business goals. Such watermelon projects,

Weiterlesen

Building Is the Easy Part…

6. März 2017

Agile Frameworks and books tell us how to build a product–that’s the easy part… What we are not told are equally important things like maintaining, operating, fixing and extending the built product. When your agile philosophies fail to cover these areas, it greatly reduces agile’s benefits. This is where DevOps comes into play. DevOps is the combination

Weiterlesen

Outsourcing Technical Competence Is a Very Bad Idea

2. Dezember 2016

Organizations do not lose control of large technology programs because they outsource work. They lose control because they outsource understanding. It usually starts with a familiar pattern. A company decides to implement a major system on a technology it does not truly understand. ERP, CRM, HCM, core banking, it does not matter. The internal capability

Weiterlesen

Estimating with Wideband Delphi and Monte Carlo Simulation

18. Oktober 2015

During the LeSS training in Berlin last week with Craig Larman he mentioned the best estimating method he knows for any big software project. Wideband Delphi with Monte Carlo Simulation. I agree with him on this one hundred percent. This article will explain what Wideband Delphi and Monte Carlo Simulation is (Part 1 & 2),

Weiterlesen
Previous