9 Levers for CTOs to Pull for Mitigating Technical Debt
Key Strategies for Business to Solve for Technical Debt
The Executive Brief
Who among us has not enjoyed a big, steaming pile of technical debt? We first encounter it as wet-behind-the-ears engineers. In those early stages of our careers, we shake our heads at how stupid and incompetent the original designers of the system were.
Our understanding evolves as we rise through the ranks. We start to understand that technical debt is unavoidable. It’s digital entropy.
As a CTO, your ability to manage the technical debt of your organization will be one measure of your success in the job. As we see in today’s article, there is no one-size-fits-all solution. There is complexity and nuance.
It’s a hard problem, and hard problems are what CTOs get paid to solve.
9 Levers for CTOs to Pull for Mitigating Technical Debt
So you’ve taken over a very large technology ecosystem with lots of systems and a tremendous amount of technical debt.
But you’re one of the lucky CTOs: your business believes in the idea of reducing / mitigating technical debt so that Product & Engineering will ultimately be better, faster and stronger.
No convincing necessary! Which is rare, of course 😃
Therefore the question now really is: what are your options for mitigating the technical debt in the most efficient way possible?
My answer always starts top-down with first offering clarity to the business in terms of the menu of options available. These are the key levers available to any business looking to reduce its technical debt.
When you look at it in terms of the levers you can pull, you can start to establish which apply to your business, which ones are the biggest bang-for-the-buck, which ones are highest priority, how much each one will cost, the impact of each and so forth.
So, lets get into it.
9 Levers for Mitigating Technical Debt in Most Companies
1. Code Usage Analysis
This one is fairly straightforward. Leverage one of a dozen tools available to analyze which parts of your global codebase is most, least and not at all used. You can then develop a strategy that deprecates code, merges code and simplifies code as appropriate. This can be a relatively easy and big win for Engineering.
2. Re-architect Products
Software architectures that made sense once upon a time but are no longer the right approach can be a major driver for your technical debt. Have your architects create a before and after for the most problematic architectures in your ecosystem. Then you can create a roadmap with spend estimates and ROI / impact projections like reduced lines of code or deprecated code classes.
3. Replace Proprietary Products with Outside Solutions
If you have many in-house systems look for external commercial solutions to bring in to replace them. In many cases the outside solutions might be equal or better than your proprietary products and your team will have one less codebase to support.
4. Convince Customers to Drop Legacy Products
Work with internal teams (like customer success) to talk to your customers about dropping old systems that aren’t adding a lot of value for them. It takes skill but you can develop retirement and sunsetting roadmaps in collaboration with customers if they see they will get something more valuable in return.
5. Migrate Systems to the Cloud
The cloud isn’t a panacea but it can certainly help with technical debt reduction when it comes to old on-prem systems that many companies with large ecosystem are still stuck with. Develop a cloud migration plan that shows the spend and ROI in terms of reduced code, reduced systems, reduced data, etc.
6. Delete Data
This lever is usually the fun one. Traverse your entire technical ecosystem looking for data that is stale, unused and non-relevant. Most complex ecosystems have literal terabytes of data lying around which create lots of technical debt in terms of storage, management and security. Develop a deletion plan as well as a go-forward data management policy so you don’t end up in the same position again.
7. Remove Functionality from Products
Most products in large & old ecosystems have LOTS of edge-cases built into their products over the years. Do you really need all those edge-cases and customizations? Look for ways to simplify product functionality. Will there be customer pain? Maybe. But your technical debt “swamp” is also probably holding your team back from innovating and customers don’t like that either!
8. Upgrade 3rd Party Dependencies & Integrations
Here’s an example: you’re routinely connecting to an SFTP server that one of your partners runs. As a result you’re also maintaining dozens of scripts related to that connection. If there’s any one of your integrations to upgrade to an API (instead of SFTP) it’s this one. 3rd-party dependencies like this play a huge role in driving up the tech debt of large ecosystems.
9. Change How Customers Use the Products
Almost every customer has some kind of process that they run using your products. If you streamline their process, then you can streamline your products. Yes, this one is the hardest one on the list potentially. But if you a work closely with your best customers sometimes you can make their process more efficient & impactful, and then propagate those ideas to the rest of the customer base. In turn this lets you simplify your product suite in the long-run.
—
Hopefully these levers will help you think more clearly about how to mitigate the technical debt in your large ecosystem of products and technology systems.
By organizing your strategies in this way you can offer an “a la carte” menu to your CEO and the rest of the business to choose from, depending on cost, impact and so forth.
In a future article I’ll talk about building the literal “a la carte” menu in Excel. I call this the technical debt matrix and it will help you create the right tech debt mitigation roadmap.
Here are some other articles from Technocratic that you may enjoy as well: