<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>3months Blog</title>
	
	<link>http://blog.3months.com</link>
	<description>3months are a New Zealand based web development and Agile consulting services company.</description>
	<lastBuildDate>Wed, 04 Aug 2010 21:11:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/3monthsBlog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="3monthsblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>T-Shirt Sizing to Estimate Development Effort in a Software Project</title>
		<link>http://blog.3months.com/2010/08/05/t-shirt-sizing-to-estimate-development-effort-in-a-software-project/</link>
		<comments>http://blog.3months.com/2010/08/05/t-shirt-sizing-to-estimate-development-effort-in-a-software-project/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 21:08:25 +0000</pubDate>
		<dc:creator>Mahesh</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Estimation]]></category>

		<guid isPermaLink="false">http://blog.3months.com/?p=342</guid>
		<description><![CDATA[T-shirt sizing is &#8216;relative&#8217; sizing and less prone to errors than estimation of effort, in real days.
For instance, you can be guaranteed that two developers are like two watches. They never agree when it comes to how long it will take to develop a piece of functionality. One might say that it will take two [...]]]></description>
			<content:encoded><![CDATA[<p><span class="intro_text">T-shirt sizing is <strong>&#8216;relative&#8217;</strong> sizing and less prone to errors than estimation of effort, in real days.<br />
For instance, you can be guaranteed that two developers are like two watches. They never agree when it comes to how long it will take to develop a piece of functionality. One might say that it will take two weeks while the other smirks with an <span style="color: #993300;"><em>I-can-do-it-in-two-days</em></span> attitude.</span> That may be true as different developers come with varied skills and experience. Relative sizing is about comparing two different pieces of functionality and agreeing on which one is smaller (or larger) in size and by how much. Rarely do developers disagree on this. And if they do, you can be sure that the story is not clear enough or there are major unknowns.</p>
<p><a href="http://blog.3months.com/wp-content/uploads/2010/07/agile_tshirts_small3.png"><img class="alignnone size-full wp-image-353" title="relative_sizing2" src="http://blog.3months.com/wp-content/uploads/2010/07/agile_tshirts_small3.png" alt="" width="493" height="347" /></a></p>
<p>One way to estimate using relative sizing is to use the T-shirt sizes; small, medium, large and x-large. Too many sizes may confuse the developers and the team, so it is wise to stick to three or four sizes. You always estimate with more than one developer in the room, so that there can be a good debate about confusing issues. The skills and experience levels of the developers are not that important. It may even be good to have a wide spectrum.</p>
<p>Start by writing up cards with <span style="color: #993300;">S, M, L, XL</span> for each of the developers in the room. The Business Analyst or the Product Owner then explains the stories, one by one, and the developers estimate by putting forward one of the cards, simultaneously so that one does not influence the other. Whenever there is a mismatch in their estimates they discuss and debate the point in the room and re-estimate straight away. Usually it ends up with a consensus, as debates clear up the confusion. <em><strong>Always estimate with the end-users and stakeholders in the room to clear up any doubts.</strong></em></p>
<p>At the end of this exercise all the stories would have been classified into the different size buckets. Now what? Sample and work out the time required to develop a small, medium, large and x-large, respectively. Start with one from each size bucket and break them down into developer tasks, at the minute level possible. It is not too much to break down to a task level of even an hour’s work. Then estimate each of these minute tasks to calculate how long it will take, in real hours, to develop a small, a medium and so on.</p>
<p>Sampling is quite important in this process. It is good to start with random samples and then move on to boundary samples. From each bucket, pick ones that seem to be the largest and the smallest. Estimate these. How much do they vary? Is the smallest medium larger than the largest small? By how much? What is the variance within each bucket? Can the smallest and the largest in mediums still be called mediums?</p>
<p>Depending on the results of the above analysis, the buckets and the stories in them may have to be rearranged.</p>
<p>Once this exercise is over, we can now apply the real estimates from the samples to all the stories in a bucket to get an overall estimate of the size of the project. It is now time to step back and take stock of the budget, cost-benefit, approvals, schedule, road map and so on before progressing any further.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.3months.com/2010/08/05/t-shirt-sizing-to-estimate-development-effort-in-a-software-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Continuous Integration and Testing unconference</title>
		<link>http://blog.3months.com/2010/07/28/citcon/</link>
		<comments>http://blog.3months.com/2010/07/28/citcon/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 05:25:53 +0000</pubDate>
		<dc:creator>breccan</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://blog.3months.com/?p=374</guid>
		<description><![CDATA["Interestingly, the dedicated testers had a very poor opinion of the testing abilities of developers..."]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been out to a couple of <em>un</em>conferences (with varying values of &#8220;un&#8221;)  in the last month. Citconf (Continuous Integration and Testing  conference) was well and truly in the unconference style with audience  created topics and discussions covering mostly testing  topics with a few extra things such as bee-keeping.</p>
<p>I  started the day with a session I proposed and co-facilitated on  Behaviour Driven Development (BDD) and Acceptance Testing. We covered a  good amount of ground on the troubles getting people into the BDD  mindset and appropriate acceptance tests.</p>
<p>Our discussion turned  towards some particularly tricky problem banks were having with  acceptance tests on their larger system towards the end which surprised  me but was an interesting discussion of BDD at scale. The discussion  reminded me how grateful I am for the tools available in Ruby that make  testing so much easier than it is for people in the Java world.</p>
<p>We  had an eye-opening session on the limits of testing and the use of  skilled testers in the testing process. The difference of opinion  between the people from smaller outfits vs the large banks was quite  dramatic with the smaller outfits being much happier to move quickly  with as light a testing overhead as possible whilst the banks had large  test teams dedicated to going through the applications at length.</p>
<p>Interestingly,  the dedicated testers had a very poor opinion of the testing abilities  of developers, I wonder is partly due to developers being more relaxed  in their coding when they know there is going to be a high level of  dedicated testing around to pick up the errors or if it is simply that  organisations that are concerned enough about testing to hire testers  happen to be those that require a more bug-free approach than the normal  small organisation that can react quickly to issues.</p>
<p>The final  talk of the day was Nigel McNie talking about his start-up&#8217;s use of  continuous deployment. He&#8217;d put a lot of effort in the implementation at  his start-up and was able to build on a lot of stuff with practical  examples of how he implemented it. Eric Ries had talked about continuous  deployment at Webstock this year and Nigel&#8217;s examples made it seem  significantly more realistic than Ries&#8217;s mention of it.</p>
<p>By using  feature flags that go around code that is related to that feature Nigel  can have a test suite that tests both states of the flag and if the  tests pass the code goes straight to live. So every feature that he has  developed so far has made its way onto the server in a latent state,  when he wants something to go live he just changes the variable or it  can just be set to a time. If issues occur in the site his time to fix  is very low as he does not have to wait for deploys or releases and  relies on a comprehensive set of automated tests to cover for him.</p>
<p>Overall Citconf was both useful in terms of technical things that I&#8217;ve taken  away from it and very interesting in terms of meeting the dedicated  testers who are present at so many organisations but don&#8217;t seem to come  to the conferences or events that I do.</p>
<p>Some <a href="http://citconf.com/wiki/index.php?title=CITCONANZ2010Sessions">wiki entries</a> from the conference.</p>
<p>More information on some of testing and CI tools we use at 3months:</p>
<ul>
<li>Behaviour Driven Development (BDD) &#8211; <a href="http://cukes.info/">Cucumber</a> &amp; <a href="http://rspec.info/">RSpec</a></li>
<li>Continuous Integration (CI) &#8211; <a href="http://cruisecontrol.sourceforge.net/">Cruise Control</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.3months.com/2010/07/28/citcon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Archiving: digital continuity or digital lockbox?</title>
		<link>http://blog.3months.com/2010/05/11/archiving-digital-continuity-or-digital-lockbox/</link>
		<comments>http://blog.3months.com/2010/05/11/archiving-digital-continuity-or-digital-lockbox/#comments</comments>
		<pubDate>Mon, 10 May 2010 20:58:07 +0000</pubDate>
		<dc:creator>shanan</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[archives]]></category>
		<category><![CDATA[digital content]]></category>
		<category><![CDATA[digital futures]]></category>
		<category><![CDATA[future perfect]]></category>
		<category><![CDATA[records]]></category>

		<guid isPermaLink="false">http://blog.3months.com/?p=330</guid>
		<description><![CDATA[I was recently lucky enough to be invited on to a panel at Archives NZ&#8217;s 2010 Future Perfect: Digital Continuity Conference to discuss:
What impacts or solutions to digital longevity does technology innovation present?
I say lucky because the other members of the panel are people who are held in pretty high regard: chaired by Colin Jackson, [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently lucky enough to be invited on to a panel at Archives NZ&#8217;s 2010 <a href="http://www.archives.govt.nz/advice/digital-continuity-action-plan/future-perfect-digital-continuity-conference-2010">Future Perfect: Digital Continuity Conference</a> to discuss:</p>
<blockquote><p>What impacts or solutions to digital longevity does technology innovation present?</p></blockquote>
<p>I say lucky because the other members of the panel are people who are held in pretty high regard:<span id="more-330"></span> chaired by <a href="http://it.gen.nz/">Colin Jackson</a>, with Nat Torkington (<a href="http://nathan.torkington.com/">impressive bio</a> in case you haven&#8217;t heard of him), Andreas Rauber (Vienna University of Technology), Don Christie (President of <a href="http://nzoss.org.nz/">NZOSS</a>, founder of Catalyst IT), and Oded Scharfstein (<a href="http://www.exlibrisgroup.com/?catid=%7B72B58827-CD5A-4F3E-8519-C283337371A0%7D">Ex Libris</a>).</p>
<p>I&#8217;m not and have never pretended to be an Archives expert, but since this was a technology session and I was representing a web development company (3months) I was comfortable enough. It&#8217;s the second panel I&#8217;ve been on, the first a panel hosted by Beyond Recruitment on Agile practices.</p>
<p>The start of the panel was to be a 5 minute &#8220;position statement&#8221; on each of the panel member&#8217;s views on the question, which turned out to be the entirety of the discussion. Although I was there from a web technology point of view, the subject had me thinking about creativity in the digital domain and licensing (especially Creative Commons licensing). Seems like a stretch, but here&#8217;s the short version of my position:</p>
<p>Part A: Systems</p>
<ul>
<li>There&#8217;s an awful lot of digital content being created. Too much to print out and store on acid-free paper and lock in a store somewhere (I think we all know this).</li>
<li>We can&#8217;t decide which digital content will be of importance in the future so can&#8217;t selectively store it in this way.</li>
<li>Given that we can&#8217;t store everything offline, we have to store it digitally.</li>
<li>The traditional problems associated with personal digital content are going away: hard drive failure leading to loss of photos doesn&#8217;t apply when all of your data is heading into the cloud.</li>
<li>Even with online storage, some of it will fail and many of the formats in use now will not be in use in the future (another common concern).</li>
<li>Shared open systems can solve the format change problem once for a large number of users/organisations (music site <a href="http://bandcamp.com">BandCamp</a> as an example lets users upload in the open FLAC format and download in FLAC and other current proprietary formats such as MP3).</li>
<li>Content stored in open systems (non-proprietary and publicly accessible) will outlive that stored in closed systems because it will be accessed and replicated and will often store data in an open format.</li>
<li>Open systems themselves can be duplicated and replicated legally because of the nature of the licensing used (i.e. <a href="http://www.fsf.org/">free software</a>).</li>
</ul>
<p>Part B: Content</p>
<ul>
<li>Technology can enable openness of the technology but only content authors can enable openness of the content through open (permissive) licensing.</li>
<li>Open licensed content will be stored in more places because the licensing makes it legal to do so (Creative Commons licenses, for instance).</li>
<li>Open licensed content enables collaboration and remixing/adaptation of content.</li>
<li>Open licenses content will be shared more, because it will be reused more, because it is allowed to be reused.</li>
</ul>
<p>Part C: Reuse</p>
<ul>
<li>The default position, archiving content under copyright (here&#8217;s an example from <a href="http://audiovisual.archives.govt.nz/accessandcopyright/">Archives NZ</a>), creates the danger of a <a href="http://www.istartedsomething.com/20071109/ted-larry-lessig-copyright/">read-only culture</a> (even if made publicly viewable).</li>
<li>A permissive licensing culture in archived material would enable archived material to have genuine social benefit [yes, just my view], going on to be remixed and adapted for artistic, academic and commercial reuse.</li>
<li>Open content in open systems will be duplicated more because it can be both legally and technically.</li>
<li>I believe that open content in open systems will outlive proprietary content stored in closed systems.</li>
</ul>
<p>A truly open archiving and record keeping environment would result in public information being stored in public systems for public reuse. The archivist would become more like an observer, watching content flourish and harvesting the results as needed but not trying to control or gate-keep the content, where it is located or how it is used. This environment, where content is primarily reused and remixed, may even result in losing the original record in some cases, but is this really an issue? Not for me: the record still serves a purpose.</p>
<p>An example:</p>
<p><a href="http://ccmixter.org">ccMixter</a> is a community remix site for music and audio. It&#8217;s a model for collaboration that traces the source document and it&#8217;s journey through different interpretations. The ccMixter model would be interesting to apply to other endeavours:</p>
<ul>
<li>Upload the original record/content</li>
<li>License it in a way that it can be adapted on and remixed (in a range of ways that <a href="http://creativecommons.org/choose/">CC licenses support</a>)</li>
<li>Maintain the original record and ensure its traceability</li>
<li>View adaptations of the content (which come with constantly refreshed formats)</li>
</ul>
<p>Imagine a world where every public record was open and resuable in this way, where individuals and organisations could extract whatever value they wanted out of public records, and where digital continuity also meant reuse and remixing. I might be dreaming, but this might also be the only way to ensure the digital continuity of our public assets in a sustainable and useful way.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.3months.com/2010/05/11/archiving-digital-continuity-or-digital-lockbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>University Students and Rails</title>
		<link>http://blog.3months.com/2010/05/10/university-students-and-rails/</link>
		<comments>http://blog.3months.com/2010/05/10/university-students-and-rails/#comments</comments>
		<pubDate>Mon, 10 May 2010 02:42:53 +0000</pubDate>
		<dc:creator>breccan</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.3months.com/?p=327</guid>
		<description><![CDATA[Our summer of code intern, Josh, is vice-president of the VUWIT society at Victoria university and invited me up to talk about Rails, so on Wednesday I went up to the university and spent about three hours teaching 40ish students Rails.]]></description>
			<content:encoded><![CDATA[<p>Our summer of code intern, Josh, is vice-president of the VUWIT society  at Victoria university and invited me up to talk about Rails, so on  Wednesday I went up to the university and spent about three hours  teaching 40ish students Rails.<span id="more-327"></span></p>
<p>I made some changes to my slides  and the general format of the talk so that we could get through more  stuff. I focused more on scaffolding the app up initially and then  working on some basic stuff to relate movies to reviews and work with  the two in combination. The scaffolding approach was definitely a lot  more successful than going with building the app up from scratch in  terms of getting to a point where stuff could happen sooner.</p>
<p>In  general it felt much smoother than my last practical session on Rails  and I think we covered enough material for people to be able to get  started with Rails decently. Having consistent versions of Ruby and  Rails is particularly good when you&#8217;re trying to run something with a  large group of people and when things go wrong you can often broadcast  the fix to everyone.</p>
<p>The big problem this time wasn&#8217;t the content  but the lack of anything big and impressive looking. It&#8217;s relatively  easy to explain to people who&#8217;ve worked with large apps in PHP or J2EE  why the architecture and style of Ruby and Rails is good and avoids  problems they will have come across.</p>
<p>For students who haven&#8217;t  worked on (m)any large apps, doing some basic functionality in Rails  just looks like a bunch of really simple stuff and they&#8217;re not impressed  or excited by simple things. It seems I have to try and strike a  balance between informative teaching and showing off tricks to convince  people that stuff in rails is cool.</p>
<p>I&#8217;m not willing to take a  &#8220;here&#8217;s some magical code for you to copy paste and now you&#8217;re an  awesome programmer&#8221; approach to it as I think that leads to a bit of a  cheap high, I certainly don&#8217;t want people to be encouraged towards cargo  culting code. I do give people code to copy out but only after I&#8217;ve  explained the function and goal of each piece(with the exception of some  config stuff).</p>
<p>I&#8217;m currently considering, for the next time I do  something like this, either spending 15 minutes going nuts on the  projector and adding as much functionality as I can very quickly with  lots of integration with other services, or spending a few minutes  showing how intolerably horrible some of the other solutions to these  problems might be. The showing off idea is probably better, but pulling  out scads of bad code to insult might be more fun for me.</p>
<p>In the  end, the biggest sale will probably come later on if they happen to want  to do something that could use Rails. As long as people have the  groundwork they&#8217;re much more likely to pick it up then, a project is  really what you need to do to learn Rails properly anyway.</p>
<p>[Thanks to Breccan for re-posting from his <a title="Breccan McLeod-Lundy Technology and Cocktails " href="http://www.breccan.com/">personal blog</a>.]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.3months.com/2010/05/10/university-students-and-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Webstock vs Linux.conf.au</title>
		<link>http://blog.3months.com/2010/03/26/webstock-vs-linux-conf-au/</link>
		<comments>http://blog.3months.com/2010/03/26/webstock-vs-linux-conf-au/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 21:28:32 +0000</pubDate>
		<dc:creator>breccan</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[swags]]></category>

		<guid isPermaLink="false">http://blog.3months.com/?p=322</guid>
		<description><![CDATA[In the last couple of months I&#8217;ve been to both Linux.conf.au and Webstock. Two conferences that both aim to cover to a reasonably large variety of cool stuff happening in technology. It is stunning just how different these conferences manage to be when they set out with similar goals and even seem to aim to [...]]]></description>
			<content:encoded><![CDATA[<p>In the last couple of months I&#8217;ve been to both Linux.conf.au and Webstock. Two conferences that both aim to cover to a reasonably large variety of cool stuff happening in technology. It is stunning just how different these conferences manage to be when they set out with similar goals<span id="more-322"></span> and even seem to aim to elicit similar responses from audiences of slightly different people.</p>
<p>Both conferences had a clear aim of inspiring participants to do cool things. Linux conf did this with things like open source in schools or open source in space, practical things that were very cool if you happen to be an open source geek. Webstock, on the other hand, painted its inspirational message with a broader brush, from talking about the possibilities of future technology to encouraging people towards founding startups.</p>
<p>There was a much wider selection of subject matter available at Linux conf it was easy to move from one talk that gives lots of practical advice that you can put to use the next day to another that sparks a group of individuals into campaigning against internet censorship. The fact that it was an open source event was particularly noticeable when you saw how many people end their talks with links or pleas for potential contributors to their projects.</p>
<p>Webstock didn&#8217;t have as wide range a of talks being mostly singled streamed, but it&#8217;s speakers were of a uniformly high quality and particularly entertaining even when they weren&#8217;t talking in your own areas of interest. Their speeches generally focussed on the encouragement to do something cool or motivational rather than the geeky focus on particular things of Linux conf.</p>
<p>Something more unique to Webstock was the presence of a number of speakers who were just cool. Rives, a spoken word poet, was a particular highlight for many attendees. His connection to the web was a little tenuous and his site couldn&#8217;t be called an example of web best practices, but as a speaker he was brilliant.</p>
<p>The only particularly practical talk I went to at Webstock was John Resig talking about jquery. Jquery is already our favoured javascript framework and his talk covered a range of the functionality that had recently been released and he had not yet got around to documenting.</p>
<p>Comparatively, there were large numbers of practical talks at Linux conf by a large range of industry experts. From current happenings in postgres to the importance of documentation in open source projects or the legal status of patents. Linux conf was particularly useful throughout.</p>
<p>In the next weeks after Linux conf I was able to actually apply a large number of things I had learned in the course of the conference. From useful new database management techniques to mentoring our summer of code student there had been talks that were on the things I come across daily.</p>
<p>Webstock may not have been as directly useful, but it certainly was motivational. With most conference goers coming out feeling motivated and excited by the future. It certainly was enjoyable and making sure people that excitement about technology and the web is going to cause them to be more productive anyway.</p>
<p>I enjoyed both conferences because I happen to occupy a happy medium that occurs between the Webstock target audience and the Linux conf one. It did surprise me just how different they were though both in style and type of attendee. I recommend both conferences, but you do need a reasonable level of technical exposure to enjoy Linux conf while Webstock isn&#8217;t something you should go to expecting to get direct benefits. Check out Rives though; he stole the after Webstock discussion.</p>
<p><strong>Appendix: The Swag</strong></p>
<p>Of course, the defining aspect of any conference is the swag. Webstock mostly focusses on its very pretty bag, which is very good although somewhat lacking in useful items inside it. It also suffers from the velcro closing mechanism that makes it impossible to open the bag without drawing everyone&#8217;s attention. It&#8217;s possible this effect is intentional to make sure everyone is aware that you have a cool Webstock bag.</p>
<p>The Linux conf swag was significantly more varied in terms of including a reasonable supply of writing materials, a usb key and a clock. Writing materials in particular were an excellent addition over the little pads that floated around Webstock. The Linux conf bag  also has proper little magnetic closing things.</p>
<p><em>Breccan is a developer at </em><a href="http://3months.com/"><em>3months</em></a><em>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.3months.com/2010/03/26/webstock-vs-linux-conf-au/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Agile By Numbers</title>
		<link>http://blog.3months.com/2010/03/11/agile-by-numbers/</link>
		<comments>http://blog.3months.com/2010/03/11/agile-by-numbers/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 09:58:23 +0000</pubDate>
		<dc:creator>shanan</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[adoption]]></category>
		<category><![CDATA[waste]]></category>

		<guid isPermaLink="false">http://blog.3months.com/?p=310</guid>
		<description><![CDATA[In our work with clients we come across organisations and internal champions of Agile practices who understand this very important concept: Agile is about practices and behaviours. Practices and behaviours that enable teams to improve and succeed ultimately save money and increase delivery. We also occasionally run into people who are hoping for a project [...]]]></description>
			<content:encoded><![CDATA[<p>In our work with clients we come across organisations and internal champions of Agile practices who understand this very important concept: Agile is about practices and behaviours. Practices and behaviours that enable teams to improve and succeed ultimately save money and increase delivery. We also occasionally run into people who are hoping for a project delivery mindset that is far more command-and-control than team-enabling under the guise of Agile. <span id="more-310"></span>Agile &#8220;by the book&#8221;, or Agile by numbers, is command-and-control based and command-and-control, when turned on product development, is Not A Good Thing.</p>
<p>Here&#8217;s the deal: command-and-control approaches will destroy your projects and decimate your portfolios while you&#8217;re waiting for results that will rarely surface. If you dictate process to a project team you will get a team who can adhere to process and will be able to demonstrate all sort of reasons for failure relating to the project. Dictating process amounts to telling a team what to do, when and how. In this kind of environment the PM learns to allocate tasks, determine their order and execution and control which practices the team can or can&#8217;t adopt. The team learn to follow instructions and success depends on the PM being able to control everyone in the team to the right level. While this can happen in pseudo-Agile settings, it&#8217;s more common in waterfall environments. It can lead to success of a sort, but isn&#8217;t repeatable and is very much personality driven.</p>
<p>Where does the high cost of failure come in? In a waterfall or control-based Agile-like process, the PM can report that the project is under control while they work hard to plan and dictate tasks, interactions and processes to the team. A waterfall or control-based Agile-like process will demand an entire cycle of the process before failure becomes apparent, meaning that the available time and money have been spent before a project&#8217;s financial sponsors are aware of an issue.</p>
<p>If these structures and behaviours lead to hiding waste through confusion, properly enabled Agile teams eliminate waste through transparency.</p>
<p>The alternative is to enable teams: if you enable the team to tackle product development and guide them with good starting practices, they will adapt and improve as they succeed and typically deliver great and innovative products. Enabled teams understand that they are jointly accountable for delivering a good product and that they need to collaborate to reach the end. Agile coaches and facilitators who assist these teams know that their job is to guide and challenge the team, ultimately making sure the team has everything they need to succeed.</p>
<p>Agile is not about following a process, a check list or a flowchart. Agile is about Done, about completion and about products being more important than processes. Organisational adoption of Agile is about enabling teams, coaches, facilitators and managers to view the team as a vehicle for successful product delivery.</p>
<p><em>Shanan Holm is Projects Director and Agile Consultant at <a href="http://3months.com">3months</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.3months.com/2010/03/11/agile-by-numbers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Lego Game</title>
		<link>http://blog.3months.com/2010/02/17/agile-lego-game/</link>
		<comments>http://blog.3months.com/2010/02/17/agile-lego-game/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 01:44:31 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[lego]]></category>
		<category><![CDATA[Webstock]]></category>

		<guid isPermaLink="false">http://blog.3months.com/?p=281</guid>
		<description><![CDATA[
For this year&#8217;s stand at Webstock we decided to run a modified Scrum Lego game to highlight some Agile practices. To play, attendees can: add a user story to a theme, add a theme or take a story and build something that meets the story acceptance criteria within their time box. Pictures of their completed [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" src="http://farm5.static.flickr.com/4043/4363396479_3dc35917bb_m.jpg" alt="Mike Lowery looking at some Lego" width="240" height="180" /><br />
For this year&#8217;s stand at Webstock we decided to run a modified Scrum Lego game to highlight some Agile practices. To play, attendees can: add a user story to a theme, add a theme or take a story and build something that meets the story acceptance criteria within their time box. Pictures of their completed work will be available on Flickr allowing others to comment on their efforts and hopefully generate some more user stories. Of course their are some prizes to help generate some interest, but come on it&#8217;s Lego and the only kids are big ones.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.3months.com/2010/02/17/agile-lego-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Illustrating Scrum – A new and improved Scrum Diagram</title>
		<link>http://blog.3months.com/2010/01/10/illustrating-scrum-a-new-and-improved-scrum-diagram/</link>
		<comments>http://blog.3months.com/2010/01/10/illustrating-scrum-a-new-and-improved-scrum-diagram/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 21:55:54 +0000</pubDate>
		<dc:creator>kelly</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[diagram]]></category>
		<category><![CDATA[life cycle]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[scrum process]]></category>
		<category><![CDATA[sprint cycle]]></category>

		<guid isPermaLink="false">http://blog.3months.com/?p=203</guid>
		<description><![CDATA[An overview of Scrum diagrams
I have noticed a few discussions recently about the ‘scrum diagram’. I will be posting mainly in response to these 3 blogs:  David Harvey – The Scrum picture is wrong, Karl Scotland &#8211; A New Lean And Agile Picture , Andy Brandt &#8211; Scrum picture is quite right. I will [...]]]></description>
			<content:encoded><![CDATA[<h2>An overview of Scrum diagrams</h2>
<p>I have noticed a few discussions recently about the ‘<strong>scrum diagram</strong>’. I will be posting mainly in response to these 3 blogs:  <a id="s1py" title="David Harvey – The Scrum picture is wrong" href="http://www.teamsandtechnology.com/dh/blog/2009/10/20/the-scrum-picture-is-wrong-scrumgathering/">David Harvey – The Scrum picture is wrong</a>, <a id="xs1r" title="Karl Scotland - A New Lean And Agile Picture" href="http://availagility.co.uk/2009/10/21/a-new-lean-and-agile-picture/">Karl Scotland &#8211; A New Lean And Agile Picture</a> , <a id="jj7j" title="Andy Brandt - Scrum picture is quite right" href="http://www.andybrandt.net/533/scrum-picture-is-quite-right">Andy Brandt &#8211; Scrum picture is quite right</a>. I will be collating these ideas into this post to offer an analysis/ pro’s and cons of current diagrams and create a discussion to (hopefully) find a solution.<span id="more-203"></span></p>
<p><em>Brief background, I am a designer/front-end developer at 3months and a certified Scrum Master, what I have to offer is experience in design, illustration and experience working in an agile software development team.</em></p>
<h3>The Original Scrum diagram</h3>
<p><img class="size-full wp-image-204 alignnone" title="Original Scrum" src="http://blog.3months.com/wp-content/uploads/2010/01/scrum1.jpg" alt="Scrum diagram" width="500" height="220" /></p>
<h3>A Visual Introduction to Scrum</h3>
<p><a href="http://www.mountaingoatsoftware.com/scrum" target="_blank">(Mike Cohn and Mountain Goat Software)</a></p>
<p><a href="http://blog.3months.com/wp-content/uploads/2010/01/ScrumLargeLabelled.png"><img class="size-full wp-image-206 alignnone" title="A Visual Introduction to Scrum" src="http://blog.3months.com/wp-content/uploads/2010/01/ScrumLargeLabelled.png" alt="Scrum Diagram" width="500" height="232" /></a></p>
<p>After reading David’s article on <a href="http://www.teamsandtechnology.com/dh/blog/2009/10/20/the-scrum-picture-is-wrong-scrumgathering/" target="_blank">The scrum picture is wrong</a> &#8211; in reference to this diagram above, I started off thinking how I could incorporate David&#8217;s ideas into an improved, polished diagram. The main issue David has with the current (most used) scrum diagram is the lack of people and the focus on only one of the deliverables &#8211; the product or &#8216;potentially shippable product increment&#8217;.</p>
<p>He suggests the diagram should illustrate benefits to the <strong>team</strong>, <strong>product</strong> and <strong>client</strong>.</p>
<blockquote><p><em><br />
&#8220;..I worry about what happens when we surround ourselves with process pictures which (1) don‚t include people, and (2) only tell half the story&#8230;&#8221; </em></p></blockquote>
<p><strong>Pros</strong></p>
<ul>
<li>Colours</li>
<li>Mention of daily scrum</li>
<li>Easy to talk about when presenting</li>
</ul>
<p><strong>Cons</strong></p>
<ul>
<li>Lack of people &#8211; Where is the team? Where is the client?</li>
<li>No product vision</li>
</ul>
<h3>Agile Project Management with Scrum – Ken Schwaber</h3>
<p><a href="http://blog.3months.com/wp-content/uploads/2010/01/scrum2.jpg"><img class="size-full wp-image-214 alignnone" title="Scrum Process Overview" src="http://blog.3months.com/wp-content/uploads/2010/01/scrum2.jpg" alt="Scrum Process Overview" width="342" height="282" /></a></p>
<p><strong>Pros</strong></p>
<ul>
<li>Shows people</li>
<li>Shows product vision</li>
<li>Daily scrum</li>
<li>Feedback loop</li>
</ul>
<p><strong>Cons</strong></p>
<ul>
<li>No retrospective (not technically a must in Scrum but it&#8217;s common practice)</li>
<li>Not clear that the outcome is a ‘potentially releasable product’</li>
<li>No visible end to the process</li>
</ul>
<h3>The Process Model for Scrum</h3>
<p><strong>(Scaling Software Agility –  Best Practices for Large Enterprises by Dean Leffingwell)</strong></p>
<p><strong><a href="http://blog.3months.com/wp-content/uploads/2010/01/scrum3.jpg"><img class="alignnone size-full wp-image-218" title="The Process Model for Scrum" src="http://blog.3months.com/wp-content/uploads/2010/01/scrum3.jpg" alt="Scrum Diagram" width="360" height="292" /></a></strong></p>
<p><strong>Pros</strong></p>
<ul>
<li>A detailed overview of scrum process</li>
</ul>
<p><strong>Cons</strong></p>
<ul>
<li>No product vision</li>
<li>Lots of text</li>
</ul>
<h3>Scrum for Team System</h3>
<p><a href="http://blog.3months.com/wp-content/uploads/2010/01/Scrum-Overview-Diagram.png"><img class="alignnone size-full wp-image-220" title="Scrum for Team System" src="http://blog.3months.com/wp-content/uploads/2010/01/Scrum-Overview-Diagram.png" alt="Scrum for Team System" width="500" height="312" /></a></p>
<p><strong>Pros</strong></p>
<ul>
<li>Lists preparation tasks, but probably isn&#8217;t necessary</li>
</ul>
<p><strong>Cons</strong></p>
<ul>
<li>Does not flow well</li>
<li>Interestingly the first step from the large prep section takes you to more prep rather than getting you going</li>
<li>Daily cycle feels a little hidden</li>
<li>Artefacts and people feel like an adjunct to the cycle rather than part of it.</li>
</ul>
<h3>A New Lean and Agile Picture</h3>
<p>Karl Scotland’s blog post <a href="http://availagility.co.uk/2009/10/21/a-new-lean-and-agile-picture/" target="_blank">A New Lean And Agile Picture</a> offers this diagram which focuses on 2 inputs <strong>VISION</strong> and <strong>REALITY</strong> and 2 outputs <strong>PRODUCT</strong> and <strong>TEAM</strong>.</p>
<p><a href="http://blog.3months.com/wp-content/uploads/2010/01/processpicture_thumb.png"><img class="alignnone size-full wp-image-224" title="A New Lean And Agile Picture" src="http://blog.3months.com/wp-content/uploads/2010/01/processpicture_thumb.png" alt="Agile Diagram" width="515" height="338" /></a></p>
<p><strong>Pros</strong></p>
<ul>
<li>Minimal &#8211; but whilst minimal it is very open to interpretation</li>
<li>Easy to remember</li>
<li>Shows benefits to client and to team</li>
</ul>
<p><strong>Cons</strong> (*taken from comments on Karl Scotland&#8217;s blog)</p>
<ul>
<li>*inputs should say VISION and TEAM</li>
<li>*outputs should say PRODUCT INCREMENT and TEAM CAPABILITY</li>
<li>No break down of the actual Scrum (or other) process</li>
</ul>
<h2>A new and improved Scrum Diagram?</h2>
<p>My first attempt at this focused on combining the positive aspects of these main diagrams, especially Mike Cohen&#8217;s and Karl Scotland&#8217;s diagrams.</p>
<p><a href="http://blog.3months.com/wp-content/uploads/2010/01/project_lifecycle_v1cc.png"><img class="alignnone size-full wp-image-264" title="Project Lifecycle" src="http://blog.3months.com/wp-content/uploads/2010/01/project_lifecycle_v1cc.png" alt="Project Lifecycle" width="518" height="260" /></a></p>
<p><strong>Feedback from my team members</strong></p>
<ul>
<li>Sprint backlog should be within in cycle</li>
<li>Try visually indicating that the product back log &#8216;feeds&#8217; into the sprint</li>
<li>How about move the daily scrum to the center of the cycle?</li>
</ul>
<p><strong>and now for the latest version&#8230;.</strong></p>
<p><a href="http://blog.3months.com/wp-content/uploads/2010/01/project_lifecycleV5.png"><img class="alignnone size-full wp-image-263" title="Agile Project Lifecycle" src="http://blog.3months.com/wp-content/uploads/2010/01/project_lifecycleV5.png" alt="Agile Project Lifecycle" width="508" height="258" /></a></p>
<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/nz/"><img style="border-width: 0;" src="http://i.creativecommons.org/l/by-sa/3.0/nz/80x15.png" alt="Creative Commons License" /></a><br />
<span style="color: #333333;"><em>This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/nz/">Creative Commons Attribution-Share Alike 3.0 New Zealand License</a>.</em></span></p>
<p>So there we have it,</p>
<ul>
<li>Vision + Team as inputs</li>
<li>Product + Team Capability as outputs</li>
<li> An Initial Product Backlog that feeds into the Sprint Cycle</li>
<li> Within the Sprint Cycle we have all the tasks that make up a sprint &#8211; planning, sprint backlog, product increment, sprint review, sprint retrospective, updated product backlog</li>
</ul>
<p>and at the core of cycle we have the Daily work!</p>
<p><em>Kelly Cheesman is an Interaction Designer at <a href="http://3months.com/">3months</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.3months.com/2010/01/10/illustrating-scrum-a-new-and-improved-scrum-diagram/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Story Cards</title>
		<link>http://blog.3months.com/2010/01/09/story-cards/</link>
		<comments>http://blog.3months.com/2010/01/09/story-cards/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 20:38:08 +0000</pubDate>
		<dc:creator>kelly</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[Story Cards]]></category>

		<guid isPermaLink="false">http://blog.3months.com/?p=239</guid>
		<description><![CDATA[We have recently started an Agile Services team within 3months and I have been working on developing our agile &#8216;identity&#8217;. I started by designing a set of Story Cards based on Mike Cohen&#8217;s template “As a &#60;type of user&#62;, I want &#60;some goal&#62; so that &#60;some reason&#62;.” I have also made some Task Status cards, [...]]]></description>
			<content:encoded><![CDATA[<p>We have recently started an Agile Services team within 3months and I have been working on developing our agile &#8216;identity&#8217;. I started by designing a set of <strong>Story Cards</strong> based on Mike Cohen&#8217;s template <strong>“As a <em>&lt;type of user&gt;</em>, I want <em>&lt;some goal&gt;</em> so that <em>&lt;some reason&gt;</em>.”</strong> I have also made some <strong>Task Status </strong>cards, here at 3months we have found it useful to have the following categories: <strong><span style="color: #333399;">NOT STARTED</span></strong>, <strong><span style="color: #3366ff;">WORK IN PROGRESS</span></strong>, <strong><span style="color: #ffcc00;">TESTING</span></strong>, <strong><span style="color: #99cc00;">DONE</span></strong> and <strong><span style="color: #ff0000;">BLOCKED</span></strong>.<span id="more-239"></span></p>
<p><a href="http://blog.3months.com/wp-content/uploads/2010/01/done.jpg"><img class="alignnone size-full wp-image-241" title="Done" src="http://blog.3months.com/wp-content/uploads/2010/01/done.jpg" alt="Done" width="519" height="346" /></a></p>
<p><a href="http://blog.3months.com/wp-content/uploads/2010/01/done.jpg"></a><a href="http://blog.3months.com/wp-content/uploads/2010/01/cards1.jpg"><img class="alignnone size-full wp-image-243" title="Cards" src="http://blog.3months.com/wp-content/uploads/2010/01/cards1.jpg" alt="Cards" width="519" height="346" /></a></p>
<p><a href="http://blog.3months.com/wp-content/uploads/2010/01/story_cards.jpg"><img class="alignnone size-full wp-image-244" title="Story Cards" src="http://blog.3months.com/wp-content/uploads/2010/01/story_cards.jpg" alt="Story Cards" width="519" height="346" /></a></p>
<p><a href="http://blog.3months.com/wp-content/uploads/2010/01/wall.jpg"><img class="alignnone size-full wp-image-245" title="Wall" src="http://blog.3months.com/wp-content/uploads/2010/01/wall.jpg" alt="Wall" width="519" height="346" /></a><br />
Next on the list will be designing new business cards for Shanan Holm and Mike Lowery &#8211; our agile consultants.</p>
<p><span style="color: #000000;"><em>Kelly Cheesman is an Interaction Designer at <a href="http://3months.com">3months</a>.</em><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.3months.com/2010/01/09/story-cards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test first and thank me later</title>
		<link>http://blog.3months.com/2009/12/18/test-first-and-thank-me-later/</link>
		<comments>http://blog.3months.com/2009/12/18/test-first-and-thank-me-later/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 01:00:20 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tdd]]></category>

		<guid isPermaLink="false">http://blog.3months.com/?p=195</guid>
		<description><![CDATA[3months has been in the Wellington market as a services company for the last 10 years. 3months Agile Services came about through demand of existing software services clients who wanted to implememnt Agile practices in their own projects.
3months Agile Services offer advisory, training and delivery services for Agile implementations. We provide overviews of how Scrum [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">3months has been in the Wellington market as a services company for the last 10 years. 3months Agile Services came about through demand of existing software services clients who wanted to implememnt Agile practices in their own projects.</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">3months Agile Services offer advisory, training and delivery services for Agile implementations. We provide overviews of how Scrum works for teams and executives, training and coaching for new and existing Scrum teams and ScrumMasters who can come in and manage a project for you. We can also provide consulting developers, who are also well-versed in Scrum, to help lead the adoption of Agile software development practices in your teams.</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">3months has ten Certified ScrumMasters, two of which are highly experienced Agile Project Managers.</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">Our lead consultants in the Agile Services team who we would propose to work with you as ScrumMasters are:</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">Mike Lowery (Project Manager / ScrumMaster)</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">Mike&#8217;s previous experience includes working for two big-5 consultancy firms, delivering local government IT projects in the UK and working in telecommunications manufacturing.</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">Prior to coming to New Zealand, Mike worked as a senior project manager (PM Team Lead) at the BBC where he became a certified Scrum Practitioner. In 2006 the BBC launched a 12 month Internet development project to develop an online/Download catch-up TV service.  As a senior project manager, Mike Lowery championed the widespread adoption of Scrum and XP practices (a set of agile methods that focus on planning, team management and software engineering practices), shifted the focus of the existing project management team from a traditional waterfall team to an Agile one for BBC New Media internet development and used both to successfully deliver the current bbc.co.uk site and the iPlayer offering.  Mike presented some of the BBC&#8217;s experiences in this transformation at the Agile 2007 conference (Washington DC).</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">Over the last fifteen months Mike has been the Manager Programme Teams at ACC where he was responsible for initiating an Agile transformation programme within the ACC.</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">Shanan Holm (Project Manager / ScrumMaster)</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">Shanan has been a project manager for the past eight years and since being at 3months has successfully led numerous projects using Agile methods for a variety of clients, including Consumer NZ, the National Library and Treasury.</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">Shanan has spent the last 13 years in the industry and is always keen to promote Agile after having seen the results it brings customers and teams. Shanan started out as a web developer and has managed projects for organisations as diverse as Ericsson, Telecom NZ, Monash University and the ACC. Shanan introduced Scrum into 3months and was responsible for bringing Scrum into ACC&#8217;s formal project lifecycle.</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">Shanan is a certified ScrumMaster, has held his Project Management Professional credential since 2004 and has a Graduate Diploma in IT (Software Development) from Swinburne University in Melbourne.</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">Detailed CVs of Mike and Shanan are available if needed: contact shanan@3months.com on 04 4983478 ext 15 or 027 217 3880 for more information.</div>
<p>Why are Test Drive Development (TDD) practices so often considered a waste of money?</p>
<p>As an Agile champion (self proclaimed) I have been banging on about the benefits of TDD for a number of years. Never really from a developer angle, more from the PM and management point of view, yet only the developers ever seem to listen.<span id="more-195"></span></p>
<p>Perhaps I have never really had the best arguments to win people over and management have been stuck in the test last point of view. I decided to write this post given some recent experiences on a project that went live with zero defects (doubtless there are some still to be found), with more scope than the original contract specified and 10% under budget. Sounds like a good argument to win people over to me.</p>
<p>This is not a boast about the team&#8217;s prowess or my coaching contributions &#8211; just the facts. These facts were brought about in part by:</p>
<ul>
<li>Great teamwork</li>
<li>Good architecture</li>
<li>Clear product vision</li>
<li>An effective product owner</li>
<li>Well understood Agile practices and beliefs</li>
</ul>
<p>However in this case the steady pragmatic application of test first practices and tools (such as <a href="http://www.rubyinside.com/cucumber-the-latest-in-ruby-testing-1342.html">Cucumber</a> and <a href="http://rspec.info/">Rspec</a>) made a big difference.</p>
<p>We developed the product (a web based transport management tool for a logistics company) in about 500 hours and about 100,000 lines of code, again nothing special. What was great was that we found 66 bugs throughout the entire four-iteration project and of those only seven were found by the customer.</p>
<p>Why do I think that writing our test first made a significant difference? Here&#8217;s an example of where it helped: halfway through the project the product owner changed the product in a way that forced us to change and re-factor a significant amount of of the previous work. However as we could run the tests after every code commit it was so easy to see where code developed earlier was impacted and needed rework. In the end we had two regression bugs that our automated tests did not find &#8211; the rest were picked up during development. For this fact alone writing our tests first saved us (and our customer) a significant amount of time and money. I shudder to think what things would have been like should we have done the testing manually and after development.</p>
<p>The project was not resourced full time either. This meant that team members might not do anything on the project for a couple of days. The necessary warm up time to remember where you were in the project is reduced as you can write the tests for the scope you need there and then and get straight into development.</p>
<p>We also included automated checking for valid HTML. This was something we hadn&#8217;t done before with automated testing and it made it much harder to accidentally commit broken HTML without noticing. It also made it easier for developers without much experience writing semantic HTML to do so and overall helped keep our commitment to good HTML.</p>
<p>For those of you driven by more by financial gain than engineering practices look at it this way:</p>
<p>Less bug fixing = more time spent on chargable work.</p>
<p>Happier customers (from fewer spec errors etc) = more follow up work (that&#8217;s free marketing).</p>
<p>Development teams understanding the project quicker = faster time to market = happier customer, more follow up work and ultimately more money in the bank.</p>
<p>So the next time you start a project and say no to TDD think about all of the advantages to your organisation you are leaving behind. And if you haven&#8217;t tried TDD before reading this post, give it a go and thank me later.</p>
<p><em>Mike Lowery is an Agile Consultant and Scrum Master at <a href="http://3months.com/">3months</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.3months.com/2009/12/18/test-first-and-thank-me-later/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
