Hi all, first of all have a great 2016!
There is a need of a Technical Debt prioritization mechanism to compare items among themselves for decision making.
I’ve been working in contact with several practitioners who struggle deciding what to refactor and when. The challenge is having fixed resources and hours or having to subtract such hours (and motivate such subtraction) from feature development. Usually companies have more TD than it’s possible to fix, and deciding becomes extremely difficult, especially for big TD items such as the Architectural ones.
Our recent work
We have written a paper that has been recenlty accepted at ICSE, SEIP track 2016 (A. Martini, J. Bosch, “An Empirically Developed Method to Aid Decisions on Architectural Technical Debt Refactoring: AnaConDebt”).
We have analyzed 12 cases of Architectural TD in 6 companies and we have developed and evaluated a decision-making approach based on the ratio principal/interest. Such ratio allows the comparison of TD items among themselves and with respect to different points in time (which tells the practitioners if it’s convenient to refactor now or later). We found that this approach, after several improvements steps, was very appreciated by the practitioners who are actually introducing it in practice. However, we found that both factors (principal and interest) need to be split down in several components (and usually there are many involved). First it’s important to find all the components constituting principal and interest (and a checklist is very much appreciated by the practitioners). We also found that it’s difficult to anticipate all the interest (especially the long-term one) in the beginning, and therefore it’s better to implement an iterative process that takes in consideration different evolution of TD using a roadmap (which is subject to variation). Also, the study shows that, if present, the interest on the principal makes a TD item less convenient to be paid over time and this is crucial information. We have developed some indicators that can help the practitioners taking the decision. However, we also found that metrics need to be mixed with qualitative information in order to provide an acceptable overview for decision-making, and that this step is not obvious.
The main idea of prioritizing technical debt using a cost/benefit indicator has been introduced in a short paper published at the Technical Debt workshop by Guo and Seaman, but I haven’t found much follow-up work providing a comprehensive indicator to evaluate continuously a large TD item. It seems that we researchers have been focusing on single measures but not on an overall decision-making process, which is very needed.
With the recent study we have done a first step. In the cases we used some measurements, but the availability and units of the metrics depend on the specific company. However, the high-level components constituting principal and interest seem to be quite generic (a part from a few specific ones). Going from basic measurements to an indicator-for-decision is not obvious and needs to be better studied, especially when a number of measures / qualitative information related to many factors are involved in calculating principal and interest.