Friday, June 6, 2008

Tracking Technical Debt in ReSharper - Follow-up

Wow!  The good folks at JetBrains found me and gave me a link!  Thanks guys!

If you remember, we're still in the land of waterfalls, where everything has a signature and an arbitrary deadline, and a long schedule littered with milestones instead of actual released software.  While marching toward that deadline, we've built up a lot of techinical debt, and we've been tracking it in ReSharper for about a month now.  Well the time has finally come when we think we can begin to pay off some of that debt.  We decided that since we had finished all, or at least most, of the features we set out to build that we could afford to spend some time focusing on those items we could have implemented better during development. 

Our tracking scheme paid off quite nicely.  There was one refinement that helped some, a Live Template for a //DEBT tag, like so:

//DEBT - $type$.$member$ - $END$

The $type$ variable is set to the "Containing type name" macro, and the $member$ variable is set to the "Containing type member name" macro.  Did the same thing for the //HACK and //TODO tags.  We used the TODO Explorer to dump our //DEBT out to a list we could email around, and no matter how the list was sorted the type and member info made it easy to see where our //DEBT was. 

I have to say, once we introduced the idea of tracking //DEBT right there in our code, it became really easy to convince other developers on our team to focus on completing features rather than get bogged down in endless optimization.  A little switch flipped in everyone's head once we realized that we could rely on our //DEBT list to remind us of things we need to come back to again.

 

Share this post :

1 comment:

Dennis Kozora said...

Good tip!