Paying down your technical debt

I like Jeff Atwood. He is the co-creator of Stack Exchange, a software platform for Q&A communities that was a major leap forward in collecting and organizing internet wisdom of certain kinds—when I’m programming, maybe half the searches I do for information take me to a Stack Exchange site for the answer (the other half go to either online documentation, or blog posts by programmers who have dealt with the same problem I’ve encountered).

Then Atwood went on to create the Civilized Discourse Construction Kit, aka Discourse, which I am confident will be a major leap forward for forum-based communities. Not only is it one of the finest pieces of software I’ve ever used, it is open source, i.e. available at no cost. Chris is using it to revamp his woodgas community website, and I am using it to provide resources and interactivity for the network of bluegrass music teachers I manage. Atwood and his collaborators have thought deeply about the needs of forum communities and crafted a set of tools that meets those needs in simple and straightforward ways. Much of it is designed to nudge users into being good forum citizens—badges for good behavior, ways to contribute to the discussion that are helpful without being obtrusive, well-timed suggestions of what to do next (and sometimes what not to do). Chris and I are both excited about the potential for our own communities.

Atwood also writes thoughtful blog posts, moderately long but not too frequent, worth reading even (especially?) if the topic is outside your own expertise. He just posted on the idea of paying down your technical debt, namely the need for a long-lived software project to occasionally stop working on new things in order to go back and redo old things properly, things we didn’t do properly at the time for reasons of expediency—often very good reasons. Those expedient decisions allowed us to make needed forward progress, but we also continue to pay the price for not having done them right, and life could be much better from here on out if we take the time to go back and redo.

There is obviously a more general life lesson to take from this idea—how much do we suffer from the results of bad decisions made, bad habits established, weaknesses neglected? Perhaps those choices were necessary at the time, and if so we surely had to accept the downside. But the downside can become such a part of our everyday experience that we go from acceptance to resignation, forgetting there are other possibilities, It can be helpful to take stock from time to time, looking for elements of our thinking that are out of whack and causing us to suffer as a result. Perhaps our older, wiser self is in a better position to choose differently.

Rather than translate Atwood’s technically centered advice into something more general, I’ll just encourage you to read through the piece yourself and extract the lessons. He’s a good writer, and the analogies can be drawn fairly easily. Here’s an excerpt that I think applies directly to life in general:

I’d also argue that accumulated technical debt becomes a major disincentive to work on a project. It’s a collection of small but annoying things that you have to deal with every time you sit down to write code. But it’s exactly these small annoyances, this sand grinding away in the gears of your workday, that eventually causes you to stop enjoying the project. These small things matter.

Doesn’t that describe the burden of bad habits pretty well?


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s