"If you don't have time to do it right, when will you have time to do it over?"— John Wooden
In a website redesign (or any other development project), there are an endless number of decision points where you’ll find yourself assessing the amount of work necessary to launch. You might ask yourself questions like:
- How many different page templates do we need?
- Should we display videos as well as images with this piece of content?
- Should we update to the most recent version of this plugin?
With each one of these decisions comes a tradeoff. You have to decide how much time you can afford to spend on a specific task. Will you do it the right way? Or the fast way?
Every time you think to yourself, "We'll handle that next time," you're accruing technical debt. Technical debt is a metaphor created by Ward Cunningham to evaluate the decisions made during the lifetime of a software project.
Good Debt/Bad Debt
Is this debt a bad thing? Not inherently. Just like financial debt, technical debt allows you to afford things you couldn't otherwise. Paying for a college education, a home, a car and many of life's most significant financial achievements are often impossible without debt. Similarly, acquiring some technical debt helps you reach the finish line. Zero debt means that over the long-term of the project there is nothing to slow you down: no messy code, nothing duplicated and nothing untested. But it might also mean that you’re not being efficient and possibly stifling creativity. Finding the right balance between efficiency and thoroughness is critical.
In the financial world you can’t borrow money for free and in web development you can’t borrow time without a cost. You must pay back your debt at a greater cost.
We’ve all been asked for the “quick fix.” In my experience, true quick fixes are extremely rare. For example, a small change is needed on a single page of a website. No problem, let me just update this one piece of code. Great, we're all set. Well, this other page has something similar and should really be updated too. Ok, both are updated. And actually, now that I look at it on my phone, it's really not sized properly for touch. Let me fix that. We should also...
Suddenly, I’m in debt up to eyeballs. I'll be paying the interest payment down until I have time to refactor this code. This excess technical debt is incurred by not taking the time to figure out the real problem and fix it the right way.
The amount of technical debt has a very real impact on the lifespan and longevity of a software project. More debt can decrease production time but will most likely have a negative effect on a website's shelf life and ease of future maintenance. The opposite is also true. Avoiding technical debt can mean a greater investment of time up front, but you'll have a much easier time with edits and maintenance down the road.
Technical debt is a necessary evil. None of us can completely avoid it, but smart decisions will help you manage it. Proper planning and a firm understanding what you’re looking to achieve will help keep you in the black.