On Friday I blogged about the disconnect between Theory and Reality in software development. This disconnect is a perfect example of development debt, a topic that Scott blogged about in January. As we continue building our software, we keep building up more and more development debt. Lately I've been wondering: when is it going to be time for us to start paying down our debt?
The best thing I can think of is that t here are 2 cases where it's appropriate to start working on development debt: 1) When there aren't any urgent new feature requests or bug reports that need to be addressed 2) When a bit of development debt starts to rear its head and manifest itself as one or more bugs
Believe it or not, #1 does happen. There are lulls every now and then, usually after a major release, when there is some time to work on development debt. For example, when we first released CMS 1.0 we had to take some shortcuts to get dojo working properly. As soon as we got CMS 1.0 out the door we revisited those shortcuts and worked out robust solutions, which were incorporated into CMS 1.1.
An example of #2 is a bit of trouble we ran into recently with exports of data to Microsoft Office. There were a number of bugs that came up. For example, exports didn't work over HTTPS and exports had weird names like "exportWord.doc" instead of "Scorecard Structure Report.doc". The root cause of these problems was that we weren't setting HTTP response headers quite right and the code that was responsible for setting these headers had been patched so many times it was now of poor quality.
So, we took a step back and redesigned this functionality. In the process of doing this, we ended up fixing a lot of things that had been broken for a while but weren't super-high priority. For example, in CMS 1.2 if you tried to right-click on a performance chart and choose Save As, Internet Explorer would try to save it as a BMP file instead of a PNG (BMPs are not compressed, so they are many times the size as PNGs). This is fixed in CMS 1.3.
We have a lot of new features we are working on in CMS 1.4 and beyond right now, and I expect this push will lead to the accumulation of more development debt. In a few months once those features are done, we'll take the time to start repaying our loans.