<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Christopher Bird &#187; agile</title>
	<atom:link href="http://www.christopherbird.co.uk/tag/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.christopherbird.co.uk</link>
	<description>Personal and professional blog</description>
	<lastBuildDate>Mon, 21 Jun 2010 15:32:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Why is Unit Testing always the first task to go?</title>
		<link>http://www.christopherbird.co.uk/2009/10/why-is-unit-testing-always-the-first-task-to-go/</link>
		<comments>http://www.christopherbird.co.uk/2009/10/why-is-unit-testing-always-the-first-task-to-go/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 13:04:52 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://www.christopherbird.co.uk/?p=4</guid>
		<description><![CDATA[This was recently asked on my companies internal developer forum, i thought i&#8217;d take this opportunity to gather my thoughts as a forum post just won&#8217;t do it justice. So the Agile manifesto states that we want to uncover better ways of developing software and in the process we need to value &#8220;Working software&#8221;. If [...]]]></description>
			<content:encoded><![CDATA[<p>This was recently asked on my companies internal developer forum, i thought i&#8217;d take this opportunity to gather my thoughts as a forum post just won&#8217;t do it justice.</p>
<p>So the Agile manifesto states that we want to uncover better ways of developing software and in the process we need to value &#8220;Working software&#8221;. If we are really going to value working software then we need to know when that piece of work is working and done. This now raises another very important question what is the definition of done? The simple abridged answer is that all the acceptance criteria have passed for that piece of work.</p>
<p>For a piece of work to be done we need to validate that it meets it&#8217;s acceptance criteria. How are we going to do that? Well we&#8217;re going to test it against each acceptance criteria, so the simple thing to do would be to run through each acceptance criteria and test it. And every time we complete another piece of work we need to check it against it&#8217;s acceptance criteria and then check all the completed pieces of work against their acceptance criteria to make sure we haven&#8217;t broken anything. If we keep following this pattern the effort to test our software is going to grow to mammoth proportions.</p>
<p>So being the pragmatic programmers that we are, we don&#8217;t want to repeat ourselves, do we? So we&#8217;re going to write our tests upfront and write our code to meet the specification set out in the test. Which brings me to my first point in answering the question, many developers see tests as an afterthought and are done at the end. Without those tests up front how do you know your code has ever met its acceptance criteria? Do you code and hope? This now leads me to my second point, you&#8217;ve proved your code meets it&#8217;s acceptance criteria and you can do it over and over at a click of a button. In the long run you&#8217;ve saved yourself and others so much time and hopefully in turn saved money.</p>
<p>We&#8217;re now creating software and we can prove it works and its done. But that still doesn&#8217;t totally answer why its the first to be dropped by your stakeholders. I think this is down to quality being over looked, the stakeholder is very conscious of the cost, time and scope parameters of the project but not quality and that&#8217;s down to us! We need to sell our stakeholders on the fact we&#8217;re professional craftsmen and we will not compromise on quality much like a construction engineer won&#8217;t on the foundations of a building. We need to explain there is a very good reason that we won&#8217;t compromise on quality, partly for the reason i have discussed above and many others.</p>
<p>I applaud you to make sure it&#8217;s known while scope, cost or time can possibly flex quality cannot. But make sure to support it with what benefit they will receive in return for fixing quality.</p>
<p>This was recently asked on my companies internal developer forum, i thought i&#8217;d take this opportunity to gather my thoughts as a forum post just won&#8217;t do it justice.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.christopherbird.co.uk/2009/10/why-is-unit-testing-always-the-first-task-to-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
