Technical Debt: What It Is, and What It Means for Your Web Project


Leaning tower of Pisa | technical debt

We recently wrote that a website, web app, or any other kind of software is best thought of as an investment in your business. Because it’s an investment, it’s best not to think in terms of simply driving the cost down to zero — as you would if it were simply a cost center for your business — but in terms of the return that your money and time, if invested wisely, could generate.

The finance analogy is helpful in other ways for web projects, too. A big one is understanding technical debt.

What Is Technical Debt?

In any software project, some pieces aren’t done in the best way, and that will make the project harder to work on in the future. That’s technical debt.

Almost all software it contains some trade-offs between the best solution to a given problem, and the most immediately available solution.

These trade-offs impose a specific cost on the future of a project. Some pieces aren’t done in the best way, and that will make the project harder to work on in the future.

That’s technical debt: the way the “good-enough” choices made in your existing software weigh on the future of your business as your needs change.

Why Does it Matter?

Unlike real debt, if you never need to make further changes to your website, you never have to pay back your technical debt. This is part of the reason why so much existing business software is decades old: people can still live with it if they hold their breath and squint, and nobody wants to pay down the debt of improving it.

But the second you want to make any change, you’re forced to face down that debt. This means quite a few unpleasant things:

  1. ​You’ll get very inaccurate time and cost estimates from new developers, who didn’t know your project was booby-trapped with technical debt.
  2. Savvy developers will tell you that the changes you want to make require hugely more time and complexity than you were expecting.​
  3. Developers will start advocating strongly that you throw everything out and start over, for reasons you find hard to fathom.

How Can I Avoid It?

Technical debt is impossible to avoid entirely, but there are many steps you can take to prevent taking it on unnecessarily.

Thank you for asking! A failure to appreciate technical debt is one of the most common mistake website owners make.

First off: Technical debt is impossible to avoid entirely. No one in 2006 knew they’d have to design their websites for iPhones, for example—nor was that even possible at the time. Any site that is untouched since 2006 is drowning in technical debt.

However, there are many steps you can take to prevent taking on unnecessary technical debt, and to manage technical debt as it arises:

Hire Good Developers

You want to hire developers who are conspicuously good at their jobs, because those are the people who know the right ways to do things and won’t take dumb shortcuts.

Telling who those people are is not easy, but it is possible; check out our series “Care and Feeding of a Web Developer” for details.

Build with the Future in Mind

If you’ve got a clear sense of vision (and you should!), build with that in mind. Let’s say you blog, and someday you’d like to sell apparel. Look for blog platforms that can also diversify into online stores. (WordPress.org is the one I know about, naturally.)

If you start blogging on Tumblr and then you want to launch your store, now you’ve got to start all over on a new platform (and figure out how to migrate your Tumblr content and followers)—or else reconcile yourself to having a store in one place and a blog in another place. That’s technical debt.

Stay Away from Quick-Fixes

This is basically what a good developer will do for you, but you can do it in your own case as well. Insist on doing things right. If you can’t figure out how to make your online store’s products purchasable, don’t just slap a PayPal button on there and call it good. That’s technical debt, and there is a right way to do it.

Update!

If you can afford to reinvest in your site, do so; don’t let your infrastructure get old. Particularly in WordPress, stay on top of updates to themes, plugins, and WordPress core software. Updating WordPress core, for example, is about the best thing you can do for your site security, and it’s very unlikely to break anything.

Other updates can get painful (for example, updates to the e-commerce software WooCommerce are occasionally disruptive), but you have to face that pain sometime, and you’ll incur greater costs as things decay further into obsolescence. So find a good developer and bite the bullet!

Now You Understand Technical Debt

That’s a very quick intro to technical debt. Hope that’s helpful—and it should be: technical debt is one of the most important truths of any kind of software development, and one of the most often underappreciated.

If you’re interested in learning more about technical debt, much of it is discussed very well in this video:

Image Credits: https://www.flickr.com/photos/bamshad/

About David Hayes

David likes learning, solving hard problems, and teaching. He bikes a lot, and lives in (and loves) Colorado. You can find him on Twitter as @davidbhayes and check out his latest hobby-project, Quodid, a monument to his love for pithy bits of wisdom.