Technical Debt: The Good, The Bad, The Disastrous. A Guide for Non-Technical Managers
This guide explains technical debt in simple terms, its impact on business, and how non-technical managers can effectively manage it.
Technical debt can be tough to wrap your head around. In its core, it’s like any kind of debt. It has interest that represent the cost of borrowing!
In conventional debt schemes, you borrow money that you don’t have to afford something that you normally can’t afford on your own at that moment of time.
In tech debt, we borrow time and effort that we don’t have, to afford deadlines and timelines that we normally can’t afford with our current resources.
Imagine using a credit card to buy a new laptop. You get the laptop now, but you'll pay interest later. Technical debt is similar: you get the feature out quickly, but you'll pay for it in increased maintenance and bug fixes later.
The Cost of Rapid Growth
Technical debt manifests differently depending on the company's context and stage. In fast-paced startups, it often arises from the need to quickly adapt to changing requirements. There is always the push for shipping new things and changing requirements and directions.
Usually a small to medium team of talented engineers is hired to convert the vision of the company from words and logos into products, user-base and revenue.
Engineers excel at breaking down large goals into manageable tasks. Executives view the company's vision as a whole, while engineers see it as interconnected components.
When you work in a rapidly changing and growing field, change is a main actor. When priorities shift, engineers have to scramble and readjust their plans, sometimes cutting corners in design and implementation that introduce technical debt.
This approach can work in the short term to meet current timelines, but it will bite the business later, either by breaking or by slowing down any further development, which can affect the business's fate and finances badly if not properly addressed
Building software is like constructing a house. You need a solid foundation before adding features. Rushing to add features without a strong base leads to structural problems.
How Ignoring Tech-Debt Can Affect Non-Tech Manager
Let's explore how technical debt, often seen as a technical issue, can impact the real-world problems that non-technical managers care about
A typical timeline would be like this:
Initial Change:
The company changes timelines and wants to release something earlier than intended. Executives inform managers about the updated plan and ask them to make it happen. Managers reach out to tech leads and ask them to expedite the process. Tech leads try to explain the cost and drawbacks of releasing things earlier than planned, mentioning technical debt briefly. Managers, focused on immediate goals, often overlook these warnings.
Short-Term Success:
After a few months, the product is successful and needs to grow more, adding new features and building new products on top of it. Tech leads explain that they need to address the technical debt generated by the first iteration to confidently build on top of it. Ignoring this might risk the whole project becoming unusable or requiring a huge re-write.
Long-Term Consequences:
Managers, recalling that ignoring technical debt warnings worked out fine the first time, decide to ignore them again. This time, the product updates are shipped with more problems than new functional features, and fixing them takes more time than before. As a manager, you face problems with the engineering teams who tried to warn you and with the upper management and executive team because you are unable to deliver on promises and manage things properly.
All of this add up and compiles into
Decreased development velocity
Reduced product quality
Engineering team frustration
Missed deadlines and commitments
Loss of trust from upper management
Increased maintenance costs
Dealing with technical debt as a non-technical manager requires understanding how it can affect the entire chain. Ignoring it is a recipe for failure.
A classic example of the impact of technical debt is the Southwest Airlines shutdown. The airline's failure to address technical debt in their crew scheduling software led to losses exceeding $1 billion and severe reputation damage [source]
But how should we deal with it? No no, how we can prevent tech debt from the start?
You can’t prevent technical debt entirely, and you shouldn’t think this way.
The Good Side of Technical Debt
Technical debt is often seen as a villain that eats time and effort that could be used to build useful things instead. But this is not the full story.
Technical debt is a natural result when you need to move faster and deal with real-life conditions of moving and changing environments. It allows you to borrow from the future to achieve things in the present like
Faster initial delivery
Market opportunity capture
Flexibility in development (in the short term)
Creates space for real-world adaptation
Can be a strategic tool when managed properly
It becomes problematic when you ignore the increasing interest and don’t pay it off as soon as possible. Without this ability, your business can miss opportunities that might cost a lot.
Think of technical debt as a strategic tool, like borrowing money to invest in a high-growth opportunity. If you invest wisely and repay the debt promptly, you can reap significant rewards. But if you ignore the debt, the interest will compound and eventually cripple you.
A good management of tech debt requires good engineering and leadership. Learning when to go for it and when to stop a bit to take a breath and fix things.
Dealing with Tech debt is not a luxury; it’s a necessity!
How to deal with tech debt in a healthy way?
Dealing with technical debt requires a collaborative effort between management and engineering.
Engineering
Engineers need to keep things simple and maintainable. They should track technical debt and allocate part of their time to keep it minimal. Tech leads need to keep things in check and communicate the full status to managers, informing them about the team’s needs and challenges.
To effectively measure and manage technical debt, consider using metrics like code complexity, code churn, and defect density. Tools like SonarQube and CAST Highlight can help you track and analyze these metrics.
Also, good coding practices, regular code reviews, and automated testing can significantly minimize its accumulation
Management
Managers need to listen to technical leads and not ignore their updates and advice. They should keep the team updated on potential changes from the executive team and work on setting reasonable expectations that the team can meet, along with a plan to minimize future issues.
Prioritize technical debt repayment during sprint planning.
Allocate specific time for addressing technical debt.
Foster open communication between engineering and management.
By understanding the strategic value and potential risks of technical debt, non-technical managers can work collaboratively with their technical teams to ensure project success and long-term business health.