Technical Debt and Technical Wealth
August 29, 2016
I read “Forget Technical Debt. Here’s How to Build Technical Wealth.” Lemons? Make lemonade. Works almost every time.
The write up begins with a reminder that recent code which is tough to improve is a version of legacy code. I understand. I highlighted this statement:
Legacy code isn’t a technical problem. It’s a communication problem.
I am not sure I understand. But let’s move forward in the write up. I noted this statement:
“It’s the law that says your codebase will mirror the communication structures across your organization. If you want to fix your legacy code, you can’t do it without also addressing operations, too. That’s the missing link that so many people miss.”—Andrea Goulet, CEO of Corgibytes
So what’s the fix for legacy code an an outfit like Delta Airlines or the US air traffic control system or the US Internal Revenue Service or a Web site crafted in 1995?
I highlighted this advice:
Forget debt, build technical wealth.
Very MBA-ish. I trust MBAs. Heck, I have affection for some, well, one or two. The mental orientation struck me as quite Wordsworthian:
Stop thinking about your software as a project. Start thinking about it as a house you will live in for a long time…
Just like with a house, modernization and upkeep happens in two ways: small, superficial changes (“I bought a new rug!”) and big, costly investments that will pay off over time (“I guess we’ll replace the plumbing…”). You have to think about both to keep your product current and your team running smoothly. This also requires budgeting ahead — if you don’t, those bigger purchases are going to hurt. Regular upkeep is the expected cost of home ownership. Shockingly, many companies don’t anticipate maintenance as the cost of doing business.
Okay, let’s think about legacy code in something like a “typical” airline or a “typical” agency of the US Executive Branch. Efforts have been made over the last 20 years to improve the systems. Yet these outfits, like many commercial enterprises, are a digital Joseph’s coat of many systems, software, hardware, systems, and methods. The idea is to keep the IRS up and running; that is, good enough to remain dry when it rains and pours.
There is, in my opinion, not enough money to “fix” the IRS systems. If there were money, the problem of code written by many hands over many years is intractable. The idea for “menders” is a good one. But where does one find enough menders to remediate the systems at a big outfit.
Google’s approach is to minimize “legacy” code in some situations. See “Google Is in a Vicious Build Retire Cycle.”
The MBA charts, graphs and checklists do not deliver wealth. The approach sidesteps a very important fact. There are legacy systems which, if they crash, are increasingly difficult to get back up and running. The thought of remediating the systems coded by folks long since retired or deceased is something that few people, including me, have a desire to contemplate. Legacy code is a problem, and there is no quick, easy, or business school thinking fix I know about.
Maybe somewhere? Maybe someplace? Just not in Harrod’s Creek.
Stephen E Arnold, August 29, 2016