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

<channel>
	<title>Three Rivers Institute</title>
	<atom:link href="http://www.threeriversinstitute.org/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.threeriversinstitute.org/blog</link>
	<description>Thoughts on programming</description>
	<lastBuildDate>Fri, 09 Jul 2010 04:12:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>CD Survey: What practices do developers use?</title>
		<link>http://www.threeriversinstitute.org/blog/?p=541</link>
		<comments>http://www.threeriversinstitute.org/blog/?p=541#comments</comments>
		<pubDate>Fri, 09 Jul 2010 04:12:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Responsible Development]]></category>

		<guid isPermaLink="false">http://www.threeriversinstitute.org/blog/?p=541</guid>
		<description><![CDATA[The survey I&#8217;ve been writing about (raw results here) was intended to give us speakers at the continuous deployment webinar (Timothy Fitz, Jez Humble, and myself) some background on the attendees. I&#8217;ve saved the best (most informative) question for last: what practices do attendees use in software development. Here is the data: Some thoughts: Business-based [...]]]></description>
			<content:encoded><![CDATA[<p>The survey I&#8217;ve been writing about (raw results <a href="http://www.surveymonkey.com/sr.aspx?sm=vmpSINlbTaTBn9AVp3eII5DMaq0CxQoc0Ad0vf5IZ0I_3d">here</a>) was intended to give us speakers at the continuous deployment webinar (Timothy Fitz, Jez Humble, and myself) some background on the attendees. I&#8217;ve saved the best (most informative) question for last: what practices do attendees use in software development. Here is the data:</p>
<p><a href="http://www.threeriversinstitute.org/blog/wp-content/uploads/2010/07/What-practices.png"><img class="alignnone size-full wp-image-542" title="What practices" src="http://www.threeriversinstitute.org/blog/wp-content/uploads/2010/07/What-practices.png" alt="What practices do people use?" width="672" height="504" /></a></p>
<p>Some thoughts:</p>
<ul>
<li>Business-based operations metrics. One of the key insights of continuous deployment is using business-oriented metrics to monitor operations instead of the more natural (for programmers, anyway) technical metrics. If you expect 50 sign-ups per minute and the rate suddenly dips to 20/minute after a deployment, it&#8217;s time to roll back. The practice is not in common use.</li>
<li>Kanban versus iterations. Iterations still dominate, even though the additional flexibility of kanban is a better match for continuous deployment.</li>
<li>Pair programming. For all the complaints I hear about pair programming, I would have expected this number to be lower than 25%.</li>
<li>Test-driven development. 50% is higher than I would have expected. Adoption of TDD is excellent preparation for teams wishing to deploy more frequently (see my commercial <a href="http://www.pragprog.com/screencasts/v-kbtdd/test-driven-development">screencasts</a> for more details).</li>
<li>Continuous integration. I expected this number to be higher. CI was the first practice from Extreme Programming to spread widely, but, at least among this audience, it is not pervasive.</li>
<li>More than 75% of teams test manually before deployment. This is a sensible practice until the defect rate is brought down and the operations infrastructure made robust in the face of errors, but I expect the number to drop as teams mature in their application of continuous deployment.</li>
</ul>
<p>Change generally happens on a time scale of decades. Mass production and then lean production each took upwards of fifty years to become widespread. I don&#8217;t mean to be overconfident, but the picture above (skewed as it is by selection bias) paints a picture of software development that is substantially different than common practice twenty or even ten years ago. There&#8217;s still a long way to go until software development pours out the stream of value it is capable of, but we&#8217;re making progress.</p>
<p>Commercial plugs: Check out my series of <a href="http://www.pragprog.com/screencasts/v-kbtdd/test-driven-development">screencasts</a> on intermediate-level test-driven development, $25 for four episodes. If you run unit tests for Java in Eclipse, check out <a href="http://www.junitmax.com">JUnit Max</a>, the continuous testing plugin, $50/year until August 1, 2010.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.threeriversinstitute.org/blog/?feed=rss2&amp;p=541</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CD Survey: How often do you commit code changes to the shared repository?</title>
		<link>http://www.threeriversinstitute.org/blog/?p=537</link>
		<comments>http://www.threeriversinstitute.org/blog/?p=537#comments</comments>
		<pubDate>Wed, 07 Jul 2010 14:11:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Responsible Development]]></category>

		<guid isPermaLink="false">http://www.threeriversinstitute.org/blog/?p=537</guid>
		<description><![CDATA[Today&#8217;s question is, &#8220;How often do you commit code changes to the shared repository?&#8221; One of the essential practices of continuous deployment is that everyone stays very close to the mainline, typically by checking progress into HEAD frequently. This requires developers to be careful to only make changes that are safe and to only reveal [...]]]></description>
			<content:encoded><![CDATA[<p>Today&#8217;s question is, &#8220;How often do you commit code changes to the shared repository?&#8221;</p>
<p>One of the essential practices of continuous deployment is that everyone stays very close to the mainline, typically by checking progress into HEAD frequently. This requires developers to be careful to only make changes that are safe and to only reveal functionality when it is ready for real users. The change of task sequence this requires is an acquired skill, but once mastered results in a low-risk development style.</p>
<p>The data shows that many projects are checking in very frequently:</p>
<p><img src="http://chart.apis.google.com/chart?chs=500x256&amp;cht=p&amp;chtt=How often do you commit code changes to the shared repository?&amp;chd=s:FKwW9&amp;chco=ff0000&amp;chxl=0:|Monthly|Weekly|Daily|Hourly|Every successful test run|&amp;chxt=x" alt="" /></p>
<p>The question needs followup, as it doesn&#8217;t ask whether there is a single mainline that people continually integrate with, and which direction the integration goes.</p>
<p>Tomorrow is the final question of the survey, which asks which practices folks are applying.</p>
<p>Commercial plugs: Check out my new series of <a href="http://www.pragprog.com/screencasts/v-kbtdd/test-driven-development">screencasts</a> on intermediate test-driven development. If you run unit tests for Java in Eclipse, check out <a href="http://www.junitmax.com">JUnit Max</a>, the continuous testing plugin.</p>
<p>Props to <a href="http://chartpart.com/">Chartpart.com</a> for the lovely front end for Google Charts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.threeriversinstitute.org/blog/?feed=rss2&amp;p=537</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>CD Survey: How often do you run unit tests?</title>
		<link>http://www.threeriversinstitute.org/blog/?p=531</link>
		<comments>http://www.threeriversinstitute.org/blog/?p=531#comments</comments>
		<pubDate>Tue, 06 Jul 2010 15:37:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Responsible Development]]></category>

		<guid isPermaLink="false">http://www.threeriversinstitute.org/blog/?p=531</guid>
		<description><![CDATA[Running functional tests generally takes longer than running unit tests, so as expected, most people run unit tests more frequently than they run functional tests: I was a bit surprised at how many people are running tests on every change, but that&#8217;s good news for JUnit Max, which shaves seconds off the delay waiting for [...]]]></description>
			<content:encoded><![CDATA[<p>Running <a href="http://www.threeriversinstitute.org/blog/?p=523">functional tests</a> generally takes longer than running unit tests, so as expected, most people run unit tests more frequently than they run functional tests:</p>
<p><a href="http://www.threeriversinstitute.org/blog/wp-content/uploads/2010/07/unit-tests.jpg"><img class="alignnone size-medium wp-image-532" title="unit tests" src="http://www.threeriversinstitute.org/blog/wp-content/uploads/2010/07/unit-tests-300x238.jpg" alt="How often do you unit test?" width="300" height="238" /></a></p>
<p>I was a bit surprised at how many people are running tests on every change, but that&#8217;s good news for JUnit Max, which shaves seconds off the delay waiting for feedback from tests. If those delays happen a hundred times a day, the cumulative effect of a tool like Max can be substantial. I&#8217;m not sure what to make of the teams that run unit tests daily or weekly. I&#8217;d like to talk to such a team to understand more about their process.</p>
<p>Unit testing wasn&#8217;t explicitly addressed by any of the presenters at the Continuous Deployment webinar, I think because unit testing is assumed when you&#8217;re deploying on a short cycle. I don&#8217;t recall who said it first, but the model I use is that the defects leaving any stage are proportional to the defects entering that stage. No matter how good your functional tests are, defects leaving the programmer&#8217;s desk need to be rare if the software is always going to be ready to deploy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.threeriversinstitute.org/blog/?feed=rss2&amp;p=531</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CD Survey: How often do you run functional tests?</title>
		<link>http://www.threeriversinstitute.org/blog/?p=523</link>
		<comments>http://www.threeriversinstitute.org/blog/?p=523#comments</comments>
		<pubDate>Mon, 05 Jul 2010 16:08:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Responsible Development]]></category>

		<guid isPermaLink="false">http://www.threeriversinstitute.org/blog/?p=523</guid>
		<description><![CDATA[Following up on the continuous deployment survey question about frequency of deployment, the question for today is, &#8220;How often do you run functional tests?&#8221; Here is the data: What I take from this is that there are a considerable number (~30%) of people using continuous integration in the poll audience. The ~10% of people who [...]]]></description>
			<content:encoded><![CDATA[<p>Following up on the continuous deployment survey question about <a href="http://www.threeriversinstitute.org/blog/?p=516">frequency of deployment</a>, the question for today is, &#8220;How often do you run functional tests?&#8221; Here is the data:</p>
<p><a href="http://www.threeriversinstitute.org/blog/wp-content/uploads/2010/07/functional-tests1.jpg"><img class="alignnone size-medium wp-image-525" title="functional tests" src="http://www.threeriversinstitute.org/blog/wp-content/uploads/2010/07/functional-tests1-300x222.jpg" alt="How often do you run functional tests?" width="300" height="222" /></a></p>
<p>What I take from this is that there are a considerable number (~30%) of people using continuous integration in the poll audience. The ~10% of people who have brought functional testing into the inner loop of coding is also a bit surprising, although we do it to great effect while developing JUnit. Another surprise to me is seeing that the majority of these projects get feedback from functional tests every day.</p>
<p>All the panelists (Jez Humble, Timothy Fitz and I) agreed on how essential automated functional testing is to applying continuous deployment. I think of it as a stack of filters, each removing defects&#8211;personal habits, social processes (like pair programming or reviews), unit tests, and functional tests. If the functionality flowing from the whole stack is high enough quality, then continuous deployment is possible.</p>
<p>Manual testing has a place in projects applying continuous deployment, just not on the critical path to deployment. It might seem like a big step to remove that last human &#8220;sanity check&#8221; before deployment. If it seems like a big step, then you&#8217;re likely not ready. Keep working on the filters to improve the deployability (is that a word?) of each one&#8217;s output. When you heard someone say, &#8220;Why are we checking this by hand? We never find anything,&#8221; then you&#8217;re ready.</p>
<p>Next question: how often do folks run their <a href="http://www.threeriversinstitute.org/blog/?p=531">unit tests</a>?</p>
<p>Commercial plugs: Check out my new series of <a href="http://www.pragprog.com/screencasts/v-kbtdd/test-driven-development">screencasts</a> on intermediate test-driven development. If you run unit tests for Java in Eclipse, check out <a href="http://www.junitmax.com">JUnit Max</a>, the continuous testing plugin.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.threeriversinstitute.org/blog/?feed=rss2&amp;p=523</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CD Survey: Deployment Frequency</title>
		<link>http://www.threeriversinstitute.org/blog/?p=516</link>
		<comments>http://www.threeriversinstitute.org/blog/?p=516#comments</comments>
		<pubDate>Sat, 03 Jul 2010 00:41:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Responsible Development]]></category>

		<guid isPermaLink="false">http://www.threeriversinstitute.org/blog/?p=516</guid>
		<description><![CDATA[In conjunction with the Leaders of Agile webinar on Continuous Deployment I hosted yesterday for SD Times, I ran a poll asking attendees about various of their development activities. I&#8217;ll be posting a short piece about each question, the answers we got, and the webinar material that connects with that question. My co-presenters were Timothy [...]]]></description>
			<content:encoded><![CDATA[<p>In conjunction with the Leaders of Agile webinar on Continuous Deployment I hosted yesterday for <a href="http://www.sdtimes.com/">SD Times,</a> I ran a poll asking attendees about various of their development activities. I&#8217;ll be posting a short piece about each question, the answers we got, and the webinar material that connects with that question.</p>
<p>My co-presenters were Timothy Fitz of IMVU and Jez Humble of ThoughtWorks. Timothy talked about continuous deployment in a large web/client application with ~50 developers while Jez covered CD for IT applications. Both made a nice contrast to my experiences with CD for individual or pair projects, and immediately addressed the &#8220;sure, but it won&#8217;t scale&#8221; objection. My thanks to Timothy, Jez, and Alan Zeichick of SD Times for their work setting up and delivering the webinar. (I&#8217;ll post here when a recording is available.)</p>
<p>For the poll, the questions were posted two days before the webinar. We had ~200 responses out of the 1100 registrants and 430 attendees. Beware of extrapolating too far from the data because the poll suffers from both selection bias and an amateur question author (me). However, the responses do provide some idea of how at least a slice of our industry works.</p>
<p>The first question I will cover from the poll is, &#8220;How often do you deploy to production?&#8221; That&#8217;s the fundamental measure of continuous deployment, at least as narrowly viewed (more about that later). Here&#8217;s the raw data:</p>
<p><a href="http://www.threeriversinstitute.org/blog/wp-content/uploads/2010/07/How-Often-Do-You-Deploy.png"><img class="size-medium wp-image-518 alignnone" title="How Often Do You Deploy" src="http://www.threeriversinstitute.org/blog/wp-content/uploads/2010/07/How-Often-Do-You-Deploy-300x225.png" alt="How Often Do You Deploy" width="300" height="225" /></a></p>
<p>Deployment cycle starts with the orange slice for annual deployment at the bottom right. Going clockwise from there, the three biggest slices (quarterly, monthly, weekly) take up most of the chart. Completing the circle, there are almost as many people deploying on every commit as deploying annually, so continuous deployment already has significant traction.</p>
<p>One of the surprises of the webinar was Jez Humble&#8217;s flexibility with regards to how far towards real deployment Continuous Delivery (his phrase and the title of his <a href="http://www.amazon.com/gp/product/0321601912?ie=UTF8&amp;tag=threriveinst-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321601912">forthcoming book</a>) needs to go. His strategy is to take the rapid iteration that is made possible in development by Extreme Programming and gradually extend it down the deployment pipeline, even if that stops short of real actual live deployment with real actual live users. My general preference is to work the other way around. I like to get the whole team&#8211;business, development, and operations&#8211;working with the same rhythm, then gradually increase that rhythm. There&#8217;s no right or wrong approach, it&#8217;s just interesting to see the contrast.</p>
<p>Next question: <a href="http://www.threeriversinstitute.org/blog/?p=523">how often do you run functional tests</a>?</p>
<p>Commercial plugs: Check out my new series of <a href="http://www.pragprog.com/screencasts/v-kbtdd/test-driven-development">screencasts</a> on intermediate test-driven development. If you run unit tests for Java in Eclipse, check out <a href="http://www.junitmax.com">JUnit Max</a>, the continuous testing plugin.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.threeriversinstitute.org/blog/?feed=rss2&amp;p=516</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>&#8220;Vengeance&#8221; &#8212; A Personal Book Review</title>
		<link>http://www.threeriversinstitute.org/blog/?p=510</link>
		<comments>http://www.threeriversinstitute.org/blog/?p=510#comments</comments>
		<pubDate>Tue, 01 Jun 2010 14:54:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Social Commentary]]></category>

		<guid isPermaLink="false">http://www.threeriversinstitute.org/blog/?p=510</guid>
		<description><![CDATA[I usually just tweet my book reviews, but this one required more explanation. XIX Olympiad I was seven in 1968 when the Mexico City Olympics rolled around. They were the first sporting event I devoted myself to completely. I had been happy earlier that year when the first Super Bowl was played, proving once and [...]]]></description>
			<content:encoded><![CDATA[<p>I usually just tweet my book reviews, but this one required more explanation.</p>
<h2>XIX Olympiad</h2>
<p><img class="alignleft" title="Bob Beamon" src="http://i.factmonster.com/images/bbeamon.jpg" alt="" width="150" height="231" />I was seven in 1968 when the Mexico City Olympics rolled around. They were the first sporting event I devoted myself to completely. I had been happy earlier that year when the first Super Bowl was played, proving once and for all the superiority of what is now the NFC, but with the Olympics I fell in love.</p>
<p>I bought the whole Avery Brundage/Chariots of Fire line: amateurs competing only for the glory of sport and the honor of their nation. I was happy to US athletes do well, but I was happier to see an athlete surpass his own limitations. Bob Beamon&#8217;s jump was remarkable not because he was American, but because it was such a remarkable performance. It was possible for people to become gods, if only for a moment.</p>
<p>Tommie Smith &amp; John Carlos brought a discordant note to my proceedings with their medal stand protest. My father was outraged but I understood that they had a legitimate complaint and no better way to speak of it. Still, sport was supposed to be about sport, right?</p>
<p>By the closing ceremony/party my discomfort was washed away in a music-powered dancing unification of all humanity. Sport was the highest and best in us.</p>
<p>1968 was a confusing time to be seven: body counts on the nightly news, &#8220;duck and cover&#8221; drills at school (and we lived on the Moffett Field final approach, so this was an immediate, if futile, concern), hippies, and anti-war protests. At seven I had the intellectual capacity to understand a surprising amount of this, but no emotional tools with which to deal with it personally. Don&#8217;t worry, in sport I had a perfect refuge.</p>
<h2>XX Olympiad</h2>
<p>Four years later I couldn&#8217;t wait for Munich to start. At first everything was as I hoped it would be. There was even a rare note of international harmony in the house because my rabidly anti-communist father, then 140 kg, idolized <a href="http://weightliftingexchange.com/index.php?option=com_content&amp;task=view&amp;id=138&amp;Itemid=105">Alexiev</a>. There was Dave Wottle&#8217;s <a href="http://www.youtube.com/watch?v=cwGxLfWSnEM">incredible kick</a>&#8211;zero to hero on the final straight. Bruce Jenner, local boy making good on the biggest stage in the world.</p>
<p>Then came the reports of the <a href="http://en.wikipedia.org/wiki/Munich_massacre">massacre</a>. All day we sat glued to the TV, stunned. I was eleven at the time, so my emotions were a violent tempest in an extremely small tea pot. Bitterly furious at the Palestinians, terrified for the hostages, utterly baffled at why someone would do this to sport, to me, blindly hopeful when the choppers took off, inconsolable when it became clear that everyone was dead.</p>
<p>The lasting emotion was rage, rage that someone would violently pervert sport to suit their own needs. In sport I had a refuge where the world made sense and that had been ripped from my hands and smashed on the floor. I was ready to drink blood.</p>
<p>Psychologists tell us that when a trauma happens, people often aren&#8217;t prepared to deal with the intensity of emotions in the moment, so they bottle it up. When this happens, emotional development pauses. The theory is that by working through those stored emotions later in a safe environment, emotional development can continue. I fell like I&#8217;ve experienced a bit of this effect thanks to the book <a href="http://www.amazon.com/gp/product/0743291646?ie=UTF8&amp;tag=threriveinst-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0743291646"><em>Vengeance</em></a>.</p>
<h2><em>Vengeance</em></h2>
<p><em>Vengeance</em> tells the story of an Israeli hit squad put together to assassinate eleven high-ranking Palestinians involved in terrorism, one for each dead Israeli athlete. By the end of the book this attempt to balance the books has wrought a terrible vengence of its own on the surviving members of the team. In the end, the author/protaganist is estranged even from his own country.</p>
<p>Debate raged when the book came out: fact or fiction? good or evil? I won&#8217;t address any of these questions here. I also don&#8217;t intend to debate the ethics of the actions described or the preceding events. What I&#8217;d like to highlight here is what the book did for me.</p>
<p>While I was reading <em>Vengeance</em>, that furious little eleven-year-old that I&#8217;d put in a box was able to come out and read along. I got my wish&#8211;kill those responsible with my own two (borrowed) hands. What happens then? The human cost to the protaganists is horrifying, along with the effects on those close to the murdered. Yes, vengeance is physically possible, but at the end what has been achieved? I felt those long-ago emotions again and was able to let them go.</p>
<p>In the months since reading <em>Vengeance</em>, I&#8217;ve noticed that I am able to read about and think about Middle Eastern politics without the same surges of rage that I used to experience. I can see that both sides have unmet needs. I can see that many of their actions will not lead to those needs being met. At the same time I can have compassion for those making those decisions. If I was filled with rage for 38 years for something that happened five thousand miles away, how much more difficult must it be to move past personal experiences of terror, grief, and rage?</p>
<p>I&#8217;m sadder and wiser (I hope) in my view of sports now. Sport can&#8217;t solve problems, but, at its best, it can remind us that we can solve our problems, we can overcome. Shalom. Salam.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.threeriversinstitute.org/blog/?feed=rss2&amp;p=510</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One Team: Replay</title>
		<link>http://www.threeriversinstitute.org/blog/?p=503</link>
		<comments>http://www.threeriversinstitute.org/blog/?p=503#comments</comments>
		<pubDate>Wed, 12 May 2010 18:08:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.threeriversinstitute.org/blog/?p=503</guid>
		<description><![CDATA[Since many of the readers of this blog weren&#8217;t around for some of my earlier writing, I will occasionally mix in popular articles I wrote some time ago. The plus for me is that I don&#8217;t have to spend so much time writing. The minus is that I cringe to see the thought errors in [...]]]></description>
			<content:encoded><![CDATA[<p>Since many of the readers of this blog weren&#8217;t around for some of my earlier writing, I will occasionally mix in popular articles I wrote some time ago. The plus for me is that I don&#8217;t have to spend so much time writing. The minus is that I cringe to see the thought errors in my earlier work. I wouldn&#8217;t write this way now, but rather than bowlderize my own history I&#8217;ll present it as is, binary thinking, exaggeration, and all.</p>
<p>This piece one entitled &#8220;One Team&#8221;, about the evolution of my thinking about software development teams. It was initially published in July of 2001. It was interesting to me to re-read it in light of Steve Blank&#8217;s <a href="http://steveblank.com/2010/02/25/customer-development-for-web-startups/">Customer Development </a>and the <a href="http://www.startuplessonslearned.com/2009/04/built-to-learn.html">Problem Team</a> in Lean Startups.</p>
<p><strong>Stupid Mistake</strong></p>
<p>The biggest error in Extreme Programming Explained is the implicit assumption that you have a technical team serving a single customer.</p>
<p><a href="http://www.threeriversinstitute.org/blog/wp-content/uploads/2010/05/OneCustomerTechnicalTeam1.png"><img class="aligncenter size-medium wp-image-505" title="OneCustomerTechnicalTeam" src="http://www.threeriversinstitute.org/blog/wp-content/uploads/2010/05/OneCustomerTechnicalTeam1-300x67.png" alt="" width="300" height="67" /></a></p>
<p style="text-align: center;"><span style="font-family: Arial, sans-serif;"><span style="font-size: x-small;"><strong>The lonely customer orbits a team of programmers</strong></span></span></p>
<p>I had this picture in my mind because of two experiences. At a mutual fund company I had a customer who had been a customer service representative for seven years, a supervisor and trainer for three years, and then threatened to quit if the crummy old system wasn’t replaced. At a large manufacturing company I had a customer who had run a finance department for years, knew all the ins, outs and exceptions, and was willing to work very hard to keep up with the programmers.</p>
<p>The picture of a single person feeding expectations to a whole team of programmers is seductive. You don’t have to worry so much about disagreement in detail, and political disagreements are even rarer. You don’t have to worry about finding the appropriate expert to answer a question.</p>
<p>Don’t get me wrong. If you can find that one person who knows the whole domain, is willing to make quick decisions and fix them later, can speak to you both concretely and abstractly, and can put up with a room full of nerds you are likely to be successful. First, though, such folks are understandably rare. Second, this picture seems to exclude many people who now dedicate their talents to software development, like analysts, testers, and modelers.</p>
<h1>It Gets Worse</h1>
<p>The problem is compounded in XP Explained (and subsequent writings and conversations) by referring to the programmers when using the phrase “the team,” as in “the customer speaks to <em>the team</em> with one voice.” This usage always bothered me, but I didn’t know what to do about it.</p>
<h1>Cracks Appear</h1>
<p>The first inkling I had that “the team” shouldn’t mean just programmers came out of my experiences at Evant Solutions (evant.net). We (I’m a sometime coach and stock holder) have about ten programmers on (what we’ll call for nearly the last time) the team. But the product, a demand chain management tool for retailers, requires specialized knowledge of many different aspects of retailing. No one customer has sufficient knowledge or perspective to guide the programmers in implementing the whole system.</p>
<p>“The customer” consists of six product managers. One (I’ll call him “Jim” because that’s his name) is the uber-product manager, overseeing the competitive vision of the entire product. Working with him are five product managers specializing in aspects of retailing: assortment planning, purchase orders, inventory, and some other stuff I don’t understand even that well (contact Evant for useful details).</p>
<p>Evant chose a three week iteration, curiously beginning on Tuesday (Jim says, “Planning sucks and Monday sucks, why put them together?”) On Tuesday, the product managers present their stories to the programmers for tasking and estimation. Sometimes one product manager dominates the iteration, sometimes the stories are spread around, and sometimes they are shared. Curious. Even curiouser is the frequent appearance of fresh bruises and bandages on the product managers at the iteration planning meeting.</p>
<h1>A Team Is Formed</h1>
<p>What gives? Jim says,</p>
<p style="padding-left: 30px;">The short of it is that we hold a pre-planning meeting before each cycle to discuss which use cases we want to attack.  Usually, we have a theme/focus to each cycle that is provided by our clients (i.e., incorporating feedback from XYZ Inc. regarding planning) that makes the discussion around which use cases to select somewhat “non-toxic.”  Although our process is very collaborative and democratic, my “uber” nature does make it easy to “break the tie” when we have competing requests.<sup><a name="sdfootnote1anc" href="#sdfootnote1sym"><sup>1</sup></a></sup></p>
<p>Regardless of Monday’s disagreements, Tuesday morning the customer team presents their story choices to the development team <em>with one voice</em>. It is as if they agree, at least as far as the programmers can tell.</p>
<h1>Stranger in a Strange Land</h1>
<p>The second crack in my model of the lone customer orbiting “the team” came during a visit to Japan in April 2001. The Extreme Hour is an exercise invented by Peter Merel to simulate the dialog used to choose scope in an XP project. A group of eight people is split into four developers who draw pictures of a coffee maker, two customers who write stories about a coffee maker, and two testers who verify that the coffeemaker as drawn satisfies the stories.</p>
<p>For ten minutes the customers write stories and the developers estimate how long they will take to draw. Then comes the interesting part. In five minutes the customers have to choose which stories will go into the first release of the coffee maker based on the estimates on the stories and the developers’ estimate of their overall speed.</p>
<p>I say interesting, because the choosing phase always takes too long, at least a minute or two. The customers disagree on the relative priorities of the stories, they argue with the developers over estimates and speed, and they are reluctant to make a final decision until absolutely compelled to do so.</p>
<p>I gave a private XP lecture to a group of 20 programmers from Technologic Arts, the sponsor of my trip. The first phase of the exercise went as expected—they wrote a bunch of stories. The second phase was interesting.</p>
<p>Instead of six or seven minutes to pick the stories for the initial release, each of the teams was done in two minutes. Strange, but after all these were bright folks who had been studying XP for a while.</p>
<p>The next day I gave an all-day lecture to 200 programmers and project managers. My hosts (hi Marika and Yoshi!) insisted we could run the Extreme Hour with the whole group. I was unconvinced, but it was their show, so what the heck.</p>
<p>The attendees were sitting four to a table, four tables across. The easiest way to form the teams was to have every other row turn around. The backward-facing attendees were the customers and the forward-facing attendees were the developers (we skipped the testers for simplicity).</p>
<p>The first ten minutes went better than I expected. We had them work on a tea maker (although my translators told me later they would have preferred coffee since there are two words for tea and they didn’t know which one I meant). Every team wrote plenty of stories (with a little prompting). We were ready for the first release plan.</p>
<p>In a giant room, with 200 people who had never tried the exercise before, giving instructions through simultaneous translators (who were excellent, but still), the entire room, all 25 teams, had their release plan finished in, you guessed it, two minutes.</p>
<p>Westerners hearing this story often comment, “Sure. Japan is a hierarchical society. The senior customer decided and the others followed.” <em>Au contraire</em>, my ethnocentric friend. In the conversations I watched, every customer talked about the same amount. Body language was similar in the whole customer team. Without knowing Japanese I can’t tell for sure, but I’m guessing the four customers simply formed a team faster than I could recognize and got on with working together. Yoshihide Nagase comments,</p>
<p>Japan has many hierarchical styles. Software development in Japan is hierarchical, too. But manufacturing development (such as in Toyota, Sony, Epson and so on) uses small teams. Maybe attendees of your XP seminar here felt like these small teams, not the usual Japanese Software Engineering way.</p>
<h1>The Last Straw</h1>
<p>My identification of “the team” with “the programmers” finally died when I had the chance to visit a testing conference and a modeling conference in quick succession. In both places the primary question was, “I’d like to try this. Where do I fit into the XP picture?” As long as the XP picture contains a lone customer orbiting a team of programmers, the answer is “nowhere.” I know that many of the skills and attitudes of modelers and testers would be a huge asset on my teams. If they are right, then my XP picture must be wrong.</p>
<h1>One Team</h1>
<p>What if we redrew the picture to reflect what happens at Evant, and what I observed in Japan?</p>
<p><a href="http://www.threeriversinstitute.org/blog/wp-content/uploads/2010/05/OneTeam.png"><img class="aligncenter size-medium wp-image-506" title="OneTeam" src="http://www.threeriversinstitute.org/blog/wp-content/uploads/2010/05/OneTeam-300x97.png" alt="One Team" width="300" height="97" /></a></p>
<p>The new picture reminds me of American football teams. The offensive and defensive teams have different skills, values, and perspectives but they share a single goal, winning the game.</p>
<p>Where do our good testers and modelers fit in? On the Business team. Helping scout, write, slice, dice, and verify are everyone whose lives will be affected by the scope and quality of the released software:</p>
<ul>
<li>Analysts</li>
<li>Representative users</li>
<li>Testers</li>
<li>Marketers</li>
<li>Customer support</li>
<li>Sales</li>
<li>Modelers</li>
<li>Interface designers that watch what real users do and help 	“pave the paths”</li>
<li>Business strategists</li>
</ul>
<p>Their jobs are different than they have been in the past. No longer can any one of these groups grab a phase to themselves, either before development starts or after it finishes.</p>
<h1>Looked at from Here</h1>
<p>Once I shifted to viewing one team, some problems I had been wrestling with for months came into focus. Martin Fowler reported a team at Thoughtworks where the programmers brought their workload and stress level under control with the Planning Game, but only at the expense of overloading the analysts. Analysts need liberation, too. ThoughtWorks has since been using teams of analysts and QA in its larger XP projects for a year or so now with reasonable success <a href="http://martinfowler.com/articles/planningXpIteration.html">http://martinfowler.com/articles/planningXpIteration.html</a>.</p>
<p>Another problem that came into focus for me was the growth of the customer team on the C3 project, XP’s spawning ground. At first there was only one customer. After a few months another payroll expert joined the team to help prepare test data. A few months later a third payroll expert joined. The One Team picture explains this. As the business sponsors discover how responsive the development team could be they chose to increase their business investment.</p>
<p>Far from being the norm, perhaps the original “one customer/many programmer” picture is weird. A picture with the teams more nearly balanced in size may be more healthy.</p>
<h1>But Wait, There’s More</h1>
<p>Our happy little family would be complete, if only we didn’t want to get paid. And if we always got along. And probably eleven other impossible things before breakfast.</p>
<p>I spoke at the University of Oregon CS commencement this year. One of my old professors, Andrzej Proskurowksi, heard the XP story and likened the picture above to a two-legged stool. And he’s absolutely right. There are questions that are outside of the scope of the people on the team as we’ve drawn it so far.</p>
<ul>
<li>How does the project get started?</li>
<li>How is investment increased, reduced, or terminated?</li>
<li>How are disagreements resolved that aren’t handled by 	business and development?</li>
<li>How are relative priorities set between this team and all the 	other projects that need doing?</li>
</ul>
<p>I would love to have a better name for the team that answers these questions. The only one I can think of threatens to unstopper the bottle into which we have just so laboriously stuffed the Demons Control, Hierarchy, and Certainty. But, my failings as a thinker being what they are, I’ll just have to call this, for the moment, the Management Team.</p>
<p>But I really mean “team”, not “manager” and certainly not “roomful of hens squabbling over too few grains of corn.” To scale XP practices to the next size of organization (up to about 150), the members of the management team must work together to solve problems at the scale of the whole organization, typically by breaking them into bite-sized chunks that can be chewed and swallowed by individual teams.</p>
<p>Being on the management team is no easy ride. XP Management is not there to Make Decisions, and certainly not there to Fix Things. Managers are there primarily to notice when the words and the deeds don’t match, to market and sell the achievements of the teams, and to make sure there aren’t obviously better ways to spend money.</p>
<p>In redrawing the picture, I’m forced to switch metaphors. If I draw three circles, whichever one ends up on top will think it’s in charge. If two are on top, whichever one ends up on the bottom will think it’s being oppressed. Circles just won’t cut it. However, Andrzej’s suggestion has merit:</p>
<p><a href="http://www.threeriversinstitute.org/blog/wp-content/uploads/2010/05/AaltoStool.jpg"><img class="aligncenter size-full wp-image-507" title="AaltoStool" src="http://www.threeriversinstitute.org/blog/wp-content/uploads/2010/05/AaltoStool.jpg" alt="Aalto Stool" width="211" height="298" /></a></p>
<p>I like this picture. First, the three legs are equal partners. Without the support of any one team, the stool collapses. Second, it’s an Aalto design, and I’m a big Aalto fan. Third, imagining the stool in use, the three sub-teams have to work together to withstand the pressure from the …, well, from above.</p>
<h1>Making the Shift</h1>
<p>I’ve been using “the team” to mean the whole team for a week or so now. Old habits die hard, but it’s starting to feel natural. If you want to try it, talk about “the team” to mean customers, programmers, and managers. Talk about the customer team, the development or programming team, and those clueless suits (just kidding, talk about the management team) when you need to discuss narrower concerns. Give it a week and see how it goes.</p>
<h1>Some Predictions</h1>
<p>Where will it end? I’m reminded of engineering driven startups, where engineers often form 80-90% of the employees. As these firms grow and mature, the proportion of engineers drops to something like 10-15%.</p>
<p>Will we see this as XP teams mature? Will we ever see a customer team of 10 marketers, domain experts, representative users, sales people, analysts, testers, and usability engineers feed stories and acceptance tests to 4 programmers with 3 managers? What would happen if there was such a team?</p>
<h1>Roles</h1>
<p>The division of the One Team into three sub-teams smells of taylorist division of labor. I can imagine someone reading this and saying, “Oh, I have to decide once and for all whether I’m a manager or a customer.” In practice, people move between the teams, sometimes even iteration-to-iteration. And once the team is clicking, the artificially hard divisions blur, and rightly so.</p>
<p>However, the social contract of work is different between the members of One XP Team. Before you can begin messing with the roles you have to get used to how they are different. Then you can begin experimenting while working together towards the ultimate goal: getting as much of the most valuable stuff done as possible by a given date.</p>
<h1>Sidebar: Customer Team at Thoughtworks</h1>
<p>Martin Fowler writes:</p>
<p>At ThoughtWorks the notion of “one team” makes a lot of sense. We often staff projects with our own analysts, who are often business experts. Indeed in some business sectors our analysts are more familiar with the specialized domain than our clients. QA is also obviously an agent of the customer, as indeed it was in the early days at C3.</p>
<p>Our largest XP-ish project has a full team of analysts and a full QA team—all as part of the overall project team. The analysts need to collaborate to present the stories with one voice to the programmers. They&#8217;re also a mixed bunch combining both business experts with pure analysts.</p>
<p>They&#8217;ve recently set out some of their conclusions about making the customer team work.</p>
<ul>
<li>They&#8217;ve missed having some kind of &#8220;big picture&#8221; to 	act as a road map</li>
<li>They&#8217;ve found it hard to divide up functionality into 	suitable story-sized chunks</li>
<li>They&#8217;ve found it frustrating to not give an indication to 	developers of which direction future function is likely to go</li>
<li>They&#8217;ve found that specialized analysts are better at looking 	at the thorny details of exceptional cases &#8211; in other projects 	testers have reported a similar phenomenon.</li>
</ul>
<p>The danger with an analyst group is always that they can end up being a communication barrier rather than a communication enabler. The notion of the single business expert customer helps prevent that, but I don&#8217;t think there&#8217;s any way to structurally avoid a barrier. The key lies in the attitude of the people involved. Particularly on the customer side of the team you have to build the roles around the people &#8211; not the other way around.</p>
<p>Certainly the programmer-centric attitude of XP has caused frustration. Part of XP&#8217;s guiding mission is to heal the rift between business and technology. For this to work we need to better understand the various aspects of the customer team. In many ways it&#8217;s a more complex team than the developer team. It&#8217;s also one where the techniques are less developed.</p>
<div id="sdfootnote1">
<p><a name="sdfootnote1sym" href="#sdfootnote1anc">1</a> Jim Bahrenburg, personal communication, 22 June 2001.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.threeriversinstitute.org/blog/?feed=rss2&amp;p=503</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Apple, Gizmodo, and Stuff&#8230;</title>
		<link>http://www.threeriversinstitute.org/blog/?p=500</link>
		<comments>http://www.threeriversinstitute.org/blog/?p=500#comments</comments>
		<pubDate>Tue, 04 May 2010 21:31:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Social Commentary]]></category>

		<guid isPermaLink="false">http://www.threeriversinstitute.org/blog/?p=500</guid>
		<description><![CDATA[Once again I&#8217;ve managed to stir up unexpected trouble on Twitter. Twitter for me is just an inflammatory blog post waiting to happen, I just don&#8217;t know which tweet is going to set off the storm. Here&#8217;s what happened this time. I read Michael S. Malone&#8217;s piece berating the tech press for covering Apple softly. [...]]]></description>
			<content:encoded><![CDATA[<p>Once again I&#8217;ve managed to stir up unexpected trouble on Twitter. Twitter for me is just an inflammatory blog post waiting to happen, I just don&#8217;t know which tweet is going to set off the storm.</p>
<p>Here&#8217;s what happened this time. I read Michael S. Malone&#8217;s <a href="http://bit.ly/dszWcg">piece</a> berating the tech press for covering Apple softly. Until I read this, I wasn&#8217;t too upset about iPhoneGate, but Mike&#8217;s article framed the situation differently for me: as a free speech issue.</p>
<p>Since my point seemed to be widely misunderstood on Twitter, I will say right up front that I am not commenting on the behavior of Gizmodo or the gentleman who found the phone and subsequently sold it. I would like to think that in the same situation I would return the phone to Apple, although I would certainly be tempted to post some pictures just because I think Apple&#8217;s paranoia deserves tweaking whenever possible. Not returning the phone to its (obviously) rightful owner was wrong, but it&#8217;s an everyday kind of wrong and it doesn&#8217;t affect my life so I&#8217;m not going to get too upset about it.</p>
<p>What bothers me is Apple&#8217;s reaction. Without knowing the details of the activities that went on, from up here in southern Oregon it looks like Apple enlisted the police to make an example of Gizmodo. If I had lost a hardware prototype and I called the San Mateo police or the REACT group or the Superior Court judge, there&#8217;s no way they would have reacted in the way they did. Apple got special treatment because they are large. That&#8217;s wrong.</p>
<p>I&#8217;ve learned to look for the intent behind behavior that I don&#8217;t understand. What could Apple&#8217;s intent have been in having Mr. Chen&#8217;s house searched in the manner it was? The explanation that makes sense to me is that they wanted to intimidate anyone who was thinking about writing about Apple &#8220;secrets&#8221;. The course of justice doesn&#8217;t demand what they caused to happen. They were looking for effect, is how I read it.</p>
<p>Here&#8217;s where it starts to affect my life&#8211;what if I figure out something about Apple next &#8220;big thing&#8221;, purely legitimately? Am I going to write about it? Well, if it&#8217;s me I probably will because 1) I&#8217;m clueless about what&#8217;s going to upset people (obviously) and 2) I hate people telling me what to do. I&#8217;d certainly think about it, though. What if Apple took umbrage at what I wrote? Josephine County sheriffs would be battering down my door in no time, and there&#8217;s nothing I could do about it. I don&#8217;t like that feeling.</p>
<p>My conclusion is that Apple has read too many of its own press releases and thinks the world should run for its benefit. I expect more boorish behavior and increasing alienation from the needs of customers and developers. That&#8217;s too bad, because I like my Apple products.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.threeriversinstitute.org/blog/?feed=rss2&amp;p=500</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Capital-Efficient UI Design</title>
		<link>http://www.threeriversinstitute.org/blog/?p=494</link>
		<comments>http://www.threeriversinstitute.org/blog/?p=494#comments</comments>
		<pubDate>Wed, 28 Apr 2010 14:03:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://www.threeriversinstitute.org/blog/?p=494</guid>
		<description><![CDATA[I&#8217;ve spent maybe a quarter of my career doing user interface design and implementation. One skill I was proud of was my ability to take in a variety of constraints on the UI and produce a design to satisfy them. It takes a while, though, and if I&#8217;m going to be honest with myself the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="Insane rollerskating" src="http://www.foundshit.com/pictures/bizarre/roller-skating-coaster.jpg" alt="" width="300" height="240" /></p>
<p>I&#8217;ve spent maybe a quarter of my career doing user interface design and implementation. One skill I was proud of was my ability to take in a variety of constraints on the UI and produce a design to satisfy them. It takes a while, though, and if I&#8217;m going to be honest with myself the success rate isn&#8217;t that great. That skill, the single blinding flash of design insight, I discovered yesterday, is no longer essential. Iteration is the new inspiration.</p>
<p>One of the fundamental changes driving lean startups is the incredible reduction in the capital required to deliver the first iterations of a product. Capital is still required to fuel growth, but finding out if you have a market and pivoting when you discover you don&#8217;t, is one or two orders of magnitude cheaper than it used to be.</p>
<p>I had previously experienced this efficiency in programming (open source tools) and deployment (AppEngine). Yesterday I got a taste of it in user interface design. Back in the day, developers (those with design and/or programming skills) would argue endlessly about designs. Along came usability labs, with mirrored walls, video taping, and real users (gasp) invited in. Watching someone fumble with your perfectly logical UI design was always an education, but it was expensive, both in terms of capital and time.</p>
<h2>Enter Speed</h2>
<p>Yesterday I started using two services, <a href="http://bit.ly/9vvrPR">UserTesting.com</a> and <a href="http://bit.ly/aoZUmF">fivesecondtest.com</a>, that bring the same capital- and time-efficiency to UI design that open source tools brought to programming. Rather than work extremely hard getting the design right, then failing if you guess wrong, it is now quick and cheap to iterate. Have a crazy idea? Test it. Three alternatives? Test them.</p>
<p>At the Startup Lessons Learned conference <a href="http://www.youtube.com/watch?v=BaxZloMKAlU">Siqi Chen</a> of Zynga recommended UserTesting.com. UserTesting.com is the online version of the usability labs of old. For $39 you get a 15 minute screen cast of a real user using your system while thinking aloud. Problems in flow are glaringly apparent. ($39 is approximately the cost of a ten minute argument between two designers, and in my experience arguments can last a lot longer than ten minutes.)</p>
<p>Granted, you don&#8217;t get everything out of UserTesting.com that you get out of a usability lab, but it&#8217;s quick and it&#8217;s cheap. I can see iterating a design several times a day with UserTesting.com. By the time you&#8217;d rounded up a subject for a usability lab session you could already have the results from UserTesting.com.</p>
<p>Fivesecondtest.com becomes useful earlier in the design cycle. Given a screenshot, users are asked what they remember about it or they are asked to click on notable sections of the screen. You can pay to have customized tests, asking particular questions, for example. Since it works on screen shots, you can iterate much faster with fivesecondtest than you can with UserTesting. It&#8217;s a tradeoff between fidelity and speed. For a quick, &#8220;is this too cluttered?&#8221; kind of question, fivesecondtest is ideal.</p>
<h2>You Still Have to Design</h2>
<p>Neither of these services substitute for building real, person-to-person, in-depth relationships with real customers. And you still have to have the ideas to test in the first place. Rapid iteration with lousy ideas will result in a lousy interface. However, user interface inspiration just got rollerskates.</p>
<p>You could use these services to produce a similar quality of design compared to what you are producing now, but in less time and at less cost. I&#8217;m more interested in spending a little more time and money than that, and trying out crazy UI ideas. Crazy ideas that just happen to work provide pizzaz, differentiation, and extend the lead you have on competitors.</p>
<h2>Note to Programmers</h2>
<p>If you are working with a designer who begins using these services, you are going to have to up your game. You need to find ways to provide testable variations of your application much faster than you do today. That will require better designs to effectively separate the parts of the system that change from the parts that don&#8217;t, better coordination and communication to keep track of the variations, and better tools to support the whole process. You will also need to be disciplined about removing the traces of failed experiments, lest your code begin to resemble a Hollywood backlot.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.threeriversinstitute.org/blog/?feed=rss2&amp;p=494</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Continuous Deployment Immersion</title>
		<link>http://www.threeriversinstitute.org/blog/?p=488</link>
		<comments>http://www.threeriversinstitute.org/blog/?p=488#comments</comments>
		<pubDate>Tue, 27 Apr 2010 05:01:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Responsible Development]]></category>

		<guid isPermaLink="false">http://www.threeriversinstitute.org/blog/?p=488</guid>
		<description><![CDATA[I had this idea while I was sitting in the Startup Lessons Learned conference. You definitely don&#8217;t want to try this. It&#8217;s a crazy idea. And you don&#8217;t want to hire me to come facilitate. That would be piling madness on madness. Here&#8217;s what you don&#8217;t want to do: Get the whole team in a [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><img class="alignleft" title="High wire practice" src="http://www.circus4youth.org/images/img/200609121921120.highwirepractice.jpg" alt="" width="230" height="348" />I had this idea while I was sitting in the Startup Lessons Learned conference. You definitely don&#8217;t want to try this. It&#8217;s a crazy idea. And you don&#8217;t want to hire me to come facilitate. That would be piling madness on madness. Here&#8217;s what you don&#8217;t want to do:</p>
<p style="text-align: left;">Get the whole team in a conference room Monday morning. Choose a feature you are going to add. Have one person come up to the one machine in the room. Write one line of code. Deploy.</p>
<p style="text-align: left;">If you can&#8217;t deploy, erase that line of code and write a different line of code first. Deploy.</p>
<p style="text-align: left;">Once the deployment is done, write another line of code. Deploy.</p>
<p style="text-align: left;">About this time some of the rest of the team is going to be bored watching all the manual steps in the deployment. Have them go off and automate the most tedious, boring, or error-prone step. Bring the automation back to the conference room and start using it.</p>
<p style="text-align: left;">By about Wednesday you&#8217;ll be feeling pretty good about your ability to deploy (even if you aren&#8217;t feeling so good about progress working one line at a time). You&#8217;ll likely make a mistake. Roll back manually. Split off a team to be able to roll back automatically.</p>
<p style="text-align: left;">At some point you&#8217;re likely to need to change some existing code. If you don&#8217;t have automated tests for the current behavior, split off a team to write a test before changing the code.</p>
<p style="text-align: left;">By Friday afternoon you may not have made much progress on your feature (but you may be pleasantly surprised), but you will understand deployment much better than you do now. You will also understand how to slice development more finely and rearrange the pieces. You will also understand the value of automation.</p>
<p style="text-align: left;">But don&#8217;t do this. It&#8217;s a crazy idea. Never work. Forget it. Sorry to waste your time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.threeriversinstitute.org/blog/?feed=rss2&amp;p=488</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>
