Explaining tech debt to non-technical people

Its best to start with the reason why anyone gets into debt, in the first place

People get into financial debt because some things are really expensive, and you just can’t wait.  For instance, nobody waits until they’ve saved up enough money to pay cash (full amount) for their first house. No way! You borrow money and gradually pay it off. Software development is often like this. What it costs is time & money. Money can be borrowed but can you borrow time? Yes. For software development, you can borrow from “technical purity” (aka “quality”).

When you borrow from a bank, they won’t lend you more money than you can afford. “How big of a house payment do you think you can you handle?” If you go too big, you will struggle to make the payments (and still eat food). This is why folks compromise a lot on features. You can always do some upgrades someday, when you can afford it.

Big software projects also cost a lot and have lots of (nice) features. You start by defining what you need and what you want. Then you build a schedule around it and start picking deadlines and intermediate checkpoints. Typically, this is when reality sets-in and you get sticker-shock. Some of the shock is commonly relieved by extraordinary levels of optimism (ehem), and adjusting the timeline to something more-affordable. Realism seems to be very negotiable at this point, and it creates risk before you’ve even started.

Things Get Real

Once the real work starts, reality starts too. Optimism gradually gets converted to realism. The timeline starts stretching and you face some tough choices. Time to reconsider your choices and make some trade-offs. You can drop or delay some features, or maybe accept lower quality. This is called “Do you want it right, or do you want it right-now?” Every team will start with big dreams of perfection, but get-real when the timeline slips enough.

Or do they?  You can see where I’m going with this, right? My wife will easily testify that I can’t see dirt/messes that she cannot ignore. A little dirt on the floor doesn’t bother me. It is probably something similar for bargain construction or crunched software development. Some flaws are less obvious, and for some people, this can be easy to overlook and live-with. This is one way to get more done for less.  But still, YGWYPF.
…and that is tech debt.

Why you keep tech debt

It makes sense: management cannot actually “see” most technical debt. It is strictly a problem for developers and support staff, and no-one else. Nobody else can see (or appreciate it) because they simply do not have a vantage-point from-which to observe stuff like that. They are usually not aware of how software development works. Therefore the concept of technical debt can sound like a boogey-man which only exists in your imagination. Some managers even think it is just a smoke-screen or boondoggle.

What is the concern? Well, if your team only works on new features, and never cleans-up tech debt, then it feels nice when everyone sees new features all of the time and is impressed. However, if you don’t resolve technical debt, it will progressively take longer to implement new features. It consistently subtracts productive time from your schedule. You could be getting “more done” if you resolve some of the technical debt. It can be a difficult concept to convey, but it is a proven fact. Steven Covey even talks about this as 7th habit of highly-effective people.

For software, the interest is paid in support hours.  The more tech-debt, the longer it takes you to find,  understand (how does this work in-the-first-place), fix (and test) problems, and complete updates and improvements. Source-code seems so abstract to most people, that it is difficult to imagine the difference between simpler/better abstractions or the opposite. It is easier to imagine software designs as “one man’s treasure…” 😉

Bottom line: as long as you have the debt, you will pay interest, which reduces your ability to pay-down debt, and buy other stuff.  Less debt = less interest = more cash & buying-power. For software development & support, this translates into: Less tech debt = less time wasted trying to figure-out stuff without breaking other stuff = more gets-done-quicker.

Keep your head above water.  Live within your (technical) means.  Pay down technical debt regularly & consistently. Always keep far-away from technical bankruptcy.

About Tim Golisch

I'm a geek. I do geeky things.
This entry was posted in Maintenance, Team and tagged , , , . Bookmark the permalink.

Leave a comment