Technical Debt in Software Projects
November 3, 2009 | Author: PM Hut | Filed under: Miscellaneous
Technical Debt in Software Projects
By Olve Maudal
With borrowed money you can do something sooner than you might otherwise. If you are willing to incur technical debt you can release a product earlier than you might otherwise.
We all recognize these stereotypes: The sales team is willing to (and sometimes do) sell a product and cash in the money long before development is finished. While the engineers are reluctant to let go of their baby because there are always sure things that can be improved. A successful business needs engineers and salespeople that are willing to compromise and cooperate on this conflict of interest. Technical debt is a powerful metaphor that can be used to work on a compromise, especially when we are talking about software development.
Technical debt in a software project includes internal things that you choose not to do now, but will impede future development if left undone. Examples of technical debt might be: We need to upgrade our compiler to a more recent version, but let us ship the product now and upgrade the compiler later. We do not properly understand how to implement this feature properly anyway, but this hack seems to make the customer happy for now. We have identified some dirty code that is slowing us down, but we choose to fix it in the next release instead. These are all examples of prudent and deliberate reasons for taking on technical debt which can be compared to borrowing money for sensible housing. There are also less responsible ways of incurring technical debt though, perhaps caused by; lust, gluttony, greed, sloth, wrath, envy or pride. Examples might include: writing bad code, skipping analysis and design, over-engineering, résumé-driven development and so on. This kind of technical debt is more like unauthorized overdrafts and check bouncing, and is best avoided if you have a long-term vision for your product.
Like financial debt, a technical debt will incur interests, and if you are not able or willing to pay back the loan then you risk go into bankruptcy. The nice thing about software however is that paying back is usually both possible and comparatively cheap. While making effective and strategic decisions about what internal qualities to postpone you should keep track of them and write down an estimated effort needed to do it properly. This will give you an idea of how much you owe at any point in time. Then, after rushing a release out of the door, you can immediately start to pay back by doing the postponed things properly and get a flying start into the next release. Retrofitting stuff like this might appear to be more expensive than “doing it right the first time”, but since we are dealing with software it is often the right approach.
Perhaps the most powerful feature of the technical debt metaphor is that it communicates well between technical and non-technical people. By quantifying the current technical debt in your product it should be possible to get management both interested and involved in the importance of controlling the debt burden.
Olve Maudal is a software engineer based in Oslo. He has worked for several Norwegian high profile companies such as Schlumberger, BBS, and Tandberg. He blogs regularly on http://olvemaudal.wordpress.com/ about Agile Project Management, software architecture, and coding.
Related Articles
feel free to leave a comment
Comment Guidelines: Basic XHTML is allowed (a href, strong, em, code). All line breaks and paragraphs are automatically generated. Off-topic or inappropriate comments will be edited or deleted. Email addresses will never be published. Keep it PG-13 people!
XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
All fields marked with " * " are required.











1 person has left a comment
[...] delivered, it is easy to understand that new functionality is prioritized over bugs and technical debt. Software degrades and changing it will become causing even more bugs and technical debt. This is a [...]