<?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; project management</title>
	<atom:link href="http://leansoftwareengineering.com/category/project-management/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.2.1</generator>
		<item>
		<title>Multi-site teams: travel and the half life of trust</title>
		<link>http://leansoftwareengineering.com/2009/08/06/multi-site-teams-travel-and-the-half-life-of-trust/</link>
		<comments>http://leansoftwareengineering.com/2009/08/06/multi-site-teams-travel-and-the-half-life-of-trust/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 04:07:47 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/?p=1951</guid>
		<description><![CDATA[If you&#8217;re working on a distributed creative team, especially ones spread across timezones, today&#8217;s post from Steve McConnell is a great reminder that you&#8217;re not alone in your struggles: Travel restrictions and offshore development The article is right: there&#8217;s currently no substitute for travel at those kinds of intervals.  &#8220;The half-life of trust is 6 [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">If you&#8217;re working on a distributed creative team, especially ones spread across timezones, today&#8217;s post from Steve McConnell is a great reminder that you&#8217;re not alone in your struggles:</p>
<p class="MsoNormal"><a href="http://forums.construx.com/blogs/stevemcc/archive/2009/08/06/travel-restrictions-and-offshore-development.aspx" target="_blank">Travel restrictions and offshore development<br />
</a></p>
<p class="MsoNormal">
<p class="MsoNormal">The article is right: there&#8217;s currently no substitute for travel at those kinds of intervals.  &#8220;The half-life of trust is 6 weeks&#8221; rings true.</p>
<p class="MsoNormal">Even in normal times, this is a heavy cost to bear, both for the company and for the people on the road.<span> I&#8217;ve been at companies that </span>have handled this “ok”, but never seen it be 100% positive and pleasant &#8212; this is a very hard problem.  There’s a reason why Microsoft largely kept everyone on the same campus for almost 20 years up to the late 90s &#8212; and a reason why you should think about keeping things simple that way as long as you can, too.<span> </span></p>
<p class="MsoNormal">If staying single-site as long as possible is the first line of defense, the second line of defense is trying our best to minimize and partition multi-site development in careful ways &#8212; e.g. into distinct products, projects, or features &#8212; to minimize trust issues and cost of communication.  But this can only go so far in avoiding the issues of trust entirely. At some point (likely sooner rather than later), the worlds must meet, rules must be followed, decisions must align, and work on the product will overlap.</p>
<p class="MsoNormal">
<p class="MsoNormal">So, then, how do we design our processes and communication to be multi-site friendly? What processes and culture do we insist stay common or allow to be flexible?  How do we maintain the trust to coordinate the things that we must?  How can we hire more forgiving personalities for whom trust and camaraderie come easier?</p>
<p class="MsoNormal">There are certainly lessons to be learned from highly distributed open source projects (in particular, the tools they use and the ways they use them), but also cautionary tales of the borderline chaos that can ensue when the ties that bind are so loose and light.  And I&#8217;m waiting for a good tell-all to be written on Google and some other other more recent companies who have embraced highly distributed organizations.</p>
<p class="MsoNormal">
<p class="MsoNormal">Going back to Steve&#8217;s post and how there&#8217;s no substitute today for spending time in person: we can only  hope someone eventually finds a way to make multipoint video conferencing and techniques of remote socialization and team-building much more effective.<span> It&#8217;d be great to not consume the time and energy of flying all over the planet &#8212; but that day doesn&#8217;t yet appear to be here.<br />
</span></p>
<p class="MsoNormal">
<p class="MsoNormal">Perhaps we could start with some company-sponsored network gaming to have some fun and get to know each other better? &#8230; of course, we then must decide which of the Bangalore, San Francisco, or Cambridge teams we&#8217;ll ask to get up at 7am to play.  Hmmm.</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2009/08/06/multi-site-teams-travel-and-the-half-life-of-trust/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Completion queue as incremental throttle</title>
		<link>http://leansoftwareengineering.com/2008/06/20/completion-queue-as-incremental-throttle/</link>
		<comments>http://leansoftwareengineering.com/2008/06/20/completion-queue-as-incremental-throttle/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 22:29:15 +0000</pubDate>
		<dc:creator>Corey Ladas</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/?p=408</guid>
		<description><![CDATA[.limg { width:200px;border:0;float:left;margin-right:1em } .rimg { width:200px;border:0;float:right;margin-left:1em } In the last two posts, we&#8217;ve discussed some useful properties of internal workflow queues: queue states between processes can provide an early warning of process breakdowns local work-in-process limits serve to slow down a malfunctioning workflow and free up resources to fix it queues can sometimes be [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css"> 
.limg { width:200px;border:0;float:left;margin-right:1em } 
.rimg { width:200px;border:0;float:right;margin-left:1em } 
</style>
<p>In the last two posts, we&#8217;ve discussed some useful properties of internal workflow queues:</p>
<ul>
<li>queue states between processes can provide an early warning of process breakdowns</li>
<li>local work-in-process limits serve to slow down a malfunctioning workflow and free up resources to fix it</li>
<li>queues can sometimes be combined to reduce the total work-in-process while still preserving their buffering function</li>
</ul>
<p>I gave an <a href="http://leansoftwareengineering.com/2008/06/12/queue-utilization-is-a-leading-indicator/#example">example</a> of workflow throttling, and suggested there was another configuration of those internal queues that could respond more smoothly and gracefully than the simple, independent queues given in the example.</p>
<p>In order to pull a work item, there has to be a place to pull it from, and there should be some way to distinguish work that is eligible to be pulled from work that is still in process.   At the same time, there has to be a place to put completed work when you are done with it.  A completion queue serves both these functions.  </p>
<p><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/06/completion_queue-001.jpg" class="rimg" />In this case, we can have up to 3 items in the &#8220;specify&#8221; state AND we can have up to 3 items waiting for the next state in the workflow.  The team can pull new work into &#8220;specify&#8221; whenever there are fewer than 3 work items in process.  If there are already 3 work items in process then the team will have to wait until something is moved into the completion queue.  If there is some kind of blockage downstream, first the completion queue will fill up, THEN the specify queue will fill up, THEN the specify process will stall.  And when it stalls, it stalls all at once.  The flow is either on or off, there&#8217;s no middle speed, and it keeps going until it stalls.</p>
<div style="clear:both"></div>
<p><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/06/completion_queue-002.jpg" class="rimg" />In another example, we still have a busy state and a complete state, but the token limit is shared between them.  In this case, we can have 4 items in process OR 4 waiting.  Or we can have (3 busy + 1 waiting) OR (1 busy + 3 waiting).  </p>
<p>In the ideal case of 3 busy and 1 waiting, this queue works just like the first example does.  However, if work starts to accumulate in the &#8220;complete&#8221; state, then the &#8220;specify&#8221; state will incrementally throttle down.  The effective WIP limit for &#8220;specify&#8221; goes from 4->3->2->1->0 as more items are completed ahead of the rate of downstream intake. So, the process slows before it stops, and it slows much sooner than it would have under the independent queues.</p>
<p>What&#8217;s more, even though it operates in the same way in the normal case, it does it with two fewer kanban in the system.  Fewer kanban, with gradual throttling and smoother flow, should result in lower lead times.</p>
<div style="clear:both"></div>
<p>With this in mind, let&#8217;s reconsider our scenario from the previous topic:</p>
<table style="font-style:italic">
<tr>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/06/completion_queue-009.jpg" class="limg" style="width:360px"/></td>
<td>1. Something is going wrong in the design process, but nobody knows it yet.</td>
</tr>
<tr>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/06/completion_queue-011.jpg" class="limg" style="width:360px"/></td>
<td>2. The specify-complete queue starts to back up, thereby throttling down the WIP limit for specify.  A resource is freed as a result, who should now inquire into the cause of the backup, which may only be random variation.  The code process continues to complete work and pull from the existing backlog.</td>
</tr>
<tr>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/06/completion_queue-012.jpg" class="limg" style="width:360px"/></td>
<td>3. Code state begins to starve and specify state throttles down another level.  Two more people are released as a result.  There&#8217;s more than enough free resources now to either fix the problem or shut down the process.</td>
</tr>
<tr>
<td><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/06/completion_queue-013.jpg" class="limg" style="width:360px"/></td>
<td>4. The stall completes by flushing out the specify and code states.</td>
</tr>
</table>
<p>It still takes a while for the system to stall completely.  The difference is that it <em>begins</em> stalling immediately, and when it does stall, it stalls with less WIP.  For equivalent throughput, this pipeline should operate with fewer kanban and less variation in WIP, and therefore should have smoother flow and shorter lead times.  It should respond faster to problems and free up resources earlier to correct those problems.  </p>
<p>These shared completion queues might be the most common type of workflow queue.  There are a couple of other types that we use, and we&#8217;ll take a look at those in a future post.</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2008/06/20/completion-queue-as-incremental-throttle/feed/</wfw:commentRss>
		<slash:comments>1</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>Spreadsheet example for a small Kanban team</title>
		<link>http://leansoftwareengineering.com/2007/10/31/spreadsheet-example-for-a-small-kanban-team/</link>
		<comments>http://leansoftwareengineering.com/2007/10/31/spreadsheet-example-for-a-small-kanban-team/#comments</comments>
		<pubDate>Wed, 31 Oct 2007 07:51:41 +0000</pubDate>
		<dc:creator>Corey Ladas</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/2007/10/31/spreadsheet-example-for-a-small-kanban-team/</guid>
		<description><![CDATA[We&#8217;ve been talking about room-sized visual heijunka/andon boards for large teams, but it&#8217;s also reasonable to apply the kanban idea to smaller projects. Much of the current discussion about kanban in Agile circles seems to be of a simpler variety than the enterprise-scale concepts that David and I have been so concerned with. I think [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been talking about room-sized visual heijunka/andon boards for large teams, but it&#8217;s also reasonable to apply the kanban idea to smaller projects.  Much of the current discussion about kanban in Agile circles seems to be of a simpler variety than the enterprise-scale concepts that David and I have been so concerned with.  I think it&#8217;s important to recognize that kanban is more of a principle or pattern than it is a process.  It&#8217;s not at all surprising that it would take different forms, and I would completely encourage that way of thinking.</p>
<p>Lean Production is different from either Mass Production or Craft Production.  You can apply a kanban system to a mass production system like the SDLC in order to move it in the lean direction.  You can also apply a kanban system to a craft production system like Scrum in order to move it in the lean direction.  From two very different starting points, you can end up at the same outcome.</p>
<p>A few years back, I was developing a training program on Lean and Theory of Constraints concepts for product development.  We started managing the project using Scrum, but the subject matter practically begged us to evolve the process in a leaner direction.</p>
<div style="clear:both;">There were a number of things that were bothering me about Scrum:</div>
<ul>
<li>I wanted to change the backlog more often than the timebox allowed</li>
<li>At any given moment, only one item in the backlog needs to be prioritized.  Further prioritization is waste.</li>
<li>I wanted a specific mechanism to limit multitasking</li>
<li>I hated estimating</li>
<li>I hated negotiating Sprint goals</li>
<li>Sprint planning implicitly encourages people to precommit to work assignments</li>
<li>The ScrumMaster role is prone to abuse and/or waste</li>
<li>Burndowns reek of Management by Objective</li>
<li>Preposterous terminology</li>
</ul>
<p>The thing that I wanted most was the smoothest possible flow of pending work into deployment, and Scrum just didn&#8217;t give me that.  So, I proposed a simple spreadsheet-based method:</p>
<ul>
<li>A daily standup</li>
<li>A single (roughly) prioritized backlog</li>
<li>Each person on the team is responsible for exactly two work items by the end of any standup</li>
<li>Every work item is associated with a workflow, and work item status is indicated by workflow state</li>
<li>A work item requires some kind of peer review and approval in order to be marked complete</li>
<li>New items can be added to the backlog at any time</li>
<li>There is a regular project review</li>
<li>The backlog must be regularly (but minimally) re-sorted</li>
<li>Status reporting is by cumulative flow only</li>
</ul>
<p>One inspiration was a bit of folklore that programmer productivity peaks at 2 concurrent tasks.  One task should be a high-priority primary task, and the other task should be a lower-priority task that you can work on when the first task is blocked.  Another inspiration was the Cumulative Flow Diagram (CFD).  We had been applying the CFD to Sprints as an alternative to the burndown, which makes it perfectly obvious what Scrum&#8217;s limitations are with respect to flow.  Limiting multitasking and deferring the binding of people to tasks could give us at least one smooth stripe on the diagram.  The more you learn to use the CFD, the more useless the burndown chart seems.  For all of the Scrum talk about feedback, the CFD is simply a better indicator.</p>
<p>I&#8217;ve learned some things since then that enhance the original design.  My notion of managing WIP was more of a CONWIP style like Arlo Belshee&#8217;s Naked Planning than the workflow style we use on the big boards.  I required a defined workflow, but not the division of labor that would make internal inventory buffers necessary.  The Boehm priority scheme might blow out the lead time, so I might do 1 small item + 1 larger item, or perhaps make separate service classes.  I might also add a constraint indicator to the workflow.</p>
<p>The revised spreadsheet might look something like this:</p>
<p style="text-align:center;"><img style="margin:1em 1em 1em 1em;" src="http://leansoftwareengineering.com/wp-content/uploads/2007/10/kanban_spreadsheet.png" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2007/10/31/spreadsheet-example-for-a-small-kanban-team/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

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

