« New Dates for Reducing Technical Debt | Main | Behavioral Economics and Code »

December 01, 2012


Paul Slusarz

There may be additional forces at play hiding in the context. The second project may be suffering from code quality problems or it may simply be developed in a domain that's not well understood.
It is interesting that the number of classes on both projects seems to have asymptotes. It could be a lifecycle of collaboration, or an indication that the domains for these projects have been well explored.

Michael Feathers

Paul, yes, that that could be the issue - unexplored domain, but it could also be an issue of coding style. When adding a second responsibility to a class, we often have a choice about whether to do it or start someplace else. In any case, I think you are right - there's no need to judge.

Re the asymptotes, that is a good point. I'll look into it.

Tom Mullen

An interesting metric. The complete history of the gap between the two lines could vary as each check in occurs.
The check ins that close off many classes could be considered to be responsible for some of the difference between the two graphs.
If we measure the time classes are active by the area between the two graphs, then the difference between the value of the area before and after would be a measure of the size of the refactor.


What script/tool did you use to generate the data for your graphs?

Michael Feathers

Eric: It was a lot of fiddling in irb using this set of tools I wrote: https://github.com/michaelfeathers/delta-flora

Paul Slusarz

Michael, I'm coming back to this old post to see if you would recommend any reading on the loosely defined subject of Code Archeology. I have put in an "unsession" proposal for this year's Strange Loop and could use some guidance. Leaving contact email in the form.

The comments to this entry are closed.