Technical debt is a term that refers to the cost of maintaining and updating software systems as they age. It is a common issue that affects companies of all sizes and industries, as they struggle to balance the need for innovation and stability in their software systems.
Teams may not be aligned with the architecture in companies that have a lot of technical debt and/or legacy systems. Their work is complicated and cluttered with dependencies. Even simple tasks can take a long time to complete, if at all.
Donald Reinertsen, the author of three best-selling books including “The Principles of Product Development Flow”, prefers the term "deferred work" rather than "technical debt" to describe the issue.
Tech debt, he argues, is different from financial debt, which must almost always be repaid, and the total cost of repayment rises as time passes.
Work deferral (tech debt) may have an economic cost. If the financial benefit of deferring work outweighs the additional cost, then incurring technical debt is a wise economic decision.
At Amazon, service teams stay together for a long time. Amazon does NOT do "projects". The money keeps coming in. This ensures that operational quality is taken care of, reduces tech debt, and prevents companies from being locked into old technologies. Still, many managers obsess over technical debt, which often cripples the ability to innovate and grow, stifling profits and costing opportunities, leading to employee churn and even customer churn.
In this article, I’ll introduce one concept from finance that would be more worthwhile to apply.
It is called the barbell strategy.
The barbell strategy is an investment approach that reduces the risk of ruin whereby you are taking on very little risk overall while still benefiting from very high risk and high potential upside.
The barbell strategy is a risk management strategy that involves taking on both very little risk and very high risk, while avoiding moderate, “average” risk.
Applied to technical debt, here’s how it would work in a nutshell:
The company would commit to taking on very little technical debt in critical systems while allowing for higher levels of technical debt in non-critical ones or in systems that are not core to the business.
Another way to slice this would be to consider systems that make up the core of the value generation engine at the company.
The majority of the resources would be allocated to paying down tech debt in those systems while allowing it to be incurred in systems that have not yet proven to generate a sustainable return.
In the classical example of the barbell strategy, you would try to protect your net worth by investing the vast majority of it in low-risk investments. But to get the best returns, you would also keep a small amount of your net worth that you could afford to lose safely and inverse the approach: invest into high-risk/high-reward assets.
This would give you a disproportionately high upside.
Imagine you have a net worth of $1 million.
Under this approach, you’d invest 90% in safe bonds or even certificates of deposit. That way, whatever happens, you always retain 90% of your wealth. But if this was the only thing you did, your returns would be quite low. To counter that, you’d use the remaining 10% and invest it in high-risk/high-reward ventures, e.g. high growth startups.
If you lose 10%, you still keep the other 90%.
And imagine if you get a return on even a portion of the 10% you invested — say, your seed investment of $50,000 in Airbnb becomes $2,000,000 after the company goes public. You’ve got a 43-fold return and tripled your net worth while never risking more than 10% of it.
You didn’t risk much, yet you won big.
You can see why this strategy can be attractive.
To implement the strategy, it's crucial for a company to identify its critical systems. Those are the systems that are considered business-critical, legally and regulationally compliant, directly impact the customer, have a direct impact on the company's reputation, are interdependent with other critical systems, are older or more complex, and are considered strategically important for the company's future growth.
To help companies with this task, a categorization rubric can be used. The rubric consists of several dimensions, each with a set of questions to guide the company in identifying its critical systems.
Let’s look at some of these questions you might ask your executive team:
The conversation alone can spark a great debate, but you would end up with a few buckets of systems and products.
But what does it mean in practice when you have systems that are business critical and thus need a proactive and consistent approach to paying technical debt, and what does the opposite look like?
It helps to think of systems that you consider critical as being similar to the core at the center of the Earth. The tectonic plates move slowly and the shape of the land changes slowly. What this means is that a typical backlog for these systems would consist of refactoring and maintenance work, and have very little new feature creation. This fundamental layer, this Bedrock, if you will, changes slowly. Your engineers are tasked with ensuring stability, and flexibility, and driving down the levels of technical debt.
Meanwhile, the relatively small investment you make is in high-growth areas. Here you should accept the accumulation of tech debt.
How a startup in your financial portfolio would ideally behave under this strategy is how this part of your systems would have to behave.
The tradeoff for taking on this debt would be the chance to earn the right to become critical and core, and thus the right to have the tech debt repaid in future cycles.
While your Bedrock isn’t moving, your top layer is moving fast, fighting for survival, using the best tools at your disposal.
So here we are.
By focusing on reducing technical debt in critical systems, a company can minimize the risk of disruptions to its core operations and maintain a stable, reliable platform for its customers.
Additionally, by allowing for higher levels of technical debt in non-critical systems, a company can give its development teams more freedom to experiment, take risks, and deliver new features and functionality swiftly.
However, it's important to note that the barbell strategy has some limitations.
It is difficult to predict which systems will become critical in the future and thus where new levels of debt would become crippling.
It can be challenging to determine what constitutes a "critical" system.
The barbell strategy for managing technical debt is a valuable approach for companies looking to balance the need for innovation and stability in their software systems.
By identifying critical systems and reducing technical debt in them while also allowing for higher levels of technical debt in non-critical systems, companies can minimize risk, encourage innovation, and align with their overall business strategy.
However, it is important to remember that the barbell strategy has its limitations and each company should assess its specific circumstances and resources to determine the best approach to technical debt management.
If you’d like to see some other strategies used at Apple, you should