Technical debt does not mean doing shoddy work

Let’s do a thought experiment.

Each day that you walk into your living room, you’re given a thumbtack. To get rid of it quickly, you just throw it on the floor.

Day 1, it’s probably not a big deal. In fact, you might be able to go a week or so without this really affecting how you move. I suppose it depends on the size of your living room.

However, with each day that passes, you have to reduce your speed as you cross the room or risk stepping on a tack. If this goes on long enough, maybe you just move to a new place.

This isn’t technical debt

If you allow your teams to cut corners in their software, you’ll end up in a similar situation. And this isn’t technical debt.

Ward Cunningham never meant “do shoddy work to ship something faster” when he coined the term technical debt:

In other words, the whole debt metaphor, let’s say, the ability to pay back debt, and make the debt metaphor work for your advantage depends upon your writing code that is clean enough to be able to refactor as you come to understand your problem.

“Clean” can of course have so many different meanings, but he explains what he means. You may have limited understanding of the problem domain or what your customers might need, but when you build, you build it the best that you can and:

…you [would be] wise to make that software reflect your understanding as best as you can, so that when it does come time to refactor, it’s clear what you were thinking when you wrote it, making it easier to refactor it into what your current thinking is now.

You’ll learn what to build by getting increments of work in front of your customers, but you bring your A game to writing those increments.

Your home being on fire isn’t a good day-to-day strategy

Now, are there times when it would make more sense to cast the tacks on the ground rather than put them away properly? Sure. Suppose your home is on fire. Nothing matters beyond getting everyone inside out the door. And you know you’re in for some cleanup when the fire is over.

But surely we can see that this is an exceptional circumstance. You typically wouldn’t pattern your day-to-day home life to match what you’d do if your home were engulfed in flame.

Then don’t do it with your software, and don’t let your developers do it either.


Like this message? I send out a short email each day to help software development leaders build organizations the deliver value. Join us!


Get the book!

Ready to learn how to build an autonomous, event-sourced microservices-based system? Practical Microservices is the hands-on guidance you've been looking for.

Roll up your sleeves and get ready to build Video Tutorials, the next-gen web-based learning platform. You'll build it as a collection of loosely-coupled autonomous services, developing a message store interface along the way.

When you're done, you'll be ready to contribute to microservices-based projects.

In ebook or in print.