For those who don’t know, I work for Red Gate Software. I’m not a developer, but I work directly for the development teams so I spend a lot of time with them. This week I’m over in the UK, where they are headquartered, meeting with the different teams and discussing our products, their future, issues with them, enhancements, and all the rest. Suffice to say, I’m excited by the future.
But the really fun bits are when you see behind the scenes stuff. Red Gate is pretty well known for polished, intelligent, elegant UI design (yes, they keep me away from that stuff). Behind those pretty pictures though is code. And our developers are just like your developers, smart, capable, skilled, but still learning. And it’s those learning bits that are the most interesting.
Now, I’m not going to tell tales and get myself in trouble (I’m just recording everything for the massive tell-all when they inevitably fire me, HA!). But what I’m fascinated by is the fact that, despite the incredible skill of the developers here, and they really are damned amazing, they are all dealing with loads of code debt. Don’t know what code debt is? Sure you do. Everyone has it. Remember that time you thought that you could massively improve performance and maintenance by using a single lookup table for all the database rather than a large series of tiny tables? Don Peterson (he doesn’t blog or tweet, he just is, like Chuck Norris) coined the phrase Massive Unified Code-Key table (MUCK) for this design. Remember the intense pain it caused you? Remember how you then had to live with that design choice for years and years? Yeah, that’s code debt. Well, we have it too.
The thing is, you have to pay for code debt in some way. TANSTAAFL always applies, right? So you pay for it through maintenance over time, or you pay to replace it, but it doesn’t go away. Well, we have code debt that we’re paying to replace on several tools, and I’m wicked excited to see it getting taken care of. I’d say it’s a sign of maturity that an organization is not only able to recognize the debt, but is able to determine that NOW, right NOW, is the time to get rid of what had simply been a long-term irritant. Far too often we kick the can down the road and worry about what to do about it later.
Your homework: Identify some piece of code debt that you’re currently paying off. Determine the amount of pain it’s causing you. Calculate if that pain is increasing or remaining constant (it’s almost never decreasing). If it’s increasing, when will that NOW moment occur for you that you will absolutely have to fix it? Got all that? Cool. Now present it to your boss and see if you can’t pay off a little of that debt. It’ll be a great test of the maturity of your organization.