What is Technical Debt, and How to Deal with it

If you’re the owner of a large website or web application you may have heard your developers talking about something called technical debt. It’s frequently used in conversations about development practice, but many people don’t quite understand what it is. So, what exactly is technical debt, and how do we deal with it?

How is Technical Debt Defined?

Put succinctly, technical debt is the amount of work that needs to be done to fix code that has been written quickly, instead of written well.

You can think of it in terms of borrowing money. If you take out a loan, you can do things that you may have been unable to do without that cash flow. But eventually, you’re going to need to repay that loan, with accumulated interest. It’s the same with software development.

If we, as developers, rush a product out the door, the codebase is going to have inconsistencies and deficiencies. Structures may be brittle, race conditions may be present, and while the software may function, you can have more bugs than you intended.

The process of repairing these problems and cleaning up the codebase is the interest payment on that loan. You’re not actually paying off the initial loan amount, only the interest that’s accruing. You still have to pay off the actual loan. It’s the penalty you’re paying to rush the items out the door. That’s the technical debt of the project.

Types of Technical Debt

So far, we’ve identified the type of technical debt that occurs when we are rushing to get a project going. This can be intentional or unintentional depending on the experience level of the developers. We call this “active” debt. If we dig a little deeper, though, we can identify another type of technical debt that can creep into a project. This is when code becomes outdated, or fails to meet evolving business requirements. We call this type of debt “passive.” It exists in almost every software package out there.

How do We Address Existing Technical Debt?

It’s important to look at each software development project as a dynamic process. Like a garden, it needs to be tended and updated on a constant basis. The general trajectory of the process needs to be towards the creation of more stable and flexible software structures.

In the enterprise, this means creating a budget to maintain and update existing applications on a month-to-month basis across the board. Have your senior developers identify the most egregious issues in the codebase, and prioritize fixes for these items. Static code analysis tools can be a great help in identifying problematic segments of code.

Preventing Technical Debt

Development teams need to adopt strategies for dealing with technical debt. At Curious Minds we use a streamlined, efficient approach to mitigate and prevent technical debt.

  • Bug reporting-Automated bug reporting is critical to understanding what’s happening in the application. It’s important to include all bug reporting, both fixed and unfixed.
  • Automate code quality checks-We use several static analysis tools that include syntax, complexity, depth, and code adhesiveness. Not only does static analysis let the team look at the quality of your commits, but it also shows where to begin on investigating projects.
  • Ownership-If it breaks, who is going to fix it? Knowing this simple idea is critical.

Keeping Ahead of Technical Debt

Curious Minds has over 17 years of experience developing and maintaining enterprise applications and marketing sites. We understand how to help organizations manage and mitigate technical debt in their development efforts. Contact us today, and we’ll show you what we can do for your development team.

About Curious Minds
We are a web development firm in New York and Chicago, providing development resources and consulting for websites and mobile apps since 2004.