Compound Interest in Software
Is it possible to calculate the impact of delivering constant improvements to a software solution against the cost of accrued debt assumed as a result?
Join the DZone community and get the full member experience.
Join For FreeMany articles and posts online show how regular, small, incremental changes result in much larger gains over time. This article applies compound interest calculations to show that a 1% daily increase provides a 37.8-times improvement/growth/whatever over the year — the power of compound interest! Frustrating at first, but the gains grew each day — in the end very pleasing.
Software engineers make decisions daily about the design and implementation of the solution being worked on: functionality, code structure, data validation, flow, error handling, security, performance, reliability, external dependencies, configurability, and more. Expected functionality and time-to-market often prioritize what is included and what is deferred/ignored: certain failures/errors are accepted, edge cases require manual implementation, etc. It's feature/implementation/tech debt that likely needs future remediation.
The question is whether compound interest calculations can be applied to software development as well. It appears it can, though some may not like the conclusions.
Incremental Software Development
(1.01)^230 = 9.861
Therefore in one business year, there has been a nine-time increase in product functionality. [Perhaps 1% is too high, but for demonstrative reasons, it suffices. Organizations measure productivity in different ways, so whether 1% or 0.5%, it's fairly subjective.]
Incremental Software Debt
For debt, assume that across the organization implementation design and implementation decisions are made that add 0.05% debt per day, i.e., debt is assumed to be bad.
(1.005)^230 = 3.149
Because some debt is organically or explicitly remediated throughout the year, it's unlikely that year-over-year the debt is three times larger; however, unless you work for a forward-thinking organization and have scheduled time to address technical issues — bug bashes, engineering weeks, back-offs, whatever — the debt likely grows faster than it is addressed, and quietly become the lurking monster in the corner, ready to pounce.
Final Thoughts
It's tough to argue with straight-ahead development and ignore the consequences if the benefits are three times the cost. Unfortunately, it's not that simple: eventually, the cost (debt) grows to a level where it does impact ongoing development, where debt must be resolved or addressed before moving forward with whatever is on the Kanban board.
Over time, the percentages move closer together and, eventually, may flip so that debt is accumulated faster than features can be delivered. Leadership gets concerned when the flip is severe enough that time-to-delivery is impacted, potentially to the point where retaining customers becomes an issue. In extreme cases, the debt is so overwhelming that it almost appears prudent to start a re-implementation effort . . . which starts the cycle all over again.
Ideally, the debt is given attention to prevent it from getting out of hand; unfortunately, most organizations I've worked with see it as evil and try every trick to avoid actually addressing it. Usually, it just delays the reckoning, though leaders are hoping that happens on someone else's watch.
Image Credits
- "Compound Interest Street Sign On Wall Street" by investmentzen is licensed under CC BY 2.0.
- "31345-013: Second Education Quality Improvement Project in Lao PDR" by Asian Development Bank is licensed under CC BY-NC-ND 2.0.
- "Scrabble Series Debt" by ccPixs.com is licensed under CC BY 2.0.
Published at DZone with permission of Scott Sosna. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments