What happened to you? After all, your programmers weren’t goofing off or not putting in enough hours. What happened is that you probably were a victim of technical debt. If so, you aren't alone. Gartner group estimates that the cost of current global technical debt is $500 billion and will reach $1 trillion in five years!
What is technical debt? Every time your programmer creates a new feature for you, they must choose between two ways to create it:
- The "short-term fast" way:
This gets it done very quickly, but in a way that will be difficult for you/them to add features or fix bugs (perform code maintenance and enhancement) in the future. - The "short-term slow" way:
This gets it done much slower, but in way that will make it much faster to perform code maintenance and enhancement in the future.
- Only 10-20% of the money and time you spend on any feature will be from the first release. 80-90% will actually be for maintenance and enhancements.
- The later in the process you wait to do work on something, the more exponentially expensive it becomes to do it.
So if the "short-term slow" way is so much better, why would programmers ever choose to incur technical debt? There are a few reasons (one good, and the others not):
- Good reason:
- They understand that you need to get your first version to market as quickly as possible (perhaps to win funding). So they explain the choices to you and you choose to take on the technical debt for now. If you achieve your goal, you are fine with spending much of version 2 cleaning up the debt that you've accrued in version 1.
- Bad reasons:
- The programmer sees they are falling behind schedule and doesn’t want to miss the deadline so they take shortcuts to make up the time.
- The programmer doesn't understand that there is a better way to implement a particular feature. So they unintentionally take on technical debt that they did not need to.
- The programmer is too inexperienced to understand the trade-offs involved in technical debt and inadvertently takes it on without even considering it.
So what do you do? The way to determine when technical debt is occurring is called an inspection. If you are technical then you can do this yourself. If you are not (or are managing a project outside of your technical expertise) then you can hire a Tech Sherpa to do this for you. Doing so is like an investment and will save you far more than you spend.
Here’s what needs to be inspected:
- Design/architecture inspections: After the design/architecture is completed, the documentation is reviewed. Technical debt is identified and either deemed an acceptable trade off or eliminated.
- Code inspections: All code is reviewed (line by line) for technical debt. If you are using the spiral development method then this will occur right before or after each release to you. Again, technical debt is identified and either deemed an acceptable trade off or eliminated.
