<?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"
	>

<channel>
	<title>Jonathan Howell</title>
	<atom:link href="http://www.jonathanhowell.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonathanhowell.net</link>
	<description>Web technology, agile software development, and the scaling up of a Web 2.0 startup</description>
	<pubDate>Tue, 25 Aug 2009 15:10:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Send me to Texas - vote now!</title>
		<link>http://jonathanhowell.net/2009/08/send-me-to-texas-vote-now/</link>
		<comments>http://jonathanhowell.net/2009/08/send-me-to-texas-vote-now/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 15:08:43 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://jonathanhowell.net/?p=85</guid>
		<description><![CDATA[For those of you familiar with my previous work travel patterns, you may be a little surprised to to see me positively requesting to be sent to Texas. Well, it&#8217;s not DFW on this occasion; my proposal to present on Agile Development at South by Southwest in Austin has made it to the Panel Picker [...]]]></description>
			<content:encoded><![CDATA[<p>For those of you familiar with my previous work travel patterns, you may be a little surprised to to see me positively requesting to be sent to Texas. Well, it&#8217;s not DFW on this occasion; my proposal to present on Agile Development at <a href="http://sxsw.com/interactive">South by Southwest</a> in Austin has made it to the <a href="http://panelpicker.sxsw.com/">Panel Picker</a> stage - where the community gets to vote on which of the proposed sessions they would like to see at the conference.</p>
<p>So please make sure European start-ups are adequately represented there, and vote for my session: <a href="http://panelpicker.sxsw.com/ideas/view/2408">From Fragile to Agile: Efficient Development for Startups</a>. And while you are there, vote for Huddle co-founder Andy McLoughlin&#8217;s session too: <a href="http://panelpicker.sxsw.com/ideas/view/2270">Hiring 101: Building a Team of Peers</a>. And maybe get yourself a ticket too?</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanhowell.net/2009/08/send-me-to-texas-vote-now/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Five things that will bring your site down</title>
		<link>http://jonathanhowell.net/2009/08/five-things-that-will-bring-your-site-down/</link>
		<comments>http://jonathanhowell.net/2009/08/five-things-that-will-bring-your-site-down/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 08:13:40 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://jonathanhowell.net/?p=82</guid>
		<description><![CDATA[A high availability website is not all about expensive redundant hardware with top of the line load balancers and an enterprise class SAN. There are several cheap or free steps you can take to ensure uptime; in fact if you’re not taking these steps you are wasting your money on your redundant hardware. See my article on [...]]]></description>
			<content:encoded><![CDATA[<p>A high availability website is not all about expensive redundant hardware with top of the line load balancers and an enterprise class SAN. There are several cheap or free steps you can take to ensure uptime; in fact if you’re <em>not</em> taking these steps you are wasting your money on your redundant hardware. See my article on <a href="http://carsonified.com/blog/web-apps/five-things-that-will-kill-your-site/">Think Vitamin</a> for my top five things that bring sites down, and what you can do about them.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanhowell.net/2009/08/five-things-that-will-bring-your-site-down/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Keeping iteration/sprint planning meetings short</title>
		<link>http://jonathanhowell.net/2009/06/keeping-iterationsprint-planning-meetings-short/</link>
		<comments>http://jonathanhowell.net/2009/06/keeping-iterationsprint-planning-meetings-short/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 10:31:28 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Huddle]]></category>

		<guid isPermaLink="false">http://jonathanhowell.net/?p=68</guid>
		<description><![CDATA[Iteration planning meetings can be a real drag. I have been in meetings that have dragged on all day: with estimating in particular seeming to last an eternity. It is particularly painful when this is all happening on a conference call with a globally distributed team (more on that in another post maybe). This is [...]]]></description>
			<content:encoded><![CDATA[<p>Iteration planning meetings can be a real drag. I have been in meetings that have dragged on all day: with estimating in particular seeming to last an eternity. It is particularly painful when this is all happening on a conference call with a globally distributed team (more on that in another post maybe). This is what the process was like at Huddle when I first introduced agile. We would have Iteration Retrospective, Iteration Demo and Iteration Planning all pretty much back to back. Iteration Planning would start with estimating all the highest priority stories, and adding them to the iteration until the iteration was full. On a bad day all if this could take the best part of a day, and was the part of the iteration that everyone dreaded - not to mention the amount of time it took up.</p>
<p><span id="more-68"></span></p>
<p>Over the last year we have refined this process. Firstly the retrospective now happens at the end of the day before. We start iterations on a Tuesday, so the restrospective is 5pm on the Monday, with the demo first thing on the Tuesday morning. Secondly, and most importantly, we have taken estimating out of planning. We set aside a 30 minutes time-boxed slot every day, and if there are unestimated stories on the backlog we use this time to estimate them in priority order until they are all done or we have used up our 30 minutes. This means that the core iteration planning meeting can be done in well under an hour. We have two teams taking working from a common backlog, and everyone attends the planning meeting. Each team says what they think their capacity is for the iteration (looking at previous velocity, and planned absence etc.); we then go through each story on the backlog in priority order, with teams volunteering to take them on, until neither team has capacity to take on any more. At least one person in each team has seen the story before, so there is no need to discuss the details at this point; this means that it really does take 30-45 minutes, including a bit of time to rebalance stories between teams to make sure the teams are not dependent on each other, and there is a suitable UI/back-end development balance in each team.</p>
<p>Once the meeting is done, each team will elaborate the stories they are assigned, breaking them down in to tasks, and planning the work within the iteration. But this is something that each team does by themselves at their own pace after the main planning meeting, rather than a big formal meeting with the whole development team present.</p>
<p>It&#8217;s just worth a quick note on attendees for the daily estimating session. Obviously it&#8217;s a big drain on time to take everyone out for half an hour a day, so we have a rota. We have to balance total time taken up with continuity, so our Systems Architect is in every session, along with a rotation of two back-end developers, one UI developer, and a QA analyst. We have learnt that it is worth noting who was in the estimating session on the story card; there have been been a few cases where the team working on it have said &#8220;who the hell estimated this&#8221;, and it&#8217;s been handy to be able to answer that question!</p>
<p>Finally, bringing forward the estimating process means that the estimates can inform our Product Manager&#8217;s prioritisation more easily. Obvious we need to balance this against spending too much time estimating things that we don&#8217;t plan to do for a very long time - in the spirit of Lean, there is a lot to be said for, &#8220;just-in-time&#8221; estimating, and we do our best to strike a sensible balance.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanhowell.net/2009/06/keeping-iterationsprint-planning-meetings-short/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What is the maximum story size to include in an iteration?</title>
		<link>http://jonathanhowell.net/2009/03/what-is-the-maximum-story-size-to-include-in-an-iteration/</link>
		<comments>http://jonathanhowell.net/2009/03/what-is-the-maximum-story-size-to-include-in-an-iteration/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 13:13:39 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Huddle]]></category>

		<guid isPermaLink="false">http://jonathanhowell.net/?p=57</guid>
		<description><![CDATA[By popular demand (OK it was only one person who asked, but I am sure he is very popular), this post will cover our experience at Huddle on what makes an appropriate maximum story size for it to be planned in an iteration or sprint. Again this is a much asked, and much answered question, [...]]]></description>
			<content:encoded><![CDATA[<p>By popular demand (OK it was only one person who asked, but I am sure he is very popular), this post will cover our experience at Huddle on what makes an appropriate maximum story size for it to be planned in an iteration or sprint. Again this is a much asked, and much answered question, and this is not the right answer - just the answer that has worked for us (and a few that did not work along the way).</p>
<p><span id="more-57"></span>First up, we use story points to estimate stories, and our scale will be different from yours, so don&#8217;t take the actual story point size too seriously - you will need to map this back to your own scale. For reference we use a slightly mangled Fibonacci sequence for our estimates: 1/4, 1/2, 1, 2, 3, 5, 8, 13, 20&#8230; We currently have 9 developers and 3 QA analysts, and our velocity (for a two week iteration) is around 36. Which means that at the moment (and don&#8217;t ever tell the development team I did this calculation!) a point represents a bit over 3 man-days of effort. This is for production ready code, so includes test planning, test execution, bug fixing, to-ing and fro-ing with the customer to clarify requirements, and customer sign-off.</p>
<p>When we first started with our agile process, we scheduled an 8 point story or two. Big mistake. It turned out that estimating a story as an 8 just meant &#8220;really very big&#8221; and some things that were estimated as 8 turned out to be clearly impossible in one iteration. We were young and naive, but quickly learnt from our mistakes, and made 5 points our maximum.</p>
<p>Over the next few iterations it turned out that 5 point stories tended to be ones that involved some reengineering, and regularly expanded to keep a few people busy for the entire iteration. There was a major tendency for scope creep (often architectural scope creep rather than functional) and analysis at the start of the iteration often revealed that there was a bit more to it than we had thought. Noticing this trend, we decided that our maximum story size for inclusion in an iteration is 3 points; anything larger has to be split down in to smaller stories.</p>
<p>The 3 point maximum has worked well, and we have stuck with it for probably 9 months now. 3 points for us is roughly 10 man-days of effort, with probably 3 or 4 people working on it during the course of the story. In drawing conclusions, I think it is more useful to look at this absolute size of the story rather than the size relative to the iteration as a whole: i.e. 10 man-days is a more useful measure than the fact that at the moment our maximum story size is &lt; 10% of our usual velocity. The maximum size of 3 points served us well even when we had a team of half the size. Having said that, having too few stories (fewer than 8?) in an iteration starts to make delivery of the iteration very &#8220;all or nothing&#8221;, and gives very little flexibility for descoping stories if new requirements emerge or circumstances change (see Colin Grossman&#8217;s excellent post on the <a href="http://blog.huddle.net/agile-development-bendable-poseable">Huddle blog</a> covering our approach to this). As an example our current iteration has 25 stories in it, ranging in size from 1/2 point to 3 points.</p>
<p>So in conclusion, I recommend picking a maximum story point size at a point on your scale that represents no more than 10 man-days of effort, and reducing this further if your team size or velocity mean that you would regularly be planning fewer than 8 stories.</p>
<p>Of course more important that all of this is to remember to inspect and adapt. Use retrospectives to change what isn&#8217;t working and keep what is.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanhowell.net/2009/03/what-is-the-maximum-story-size-to-include-in-an-iteration/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agile QA is part of development</title>
		<link>http://jonathanhowell.net/2009/03/agile-qa-is-part-of-development/</link>
		<comments>http://jonathanhowell.net/2009/03/agile-qa-is-part-of-development/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 11:19:35 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://jonathanhowell.net/?p=43</guid>
		<description><![CDATA[I was disturbed recently to hear that a major internet company is planning to move their entire QA operation to India. I&#8217;m not against offshore development done right (I have seen in done well, badly and terribly in my time), but this is not about offshore development: the development team remain firmly in London. This [...]]]></description>
			<content:encoded><![CDATA[<p>I was disturbed recently to hear that a major internet company is planning to move their entire QA operation to India. I&#8217;m not against offshore development done right (I have seen in done well, badly and terribly in my time), but this is not about offshore development: the development team remain firmly in London. This is a change to QA from being on the other side of the building from development (bad enough) to a continent and several time zones away. This is craziness, especially for a company trying to embrace agile software development.</p>
<p><span id="more-43"></span></p>
<p>At the core of agile development is the delivery of small increments of production ready code that have meaning to the customer. Each of these user stories is not considered done until it has been coded, tested, any necessary documentation written, refactoring done, and the customer has approved it. It is in fact this incremental approach that makes agile development agile. When you are 6 weeks in to a 3 month waterfall project, you have a fully written spec and some half written code, none of which is tested. That doesn&#8217;t give you much scope to change your mind on anything: changing the scope is hard work because the final requirements document is the one thing that you *have* delivered. And if you cut the project short after 6 weeks you have delivered precisely nothing of any use. With agile, 6 weeks in to the project you will have produced the highest priority 50% of your original requirements to production quality, and could stop the project there if you wanted to (subject to the overhead of a release of course). Or the requirements for the second half of the stories can be updated to reflect real user feedback from the stories delivered so far. For me this is the essence of agile, and why organisations that continue to do waterfall, but chop up the development phase in to two week iterations and think they are &#8220;doing agile&#8221; are completely missing the point. As are organisations that think testing is something that starts once development is finished.</p>
<p>In my experience, here is what happens when QA testing is a phase that starts when development have finished, and is executed by a team that don&#8217;t sit alongside the development team (on a different floor or across the world). The development team write code for a month or so. They don&#8217;t really care about whether it works or not because that&#8217;s QA&#8217;s job, and anyway, they are under pressure to hit &#8220;code complete&#8221; on time not to produce production quality code. The release then gets thrown over the wall to QA, who run it, say it&#8217;s junk and then throw it back again. After this has happened for a couple of days, there is a kind of workable version of the application to test, and QA test and raise loads of bugs. Developers then reject them all. And QA reopen them. And developers say it must be an environmental issue as &#8220;it works on my machine&#8221;. This conversations is of course happening via comments on the bug tracking system with each side fuming at their keyboard at the incompetence of the other. They are on different sides after all, and never actually speak to each other. In the end it turns out that QA had written a bunch of test cases in isolation from the developers writing the code, and both had a slightly different interpretation of the requirements specification, and both think that they are right. An exaggeration? Well, maybe, but I am sure you recognise bits of this.</p>
<p>Agile testing is an integral part of development, and QA work alongside developers to produce quality code. They are on the same side and are jointly responsible a quality and timely delivery. Misunderstandings of the requirements are resolved by an actual face to face conversation (including the on-site customer as necessary), and this conversation happens well before the code is finished - preferably before it is even started. Of course, developers and QA analysts are coming at it from slightly different angles (which is why both are necessary in the team). Developers like creating things of beauty, and once created don&#8217;t like poking them too hard in case they fall over. They like thinking of exciting ways what they have written could be used or reused, not of ways that someone may break it by doing something they didn&#8217;t expect. QA analysts on the other hand are good at exactly that: analysing all possible paths through the functionality, not just the &#8220;happy path&#8221;, and defining test cases that will ensure a quality product hits production.</p>
<p>Integrated testing is a fundamental part of agile, and QA belongs in the development team, and in the iteration. Moving QA to a different time zone to the developers is simply not compatible with this.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanhowell.net/2009/03/agile-qa-is-part-of-development/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Huddle availability at 99.99%</title>
		<link>http://jonathanhowell.net/2009/03/huddle-availability-at-9999/</link>
		<comments>http://jonathanhowell.net/2009/03/huddle-availability-at-9999/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 12:30:24 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
		
		<category><![CDATA[Huddle]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://jonathanhowell.net/?p=33</guid>
		<description><![CDATA[The uptime of a site like Huddle.net is of vitally important, so I was pleased to see that recent performance hit 99.99%  - four nines. See my recent post on the Huddle blog for more details.
]]></description>
			<content:encoded><![CDATA[<p>The uptime of a site like Huddle.net is of vitally important, so I was pleased to see that recent performance hit 99.99%  - four nines. See my recent post on the <a href="http://blog.huddle.net/four-nines-uptime">Huddle blog</a> for more details.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanhowell.net/2009/03/huddle-availability-at-9999/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Facebook Developer Garage: Huddle and LinkedIn</title>
		<link>http://jonathanhowell.net/2009/02/facebook-developer-garage-huddle-and-linkedin/</link>
		<comments>http://jonathanhowell.net/2009/02/facebook-developer-garage-huddle-and-linkedin/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 13:05:20 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
		
		<category><![CDATA[Huddle]]></category>

		<guid isPermaLink="false">http://jonathanhowell.net/?p=23</guid>
		<description><![CDATA[Last month I was press-ganged by a bed-ridden Andy McLoughlin to talk to the London Facebook Developers Garage about Huddle&#8217;s launch on LinkedIn last year. Very short notice and a packed schedule that day meant no time to prepare slides - well, PowerPoint is overrated anyway.
See here for a (5 minute) report on the January [...]]]></description>
			<content:encoded><![CDATA[<p>Last month I was press-ganged by a bed-ridden <a href="http://www.andymcloughlin.co.uk/">Andy McLoughlin</a> to talk to the <a href="http://www.facebookgarage.org.uk/">London Facebook Developers Garage</a> about Huddle&#8217;s launch on LinkedIn last year. Very short notice and a packed schedule that day meant no time to prepare slides - well, PowerPoint is overrated anyway.</p>
<p>See <a href="http://www.facebookgarage.org.uk/?p=57">here</a> for a (5 minute) report on the January event, and <a href="http://www.facebookgarage.org.uk/?p=53">here</a> to find out what I had to say (10 minutes).</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanhowell.net/2009/02/facebook-developer-garage-huddle-and-linkedin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Releasing to production: every iteration?</title>
		<link>http://jonathanhowell.net/2009/02/releasing-to-production-every-iteration/</link>
		<comments>http://jonathanhowell.net/2009/02/releasing-to-production-every-iteration/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 11:45:01 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Huddle]]></category>

		<guid isPermaLink="false">http://jonathanhowell.net/?p=18</guid>
		<description><![CDATA[At Huddle, we run two week agile development iterations, and each iteration is a potential production release candidate. That means that the code developed is of a quality that could be released to production, but it may or may not make sense to do so from a product perspective. For example, when we developed the new [...]]]></description>
			<content:encoded><![CDATA[<p>At Huddle, we run two week agile development iterations, and each iteration is a potential production release candidate. That means that the code developed is of a quality that could be released to production, but it may or may not make sense to do so from a product perspective. For example, when we developed the new meetings functionality within Huddle, the development of the initial release spanned two or three iterations, and to release after the first iteration would have meant releasing an unusable product: you could create a meeting but not delete it. Production ready refers to the quality of the code (meeting creation was implemented, tested, code reviewed, refactored etc.), not the completeness of the product.</p>
<p>So the two week iteration cycle means that we have the option to release every iteration, but we do not always do so. <span id="more-18"></span>As well as product inconsistency, the other reason not to release every iteration is the overhead of a release. Almost always, live application problems are introduced by change. It does happen that issues can magically manifest themselves without a software release - e.g. load hitting a certain threshold, running in to resource limits like disk space, or encountering time-based conditions that trigger a bug, like not handling daylight saving time correctly or crossing year boundaries - but almost always problems are caused by introducing a new version of the software.</p>
<p>This is what makes regression testing and post-deployment testing really important - in order to reduce the risk that you put something live that breaks stuff. At the end of an iteration we know that all new stories are fully tested, but regression testing is there to ensure that we didn&#8217;t break something else while we were about it. So for a production release we run a one week regression test before releasing, that runs in parallel with the development of the next iteration. As our regression testing is currently a manual process (everyone in the office helps out) this is quite an overhead, and not something we want to go through unless there is a business reason to get the last iteration of stories in to production. We are actively looking at automating our regression testing (more of this in a future post) but we will never completely eliminate the need for some manual testing (to check UI layout for example) both before release and immediately after it.</p>
<p>What this means is that when we have a larger project on (for example launching a major new feature) we would probably release after about 3 iterations (6 weeks), whereas when we are working on a number of smaller changes (especially when they need to coincide with dates for launching new partnerships) we will release every iteration. The average is probably every 2 iterations.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanhowell.net/2009/02/releasing-to-production-every-iteration/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agile engineering practices: time to get serious with TDD</title>
		<link>http://jonathanhowell.net/2009/02/agile-engineering-practices-time-to-get-serious-with-tdd/</link>
		<comments>http://jonathanhowell.net/2009/02/agile-engineering-practices-time-to-get-serious-with-tdd/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 10:54:34 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://jonathanhowell.net/?p=15</guid>
		<description><![CDATA[In my previous post I mentioned that like most agile adopters, at Huddle we would describe our process of a &#8220;blend of XP and Scrum&#8221;. Expanding on that a little, I would say that Scrum has formalised the process side of agile and with a few exceptions (terminology, iteration length, and handling mid-iteration change) our [...]]]></description>
			<content:encoded><![CDATA[<p>In my previous post I mentioned that like most agile adopters, at Huddle we would describe our process of a &#8220;blend of XP and Scrum&#8221;. Expanding on that a little, I would say that Scrum has formalised the process side of agile and with a few exceptions (terminology, iteration length, and handling mid-iteration change) our agile process looks very like a Scrum implementation. XP on the other hand has much more to say about engineering practices (Continuous Integration, Test Driven Development, pair programming etc) and we draw guidance on development practices from XP.</p>
<p>Which brings me to the subject of this post: Test Driven Development. For me this is an essential, and often ignored, part of the deal with implementing agile development. Test driven development has many much discussed advantages, but for me there is one killer argument for TDD at is goes like this:</p>
<p><span id="more-15"></span></p>
<p>Agile development is about delivering production-ready code every iteration, which means writing just enough of the architectural framework to get each story done and refactoring and improving it as required with each new story. This ongoing refactoring is essential to ensure you end up with an elegant and maintainable system, and to avoid building up technical debt. Refactoring can be a risky business - it can (and should) involve moving swathes of code in to another class or method, changing method signatures, interfaces etc. How do you know that the major surgery you have just performed on your code base has not broken everything? Answer: unit tests. These alert you to what&#8217;s broken, or give you confidence that everything is good. And when is the best time to write a unit test? Before you write the code! This makes you think about requirements and test cases from the very beginning, makes sure the code you write is in fact unit testable, drives sensible design, and gives you an easy way to debug as you go. Most importantly, though, it is the time the tests are mostly likely to get written. Who can be bothered to write unit tests when you have just finished your story and it all seems to be working fine? And even if you can, how can you be sure you are testing the right things? Unit tests written after the code are generally just a box-ticking exercise, to say you did it.</p>
<p>So to summarise, you need to refactor constantly as the payoff for &#8220;coding for now&#8221;; you can&#8217;t refactor with confidence without good unit test coverage; the most useful time to write unit tests is before you write your code.</p>
<p>With this in mind, we have been using TDD on all new development work at Huddle since last autumn. That&#8217;s not to say it&#8217;s easy of course - some legacy parts of our code base are just not designed to be unit testable - but we are slowly driving up test coverage, giving us increasing confidence in our refactoring, as well a our new code.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanhowell.net/2009/02/agile-engineering-practices-time-to-get-serious-with-tdd/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What is the optimum size for an agile team?</title>
		<link>http://jonathanhowell.net/2008/11/what-is-the-optimum-size-for-an-agile-tea/</link>
		<comments>http://jonathanhowell.net/2008/11/what-is-the-optimum-size-for-an-agile-tea/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 17:00:01 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://jonathanhowell.net/?p=5</guid>
		<description><![CDATA[This is an often asked (and often answered) question, but I thought I would share our recent experience at Huddle. It is important to bear in mind, of course, that an agile approach to software development does not come with rule book. It is important that teams do what works for them, in line with [...]]]></description>
			<content:encoded><![CDATA[<p>This is an often asked (and often answered) question, but I thought I would share our recent experience at Huddle. It is important to bear in mind, of course, that an agile approach to software development does not come with rule book. It is important that teams do what works for them, in line with the principles rather than prescribed practices of agile. The retrospective is there for continuous inspection and adaptation: if something isn&#8217;t working well, change it; and if it still doesn&#8217;t work then change it again. And this is just what we have done.</p>
<p><span id="more-5"></span></p>
<p>I guess next I should give a little background. I joined <a href="http://www.huddle.net/">Huddle</a> in March 2008, and introduced an agile development process. I will aim to describe various aspects of this process, and what has gone well and badly, in future posts, but for now I will summarise by saying we have adopted the universal &#8220;mix of Scrum and XP&#8221;, influenced particularly by <a href="http://www.mountaingoatsoftware.com/">Mike Cohn</a>.</p>
<p>I have introduced agile in a number of circumstances previously, but this has usually been into an environment where the total number of developers was clearly greater than the maximum sensible team size, and in most cases they were distributed across multiple locations so it was obvious that the large team needed to be split in to smaller units. In the most recent example at <a href="http://www.travelocity.com/">Travelocity</a> we opted for teams of 5 and this worked well. In some ways setting up the agile process at Huddle was a pleasing &#8220;back to basics&#8221; exercise. It was a small (4 people at the time) team, (nearly) all co-located in the same (tiny) office, with the product owner within touching distance rather on a different floor or different country. However, as you may have seen in various corners of the <a href="http://www.huddle.net/buzz/huddle-in-the-news/">IT press</a>, Huddle has been going rapidly this year: in users, in revenue - and in number of staff. The Technology team is eleven-strong right now, with 4 more people joining us the in next two weeks. So at what point is the team too big to act as a single agile team?</p>
<p>To begin with I was hesitant to suggest splitting the team, as we were still within the theoretical recommended agile team size range (an iteration team of 9). But in a recent retrospective, after an all-time low number of points delivered despite an all-time high number of people working as part of the iteration team, a few team members commented that the team &#8220;felt too big&#8221;, that &#8220;communication was difficult&#8221; and that they sometimes &#8220;didn&#8217;t know what they should be working on&#8221;.Taking a step back this isn&#8217;t that surprising. Agile teams are self-organising teams, that rely on high bandwidth communication between team members to acheive a common commitment and iteration goal. As the size of the team grows, the number of different communication paths between individuals increases with the square of the team size, so knowing what is going on gets much harder very quickly.</p>
<p>Takin this feedback on board, we decided to split the team in to two (5 + 4), with each team committing to their own set of stories from a common backlog. We said we would try it for a couple of iterations and see how it went, but from the very beginning is has been a great success. As James said in the retrospective at the end of the first iteration with two team, &#8220;All of a sudden work in a million times more fun. Communication is much easier, and I feel more like part of a team, and less part of a large machine&#8221;. The velocity bears this out as a good move too: following on from our lowest ever velocity, the first iteration after the split resulted in our highest ever velocity, with more than double the points delivered compared to the previous iteration. There are other factors that mean that this level of velocity may not be sustainable, but it&#8217;s a pretty good start! There are a few downsides to the split (some related to specialist skills - to be covered in a separate post), but in general things are going much better with the smaller teams</p>
<p>So there is no definitive answer to the optimum size question. But I can say that for us, nine was definitely too big, and teams of four or five have been very successful. As we look to add another four people over the next couple of weeks, we will have to decide whether we want to end up with two teams of six or three teams of four, but the general feeling so far is that small is better.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonathanhowell.net/2008/11/what-is-the-optimum-size-for-an-agile-tea/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

