<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://devlicio.us/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Tim Barcz : Agile, Rant</title><link>http://devlicio.us/blogs/tim_barcz/archive/tags/Agile/Rant/default.aspx</link><description>Tags: Agile, Rant</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Ship Software With Value</title><link>http://devlicio.us/blogs/tim_barcz/archive/2009/09/29/ship-software-with-value.aspx</link><pubDate>Tue, 29 Sep 2009 18:49:24 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:51874</guid><dc:creator>Tim Barcz</dc:creator><slash:comments>28</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/tim_barcz/rsscomments.aspx?PostID=51874</wfw:commentRss><comments>http://devlicio.us/blogs/tim_barcz/archive/2009/09/29/ship-software-with-value.aspx#comments</comments><description>&lt;p&gt;The blogosphere has gone a bit crazy the last few days with posts responding to &lt;a title="The Duct Tape Programmer By Joel Spolsky" href="http://www.joelonsoftware.com/items/2009/09/23.html"&gt;Joel Spolsky’s latest article about &amp;quot;The Duct Tape Programmer&amp;quot;&lt;/a&gt;. Bloggers everywhere are tossing their two cents in and saying what parts of Joel&amp;#39;s post was good and what wasn&amp;#39;t good. Once noticeable trend is that many have jumped on the &amp;quot;just ship it&amp;quot; bandwagon.&lt;/p&gt;  &lt;p&gt;There’s a quote mentioned by Jamie Zawinski in the article:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“Yeah,” he says, “At the end of the day, ship the f---ing thing! It’s great to rewrite your code and make it cleaner and by the third time it’ll actually be pretty. But that’s not the point—you’re not here to write code; you’re here to ship products.”&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I don&amp;#39;t know Jamie and I imagine the context that the comment was made in was based around some pre-existing level of candor with the person he was speaking. We really don’t know what “…ship the f---ing thing” means in the context of that conversation and what level of quality is expected in that scenario. I would agree with Joel/Jamie that shipping products is important and that often developers (myself included) run the risk of becoming too entrenched in a design or beauty and all too easily miss the point of developing software...which is to ship a product that adds value.&amp;#160; However...”shipping” is only part of the picture. As someone responsible for the value of the product my team ships, I’m keenly aware of what affects shipping early can do (both the positive and negative).&lt;/p&gt;  &lt;p&gt;I&amp;#39;m reading a lot where people say &amp;quot;just ship it&amp;quot; but I&amp;#39;ve been part of teams where shipping too soon costs more money in the long run (and sometimes not even “the long run” but a few days/weeks down the road). These pro “ship it” bloggers surely must be talking about non-critical business systems when we say &amp;quot;just ship it&amp;quot;; would you want to ride on a plane where the flight control systems were sent out with bugs? Even a measly 1% failure rate of airplane system is unacceptable and is enormously expensive both in dollars and reputation for an airline.&lt;/p&gt;  &lt;p&gt;The point is that shipping is the point but not the whole point, it&amp;#39;s only one aspect of a well delivered software product. &lt;strong&gt;Shipping software with value is the point.&lt;/strong&gt;&amp;#160; Ship too soon with bugs and the value gained by shipping is potentially lost.&amp;#160; Conversely shipping late provides no value at all.&amp;#160; Neither lobbing a piece of crap over the wall at your customers early, nor refactoring your code till it shines is the point, neither should be considered a success. There’s a sweet spot that you need to find.&amp;#160; Keep in close contact with your customer, if you pay attention they’ll let you know when you’ve crossed into either extreme.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=51874" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/tim_barcz/archive/tags/Rant/default.aspx">Rant</category><category domain="http://devlicio.us/blogs/tim_barcz/archive/tags/Agile/default.aspx">Agile</category><category domain="http://devlicio.us/blogs/tim_barcz/archive/tags/Testing/default.aspx">Testing</category><category domain="http://devlicio.us/blogs/tim_barcz/archive/tags/Opinion/default.aspx">Opinion</category></item><item><title>The Tortoise and the Hare</title><link>http://devlicio.us/blogs/tim_barcz/archive/2008/08/11/the-tortoise-and-the-hare.aspx</link><pubDate>Mon, 11 Aug 2008 17:13:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:41790</guid><dc:creator>Tim Barcz</dc:creator><slash:comments>19</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/tim_barcz/rsscomments.aspx?PostID=41790</wfw:commentRss><comments>http://devlicio.us/blogs/tim_barcz/archive/2008/08/11/the-tortoise-and-the-hare.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tim_5F00_barcz/image_5F00_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="327" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/tim_5F00_barcz/image_5F00_thumb.png" width="475" align="right" border="0" /&gt;&lt;/a&gt; We&amp;#39;re all familiar with the &lt;a href="http://www.storyarts.org/library/aesops/stories/tortoise.html"&gt;Aesop&amp;#39;s fable of the tortoise and the hare&lt;/a&gt;.&amp;#160; In the story, the hare, who is in every way is faster than the tortoise, loses a race to the tortoise.&amp;#160; The main principle of the story is that slow and steady wins the race.&lt;/p&gt;  &lt;p&gt;In my development I am shooting to be a tortoise, really I am.&amp;#160; Read on and let me explain.&lt;/p&gt;  &lt;p&gt;A few weeks ago I got some evil glares when I suggested at our .NET user group meeting that in enterprise systems that you don&amp;#39;t have time &lt;b&gt;not&lt;/b&gt; to test.&amp;#160; It&amp;#39;s a common hurdle for those new to testing to say, &amp;quot;I don&amp;#39;t have time to write tests.&amp;quot;&amp;#160; Let&amp;#39;s face it, we&amp;#39;re all busy, that excuse is tired.&amp;#160; As an agile and lean practitioner I seek out ways to improve velocity and reduce waste, not take my already busy schedule and cram in another tool for the sake of another tool.&amp;#160; While writing tests does slow me down, it brings on tortoise like speed, which I would argue is a good thing.&amp;#160; Writing unit tests is one tool that provide me the ability to keep a more consistent velocity over the course of development.&amp;#160; Without tests I can surely write things faster, the problem arises as the codebase grows and each new feature or fix takes increasingly more time. Eventually, even simple requests become arduous to implement.&amp;#160; Slowly you see your velocity come to a crawl.&lt;/p&gt;  &lt;p&gt;It&amp;#39;s an insidious cycle that I&amp;#39;ve seen before and am currently in the throes of; an application is built from scratch implementing everything the business requires. The application is enhanced and bolted on to, until you realize that you could move much faster if you could start from scratch.&amp;#160; You make pleas to your boss and explain how much productivity would improve if you could shed the hideous code base.&amp;#160; One day he gives in, you rejoice and you make the leap, start from scratch, breathing a sigh of relief at how easy implementing the features are all the while reminiscing about the old framework and how poorly it was written.&amp;#160; And now that the application is rewritten from scratch the cycle, unless you were aware of it all the while, starts again.&lt;/p&gt;  &lt;p&gt;You see, no one sets out to write crap code.&amp;#160; People do the best they can with the knowledge they have.&amp;#160; Code, following the &lt;a href="http://en.wikipedia.org/wiki/Laws_of_thermodynamics"&gt;second law of thermodynamics&lt;/a&gt;, tends towards chaos over time.&amp;#160; With unit tests in place I can refactor with more confidence and implement new features without the fear of breaking existing code.&amp;#160; If you have the ability to refactor, new code is no longer &amp;quot;bolted on&amp;quot; but rather &amp;quot;grafted in&amp;quot; becoming part of the system.&amp;#160; With a solid framework with tests in place you can much better stop the cycle of rewrites.&amp;#160; Quickly writing applications that degrade is the way of the hare.&amp;#160; Developing purposefully using unit tests causes me to be slow in the short run, but over the life of the application comes out far ahead.&amp;#160; In that way, I strive to be the tortoise.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=41790" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/tim_barcz/archive/tags/Rant/default.aspx">Rant</category><category domain="http://devlicio.us/blogs/tim_barcz/archive/tags/Agile/default.aspx">Agile</category><category domain="http://devlicio.us/blogs/tim_barcz/archive/tags/Testing/default.aspx">Testing</category></item></channel></rss>