<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Object Mentor Blog: Ledger For My Technical Debt</title>
    <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Ledger For My Technical Debt</title>
      <description>&lt;p&gt;All projects accumulate technical debt. It&amp;#8217;s just a question of how much and what you do about it. My personal method for tracking debt is very quick, easy, and useful&amp;#8230;&lt;/p&gt;


	&lt;p&gt;Many wiser people than I have &lt;a href="http://butunclebob.com/ArticleS.TimOttinger.ApologizeIncode"&gt;espoused &lt;/a&gt; that &lt;i&gt;a comment is an apology for ugly code&lt;/i&gt;, which is something that I wholeheartedly agree with. So what better way to record your technical debt?&lt;/p&gt;


	&lt;p&gt;To do this, I take advantage of an oft-underused feature of most &lt;span class="caps"&gt;IDE&lt;/span&gt;&amp;#8217;s, the &amp;#8220;Task&amp;#8221; or &amp;#8220;ToDo&amp;#8221; list. These tools scan through your source code looking for comments of a particular format, and then generate a list of items based on the comments contained therein. I have three basic comments that I use to record technical debt:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;// FIXME
// FIXME With some explaination here
// HACK With some explanation here
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;The first comment represents short term debt. This is debt that intend to repay (by fixing it) before checking in. I usually use this when I&amp;#8217;m in the middle of adding a new feature, and I see and/or create some debt.&lt;/p&gt;


	&lt;p&gt;The second comment represents long term debt. This is debt that I intent to repay the next time I change this module/class/method. I usually use this when I&amp;#8217;m reading through code, without needing to change it, and I see something I think could be improved.&lt;/p&gt;


	&lt;p&gt;The third comment represents debt I don&amp;#8217;t know how to repay. These are usually things like platform bug workarounds, which are sometimes ugly no matter how you write them&amp;#8230;you just have to wait for the bug to get fixed.&lt;/p&gt;


	&lt;p&gt;With this system, I always know how much debt I have for a given project. When looking at the code, the description of the debt is right there, so I have all the information I need to take action without breaking flow. Finally, by keeping the debt record in the code, you reduce the chance that it will get lost or out of sync.&lt;/p&gt;</description>
      <pubDate>Wed, 27 Jun 2007 08:42:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:ab18a9bd-3f94-4dee-9ce8-26ea083f1aba</guid>
      <author>Ben Rady</author>
      <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt</link>
      <category>Ben's Banal Babble</category>
    </item>
    <item>
      <title>"Ledger For My Technical Debt" by fairdeal</title>
      <description>&lt;p&gt;Fair Deal on Debt CIC is a non- profitable organization.We provide services as Fair deal on debt,Debt management,Debt advice,Energy efficiency,Debt counseling,Energy saving,Credit Card Debt,loan schemes,personal loan,trade credit loan scheme,consumer loan scheme,personal loan for salaried women,personal loan for real estate builder,personal loan for pensioners&lt;/p&gt;</description>
      <pubDate>Thu, 25 Sep 2008 12:13:49 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:efaadade-8e5a-4180-aadd-036c39c354a4</guid>
      <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt#comment-2085</link>
    </item>
    <item>
      <title>"Ledger For My Technical Debt" by Jeff L.</title>
      <description>&lt;p&gt;A good rule to institute is that all &amp;#8220;fixmes&amp;#8221; are deleted by iteration end. Either they get fixed, as they should, or they don&amp;#8217;t need to get fixed, or there&amp;#8217;s something important going on that needs to be elevated, perhaps to an external task list.&lt;/p&gt;


	&lt;p&gt;Most &amp;#8220;TODOs&amp;#8221; do not get &amp;#8220;TODONE,&amp;#8221; in my experience. It&amp;#8217;s embarrassing to come across one of your own that&amp;#8217;s a year or more old.&lt;/p&gt;</description>
      <pubDate>Wed, 11 Jul 2007 12:16:01 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:aad1ce7e-b261-4bf0-9466-7cbdbb1ac339</guid>
      <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt#comment-509</link>
    </item>
    <item>
      <title>"Ledger For My Technical Debt" by Rickard Johansson</title>
      <description>&lt;p&gt;Fulhack provides a nice way to mark your technical debt with annotations. This gives you the posibility to generate reports of all your hacks and fixmes.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://weakreference.blogspot.com/2007/06/fulhack-annotation-10.html" rel="nofollow"&gt;http://weakreference.blogspot.com/2007/06/fulhack-annotation-10.html&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 08 Jul 2007 15:54:05 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:ed5fb1b4-9f3e-4c37-bcba-a72130774d52</guid>
      <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt#comment-502</link>
    </item>
    <item>
      <title>"Ledger For My Technical Debt" by Dean Wampler</title>
      <description>&lt;p&gt;If you&amp;#8217;re using Eclipse, MyLyn might be helpful. It offers task management and some annotations in source code, like comments with hyperlinks to the bug tracking system.&lt;/p&gt;</description>
      <pubDate>Thu, 05 Jul 2007 15:17:32 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:cd847633-006d-485c-9389-b93c598ca78e</guid>
      <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt#comment-496</link>
    </item>
    <item>
      <title>"Ledger For My Technical Debt" by Jukka Lindstr&#195;&#182;m</title>
      <description>&lt;p&gt;I heard this nice practice from a colleague. Each day they automatically generated a graph from the count of FIXME, TASK and HACK markers (by module?), which clearly showed how the tecnical debt accumulated (and when it was repaid).&lt;/p&gt;</description>
      <pubDate>Tue, 03 Jul 2007 01:35:27 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:c51dd821-5544-46d0-9be9-ff67b95dbfcc</guid>
      <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt#comment-469</link>
    </item>
    <item>
      <title>"Ledger For My Technical Debt" by Jason</title>
      <description>&lt;p&gt;I think you put the due date in because we&amp;#8217;re human and get busy on other things and let it slide.   The due date only works if you plug it into your CI, otherwise it&amp;#8217;s just another field in the task view to ignore.  Or if you&amp;#8217;re really up for some excitement don&amp;#8217;t put a due date and just have your build fail if there are any FIXME, TODO, HACK, etc. comments, period.&lt;/p&gt;</description>
      <pubDate>Thu, 28 Jun 2007 09:01:26 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:7f328be9-291d-466e-aed5-3c4cf912eca8</guid>
      <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt#comment-463</link>
    </item>
    <item>
      <title>"Ledger For My Technical Debt" by Gil Zilberfeld</title>
      <description>&lt;p&gt;I&amp;#8217;ve tried it myself, and it works &amp;#8211; for personal use. I could not see that scale to all the team, which would then make possible Arnon&amp;#8217;s suggestion. At the time, it was easier to keep the scope small (use as an actual to-do list) rather to explode with more features.&lt;/p&gt;


	&lt;p&gt;And like all other things, it takes discipline, and and self-training.&lt;/p&gt;</description>
      <pubDate>Thu, 28 Jun 2007 07:44:51 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:991bf07a-4a76-4ab6-9799-db7d7fb0e8b5</guid>
      <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt#comment-462</link>
    </item>
    <item>
      <title>"Ledger For My Technical Debt" by Ben Rady</title>
      <description>&lt;p&gt;I&amp;#8217;m not sure I agree with adding a due date to these comments. I want to fix these things as soon as I can. Putting a &amp;#8220;due date&amp;#8221; implies that either:&lt;/p&gt;


	&lt;p&gt;a) I can ignore this debt until it&amp;#8217;s due date&lt;/p&gt;


	&lt;p&gt;b) Giving it a due date will magically add 4 hours to the workday so I&amp;#8217;ll have time to fix it.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m not writing these comments to motivate myself to fix the problems&amp;#8230;I&amp;#8217;m writing them so I&amp;#8217;ll know what needs fixing if and when the opportunity presents itself.&lt;/p&gt;</description>
      <pubDate>Wed, 27 Jun 2007 21:33:19 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:c64b2379-cd83-4113-9f8c-b7e5e3d2ca28</guid>
      <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt#comment-461</link>
    </item>
    <item>
      <title>"Ledger For My Technical Debt" by Jason</title>
      <description>&lt;p&gt;I&amp;#8217;ve used this myself on my project, however I&amp;#8217;m seen on the same large project if people don&amp;#8217;t take accountability for monitoring these things the &amp;#8220;todo&amp;#8221; or &amp;#8220;task&amp;#8221; view in the IDE gets so filled with clutter that it becomes overwhelming.  I like the idea of tieing it to the build system and have a build fail if something isn&amp;#8217;t fixed in an appropriate amount of time.&lt;/p&gt;</description>
      <pubDate>Wed, 27 Jun 2007 20:21:12 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:26ebb8aa-0d81-42a0-a0bb-fd45b733b59e</guid>
      <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt#comment-460</link>
    </item>
    <item>
      <title>"Ledger For My Technical Debt" by Arnon Rotem-Gal-Oz</title>
      <description>&lt;p&gt;Why not take this further and add 
// FIXME BY 6/28/2007&lt;/p&gt;


	&lt;p&gt;And then add a task in the build script to fail the test if FIXME BY has elapsed 
This way you are less likely to find these debts accumulating dust :)&lt;/p&gt;


	&lt;p&gt;Arnon&lt;/p&gt;</description>
      <pubDate>Wed, 27 Jun 2007 16:45:27 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:960c07cb-67a8-4104-be4e-af30f7760468</guid>
      <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt#comment-459</link>
    </item>
    <item>
      <title>"Ledger For My Technical Debt" by digitalsanctum</title>
      <description>&lt;p&gt;I read once that a sign of a good hacker is one that does NOT introduce or leave hacks or temporary fixes in code and instead fixes them right away. I agree with the author (forgot where I read it) and I try to stick to the philosophy in my own work.&lt;/p&gt;</description>
      <pubDate>Wed, 27 Jun 2007 11:47:30 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:d9689ee9-302f-4b7f-9ead-107316362800</guid>
      <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt#comment-458</link>
    </item>
    <item>
      <title>"Ledger For My Technical Debt" by zorkerman</title>
      <description>&lt;p&gt;I find it to be very informative to do a fixme with a date:&lt;/p&gt;


	&lt;p&gt;// FIXME 6/26/2007 This code is the devil&lt;/p&gt;


	&lt;p&gt;Nothing like finding one of these that&amp;#8217;s three or four years old.&lt;/p&gt;</description>
      <pubDate>Wed, 27 Jun 2007 11:02:22 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:3d8832a3-3219-4b46-ab3c-282f4c3d0e7d</guid>
      <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt#comment-457</link>
    </item>
    <item>
      <title>"Ledger For My Technical Debt" by YAChris</title>
      <description>&lt;p&gt;Interesting how comments, intended to be one specific thing, have wound up with multiple uses: this reminds me of the (possibly apocryphal) story of the programmer&amp;#8217;s shopping list in the IBM OS/360 source.&lt;/p&gt;</description>
      <pubDate>Wed, 27 Jun 2007 10:18:37 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:327bae9f-55f2-4593-9cb0-e9abf7623ab7</guid>
      <link>http://blog.objectmentor.com/articles/2007/06/27/ledger-for-my-technical-debt#comment-456</link>
    </item>
  </channel>
</rss>
