Understanding and Eliminating Technical Debt

In this course we explore what technical debt is, the problems it causes, and how you can identify and quantify it. We then address how to create an action plan to address it, and look at some practical techniques for repaying it.
Course info
Rating
(322)
Level
Intermediate
Updated
May 7, 2014
Duration
3h 16m
Table of contents
The Technical Debt Problem
Types of Technical Debt
Quantifying Technical Debt
Communication
Creating an Action Plan
Practical Techniques for Repaying Technical Debt
Description
Course info
Rating
(322)
Level
Intermediate
Updated
May 7, 2014
Duration
3h 16m
Description

If you are working on a large and successful commercial project, technical debt can gradually accumulate as you take the decision to do things the quick way rather than the right way. If care isn't taken, technical debt can threaten the long-term success of your project. In this course we take a broad look at the wide variety of forms that technical debt can appear in, and look at how you can identify it and quantify it with metrics. We also look at the challenges associated with repaying it, including getting the rest of the development team and your managers to view it as a priority. We conclude the course with advice about techniques and action plans for repaying the debt.

About the author
About the author

Mark Heath is a software developer based in Southampton, England, working for NICE Systems as a software architect creating cloud based digital evidence management systems for the police. He is the creator of NAudio, an open source audio framework for .NET.

More from the author
More courses by Mark Heath
Section Introduction Transcripts
Section Introduction Transcripts

Communication
Hi, my name's Mark Heath and in this fourth module in our Technical Debt course, we'll be looking at how we can communicate effectively with both developers and managers to ensure that everyone understands the problems technical debt is causing the project and come to an agreement on how the technical debt can be repaid. Now, so far in this course, we've looked in quite a bit of detail at the various problems that technical debt can cause us and we've also seen how metrics can highlight specific areas of concern that need to be addressed. But now we're going to shift our attention to thinking about how we can go about tackling technical debt. Now I believe that you're not going to get very far trying to reduce technical debt if you haven't got the support of the people you're working with. You need all the developers to be pulling together in the same direction. And you also need buy-in at the management level and maybe with your customers as well, if you as a developer are in direct contact with them. So in this module, we're going to start off by thinking about how we can communicate the technical debt problem to our fellow developers, and then we're going to look at what it might take to persuade those who are managing the project, that technical debt is something that needs to be taken seriously.

Practical Techniques for Repaying Technical Debt
Hi, my name's Mark Heath, and in this final module of our technical debt course, we're going to look at a few practical techniques that you can make use of as you attempt to repay the technical debt in your own projects. So far in this course, we've looked at what problems technical debt can cause, what different types of technical debt there are, how you can identify and quantify it, and how you can come up with a plan of action to address it. And so now the next step is to actually make a start and repay some of that debt. Now of course, every software project is different and yours will have its own unique challenges that you need to overcome, but I've found as I've repaid technical debt on large legacy code bases, that there's a few general strategies that I use again and again. So we're going to look briefly at three of them in this module and they're broad enough that they'll be applicable whatever programming language you're using and whatever sort of application you're creating. The first technique we're going to look at is cover it with tests and then modify it. The second is make it extensible and then extend it and the third is modularize it and then rewrite it.