I work for a company laser-focused on the development of systems meant to organize the world’s information and make it universally accessible and useful. I have come to appreciate the importance of this mission after witnessing firsthand the media scrutiny faced by the company and the weight of its decisions.
Because the mission does not represent a conventional purpose for a company of its size, the company’s central embeddedness affects the vast majority of the population. And importantly, with this centralized information indexing, comes great responsibility. Further, realizing this mission requires scaling rapidly and future-proofing continued development.
Doing so requires mitigating the effects of technical debt, or the “cruft” that accrues in early-stage development and hinders long-term growth in scale, features and functionality. In other words, the shortcuts some may take to scale toward success.
Formally, the definition of technical debt reflects the implied cost of additional rework caused by choosing an easy (or expedited) solution now instead of using a better approach which would require more time and resources and provide greater benefit later .
To be effective and flexible with the company’s development, it must manage its technical debt and build with an eye on the future.
Technical Debt and Financial Debt
Make no mistake, debt is a complicated animal no matter its flavor. Technical debt parallels the concept of financial debt, whereby an individual (or company) borrows against future potential to take advantage of an opportunity now.
Just as financial debt can help you to reach major life goals faster, it too can erode other opportunities you encounter because of insufficient resource capability to seize them. Your financial and technical resources remain tied up in the debt accrued to get you to this point.
On the other hand, and also like financial debt, not all technical debt entails bad connotations. Quite the contrary. By managing debt wisely, it can yield tremendous benefits for you to take your circumstances to a better place.
In the case of rapidly-growing companies and their business startup costs, many have a critical need to ship products early and often as a means to find a solid product/market fit, meet customer demands, or seize opportunities.
However, just like bootstrapping your company with debt, incurring too much technical debt can result in friction, growing pains and the aforementioned “cruft” impeding further growth.
This post examines technical debt and how to overcome its limitations when growing your business.
What is Technical Debt?
When growing a modern, asset-light, intellectual property-heavy business, most prioritize scaling rapidly and bringing the business to a mature state as quickly as possible. While certainly an admirable goal, shortening this growth path can often involve taking shortcuts which jeopardize long-term capabilities.
In software development, engineers and coders will often take shortcuts in the way they build their code base. This allows them to ship the product sooner. Technical debt represents these deficiencies in internal quality that make it harder to modify and extend the system further than it otherwise could.
Specifically, technical debt serves as a metaphor framing how to think about dealing with these deficiencies, likening it to financial debt incurred by an individual or company. The extra effort required to add new features to the original system represents the interest paid on the debt.
This time could otherwise be applied to forwarding a better-designed module, system, or product had a longer term vision been utilized.
Why Managing Technical Debt is Imperative
While incurring technical debt might be the right business strategy early in a business’s history when it tries to establish itself in the market (or build an entirely new one), gain customers, or generate that crucial initial revenue and earnings, the shortcuts taken often limit the ability of the software to gain additional users beyond certain thresholds.
Further, this also creates problems with user experience if additional features layer on top of existing systems which did not contemplate such complexity when designed.
To be clear, not every business has a software product it markets to customers. However, technical debt proves a worthwhile concept to keep in mind for business in general.
All companies accumulate some form of “technical debt,” cruft, or general frictions as they scale and evolve. When the next round of funding depends on pushing a successful product to market, sometimes this technical debt benefit outweighs its costs.
As said above, not all debt is bad. In some cases, debt can prove shrewd and calculated with the understanding it will be repaid in full when it comes due. However, the time taken to repair the underlying limitations accrues a real cost: what else could you have used this time for productively to build upon a more robust system?
Technical Debt: Principal vs. Interest Payments
The weeks taken to clean up a system, structure, or product represents repayment of technical debt’s principal. If this change only occurs for one feature (not redesign of the system, process, etc.), only one payment toward the debt occurs.
If this time and resource commitment necessary to change the system compounds, that represents the interest paid on technical debt.
On one hand, if you redesign the process from the ground-up to suit your current and future needs, you extinguish the debt entirely. Sticking with our financial debt metaphor, you repay the loan in full to the detriment of your equity holdings. Cash in the bank becomes cash to the bank.
Conversely, imagine making changes as you encounter the need. This saves time down the road on potential problems you would have encountered under the status quo. This represents making a principal payment on your technical debt.
For example, if you make a change resulting in two days of effort but saves four days of reconfiguring in the future, you have received a net benefit. In short, you have made a payment toward your technical debt’s principal.
With savvy planning, you could opt to make payments over time (minor changes), moving you toward a resolution in stepwise fashion and avoid exhausting all of your resources at once.
Technical Debt Examples
As in finance, sometimes we incur technical debt deliberately as a means to an end. Much like financial debt, we incur technical debt because we cannot afford to purchase (re: accomplish) an asset today with our current resources. However, with some added help, we can borrow against our future success and pull forward our needs to the present.
So is true of incurring technical debt in the following instances:
1. Incurring Technical Debt Deliberately
Corralling employees toward a shared goal can prove challenging. However, when properly motivated, individuals can move with a sense of purpose along the path toward completion.
While there usually exists a “right” way to do something, there also exists the quick way to do something as well.
In the world of software engineering, the quick way and the right way are often the same as a manner for avoiding over-engineering. However, when a sense of urgency pushes prudence aside, sometimes the “wrong” way takes precedence in order to deliver a product to market quickly.
When considering this route, evaluate not only how much time you can save on launching a product feature, but also what it will take to repay this consciously-incurred technical debt. It may rear its ugly head down the road and limit future growth potential.
To combat it and proactively plan for its repayment, keep track of this technical debt and make conscientious efforts to address it as you progress toward your goal. If you do not track this technical debt explicitly, it could result in a lack of repayment and compounded problems.
2. Incurring Technical Debt Accidentally
Sometimes, designing future systems requires balancing a future view of the product with your current circumstances. As product features evolve and change, you might come to realize your initial design contained flaws and prevents new functionalities from developing.
Consider making a good original design by emphasizing simplicity and not over-engineering a product or system. Complexity often represents a tough, devious and sneaky enemy. This enemy entrenches itself into your own lines only to be found when it is too late.
Simply put: the enemy is complexity and lack of flexibility.
Software engineers around my office speak of technical debt as falling into four types and split across two primary categories. The first dimension includes assessing the Recklessness vs. Prudence of the technical debt while the second involves looking at it from the point of view of Deliberation vs. Inadvertence.
To be clear, technical debt in the original sense applies to software companies. However, generalizing this logic to all business areas can result in the following Business Debt Quadrants:
Technical Debt Quadrants
|Deliberate||We do not have time for...||We know it is not perfect, but let's move forward and fix it later.|
|Inadvertent||What is an Org Chart?||Now we know what we should have done.|
While categorizing technical debt does not necessarily make it easier to handle, it can enable more productive conversations and strengthen a team’s capabilities. Understanding it and why it exists should enter into your thinking as you seek continuous improvement and growth.
Never Stop Improving
When you prepare your financial picture accordingly, your financial future can have few limits. Building a successful brand requires astute decision-making and attention to detail, whether addressed now, at some point in the future or along the way.
When starting a business, you do not often contemplate building the infrastructure necessary to support a billion dollar revenue company. Lest the business ever get off the ground.
However, at some point, the shortcuts taken on the systems built to “get started” will require tinkering. This proves especially true should you have ambitions to facilitate continued growth in the business.
When considering how best to improve continually, whether financially, through personal development (e.g., mitigating unconscious biases), or building a company, ensure you have line of sight on what must be done to prepare for the next phase of growth.
Finally, always consider taking the time to identify where the “technical debt” may lie in your life, development or business and work to pay it down. Do not do this because a crisis exists today, but rather because the best always tweak and improve their core operational infrastructure as a matter of habit. In other words, never stop improving.