Lessons interviewing 200+ engineers: the perfect process to manage tech debt
As part of the customer development work for our new Stepsize product, I needed to understand the differences between software companies that have their tech debt under control and those that don't.
The research has revealed that organisations who actively manage tech debt will ship at least 50% faster.
I don't know a single software company that doesn't want to ship 50% faster.
Luckily, I did meet companies with solid tech debt management strategies. I also met plenty of teams that spent a lot of time and effort managing tech debt and still went nowhere.
Companies that do it right
All my research points to a simple fact.
Companies that successfully manage tech debt have developed appropriate processes that are fully integrated into their usual Agile ceremonies and have become habits.
These engineering teams are in control of their tech debt. They ship faster and more predictably. Their engineers are happier, their customers are happier—heck, they're all winning.
To win the battle, you just need to be clear on how you'll deal with small, medium, and large pieces of tech debt.
🤔 Curious to know how much tech debt is costing you? Try our calculator by clicking on the image below:
How to handle small pieces of debt
This is the type of tech debt that can be addressed as soon as the engineer spots it in the code and it’s within the scope of the ticket they're working on. It might be something as simple as the refactoring of a function, or renaming some variable. Try to follow Robert C. Martin’s boyscout rule:
Always leave the code better than you found it.
These small jobs don't require any kind of planning and every engineer should feel empowered to fix this kind of debt without anyone else’s approval. We’ve already written about the one cultural characteristic you need for a healthy codebase, but ensure it exists in your engineering team. If it doesn’t, take measures to address it now.
How to handle medium-sized debt
This type of tech debt can be addressed within a sprint. It should go through the same sprint planning process as any feature work and be considered just as rigorously. That's where most engineering teams fail—remember James Rosen’s comment: ‘Is it that surprising that close to zero engineering capacity gets allocated to tech debt?’
Businesses rightly prioritise work that delivers value to the customer. And, at first glance, getting rid of tech debt doesn’t do that.
But tech debt hinders your capacity to deliver value to the customer.
To explicitly demonstrate how this occurs, identify debt that gets in the way of crucial initiatives, and make the business case for it.
What are the tools that companies use to manage tech debt?
Jira is a great place to manage projects, but a terrible place to track and monitor tech debt.
Jake Peyser, Lead Engineer at Unqork
Many companies use Jira to create technical debt issues - and then forget about them forever. These lonely refactoring tickets that are never prioritised as the tech debt and business value are not aligned.
Code Climate or Codacy
These are great to include in your CI pipeline and code-review process, and are helpful at surfacing one facet of tech debt. Unfortunately, they don't catch most of the sneaky tech debt.
Stepsize is perfect for addressing middle-sized debt. Engineering teams have limited time to deal with tech debt and they need to make that time count. Stepsize helps you capture and track tech debt from your workflow. For example, you can report your debt directly from the editor:
- Explain what’s wrong with the code
- Make a suggestion on how to tackle this debt
- Track how much of an impact this piece of debt has had on you
This will help you quantify its cost to the business and ultimately prioritise the most important debt.
Each engineer can report tech debt and its cost directly from their workflow (including editors, pull requests, and Slack). These reports all go to the Stepsize platform where they are collated into ‘tech debt items’, describing and documenting issues in the codebase. All the data that engineers repot with Stepsize gets send to the technical debt wall.
It is then neatly documented in the tech debt items and makes it clear who is impacted by it, what features are in danger, and where it is located in the code.
We advise that engineering team leads assume responsibility for managing this process. They're the right individuals to stay on top of tech debt in those parts of the codebase their team owns, and to interface with the PM when it’s time to address the debt.
How large pieces of debt should be handled
This is the tech debt that cannot be addressed immediately or even in one sprint. The best companies I've interviewed have quarterly technical planning sessions in which all engineering leaders participate. Engineering managers are tasked with highlighting the large pieces of tech debt reported to them and making a business case for those they judge to be the most important.
This process, which sounds laborious, becomes very easy for Stepsize users. Their individual contributors have already been reporting debt from the frontlines regularly. This data is consistently reviewed and groomed by each team and their leaders, who relay the large pieces of debt—along with the data necessary to understand what they've cost the business—to their engineering managers. Stepsize even surfaces tech debt for each of your Jira epics.
Leadership can then use their understanding of the company's broader priorities and vision to sequence large pieces of debt accordingly.
Once each large piece of debt is approved, it can be scheduled onto the roadmap, just like feature work. Engineering leadership then has all the data they need to monitor progress on each tech debt project.
Any modern software company should be able to apply this process for small, medium, and large pieces of tech debt. However, one thing will differ between each company: business objectives.
Managing tech debt properly means addressing the debt that gets in the way of your business objectives. If your business is built on uptime and reliability, nuke any debt that puts them at risk. If velocity is your competitive advantage, get rid of any debt that wastes engineering time or makes it hard for new hires to understand the code. If you want to reduce customer churn, address the debt causing quality issues.
Be clear about the business case for addressing each piece of debt.Because when you are, you'll ship better software, faster—and you’ll keep your engineers happy.
Ready to start managing your technical debt? Try Stepsize for free!