Alfred AnyanInsights
← All insights

Technical Debt and Runway: What a Failed Deployment Rehearsal Taught Kojo

Team of developers working together on computers in a modern tech office.

Photo by cottonbro studio on Pexels

A product can survive a difficult codebase only if the team can still change it safely within the runway available. Technical debt becomes an investor problem when every important release depends on knowledge trapped in one person, fragile integrations, or code nobody can test with confidence.

Imagine Kojo, a composite founder, at 4:20 on a Thursday afternoon in Accra. His coffee had gone cold beside a spreadsheet showing six months of runway when an investor on the video call asked, “If your lead engineer left tomorrow, could this product keep moving?”

Kojo started to say yes. Then he stopped.

The question behind the question

The product worked. Customers could complete the main workflow, the demo looked convincing, and the team had shipped several improvements that quarter.

But one engineer understood the payment logic. A second knew why the AI output passed through two separate services. The deployment notes lived partly in a shared document and partly in old chat threads. Automated tests covered the stable paths, while the parts changing fastest still depended on someone remembering what had broken last time.

The investor was asking about code, but the real subject was continuity.

Could another engineer trace a failure without calling the founder? Could the team release a customer request without disturbing the payment flow? Could diligence continue if the lead engineer accepted an offer elsewhere?

Kojo could not answer those questions from memory without guessing. The investment process might stall. Worse, the company could spend its remaining runway proving demand for a product it was becoming afraid to change.

That possibility stayed on the table after the call ended.

Debt became a runway choice

Technical debt often remains invisible while the same small team keeps compensating for it. The engineer who wrote the first version remembers the exception. The founder knows which customer configuration needs manual attention. Releases still happen because the people carrying the missing context remain available.

Diligence changes the unit of measurement.

A shortcut that once saved three days now has to be judged against the cost of every future change. An undocumented service is no longer untidy housekeeping. It is a dependency on whoever remembers it. A manual deployment step becomes a question about how many releases the company can attempt before one goes wrong.

Kojo’s first instinct was to approve a broad rewrite. The current system felt embarrassing, and a clean rebuild promised relief.

The spreadsheet beside his coffee made that option harder to defend. A rewrite could consume the same months needed to prove the next customer segment. It could also recreate old mistakes in cleaner code while introducing new ones the team had not yet met.

The decision narrowed to three paths: continue shipping and hope the team held together, pause the roadmap for a rebuild, or repair the parts that could stop the company from learning.

Only the third path matched the constraint.

Repair the code that controls learning

Kojo and his engineer mapped the product by consequence rather than elegance.

They started with the paths tied to revenue, customer data, deployment, and the AI output customers acted on. For each path, they asked whether another person could understand it, test a change, and recover from failure. Anything that depended on private memory moved up the list.

This is the same discipline behind asking whether an AI agent’s code change can be approved while the specialist sleeps. The immediate issue may look like code review. The deeper issue is whether the company has enough visible evidence to make a safe decision without waiting for one particular person.

Kojo cut two planned features. The team documented the payment flow, added tests around the most expensive failure paths, removed an integration nobody could justify, and rehearsed a deployment with the lead engineer staying silent.

The rehearsal failed.

A configuration value existed only on one engineer’s machine. Without it, the release could not complete. That discovery cost the team an afternoon. Finding it during a customer incident could have cost far more.

With the investor waiting for a follow-up, the work felt uncomfortably close to the deadline. Yet the failed rehearsal gave Kojo something stronger than a polished architecture diagram: evidence of where the company would break, followed by evidence that someone else could now recover it.

Give diligence an operating answer

The useful response to a codebase question is rarely “our architecture is scalable.” That sentence hides the decision an investor needs to make.

A better answer shows how the product survives ordinary disruption. Name the critical paths. Show which risks remain. Explain what the team repaired, what it chose to leave alone, and why that order protects the next commercial milestone.

Technical debt does not need to disappear before a company deserves investment. It needs to become legible enough to manage. Founders on limited runway cannot treat every rough edge as urgent, but they also cannot let the roadmap depend on code that only one tired person can safely touch.

The following Thursday, Kojo did not return to the call claiming the codebase was clean. He shared the failed deployment rehearsal, the missing configuration it exposed, the tests added around the highest-consequence paths, and the work still deferred.

Then he closed the spreadsheet. Six months of runway was still six months, but the next release no longer depended on one engineer remembering everything.

Comments

No comments yet.