TL;DR — Everyone is fine with deferring technical debt, that is until ‘Tony from Support’ shows up w/a bug that breaks your app’s kneecaps.
If mob movies were framed as software development, imagine how many story lines would read as follows …
… Pamela the Product Owner, desirous of saving “Saint Jerome’s Home for Abandoned Bambinos” from foreclosure, needs to quickly deploy her team’s new ‘Waif-Finder’ gaming app in time for the holiday season. Her hope is that ad + subscription revenue will save the day for the orphanage. Unfortunately, to get her app out the door on time, she cheats a bit by taking on the liability of deferred technical debt in the form of an epic level backlog item.
Everything is fine, the children’s home appears safe, its tenants once again rehearsing for the annual Christmas pageant … up until Carmine from Customer Support calls in said marker — the aforementioned epic — in the form of a show-stopping, revenue wrecking, bug report related to said debt.
Because Pamela’s team is already on the hook to deliver new features needed to land venture capital, they ignore Carmine’s request … that is until Tony the Technical Debt collector shows up at the Scrum of Scrums with a bright red Post-it® Note … nailed to the end of a baseball bat.
Needless to say, the rest of the flick involves Pamela saving the day by figuring out and then fixing a security flaw that led to a skimming exploit that siphoned the app revenue needed to keep the babies from being cast into the cold on Christmas Eve.
Yeah I know, an all too cliché, yet all too familiar for some of us.
How ‘This Thing of Ours’ Happens
Similar to our heroine Pamela, we too put aside technical debt with a promise to ourselves we’ll pay it down later when there’s more time.
The problem is, there’s never enough time for a variety of reasons. Here are just a four out of my real life where the names have been changed to protect the not-so-innocent:
The VP of Incredible Sales has promised Big Fish Client ‘XYZ’ feature ‘PDQ’ by a certain fixed date that was likely offered with mi
- nimal consultation of the team responsible for delivering the goods.
- The Eager Equity Partner looking to exit wants to ensure that a certain domain or vertical is covered before the next IPO ‘sit-down’.
- The Bored/Resume Building Programmer in need of hands-on experience creating customizable BIs based on APIs, and delivered utilizing Angular, leveraging the latest in machine learning technology on an Apache Spark cluster.
- The Promotion Hungry Product Owner who wants to wow the boss with fabulous front-facing features the four months leading up to their performance review.
OK, so I made that last one up. Regardless, they all sound like candidates of not-so-data-driven-prioritization when set against the potentially enormous price of paying down the juice on your backlog.
So why do we rationalize so?
Perhaps because working on technical debt is like changing diapers. Sure it’s fun, for about the first week for your first child. After that, it devolves into a sinister game of bribing one’s spouse, extorting an in-law, and/or conning some other unsuspecting family member to do the dirty work.
How to Avoid ‘This Thing of Ours’
For those of you who’ve not yet experienced the ‘joy’ of a visit from your friendly neighborhood technical debt collector, I’d like to make an offer these 7 process tips … boosted from John Cutler’s blog post “Visualizing Debt, Rework, Cut Corners, and Frustration.”
- If an engineer is battling technical debt to finish a story, then cut a ticket for that work.
- If you ship a feature with obvious UX debt, then cut a ticket for this debt.
- If research is required because no data existed, cut a ticket.
- Is the work not contributing to customer value, but needs to happen? Cut a ticket.
- Did you rush to get a story out and then need to play whack-a-mole with bugs? Cut a ticket.
- Have you failed to validate the impact of a story? Cut a ticket for the research.
- You get the idea. You’re creating more work, doing rework, cutting corners, punting, working around something …. doing something feels a little less than awesome. Cut a ticket.
Based on some successful experiences of my own, and given an Internet full of ample legal and historic evidences that the road to Hell is paved with good intentions, I would like to strongly suggest an additional follow-up to backlog markers: - Take bold steps to get the team, management, stakeholders, sponsors and — if possible — the clients to swear blood oaths that releases will include payments on the tech debt. If they won’t go that far, at least set expectation by explaining the ‘unfortunate accidents’ that might occur if liabilities are left unpaid.
Pay me now, or Pay me Later
Whether you decide to simply pay down the interest, or pay off the entire amount in whole, keep in mind that just like a loan shark’s vig, the price of your technical backlog will likely increase in cost over the time period in which it remains unresolved.
And after all, none of us want to be pushed into a position where we need to place a bet with Benny the Bookie on the Washington Capitals taking Lord Stanley’s Cup in hopes of funding the burn-down on your tech debt retirement.
YMMV