19:49 April 13, 2016

I was thinking about technical debt in some detail and have decided a few components. One can take out technical debt (well, as long as you’re getting paid). Technical debt is often though of “you can’t fix it today so make a hack”, which leads pretty quick to the business of “you can’t fix it because of the hack so hack around the hack” etc. One component in the interest on technical debt is the time and effect (including ensuring backwards compatibility) is taking out the hacks on hacks and the hacks before you implement properly. This is already a high APR. Another component is learning cost. If Jerry Smartcoder has to do something in a new codebase, because complexity equals compclicity times the information density of the problem, he can’t learn the problem. He learns the complex abstraction of the problem. Which is complicated.