Wednesday, February 23, 2011

Technical Debt vs Code Debt

I really like the distinction Steve Johnson makes in his article about Technical versus Code Debt.  Its a worthwhile distinction I think because it hints at the type or person required to do the clean up.  He defines Technical Debt as sloppy or too quick architecture or design that results in poor performance (scalability, throughput or extensibility).  Code Debt is defined as implementation problems of an otherwise adequate architecture and design. This code mean poor understanding, communication or lack of experience and skill. Or even more simply, lack of adequate code review.

One remedy for this is finding quick and easy analysis and metrics tools.  For example, NDepend, or Visual Studio's (Premium and better) Code Analysis and Metrics.  Visual Studio Ultimate also has a neat auto-diagram generation tool to show Type Sequence Diagrams (sometimes called type interaction diagrams but gets confused with UX Interaction Diagrams).  I'm also on the hunt for a good class diagram generator, (currently looking at Vs Ultimate class diagrams, but seems a little manual; and also ModelMaker).

Steve also suggests creating a "System Persona" to add value to the debt story and help you evaluate ROI.

No comments:

Post a Comment