Blog

Technical Debt And The Company Growth S-Curve

Photo by Jeremy Bishop on Unsplash

Many business go through a well-known growth process that can be visualized in an S-curve. The four stages in the curve are points in time that require a different approach towards technical debt. It’s important to know when to do what with your technical debt, so that your approach doesn’t slow you down.

The Company Growth S-Curve

The company growth S-curve is a model to describe how companies typically grow. Especially startups, which try to build something that has a market fast, then scale up and finally mature the product.

The curve is shaped like a (slightly stretched) “S”:

Growth can be several things, but it usually encompasses things like customer base, revenue or general size of the company. Let’s take a look at each step, and what it means for technical debt.

Start: Don’t Care

At the start of a company, you might still be testing if there is even a market for our product. As you do so, you’re building company processes, teams, culture and more. A lot of things are moving as you experiment to find what works best.

Hopefully, you can win over some customers, proving that your company is bringing some value and the investor’s money isn’t being wasted.

In this stage, money is usually tight and you need to prove that you have a market fit fast. If you don’t, funds may dry up or competitors may run with your idea and deliver faster. So this is not the time to be worried about technical debt. Take off-the-shelf technologies to move faster, but don’t worry about writing pristine code in a highly scalable modular architecture. You’re not even sure you’re going to need all of that. Indeed, sometimes entire pieces of the product are thrown away, or the product changes entirely.

In this stage, you often have a smaller codebase, smaller teams, less moving parts. This means you also have a smaller surface of where you can encounter technical debt. It still feels manageable and not a big problem.

Developers who insist on “developing it correctly” could very well stop you from getting the fast feedback you need at this stage:

Growth: Now Is The Time

In the growth stage, you’ve found there is a market for your product (even if it was not what you originally thought) and your customer base is growing. This is the moment to start defining and streamlining processes, in order to cater to growing user demands.

This is also the moment to look at the technical debt you have accumulated and see what has to be fixed. In this stage, you can probably still get away with doing things the way you have done. But if you keep on taking on technical debt, you will make it impossible to keep up in the next stage:

Scale: Could Work

If you did invest time in streamlining processes and reducing technical debt to make your product scalable, this is the stage in which your company really grows, at a fast rate.

In this stage, you may still need to adapt processes and operations to support the growing customer base. And of course, you will still have some amount of technical debt. But hopefully, you took the time in the growth stage to reduce those large pieces that would now be holding you back.

If you didn’t, many experts will tell you the scaling isn’t sustainable. But I’m not so sure. I suppose it depends on your revenue. It’s amazing how inefficient companies can afford to be, as long as money keeps in flowing in.

There are many examples of how a market leader position makes companies lazy. Here are some:

  • Lotus 1-2-3 was an extremely popular spreadsheet application in the 1980s that embraced the graphical user interface too late, causing it to lose its dominant position to Excel (among other reasons like Microsoft being able to bundle Office with Windows).
  • Internet Explorer, the predecessor to the Edge browser, was once market leader and stopped innovating.
  • Sony was leading the portable music device industry with its Walkman brand but embraced the digital music revolution too late and lost its dominance to the iPod.

Of course, things are always more complicated, but I know I’ve worked for a few companies where inefficiency is rampant, but the company can bear the costs because their revenue is so high.

Be that as it may, I’m still convinced that technical debt should be tackled in the growth stage, to enable the scale stage. Especially for startups, where money isn’t necessarily abundant. But if the company is already scaling, it isn’t too late to look at tackling the technical debt. Because the technical debt may stop the scaling sooner or later:

In order to scale, some companies will also start looking at other markets and see if their product can be applied there as well. Here too, technical debt could make this effort a lot harder than should be necessary.

But as mentioned, if money is really flowing in, you may pull it off to ignore the technical debt. But do you want to risk it?

Maturity: Regular Work

When your company reaches the mature stage, the hypergrowth slows down. Business decisions like how to retain customers and employees need to be addressed in this stage.

As for technical debt, it should now be a recurring part of the engineer’s jobs to reduce it where possible. And if you still have the culture from the first stage, it may be difficult for some to make the switch. It’s no longer acceptable to hack your way around, because a small bug may have an impact to substantial user base and possibly also a huge impact on your company’s reputation or bottom line.

As the product is now more mature, the fast pace of cranking out features can slow down a bit and make room for reducing the technical debt further (as this effort is never done). Of course, you have a mature product and company by now, so you should be able to support some amount of technical debt. But as we saw, lazy companies tend to be overtaken at some point in time, or they just stop growing and muddle along.

The Right Approach

As we saw, a company, especially startups, tend to (try to) follow an S-curve for growth. At each stage, it’s important to take the right approach to technical debt. If you take away from this that the only stage where technical debt shouldn’t be reduced or avoided is the start phase, you’re right. At that point, you need to build something quickly and get your first paying customers. Then increase the usefulness of your product with the features they need. Too much attention to perfection could make you stay in the start phase forever (or until you run out of funds).

But once you start growing faster, technical debt is a liability that may put your entire growth path at risk. It must be addressed to grow further, especially if you intend to scale rapidly. Once you pulled it off and have a successful company and product, technical debt will remain something to reduce on a regular basis.

Leave a Reply

Your email address will not be published. Required fields are marked *