<?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>Lean Software Engineering &#187; agile</title>
	<atom:link href="http://leansoftwareengineering.com/category/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://leansoftwareengineering.com</link>
	<description>Essays on the Continuous Delivery of High Quality Information Systems</description>
	<lastBuildDate>Fri, 07 Aug 2009 04:07:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Agile zeitgeist</title>
		<link>http://leansoftwareengineering.com/2009/04/15/agile-zeitgeist/</link>
		<comments>http://leansoftwareengineering.com/2009/04/15/agile-zeitgeist/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 21:11:50 +0000</pubDate>
		<dc:creator>Corey Ladas</dc:creator>
				<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/?p=1336</guid>
		<description><![CDATA[Jurgen Appelo has put up a survey of Agile practices.  While I consider myself and this blog to be decidedly post-Agile, I also love survey data and the concerns of practitioners.  Plus, critical analysis of the survey itself makes for great sport. The Big Agile Practices Survey]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.noop.nl/">Jurgen Appelo</a> has put up a survey of Agile practices.  While I consider myself and this blog to be decidedly post-Agile, I also love survey data and the concerns of practitioners.  Plus, critical analysis of the survey itself makes for great sport.</p>
<p><a href="http://www.noop.nl/2009/04/the-big-agile-practices-survey.html">The Big Agile Practices Survey</a></p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2009/04/15/agile-zeitgeist/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Extreme Programming workflow simulation</title>
		<link>http://leansoftwareengineering.com/2009/03/09/extreme-programming-workflow-simulation/</link>
		<comments>http://leansoftwareengineering.com/2009/03/09/extreme-programming-workflow-simulation/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 02:13:06 +0000</pubDate>
		<dc:creator>Corey Ladas</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[simulation]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/?p=1125</guid>
		<description><![CDATA[I made a simulation of an XP-like process. I won&#8217;t go as far as to say it&#8217;s exactly XP, but it&#8217;s a reasonable approximation. The first one is an unconstrained workflow with a single customer. It is a PIPE2 simulation, and the file is here. Multiple customers (or nested stories) would require a colored Petri [...]]]></description>
			<content:encoded><![CDATA[<table border="0">
<tbody>
<tr>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2009/03/xp_story_kanban_0.png"/></p>
<p>I made a simulation of an XP-like process.  I won&#8217;t go as far as to say it&#8217;s exactly XP, but it&#8217;s a reasonable approximation.  The first one is an unconstrained workflow with a single customer.  It is a <a href="http://pipe2.sourceforge.net/">PIPE2</a> simulation, and the file is <a href="http://leansoftwareengineering.com/wp-content/uploads/2009/03/xp.xml">here</a>.  Multiple customers (or nested stories) would require a colored Petri net, which PIPE2 doesn&#8217;t support.</p>
<p>One of the keys to understanding the model is the bidirectional edge between the customer and <em>write a story</em>.  The team keeps writing stories until the customer doesn&#8217;t want any more stories and accepts a final build.  Other keys are the bidirectional edge out of <em>accept story </em>and the inhibitor arcs into <em>accept build</em>.  Those things give the model most of the &#8220;iterative goodness&#8221; you&#8217;d expect.</p>
<p>Not surprisingly, the unconstrained workflow rarely reaches a checkpoint where the customer has nothing in process, so the <em>deliver build</em> transition rarely triggers.  If we add a<em> stories in process</em> kanban limit, then there is also much more reengagement with the customer as a consequence.  That model is <a href="http://leansoftwareengineering.com/wp-content/uploads/2009/03/xp_story_kanban.xml">here</a>.</p>
<p>I would be interested to hear of any improvements to the model.</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2009/03/09/extreme-programming-workflow-simulation/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The Modus Cooperandi card wall, circa December 2008</title>
		<link>http://leansoftwareengineering.com/2009/01/30/the-modus-cooperandi-card-wall-circa-december-2008/</link>
		<comments>http://leansoftwareengineering.com/2009/01/30/the-modus-cooperandi-card-wall-circa-december-2008/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 07:06:06 +0000</pubDate>
		<dc:creator>Corey Ladas</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[card wall]]></category>
		<category><![CDATA[Modus Cooperandi]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/?p=570</guid>
		<description><![CDATA[Jim, An, and Jeanine discussing a work ticket at the daily standup. This is the card wall we&#8217;re currently using in the Modus Cooperandi office.  It&#8217;s not terribly complicated, because there are only five of us, but there are still a couple of interesting things about it. We&#8217;re working on a number of different programs [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://leansoftwareengineering.com/wp-content/uploads/2008/12/cardwall.jpg"><img class="alignnone size-full wp-image-633" title="cardwall" src="http://leansoftwareengineering.com/wp-content/uploads/2008/12/cardwall.jpg" alt="cardwall" width="640" height="480" /></a></p>
<address style="text-align: center;">Jim, An, and Jeanine discussing a work ticket at the daily standup.</address>
<p>This is the card wall we&#8217;re currently using in the Modus Cooperandi office.  It&#8217;s not terribly complicated, because there are only five of us, but there are still a couple of interesting things about it.</p>
<p>We&#8217;re working on a number of different programs in the office.  Some of these programs have distinct workflows.  Most of them don&#8217;t, or more accurately,<em> don&#8217;t yet</em>.  So, we&#8217;ve split the board into two sections.</p>
<p>The top section is the workflow for software development.  The workflow is yet another variation on the two-tier workflow that I&#8217;ve discussed here before.  The green tickets are Minimum Marketable Features (MMFs) and they occupy the outer, slow-moving workflow with states { backlog, ready, busy, demo, verify, done }.  The yellow tickets are User Stories that are decomposed out of the green MMF tickets.  The inner User Story workflow is { ready, busy, demo, done }.  Stories should be done in a few days.  MMFs may take several weeks.  The workflow is not particularly detailed because the team is small and the work is exploratory.  The emphasis on the demo states is because most of the work is done off-site.  We&#8217;ve allowed capacity for two MMFs in process at any time, but for now we are only scheduling one.</p>
<p>The rhythm of pull, and the discipline of the MMF make planning a self-regulating activity.  Naturally occuring pull events occasionally trigger planning events, which trigger further pull events and so on.  Demos and process improvement are built into the workflow, so no planning contrivances are required to make these happen.  Keeping the &#8220;Minimum&#8221; in MMF isn&#8217;t always easy, so having a &#8220;Minimum Champion&#8221; around is pretty important to making this kind of self-regulation work.  Time spent thinking about real options strengthens one&#8217;s resolve in this matter.   Enforcing the MMF is still much easier than wasting a lot of time on estimating and forecasting.  And after you gather enough cycle time data, the work begins to forecast itself.</p>
<p>Software development is one thing we&#8217;re working on, but we also have a number of other programs which are&#8230;not software development.  For now, these are mixed work item types that don&#8217;t have well defined workflows.  Instead of assigning them to a workcell, we assign them to individuals, with a generic common-denominator workflow of { backlog, ready, busy, verify, done }.  <strong>Backlog</strong> tasks are unassigned.  <strong>Ready</strong> tasks are assigned by affinity or consensus.  At the time that a task is assigned, it is given a due date.  When <strong>busy</strong> tasks are judged complete by their owner, they are moved to the <strong>verify</strong> state, where somebody else has to agree that the task is complete.  When a task is verified, it moves to a pooled <strong>done</strong> state.  Blocked work, as always, gets a pink ticket for issue resolution and/or process improvement.</p>
<p>Some of these programs are content development and we expect that they will develop more regular workflows over time.  When we identify those workflows, we&#8217;ll redraw the board and move their tickets out of the personal rows and into new workcells.  Eventually, we may collapse all of the personal rows into a single &#8220;miscellaneous&#8221; row.  The miscellaneous row is worth keeping because there&#8217;s always random stuff to do that still merits tracking.  The card wall is a living system that is subject to evolution as we learn more about how to do our work.</p>
<p>We haven&#8217;t set hard WIP limits on the personal rows, because we&#8217;re able to manage it through peer feedback&#8230;mostly.  The emphasis on controlling WIP still allows us to plan new work and manage the backlog on demand.  We all know that if the WIP ever gets out of hand, we can restore order by setting kanban limits.  The card wall is the focus of the daily standup, where we gather around, point at the tickets, move them around, write new tickets, and make plans for how we&#8217;re going to advance the board for the day.</p>
<p>The lesson is that, with or without kanban, the investment in a thoughtfully designed and carefully managed visual control is already enough to obviate time boxing and the planning ceremony that goes along with it.  Go with the flow.</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2009/01/30/the-modus-cooperandi-card-wall-circa-december-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software development is like golf &#8230;</title>
		<link>http://leansoftwareengineering.com/2009/01/19/software-development-golf-analogy/</link>
		<comments>http://leansoftwareengineering.com/2009/01/19/software-development-golf-analogy/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 09:32:17 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[project]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/?p=613</guid>
		<description><![CDATA[Software development is like golf in that your chosen path to the pin is a primary problem. The choice involves weighing your capabilities (people), the course (technology), and the conditions (market). Confident you can do anything?  Bring out the big guns and send it over that treeline on the left. If you make it, you [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/golf_pictures/528550538/" target="_blank"><img class="size-medium wp-image-614 alignleft" style="margin: 0pt 20px 20px 0pt;" title="18th_hole_pic" src="http://leansoftwareengineering.com/wp-content/uploads/2008/12/golf_course_18th_hole_sign-300x225.jpg" alt="18th_hole_pic" width="300" height="225" /></a></p>
<p>Software development is like golf in that your chosen path to the pin is a primary problem.</p>
<p>The choice involves weighing your capabilities (people), the course (technology), and the conditions (market).</p>
<p>Confident you can do anything?  Bring out the big guns and send it over that treeline on the left. If you make it, you must land it among that sea of traps. This is the most common choice in software development, and the #1 reason why we so frequently turn &#8220;par 5&#8243;s into 10, 15, and 20s.</p>
<p>Don&#8217;t have a team of Tigers?  Then go long down the center if you can avoid that large sand trip on the left and lake beyond it. But is this abstract little map accurate enough?  Does it tell us about the 50 yards of soggy turf there in the middle?  How about wind howling left to right over the lake?  Unless you&#8217;ve played this hole before you don&#8217;t know.  What makes software development so tricky is by definition we never play the same hole twice.  Technology is changing around us, even while we make our own changes.</p>
<p>Want to make sure you don&#8217;t turn a par 5 into a 10?  Land it short of the traps on the fairway and take it from there with comfortable strokes. There&#8217;s a price to pay for this caution: no holes in one for you.  You&#8217;re less likely to be a hero this way, but in team-scale software development, the hero model will fail you are sure as a week in Vegas, anyway.</p>
<p>And, sometimes, the conditions are particularly bad.  In the downturn of 2008/2009, one could say the conditions for technology products are analogous to &#8220;a raging hurricane, with chance of nearby volcanic eruption and ash over the course.&#8221;  So take care. Be humble.  And may you keep both your work in progress and your golf scores down.</p>
<p>(apologies to all software developers offended by an anology from the &#8220;sport of salespeople and CEOs&#8221;.  Think of it as an analogy to bridge the divide)</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2009/01/19/software-development-golf-analogy/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Lean software conference coming in May</title>
		<link>http://leansoftwareengineering.com/2008/12/30/lean-software-conference/</link>
		<comments>http://leansoftwareengineering.com/2008/12/30/lean-software-conference/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 05:53:21 +0000</pubDate>
		<dc:creator>Corey Ladas</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[conference]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/?p=647</guid>
		<description><![CDATA[Lean &#38; Kanban 2009 Miami is a three-day conference featuring a full day of presentations with separate tracks for Lean and Kanban, plus a full day of open space and a half day of lightning talks.  I&#8217;ll be speaking about Scrumban and process evolution on the first day and enthusiastically working the open space session [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.leankanbanconference.com/">Lean &amp; Kanban 2009 Miami</a> is a three-day conference featuring a full day of presentations with separate tracks        for Lean and Kanban, plus a full day of open space and a half day of lightning        talks.  I&#8217;ll be speaking about <a href="http://www.lulu.com/content/3864767">Scrumban</a> and process evolution on the first day and enthusiastically working the open space session on the second day.</p>
<p>I think this is going to be a very exciting conference.  The Lean software development community has made explosive progress over the last couple of years, only to discover that we are still in the dawn of our evolution.  I expect to see terrific advancements in 2009 and some of them may very well find their beginnings at this event.</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2008/12/30/lean-software-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scrum-ban</title>
		<link>http://leansoftwareengineering.com/2008/07/08/scrum-ban/</link>
		<comments>http://leansoftwareengineering.com/2008/07/08/scrum-ban/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 04:42:47 +0000</pubDate>
		<dc:creator>Corey Ladas</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lean]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/?p=423</guid>
		<description><![CDATA[As more people become interested in Lean ideas and their application to knowledge work and project management, it&#8217;s helpful to find ways that make it easier to get started or learn a few basic concepts that can lead to deeper insights later. For those that are curious about kanban in an office context, it&#8217;s not [...]]]></description>
			<content:encoded><![CDATA[<p>As more people become interested in Lean ideas and their application to knowledge work and project management, it&#8217;s helpful to find ways that make it easier to get started or learn a few basic concepts that can lead to deeper insights later.  For those that are curious about kanban in an office context, it&#8217;s not unusual to find people who are either currently using Scrum, or have some understanding of Scrum as representative of Agile thinking.  One way or another, Scrum users are an important constituent of the Kanban audience.  Since Scrum can be described as a statement in the language we use to describe kanban systems, it is also fairly easy to elaborate on that case in order to describe Scrum/Kanban hybrids&#8230;</p>
<p><a href="http://leansoftwareengineering.com/ksse/scrum-ban/">read this paper&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2008/07/08/scrum-ban/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Boehm&#8217;s Spiral Revisited</title>
		<link>http://leansoftwareengineering.com/2008/05/05/boehms-spiral-revisited/</link>
		<comments>http://leansoftwareengineering.com/2008/05/05/boehms-spiral-revisited/#comments</comments>
		<pubDate>Mon, 05 May 2008 09:09:13 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[simple spiral]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/?p=321</guid>
		<description><![CDATA[Twenty years ago this month, in response to the problems associated with waterfall-style approaches to software projects, Barry Boehm proposed his Spiral Model of Software Development. Which bore some resemblance to Deming&#8217;s &#8220;Plan, Do, Check, Act&#8221; cycle. Boehm&#8217;s insights have had a huge positive impact on how we think about software development. But the spiral [...]]]></description>
			<content:encoded><![CDATA[<p>Twenty years ago this month, in response to the problems associated with waterfall-style approaches to software projects,</p>
<p><a href="http://en.wikipedia.org/wiki/Waterfall_model" target="_blank"><img style="border:0px" src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/waterfall_model.png" alt="" width="320" height="308" /></a></p>
<p>Barry Boehm proposed his <a target="_blank" href="http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/spiral.pdf">Spiral Model of Software Development</a>.</p>
<p><a href="http://en.wikipedia.org/wiki/Spiral_model" target="_blank"><img style="border:0px" src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral_model_boehm_1988.png" alt="" width="320" /></a></p>
<p>Which bore some resemblance to Deming&#8217;s &#8220;Plan, Do, Check, Act&#8221; cycle.</p>
<p><a href="http://en.wikipedia.org/wiki/PDCA" target="_blank"><img style="border:0px" src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/pdca.gif" alt="" width="160" /></a></p>
<p>Boehm&#8217;s insights have had a huge positive impact on how we think about software development. But the spiral itself lost some of the beauty of Deming&#8217;s model: the simplicity, self-similarity at different scales, and the balance between activities in the quadrants. Which, perhaps, has caused Boehm&#8217;s model to be underused as a tool for introducing people to how creative engineering works. This is unfortunate, because the waterfall model, being more obvious, continues to be where most people start. Only then, after they have personally experienced the pain of struggling projects, do they search for a more appropriate model.</p>
<h1>The Simple Sprial</h1>
<p>Here is a simple love-child between Boehm&#8217;s and Deming&#8217;s views which has been very helpful to me in keeping a visual model in mind when thinking about how effective software development (or any creative engineering) really works.</p>
<table style="font-size: x-large;" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="50%" align="left" valign="top">Customer</td>
<td align="right" valign="top">Plan</td>
</tr>
<tr>
<td colspan="2"><img style="border:0px" src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral4.png" alt="" /></td>
</tr>
<tr>
<td align="left" valign="bottom">Test</td>
<td align="right" valign="bottom">Design</td>
</tr>
</tbody>
</table>
<h2>How does this work?</h2>
<ul>
<li>The more iterative your development process, the more times you spiral around</li>
<li>You spiral inward from the high-level descriptions down to the lower level implementation details (note: this directionality is inverted from Boehm &#8211; this model doesn&#8217;t try to convey the amount of cost or work in each loop around the spiral)</li>
<li>As you spiral down, the activities change. &#8220;Design&#8221; at the high level might be on paper. But as you spiral down, design is about turning those paper documents into executable code.  Same for the other quadrants.</li>
</ul>
<h2>Quadrants</h2>
<ul>
<li><strong>Customer.</strong><em> What does the customer think?</em> In one of the better trends of the last 20 years since Boehm&#8217;s paper, agile methodologies have recognized the customer as an essential direct participant of the development process.  We can try to guess what the customer ultimately will find valuable. But if we don&#8217;t regularly check back with them, we&#8217;ll get enough wrong to sink our product and company over time.</li>
<li><strong>Plan.</strong><em> What do we plan to do?</em> This includes requirements analysis, priorities, risks, and schedules. At the very high level, it may be corporate goals.  At the very low level, it might be writing an automated functional test before writing the code to make that test pass.</li>
<li><strong>Design.</strong><em> How will we do it? </em>At the high level, design is done via documents, diagrams, and discussion. At the lowest level, design is expressed as the executable code that constitutes the product.</li>
<li><strong>Test.</strong><em> Have we done it right? </em>At the high level, we discuss and review ideas and documents. At the lowest level, we execute tests against the functioning product.</li>
</ul>
<p>The four quadrants align with how we tend to specialize our people and organizations as we grow. In a Microsoft organizational model, it aligns with customer, program management, development, and test.</p>
<h1>The &#8220;Simplistic Spiral&#8221;</h1>
<p>The simple spiral is useful, because it is flexible enough to encompass many approaches to development.  Take the waterfall model from the top of this post, and wrap it into one loop through the spiral, and you get &#8220;the simplistic spiral.&#8221;</p>
<table style="font-size: x-large;" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="50%" align="left" valign="top">Customer</td>
<td align="right" valign="top">Plan</td>
</tr>
<tr>
<td colspan="2"><img style="border:0px" src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral1.png" alt="" /></td>
</tr>
<tr>
<td align="left" valign="bottom">Test</td>
<td align="right" valign="bottom">Design</td>
</tr>
</tbody>
</table>
<p>Wouldn&#8217;t it be nice if projects could reliably just work this way?</p>
<p>But we know if we apply this model to a large product, we&#8217;re nearly certain to have a disaster on our hands where many assumptions made in planning are discovered to be poor in design or test.</p>
<p>But apply it to a queue of appropriately-sized (small) and well-understood functional requests, and it may be an appropriate model for each kanban in a lean production workflow (or perhaps each kanban should be two or more loops round the spiral). In any case, the model is helpful in visualizing all these cases.</p>
<h1>The &#8220;Product Spiral&#8221;</h1>
<p>It also helps us create useful visualization of product lifecycle models at various scales.</p>
<table border="0">
<tbody>
<tr>
<td>Company</td>
<td></td>
<td></td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral4.png" alt="" width="64" /></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Product</td>
<td></td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral4.png" alt="" width="64" /></td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral4.png" alt="" width="64" /></td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral4.png" alt="" width="64" /></td>
<td></td>
</tr>
<tr>
<td>Project</td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral3.png" alt="" width="64" /></td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral2.png" alt="" width="64" /></td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral2.png" alt="" width="64" /></td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral4.png" alt="" width="64" /></td>
<td></td>
</tr>
<tr>
<td>Feature</td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral2.png" alt="" width="64" /></td>
<td></td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral2.png" alt="" width="64" /></td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral2.png" alt="" width="64" /></td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral2.png" alt="" width="64" /></td>
</tr>
<tr>
<td>Change</td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral1.png" alt="" width="64" /></td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral1.png" alt="" width="64" /></td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral1.png" alt="" width="64" /></td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral1.png" alt="" width="64" /></td>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/05/spiral1.png" alt="" width="64" /></td>
</tr>
</tbody>
</table>
<p>At the company level, we are constantly cycling: seeing what the customer/market reaction is to our products, planning new products and enhancements, designing and testing them.</p>
<p>At the product level, it&#8217;s the same, but from the perspective of the evolution over a lifecycle. But even when a product enters later lifecycle phases like maintainence, the model is still the same: the customer finds bugs, we prioritize, fix, and test them &#8212; and it goes back to the customer for the cycle to start again.</p>
<p>At the feature level, we recognize that this has a lifecycle of its own.  Before committing a feature to a product, all aspects (including feedback from the customer) should be covered, likely with several iterations. Perhaps one of the secrets of success to many open source ecosystems is that they encourage/allow individual features to evolve independently and iteratively, before committing to integrate them.</p>
<p>At the change level, we have gotten the granularity small enough that each change may appear to be its own mini-waterfall of plan, design, and test.  But even that is a simplification &#8212; chances are, the person making the change looped through many interrelated planning, design, and test alternatives in their head before committing the change.</p>
<h1>Applications</h1>
<p>In future posts, we&#8217;ll apply this model to take a look at other aspects of the engineering process.</p>
<p>So &#8212; is this a useful model for thinking about engineering, particularly software?  Or is this model dangerously simplistic for helping to think about how your organization works?</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2008/05/05/boehms-spiral-revisited/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Spiraling Into Control</title>
		<link>http://leansoftwareengineering.com/2008/03/11/spiraling-into-control/</link>
		<comments>http://leansoftwareengineering.com/2008/03/11/spiraling-into-control/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 18:52:12 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/2008/03/11/spiraling-into-control/</guid>
		<description><![CDATA[[This was originally posted March 7, 2005 on my personal blog. Stumbled across it, and felt it might deserve a post here]  The other week I attended a panel discussion. This was part of a pilot of a larger course for program managers. Before the panel began, the instructor was relating a conversation where a developer on [...]]]></description>
			<content:encoded><![CDATA[<p>[This was originally posted March 7, 2005 on my personal blog. Stumbled across it, and felt it might deserve a post here] </p>
<p>The other week I attended a panel discussion. This was part of a pilot of a larger course for program managers. Before the panel began, the instructor was relating a conversation where a developer on a project was speaking of it as &#8220;sprialing into control.&#8221; The instructor left open the possibility that he thought the developer was crazy. The room of program managers laughed. Thoughtfully.</p>
<p>What a great phrase.</p>
<p>We want to clamp down to get our projects under control. Enforce rules to get repeatable. We want to keep our teams on the shortest path from A to B.</p>
<p>But the interesting projects haven&#8217;t been to B before.</p>
<p>And they&#8217;re dealing with shifting human dynamics on the team, discoveries that don&#8217;t reveal themselves until uncomfortably late, and a world around them that isn&#8217;t standing still.</p>
<p>We can&#8217;t leap to control and stay there. We can only sprial close. And, with constant effort and feedback, we hope to stay close.</p>
<p>Short iterations. Small increments. Minimized work-in-progress. Communication and retrospection. Discretion to adjust the process to keep breaking bottlenecks.</p>
<p>Control through feedback, not prescription.</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2008/03/11/spiraling-into-control/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Better estimates with Wideband Delphi</title>
		<link>http://leansoftwareengineering.com/2008/02/23/better-estimates-with-wideband-delphi/</link>
		<comments>http://leansoftwareengineering.com/2008/02/23/better-estimates-with-wideband-delphi/#comments</comments>
		<pubDate>Sun, 24 Feb 2008 00:16:54 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/2008/02/23/better-estimates-with-wideband-delphi/</guid>
		<description><![CDATA[Dates and deadlines are an essential human element of project management. People work better if they have challenging but realistic schedules to work against. The trick is &#8220;challenging but realistic.&#8221; In software, we know there is wide variation in our estimates, because we are almost always creating something unique (if it&#8217;s been done before, we [...]]]></description>
			<content:encoded><![CDATA[<p>Dates and deadlines are an essential human element of project management.  People work better if they have challenging but realistic schedules to work against.</p>
<p>The trick is &#8220;challenging but realistic.&#8221;   In software, we know there is wide variation in our estimates, because we are almost always creating something unique (if it&#8217;s been done before, we just copy the bits). And we have a <a href="http://forums.construx.com/blogs/stevemcc/archive/2007/05/23/update-on-the-cone-of-uncertainty.aspx" target="_blank">systemic underestimation bias</a>, because there are lots of ways to cut scope or cut corners in software, and the intangible nature of it all makes anything seem possible.</p>
<p>Unfortunately, when schedules are no longer realistic, it will quickly destroy a project: causing cynicism, demotivation, short-cuts, bad decisions, unwillingness to respond to new information, loss of honesty and trust, and other problems which will fester. We could avoid these pitfalls if only we could estimate better.  There are good books on this, including McConnell&#8217;s <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FSoftware-Estimation-Demystifying-Practices-Microsoft%2Fdp%2F0735605351&amp;tag=bernieblog1-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">Software Estimation: Demystifying the Black Art</a><img src="http://www.assoc-amazon.com/e/ir?t=bernieblog1-20&amp;l=ur2&amp;o=1" style="border: medium none  ! important; margin: 0px ! important" border="0" height="1" width="1" /> and Wiegers&#8217; <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FPractical-Project-Initiation-Handbook-Practices%2Fdp%2F0735625212%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1203797176%26sr%3D1-3&amp;tag=bernieblog1-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">Practical Project Initiation</a><img src="http://www.assoc-amazon.com/e/ir?t=bernieblog1-20&amp;l=ur2&amp;o=1" style="border: medium none  ! important; margin: 0px ! important" border="0" height="1" width="1" />.</p>
<p>Out of all the techniques covered in those books, one widely-used technique is particularly effective for those critical early estimates of large, not-yet-well-understood projects. Estimates upon which we base our go/no-go decisions and early expectation-setting for upper management and customers.</p>
<p>It&#8217;s called Wideband Delphi, and here is <a href="http://leansoftwareengineering.com/wideband-delphi/">a simple spreadsheet template and guide for the Wideband Delphi technique</a>. Take a look, and let us know if this is useful to you and your groups.</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2008/02/23/better-estimates-with-wideband-delphi/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Not all activities are best handled by generalists</title>
		<link>http://leansoftwareengineering.com/2008/02/19/not-all-activities-are-best-handled-by-generalists/</link>
		<comments>http://leansoftwareengineering.com/2008/02/19/not-all-activities-are-best-handled-by-generalists/#comments</comments>
		<pubDate>Tue, 19 Feb 2008 18:21:08 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[management]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/2008/02/19/not-all-activities-are-best-handled-by-generalists/</guid>
		<description><![CDATA[This is part 6 of 10 Pitfalls of Agility on Large Projects. In part 5, we talked about how hundreds of people can&#8217;t check into &#8220;main&#8221; every day, and what to do about it. When it comes to generalists vs. specialists, there are huge benefits to maximizing our use of generalists for creative/design engineering &#8212; [...]]]></description>
			<content:encoded><![CDATA[<p>This is part 6 of <a href="http://leansoftwareengineering.com/2007/11/12/10-pitfalls-of-agility-on-large-projects/">10 Pitfalls of Agility on Large Projects</a>.  In part 5, we talked about how <a href="http://leansoftwareengineering.com/2008/01/09/hundreds-of-people-cant-check-directly-into-main-every-day/">hundreds of people can&#8217;t check into &#8220;main&#8221; every day</a>, and what to do about it.</p>
<p>When it comes to generalists vs. specialists, there are huge benefits to maximizing our use of generalists for creative/design engineering &#8212; in contrast to manufacturing activities, where specialization is always the way to go.</p>
<p>But there is a limit on how far you can take generalists, and there is a pro-specialist argument for design, too &#8212; as Corey lays out his case in his thoughtful <a href="http://leansoftwareengineering.com/2007/08/24/in-search-of-one-piece-flow/">one-piece flow</a> post series.</p>
<p>I may not buy the broad knocks against &#8220;craft production&#8221; in that post; or that systems designed around generalists are unlikely to qualify as software engineering. But there is clearly a cross-over point where adding specialists of various types starts becoming a win, and eventually a big win. A good way to analyze where specialization can help is being thoughtful about a lean production flow.</p>
<p><strong>Hand-offs, error, and waste: first, the case against specialization<br />
</strong></p>
<p>Specialization in design suffers from a catch-22 problem: Design specifications are not truly complete until they are rendered at full detail (in software, that means coded). But incomplete specification causes errors during hand-offs due to misunderstandings and disagreements.  Those misunderstandings and the time to resolve them are magnified to a surprising extent by hand-offs between specialists who don&#8217;t share a common foundation of knowledge or perspective.</p>
<p style="padding: 10px; float: left"><a href="http://www.stsc.hill.af.mil/crosstalk/1995/01/Comparis.asp" title="Boehm Sprial"><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/02/boehm_spiral.png" alt="Boehm Sprial" style="width: 128px" /></a></p>
<p>And because design is a knowledge discovery and creation process, we can&#8217;t actually specify a design fully up-front (if we could, it would mean our design isn&#8217;t forging much new ground).  The most effective solution is to <a href="http://www.agilemanagement.net/Articles/Weblog/SpiralModelRevisited.html" target="_blank">spiral down</a> into a design ala <a href="http://en.wikipedia.org/wiki/Spiral_model" target="_blank">Boehm</a>: breadth-first circling around all aspects of a project (these aspects are potential specialized roles) refining the design from high-level to low-level details, with depth-first <a href="http://c2.com/cgi/wiki?SpikeDescribed" target="_blank">spikes</a> into areas with more unknowns or risk.</p>
<p style="padding: 10px; float: right"><a href="http://leansoftwareengineering.com/2008/02/19/not-all-activities-are-best-handled-by-generalists/value-stream-map/" target="_blank" rel="attachment wp-att-280" title="Value Stream Map"><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/02/value_stream_map.thumbnail.gif" alt="Value Stream Map" /></a></p>
<p>Every specialist involved in the design requires an additional step in our <a href="http://en.wikipedia.org/wiki/Value_Stream_Mapping" target="_blank">value-stream map</a>, repeated for each loop we take around the spiral (with some opportunity for parallel processing).  If we think about our value stream map for this process, we realize how this can explode our cycle time, including waiting time for people to get back with feedback.</p>
<p>And every specialist is a resource that now needs to be balanced, a potential bottleneck.  In a generalist-dominated system, it is much easier to attack bottlenecks by shifting resources.</p>
<p>Perhaps most importantly, as we add specialists with different backgrounds, we have less project knowledge that can be implicit or informal: to reduce misunderstanding, we have to capture more of that knowledge explicitly on paper or via longer, bigger meetings.   Achieving consensus on decisions takes much longer. None of this directly adds any value for the customer.</p>
<p><strong>So when does specialization start making sense?</strong></p>
<ol>
<li>When we can get the benefits of both generalization and specialization. We do this by hiring generalists, but having them rotate into specialized roles (like test, project management, architecture, etc.) for the duration of a project or two. This is an excellent strategy to gain the benefits of focus through specialization, while retaining a flexible, low-overhead organization.  <a href="http://www.sei.cmu.edu/tsp/" target="_blank">TSP</a> is a well-known adopter of this strategy. This is also a variation of the recommendation here of <a href="http://leansoftwareengineering.com/2008/02/10/division-of-labor-in-lean-software-development-workflows/">division of labor in lean software development workflows</a>.</li>
<li>As our projects grow, we can bring in specialists that help the project without gating the inner design loop.
<ul>
<li>System test is one of the first and most common of these opportunities. Because at this point the system has been fully specified (that is, the implementation is &#8220;complete&#8221; if not error-free) there is a clear, specialized role to fulfill without impacting the design loop.</li>
<li>Back-end value adding steps like localization (assuming the core group of generalists knows how to create a localizable product).</li>
<li>Specialized roles which are orthogonal to the design loop, like project management. Note that some companies make the mistake of defining hybrid roles like &#8220;Program Manager&#8221; that encompass project management, requirements analysis, high level design, etc. (Microsoft being a poster child).   But this causes all the problems of specialists in the design loop.</li>
</ul>
</li>
<li>Finally, specialization is unavoidable when we can no longer find or afford generalists who can handle the typical roles in your project (interfacing with the customer, design, implementation, effective testing, a degree of self-management, etc.). Some organizations (Google would be a poster child) scale to hundreds or thousands of people without having their hiring and organizational structure over-specialize along those lines. But we&#8217;re not all Google. When our generalists have had trouble over time covering some aspect of the project, it&#8217;s time  to accept the other costs to get the benefits of specialists focused on those problems.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2008/02/19/not-all-activities-are-best-handled-by-generalists/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.558 seconds -->
