How We Eliminated Millions in Technical Debt for SA's Largest Retailer
Debt isn't a metaphor. It's the tax you pay every sprint for yesterday's shortcuts — and we collected it, then tore up the invoice.
1/15/2024 • 14 min read
Technical debt is not a vibe. It is the extra hour a release takes because nobody trusts the checkout path, the weekend a retailer spends explaining why stock is a rumour, the feature that died in committee because the monolith flinches.
South African retail at scale is unforgiving: many stores, bad networks, real money, staff who will invent a workaround before they file a ticket. We went into a Fortune-class retailer whose platform had grown the way vines grow — around every urgent season — and treated debt like a product with a P&L, not a scolding.
The four-pillar work was unglamorous on purpose. First, automated analysis that named the hotspots in language finance could hear: change-failure concentrated in three services, lead time exploding wherever a shared table was involved. Tools matter; the sentence you take to the steering committee matters more.
Second, a refactoring schedule with teeth. A meaningful slice of every sprint was reserved for paying down the interest, not "when we have capacity." Capacity is a myth in retail. You make a lane or you drown.
Third, architectural standards that were short enough to obey: bounded contexts, typed contracts, no new god tables, observability as a merge requirement. Governance that cannot be quoted in a stand-up is decoration.
Fourth, the rule that made the culture: every change must leave the system slightly healthier. Agents made this cheaper and more dangerous. They can rewrite a module in an afternoon and also clone the original sin into a new file with nicer names. We review for health, not for volume.
The lesson that survived the case study is crude. Identify debt by blast radius, not by ugliness. Pay down what blocks revenue and recovery. Teach the organisation that a green pipeline on a rotting domain is not excellence — it is a well-lit trap.