Home > Agile, Uncategorized > Code As A Liability

Code As A Liability

March 11th, 2008 Leave a comment Go to comments

Img_debt
Jim Shore
asked recently about what metric might be used to measure technical debt.
Now, sigh and groans over the word ‘metric’ aside, his first suggestion
prompted some thought; namely, SLoC. This was interesting, mostly
because SLoC was once used as a measure of productivity, but here it
was something different. I didn’t like this idea, simply because it
meant that no matter how hard you worked, how mercilessly you
refactored, you would always be increasing technical debt. In other
words, no matter what, you lose. I don’t find this appealing. We went
around the houses a bit talking about using SLoC per feature, or SLoC
per story point, but something very interesting came out of the
discussion.

As software developers, and particularly as a micro ISV, we would
think of our code base as our biggest asset, but how often do we think
of it as potentially our biggest liability? Why a liability? Because it
costs money. It costs money for others to spend time understanding it
(if you aren’t a 1 man band), it costs money to change it, it costs
money to test it, to bugfix it, to refactor it, to add to it, to
integrate it. These are the times that you will notice the interest
payments on your technical debt.

As a micro ISV, technical debt payments can be crippling. Imagine
not being able to make use of you’re new employee because your code is
too hard to understand, because it does not clearly express intent.
Imagine not being able to add a new feature because you’re too worried
about the impact on the stability of your codebase.

The solution is clear. Don’t let technical debt accumulate to a
level such that the interest paments become a barrier to progress. Your
code is your greatest asset, don’t let it become your greatest
liability.

  • Share/Bookmark
Categories: Agile, Uncategorized Tags:
  1. March 12th, 2008 at 02:11 | #1

    Interesting timing, I was just thinking about technical debt and my own uISV earlier today…

    I’ve realized some real differences in how I approach technical debt
    with my uISV compared to my “previous live” running a team of 60+
    developers. One one hand, I feel more willing to take on debt at times,
    because I have the full view of the software infrastructure, at both
    the high and low level. With a big team, that knowledge is distributed
    across many people and it’s harder for any one person to make educated
    decisions on what types of debt are worth taking on and what will end
    up costing many times more down the road, and senior
    developers/architects are often more removed from the small decisions
    that often compound over time to result in the “surprise debt” that
    tends to be insidious on big projects.

    On the flip side, because I get to dictate the pace and schedule of
    development, I have the ability to make the decision to take the time
    to wipe out debt before it starts to compound – I can take half a day
    to revamp particularly ugly pieces of code or to refactor one section
    of the infrastructure to better support future work without having to
    worry about arbitrary deadlines that I have no visibility into.

    I’d be curious to hear if others have similar experiences, and how
    they change (or don’t) as you start to bring in more developers to
    assist with the work.

  1. No trackbacks yet.