<?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>8th Light Blog: Beware the Freebie</title>
    <link>http://blog.8thlight.com/articles/2006/02/15/beware-the-freebie</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>In the minds of the craftsmen...</description>
    <item>
      <title>Beware the Freebie</title>
      <description>&lt;p&gt;The milestones in the life of a story:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creation: customer creates the story&lt;/li&gt;
&lt;li&gt;Estimation: the story is estimated by developers&lt;/li&gt;
&lt;li&gt;Selection: the story is selected for an iteration&lt;/li&gt;
&lt;li&gt;Specification: tests are written the story&lt;/li&gt;
&lt;li&gt;Implementation: the story is implemented to make the tests pass&lt;/li&gt;
&lt;li&gt;Acceptance: the customer acknowledges completion of the story after seeing the passing tests and witnessing the new functionality&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It is unavoidable.  Every story must go through these milestones of life in order.  A story cannot be estimated if it has not been created.  A story cannot be selected for an iteration if it has not first been estimated. You can attempt to specify a story before it has been selected but you run the risk of being wrong, for the system may change many times before the story is selected. Implementing a story before it has been specified will lead to false implementations.  And accepting a story that hasn&amp;#8217;t been implemented is just plain silly.&lt;/p&gt;

&lt;p&gt;It happens with some frequency, however, that a story gets implemented before it is ever selected, estimated, or perhaps even created.  How?  A developer may be look at a piece of code and think, &amp;#8220;Hey, the customer mentioned he wanted to change this doohickey.  I might as well change it now.&amp;#8221;.  Or a developer may working on one feature and say, &amp;#8220;You know, I bet the customer would really like it if I improved this thing-a-magigger&amp;#8221;.  When this happens, the developer pridefully demonstrates the extra functionality to the customer and says with a smile, &amp;#8220;You got a Freebie this iteration!&amp;#8221;.&lt;/p&gt;

&lt;p&gt;BEWARE THE FREEBIE! A Freebie, by it&amp;#8217;s nature, has skipped at least one milestone in it&amp;#8217;s life.  Most Freebies skip the Selection milestone.  This is unfortunate because maybe the customer didn&amp;#8217;t really want that story after all.  But that&amp;#8217;s small potatoes compared to the real danger&amp;#8230;  Almost all Freebies have skipped the Specification milestone.&lt;/p&gt;

&lt;p&gt;Skipping the specification milestone is blasphemous.  If a feature has not been specified with tests, how do you know it really works?  Worse, how will you know if it still works 2 months from now.  Very often Freebies break and nobody knows about it.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve seen it over and over and it&amp;#8217;s regrettable every time.  A perfectly innocent story is wronged by an overzealous developer.  The poor story, out of sync from his peers, strays from the trodden path and becomes a Ghost Story.  Becoming a Ghost Story is dreadful fate.  They are those stories that were at one time complete, but have since become incomplete.  You may never actually see a ghost story but they will surely haunt you.  They cause users to have delusions of non-existant functionality and to make exclamations like &amp;#8220;Hey! Why doesn&amp;#8217;t this stupid app work like it used to?&amp;#8221; or &amp;#8220;What happened to my favorite feature?&amp;#8221;.  They keep customers up at night wondering if they actually selected the Ghost Story for an iteration of not.  They torment developers forcing them to write code they&amp;#8217;ve already written.&lt;/p&gt;

&lt;p&gt;Avoid Ghost Stories by avoiding Freebies.  Give every story a complete life with all it&amp;#8217;s milestones.  The next time a developers shows you extra functionality and calls it a Freebie,  say &amp;#8220;That&amp;#8217;s nice. I&amp;#8217;ll consider selecting a story for that in a future iteration.&amp;#8221;&lt;/p&gt;

&lt;hr/&gt;

&lt;p&gt;Mon, 24 Apr 2006 23:17:57, Old Grouch, Another hidded danger
By skipping several stages, the freebie runs the risk of breaking something else.  An assumption that doesn&amp;#8217;t carry throughout the entire system.  Usually minor, so it doesn&amp;#8217;t show up for months.  Then someone else has to rip their hair out.  And declare that your parents were never married.&lt;/p&gt;

&lt;p&gt;&amp;#8220;The more innocuous the change, the greater the ramification.&amp;#8221;&lt;/p&gt;

&lt;hr/&gt;

&lt;p&gt;Tue, 21 Feb 2006 14:11:34, Gary Dieckman, Looking for Preston and Karen Martin
Micah Martin - If your parents are Preston (Tom) and Karen Martin of Proctorville, Ohio, then your dad was best man at my wedding in 1970. I&amp;#8217;d like to get in touch. Are you that Micah?
gary@exprint.com&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;&lt;i&gt;Nope, you&amp;#8217;ve got the wrong Micah&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr/&gt;

&lt;p&gt;Tue, 21 Feb 2006 14:11:34, Gary Dieckman, Looking for Preston and Karen Martin
Micah Martin - If your parents are Preston (Tom) and Karen Martin of Proctorville, Ohio, then your dad was best man at my wedding in 1970. I&amp;#8217;d like to get in touch. Are you that Micah?
gary@exprint.com&lt;/p&gt;

&lt;hr/&gt;

&lt;p&gt;Thu, 16 Feb 2006 10:09:50, unclebob, Other out of order disfunctions.
Indeed!  I think you have hit on an interesting way to describe a whole family of dysfunctions.  I have certainly seen stories selected before they are estimated.  I have seen stories accepted before they are specified.  I have seen stories implemented before they are created.  Each of these dysfunctions has it&amp;#8217;s own particular set of symtoms and ramifications.  What are they?&lt;/p&gt;

&lt;hr/&gt;

&lt;p&gt;Thu, 16 Feb 2006 08:12:26, chelimsky, skipping selection
Well said, Micah. It&amp;#8217;s worth noting that 4 of the 6 milestones are customer milestones. As developers, we want to create the best software we create. We talk about it being a team effort (i.e. whole team, customers, developers, et al), but in the end it&amp;#8217;s not really our (developers) software. And how can we expect our customer to feel ownership of priorities if we arbitrarily take the their any (sometimes all) of their milestones?&lt;/p&gt;</description>
      <pubDate>Wed, 15 Feb 2006 00:00:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:0c60fe1c-cd47-4d7a-b1f4-737a784cbdea</guid>
      <author>Micah</author>
      <link>http://blog.8thlight.com/articles/2006/02/15/beware-the-freebie</link>
      <category>Process</category>
      <category>Testing</category>
      <category>Micah</category>
    </item>
  </channel>
</rss>
