<?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</title>
	<atom:link href="http://leansoftwareengineering.com/category/project/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>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>Accounting for opportunity and cost</title>
		<link>http://leansoftwareengineering.com/2009/01/05/accounting-for-opportunity-and-cost/</link>
		<comments>http://leansoftwareengineering.com/2009/01/05/accounting-for-opportunity-and-cost/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 08:19:12 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[management]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/?p=630</guid>
		<description><![CDATA[A universal challenge for technology companies is having more demands to improve the product than we can implement.  This problem gets bigger as we get more successful. Because our capabilities and those demands shift over time &#8212; if we want to maximize the value of what we deliver to the customer, then we want to [...]]]></description>
			<content:encoded><![CDATA[<div style="float: left; padding: 10px"><img src="http://www.gliffy.com/pubdoc/1570544/M.jpg" alt="" /></div>
<p>A universal challenge for technology companies is having more demands to improve the product than we can implement.  This problem gets bigger as we get more successful.</p>
<p>Because our capabilities and those demands shift over time &#8212; if we want to maximize the value of what we deliver to the customer, then we want to tackle things in a prioritized fashion, knowing we simply won&#8217;t get to it all in any one release cycle.</p>
<p>And this prioritized breakdown better supports moving to a <a href="http://leansoftwareengineering.com/2008/11/20/kanban-simulation/" target="_blank">lean/ kanban workflow</a>.</p>
<p>How to best analyze and prioritize all these requests, then? We want to be able to do it systematically, regularly, and have these priorities reflect (the best we can) the sweet spot of both the market value of an idea, and the engineering cost to create it<sup>1</sup>.</p>
<p>This last part is difficult, but especially important.</p>
<p><img style="float:right; padding: 10px" src="http://chart.apis.google.com/chart?chs=160x200&amp;cht=bvg&amp;chtt=Cost: 4 Designs&amp;chd=s:9DVP&amp;chxl=0:|A|B|C|D|&amp;chxt=x" alt="" />Say we have a few alternative design ideas for satisfying a need. Because it may appear &#8220;anything is possible&#8221; in software, we may be tempted to try to deliver exactly &#8220;what the customer wants.&#8221; Let&#8217;s say that&#8217;s design A.  Unfortunately, developing design A could be a bad choice, because it could easily take many times the effort of a very similar and nearly as appealing choice B, just because it asks for some functionality that doesn&#8217;t neatly fit into our existing system and available components around us.  A fundamental principle of software engineering is that even a small shift in requirements can cause a huge shift in cost and/or risk of development.</p>
<p>It&#8217;s similar to choosing to fit within the limitations of available off-the-shelf parts for a home remodel &#8212; it is obviously much cheaper than buying custom.</p>
<p>But &#8220;off the shelf&#8221; is an unfortunately non-obvious, slippery concept in the shifting world of software.  To reuse something, whether it&#8217;s your own code or someone else&#8217;s, there&#8217;s often a chain of &#8220;if&#8221;s you have to walk down: &#8220;We can save 2 months of effort by using this nice library IF we assume customers want Windows .NET only; IF we use C#; IF we take a dependency on .NET Framework 3.5 SP1 to get the libraries we need; IF we only do features A, B, D, and E, and punt on C, because it would require we rewrite and replace the library&#8230;&#8221; and every such path is usually followed by a &#8220;BUT, if we do that, then we are locked into not doing &#8230;&#8221;.</p>
<p>In most cases, developers on your projects won&#8217;t know all the alternatives and consequences until they&#8217;ve delved deeply into the design and usually into the code.</p>
<p>This is one of many reasons why two strategies are so important in getting (re)prioritization right for software engineering:</p>
<ol>
<li>Include both marketing and engineering equally in the decisions of what features to prioritize.  Systemically account for both world views, while coming to one decision.</li>
<li>Plan to adjust your feature set over the course of the project, as your team learns new things.  By allowing for small adjustments and sacrifices in the requirements, you can dramatically lower the project cost and risk.</li>
</ol>
<p>#2 is common advice for a host of reasons.  #1 can be achieved with the right people, and a structured decision making method like <a href="http://leansoftwareengineering.com/2008/09/29/perpetual-multivote/" target="_blank">perpetual multivoting</a>, or a Delphi decision making method that will be described in a future post.</p>
<p>When the right people are paired with the right process in this way, the spigot of innovation will open wider, benefiting both you and your customers.</p>
<p>Notes</p>
<p>(1) We actually want the sweet spot of the triumverate of Voice of the Customer (VOC),  Voice of Technology (VOT), and Voice of the Business (VOB) &#8212; so we can prioritze the work that will deliver the most value to our customer, with the lowest effort and risk, with the best financial outcome for our company.  In many companies, we break these perspecives down (for better or worse) into specializations: sales represents the pure VOC, marketing VOB, and engineering VOT.  So the challenge is &#8212; finding a sweet spot means getting perspectives from several people, often with very different backgrounds and communication styles, who wouldn&#8217;t normally be caught dead getting drinks at the same pub with each other &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2009/01/05/accounting-for-opportunity-and-cost/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My favorite kanban development example</title>
		<link>http://leansoftwareengineering.com/2008/11/11/my-favorite-kanban-development-example/</link>
		<comments>http://leansoftwareengineering.com/2008/11/11/my-favorite-kanban-development-example/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 19:42:00 +0000</pubDate>
		<dc:creator>Corey Ladas</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[simple spiral]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/?p=470</guid>
		<description><![CDATA[It has been a long time in the works, but Clinton Keith&#8217;s article on kanban systems for game development is finally up. It is an excellent description of the why and the how of organizing a process for content-intensive development. Clint has managed to do something which I previously thought improbable: setting a takt time [...]]]></description>
			<content:encoded><![CDATA[<p>It has been a long time in the works, but Clinton Keith&#8217;s article on <a href="http://www.gamasutra.com/view/feature/3847/beyond_scrum_lean_and_kanban_for_.php" target="_blank">kanban systems for game development</a> is finally up.  It is an excellent description of the why and the how of organizing a process for content-intensive development.  Clint has managed to do something which I previously thought improbable: setting a takt time pace for development activities.</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2008/11/11/my-favorite-kanban-development-example/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The customer doesn’t want a release every month</title>
		<link>http://leansoftwareengineering.com/2008/01/04/the-customer-doesnt-want-a-release-every-month/</link>
		<comments>http://leansoftwareengineering.com/2008/01/04/the-customer-doesnt-want-a-release-every-month/#comments</comments>
		<pubDate>Fri, 04 Jan 2008 09:00:42 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[continuous]]></category>
		<category><![CDATA[CTP]]></category>
		<category><![CDATA[daily build]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[robust]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/2008/01/04/the-customer-doesnt-want-a-release-every-month/</guid>
		<description><![CDATA[This is part 4 of 10 Pitfalls of Agility on Large Projects. In part 3, we talked about how we can&#8217;t afford to trust everyone on large teams, and what to do about it. Frequent releases, which are central to both agile and lean methods, sometimes draw a visceral reaction because people fear we can&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>This is part 4 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 3, we talked about how <a href="http://leansoftwareengineering.com/2007/12/07/we-cant-afford-to-trust-everyone-on-larger-teams/">we can&#8217;t afford to trust everyone on large teams</a>, and what to do about it.</p>
<p>Frequent releases, which are central to both agile and lean methods, sometimes draw a visceral reaction because people fear we can&#8217;t keep the product that close to release quality at all times, while still delivering as much innovation.</p>
<p>That is a real challenge of agile/lean methods. But making this argument against short cycles is difficult, so the most common argument ends up being &#8220;the customer doesn’t want a release every month (or every 6 months, or every year &#8230;) anyway.&#8221;</p>
<p>Unfortunately on any project with many customers, <strong>while no customer wants a release every month, there is always one wanting a release right now.</strong></p>
<p>We can deal with that to some extent by having tiers of releases: the single-customer quick fix, the multi-customer patch, the service release, and maybe minor and major releases.  But each of these tiers involves extraordinary cost and waste from duplicate efforts &#8212; waste that can often be avoided if the main release cycle is short enough that customers can get their needs met.</p>
<p>It&#8217;s better to embrace the challenge and compelling benefits of feedback on short cycles.  Here&#8217;s a rough diagram of a typical three-tier set of daily, weekly, and monthly release cycles.</p>
<p><a href="http://leansoftwareengineering.com/wp-content/uploads/2008/01/release_early_and_often.png" title="Release Early and Often"><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/01/release_early_and_often.png" style="border: medium none ; padding: 10px; float: left" alt="Release Early and Often" width="400" /></a></p>
<p>The heart of it is a per-change or, at worst, a daily build (<a href="http://martinfowler.com/articles/continuousIntegration.html">continuous integration</a>).  This build is picked up only by people who are in close contact with the project.  This discipline keeps everyone in sync, and keeps the project from wandering into a broken state.</p>
<p>The weekly build (or some equivalent) is important whether at a large organization (where many remote teams share dependencies) or at a smaller startup (where the salespeople and management interact with the product daily). Tightening up the feedback loop of these internal customer proxies creates transparency, builds trust, and keeps the product from evolving off-track feature-wise.</p>
<p>Releasing something to customers every month can seem daunting in some large organizations.  The biggest of the software beasts (Microsoft) has had <a href="http://www.careers.eweek.com/print_article/Can+Microsoft+Take+a+Page+from+Open+Source/143619.aspx">challenges but also great benefits</a> in doing so. And if you think you have a great plan set in stone (a very detailed set of requirements), all the feedback these releases will generate would seem to be just a source of endless distraction.</p>
<p>Don&#8217;t be foolish.  Unless you&#8217;re delivering a 1-1 functional replacement for some existing product (and how often do we do that?), you desperately need that feedback.  It keeps the team connected with the customer, motivated by the customer, doing right by the customer.  Concerned about opening your kimono to competitors? Limit your audience to a trusted subset, like Apple&#8217;s <a href="https://appleseed.apple.com/cgi-bin/WebObjects/SeedPortal">AppleSeed</a> program and most others do.</p>
<p>Once the team gets used to a cadence of regular releases, the practice becomes the heartbeat of the organization, keeping everyone on track, in touch with reality, and constantly learning.</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2008/01/04/the-customer-doesnt-want-a-release-every-month/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>We can’t afford to trust everyone on larger teams</title>
		<link>http://leansoftwareengineering.com/2007/12/07/we-cant-afford-to-trust-everyone-on-larger-teams/</link>
		<comments>http://leansoftwareengineering.com/2007/12/07/we-cant-afford-to-trust-everyone-on-larger-teams/#comments</comments>
		<pubDate>Fri, 07 Dec 2007 08:55:13 +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/2007/12/07/we-can%e2%80%99t-afford-to-trust-everyone-on-larger-teams/</guid>
		<description><![CDATA[This is part 3 of 10 Pitfalls of Agility on Large Projects. In part 2, we talked about how effective small teams need coordination to make an effective large organization, and what to do about it. When cycles get shorter and our teams become more empowered to react to change, one fear is that accountability [...]]]></description>
			<content:encoded><![CDATA[<p>This is part 3 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 2, we talked about how <a href="http://leansoftwareengineering.com/2007/11/19/effective-small-teams-need-coordination-to-make-an-effective-large-organization/">effective small teams need coordination to make an effective large organization</a>, and what to do about it.</p>
<p>When cycles get shorter and our teams become more empowered to react to change, one fear is that accountability will get lost in all those changes.</p>
<p>Specifically, when something goes wrong, what is the root cause?  Are my people failing? our processes failing? our plans unrealistic?  How can management learn how to head off these failures in the future, if we aren&#8217;t making commitments and measuring progress against them?</p>
<p>Step one is to take some of this pressure off  &#8212; in fact, to embrace failure as a path to learning, and taking a statistical approach to making the most of it.</p>
<p>Like a pharmaceutical firm screening new compounds, or venture capitalist building a portfolio of investments &#8212; a manager in a high-risk domain needs strategies to spread the bets to maximize opportunity while minimizing overall risk.   This is basically <a href="http://www.agilemanagement.net/Articles/Weblog/SetBasedDesign.html">Set-Based Design</a> (Toyota&#8217;s Set-Based Concurrent Engineering).</p>
<p>Software development, in particular, is a research and development activity suited more to this approach, and much less of a traditional production activity.</p>
<p>Step two is creating an environment with much more transparency &#8212; it&#8217;s not about trusting people to execute to plan, rather it&#8217;s about trusting people to be transparent about the true progress and status of the project, so that everyone can adjust accordingly.</p>
<p><a href="http://leansoftwareengineering.com/2007/10/27/kanban-bootstrap/"><img src="http://leansoftwareengineering.com/wp-content/uploads/2007/11/kanban_bug_2.jpg" style="padding: 10px; float: left; width: 320px" /></a><a href="http://leansoftwareengineering.com/2007/10/27/kanban-bootstrap/">One mechanism is a public kanban board</a> like the kind Corey has been exploring on this blog (from work with David Anderson at Corbis).  By watching the board over time, throughput of the team and bottlenecks within the team become clear.</p>
<p>An electronic version is important if there are people (dependent teams, remote teams, or upper management) that can&#8217;t huddle around the board.</p>
<p style="clear: both">&nbsp;</p>
<p><a href="http://bdn1.borland.com/borcon2004/article/paper/0,1963,32096,00.html" title="Cumulative Flow Diagram"><img src="http://leansoftwareengineering.com/wp-content/uploads/2007/12/cfd.gif" alt="Cumulative Flow Diagram" style="padding: 10px; float: right; width: 320px" /></a>A Cumulative Flow Diagram is an electronic alternative that can be a great way to both summarize the flow of value, gain visibility into the history, and see important management events (like estimation troubles, or WIP getting out of hand, or new priorities causing the plan to grow out of control). This CFD is again from David Anderson, as described in his 2004 BorCon presentation.</p>
<p>In a future post, we&#8217;ll look at a way to create and manage by CFDs, even when each kanban (or feature) is not similarly sized &#8212; this involves also collecting time data (which then has other uses).</p>
<p>And, of course, if rework and bugs are tracked separately (as they usually are today), then traditional bug charts are critical to management.</p>
<p>Should a small team of 4-6 developers with a strong process like Extreme Programming layer this kind of data collection on to their process? Probably not.  But as teams grow to 15, 50, or beyond &#8212; this kind of transparency is critical glue to keep management and teams coordinated, even while allowing each individual and each small group to work on short cycles and be highly responsive to change.</p>
<p>On your projects, have you seen other forms of data collection that are both lightweight, keep everyone in touch with reality, and help build trust?</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2007/12/07/we-cant-afford-to-trust-everyone-on-larger-teams/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Effective small teams need coordination to make an effective large organization</title>
		<link>http://leansoftwareengineering.com/2007/11/19/effective-small-teams-need-coordination-to-make-an-effective-large-organization/</link>
		<comments>http://leansoftwareengineering.com/2007/11/19/effective-small-teams-need-coordination-to-make-an-effective-large-organization/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 09:00:02 +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/2007/11/19/effective-small-teams-need-coordination-to-make-an-effective-large-organization/</guid>
		<description><![CDATA[This is part 2 of 10 of the 10 Pitfalls of Agility on Large Projects. In part 1, we talked about how planning a month or less ahead is not enough on a very large project, and what to do about it. Here&#8217;s some of why people say that long-term, full-detail plans are essential: You [...]]]></description>
			<content:encoded><![CDATA[<p>This is part 2 of 10 of the <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 1, we talked about how <a href="http://leansoftwareengineering.com/2007/11/14/planning-a-month-or-less-ahead-is-not-enough/">planning a month or less ahead is not enough</a> on a very large project, and what to do about it.</p>
<p>Here&#8217;s some of why people say that long-term, full-detail plans are essential:</p>
<ol>
<li>You need the detailed work breakdown structure through the end of the project to produce estimates.</li>
<li>And you need estimates to schedule handoffs, deliverables, and other dependences between teams.</li>
<li>And as things do change, you need a plan through which to communicate those changes.</li>
</ol>
<p>How can we satisfy these needs while still allowing small teams latitude to adapt and be agile?</p>
<p>Concern #1 is a red herring of sorts. Estimates constructed from a detailed WBS are not the most accurate, if you&#8217;re in a domain with significant unknowns (like most new product development).  In these domains, you&#8217;ll get much better estimates from other methods like an experienced expert or group of experts using a technique like Wideband Delphi. For more, see a book like  McConnell&#8217;s <a href="http://www.amazon.com/gp/product/0735605351?ie=UTF8&amp;tag=bernieblog1-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0735605351">Software Estimation: Demystifying the Black Art</a><img src="http://www.assoc-amazon.com/e/ir?t=bernieblog1-20&amp;l=as2&amp;o=1&amp;a=0735605351" style="border: medium none  ! important; margin: 0px ! important" border="0" height="1" width="1" /></p>
<p>#2 is a dominant concern for organizations with long internal lead times.  The motivation and techniques for attacking this problem in other ways is what lean thinking is all about. In short, agile/lean teams are much better equipped to handle changes in other teams&#8217; plans, so they don&#8217;t need those plans to be as firm.  It&#8217;s a self-reinforcing benefit of shorter cycles that pays off in spades.  The trick is keeping the peace during the (often long) transition period where an organization has a mix of long-cycle and short-cycle teams. These solutions to #3 can help during this transition.</p>
<p>Concern #3 speaks to allowing your high and low level plans to evolve as you progress and learn.   But how do you keep them in sync?</p>
<p><img src="http://leansoftwareengineering.com/wp-content/uploads/2007/11/topdownbottomup.png" alt="Top Down and Bottom Up" /></p>
<ul>
<li>Have top-down goals and priorities that are clear about the customer and business need, but that don&#8217;t over-anticipate the technology to best fulfill that need.</li>
<li>Be prepared to take top-down input and provide bottom-up feedback as part of your regular planning cycle (e.g. Scrum&#8217;s monthly sprint planning).
<ul>
<li>For inputs, the Scrum Product Backlog and processes around it are an effective way to turn top-down priorities into actionable technical workitems.</li>
<li>For feedback, provide actuals. In order to keep the trust of the organization, some kind of actuals in terms of feature throughput, earned value, or time data, etc. are essential. If agile teams &#8220;go dark&#8221; on a large organization, it becomes harder maintain trust when things go bad (as they invariably will from time to time on a large project).</li>
<li>For feedback, provide new estimates on the larger goals, based on this last cycle&#8217;s progress on specific workitems.  To make this feasible, use a fast group estimation method like  <a href="http://www.planningpoker.com/detail.html">planning poker</a> or its elder kin, <a href="http://web.archive.org/web/20060208062209/http://www.processimpact.com/articles/delphi.html">wideband delphi</a>.</li>
</ul>
</li>
<li>As the size of the team goes up and dependencies between teams get more tangled, coordination on just a monthly basis isn&#8217;t enough. Getting information more frequently than your usual planning cycle (or getting your planning cycle down to one or two week sprints) may become essential.   The diagram above says weekly (which might match an org with more than 6-8 Scrum teams).
<p>This might also be the threshold where project management specialists are called for &#8212; don&#8217;t distract your project leads with sub-sprint communication and coordination between teams.  But also don&#8217;t lose Scrum&#8217;s designed benefit of protecting teams from constant interrupts &#8212; the team controls whether their plan changes within a sprint.  Project Managers can help make sure status and communication flow between teams even during a sprint, but they (like all stakeholders) should be prepared to hold new work and priority changes until teams plan their next sprint.</li>
</ul>
<p>If you&#8217;re adopting short-cycle methods in a (long-cycle) large organization &#8212; what are your pain points that weren&#8217;t covered here. And how have you adapted?</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2007/11/19/effective-small-teams-need-coordination-to-make-an-effective-large-organization/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Planning a month or less ahead is not enough</title>
		<link>http://leansoftwareengineering.com/2007/11/14/planning-a-month-or-less-ahead-is-not-enough/</link>
		<comments>http://leansoftwareengineering.com/2007/11/14/planning-a-month-or-less-ahead-is-not-enough/#comments</comments>
		<pubDate>Wed, 14 Nov 2007 09:25:28 +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/2007/11/14/planning-a-month-or-less-ahead-is-not-enough/</guid>
		<description><![CDATA[This is part 1 of 10 of the 10 Pitfalls of Agility on Large Projects. One of the most common, valid critiques of agile or lean processes is the time horizon of planning. Scrum focuses on one month sprints. XP advises shorter iterations (2 week, typical). Lean focuses on a single piece (one feature, in [...]]]></description>
			<content:encoded><![CDATA[<p>This is part 1 of 10 of the <a href="http://leansoftwareengineering.com/2007/11/12/10-pitfalls-of-agility-on-large-projects/">10 Pitfalls of Agility on Large Projects</a>.</p>
<p>One of the most common, valid critiques of agile or lean processes is the time horizon of planning.  Scrum focuses on one month sprints. XP advises shorter iterations (2 week, typical). Lean focuses on a single piece (one feature, in the case of design projects), delivered in the shortest possible time.</p>
<p>To many organizations and many people &#8212; especially when they first manage projects &#8212; these kinds of planning horizons are crazy and negligent. Rather, they strive to plan in as much detail as possible, out to the end of the project. They want to identify critical paths, plan resources, etc. It&#8217;s obvious, right?  Ah, but I see you&#8217;re smiling.</p>
<p>Unfortunately, what you may know (but isn&#8217;t obvious to everyone) is this over-planning can be disastrous when there is any level of risk or significant unknowns.  Almost any non-trivial software development project would fall in this category.</p>
<p>Usually, this highly detailed initial plan falls quickly out of touch with reality, and must be ignored by the team after a certain point. Good project managers will try to adapt the plan, but if they built in too much detail initially, they&#8217;ll find keeping it up to date impossible. Either way, this all can be damaging, as now the team often feels like they&#8217;re confused and failing, and management or stakeholders can quickly get dangerously out of touch &#8212; they&#8217;re still looking at and expecting that initial plan.</p>
<p>Beyond that, there are a host of other harms. First among them that you&#8217;re trying hard to lock down your plan at the earliest possible stage of the project, when you have the least understanding of what customers want, what the technology is capable of, and how quickly your team will be able to deliver it. You&#8217;ve not explored or mitigated any of the risks yet.  You&#8217;ve basically committed to be as unresponsive as possible to the new things you learn as the project unfolds.</p>
<p>This is such a common problem &#8212; so much pain and so many failed projects could be avoided if it could be solved. And a simple conceptual solution is widely known, but is under-adopted.</p>
<p>It&#8217;s called Rolling Wave Planning.  And it&#8217;s one effective way to unify the worlds of agile/lean and traditional project planning.  Here&#8217;s a crude diagram illustrating how plans are detailed in the short term, but get progressively more generalized and flexible in the longer term.</p>
<p><img src="http://leansoftwareengineering.com/wp-content/uploads/2007/11/rolling-wave-planning.png" alt="Rolling Wave Planning" /></p>
<p>How does this work?</p>
<ul>
<li>Identify just a few strategic, long-term product line and product goals. If they don&#8217;t fit on one side of one sheet of paper, they&#8217;re probably too long. These might look 1-2 years out for a large organization.</li>
<li>Expand that into a short, prioritized list of near-term problems for your team to solve in the coming year.</li>
<li>Bring in your more technical people to produce a short list of functionality the organization is capable of delivering in the coming months to make progress towards solving those problems.  There should be lots of room to scale bells and whistles up or back, and especially to make technical choices about how to implement the functionality &#8212; you will reap significant efficiencies if your team can adjust as they learn more about the technologies involved and how long things will take to implement.</li>
<li>Involve the whole team to do a detailed work-item level just a few weeks ahead.  If you have a low-risk, well-understood domain, you could choose to approach this as a work breakdown structure with gantt chart and analysis.  If you&#8217;re in a higher-risk domain (like new product development), use Scrum-style monthly sprints or, even better, a lean production flow.  This is the schedule people can rally around for day to day work.</li>
<li>At the end of that shortest planning cycle, percolate your learnings from the small, granular work through to the larger grained goals, then back into your next short-term planning cycle.  The key to making this doable is again to not allow too much detail into the larger goals.  Keep them high-level, meaningful, and always flexible.</li>
</ul>
<p>In short, you match the level of detail to (1) how far out in time you&#8217;re planning and (2) how risky your domain is.</p>
<p>By doing so, you&#8217;ll gain a host of benefits, many of which relate to lean &#8212; reducing work in progress, making decisions at the last responsible moment (when you have the most information), pushing responsibility down and empowering the people who are closest to the problem, and generally being open to feedback and agile in response to the changing forces around your project.</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2007/11/14/planning-a-month-or-less-ahead-is-not-enough/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Dualities: A Pattern Language of Project Mangement</title>
		<link>http://leansoftwareengineering.com/2007/10/21/dualities-a-pattern-language-of-project-mangement/</link>
		<comments>http://leansoftwareengineering.com/2007/10/21/dualities-a-pattern-language-of-project-mangement/#comments</comments>
		<pubDate>Sun, 21 Oct 2007 21:28:28 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[project]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/2007/10/21/dualities-a-pattern-language-of-project-mangement/</guid>
		<description><![CDATA[Change and risks of the unknown are the primary challenges of modern projects &#8212; changes in our team, our understanding of our problem, our market, etc. Experienced project members know that the &#8220;best process&#8221; for our project doesn&#8217;t fall neatly into formulas.  What was a successful strategy in one circumstance may fail completely in a [...]]]></description>
			<content:encoded><![CDATA[<p>Change and risks of the unknown are the primary challenges of modern projects &#8212; changes in our team, our understanding of our problem, our market, etc. Experienced project members know that the &#8220;best process&#8221; for our project doesn&#8217;t fall neatly into formulas.  What was a successful strategy in one circumstance may fail completely in a seemingly similar circumstance. The relationship between our current situation and the best processes to deal with it are non-linear.</p>
<p>Lean thinking is one of the best starting points we have to systematically attack this problem with savvy about continuous improvement, shifting bottlenecks, systems thinking, statistical management, and respect for people on the front lines of the problem.  And it&#8217;s been under-applied in getting us past the breakdown of traditional project management techniques in high-risk domains like software development.</p>
<p>But successful lean companies like Toyota have taken years or decades to build up institutional and cultural knowledge of where to start and how to evolve.  Can we shorten this learning process for other companies or other domains?</p>
<p>Our unique circumstances and the changes around us require a kind of dance to make progress and stay balanced &#8212; sometimes steps forward, others to the side or back.    This non-linear adaptation is very jarring for both our managers and our teams.</p>
<p>We need to find a way to empower people with the savvy to sense dissonance between the process we have vs. the process we need, give them the vocabulary to be able to discuss it, and the power to take action on that dissonance even if the solution is a step in a new direction or even a step back.</p>
<p>One of the best places to start is by attacking the belief that there is &#8220;one right process&#8221; for our teams.</p>
<p>Instead, we drive dialog around the spectrum of possibilities between any two poles or dualities: predictive vs. iterative management, larger vs. smaller batches, top-down vs. bottom up control,  standardized vs. adaptative process, specialist vs. generalist teams, etc.</p>
<p>It&#8217;s not about choosing one or the other .. it&#8217;s about where you are on the spectrum.</p>
<p>As managers, we probe our teams, asking if they should be trying &#8220;more of this&#8221; or &#8220;less of that&#8221;. We can go forward or back on a spectrum, and we can step &#8220;to the side&#8221; by focusing our energies on a different duality.</p>
<p>What would help &#8212; in fact, what&#8217;s almost essential &#8212; is a pattern language to give names to abstractions and make dialog and discussion about where we are and where we&#8217;re going possible.  Unfortunately, the PM pattern languages you&#8217;ll find today are based on absolutes (an assumption of one right process). We&#8217;re looking for one based on dualities &#8212; opposing forces or alternatives that we must balance to achieve the best-fit process for our circumstance, for this one point in time. We want terminology that ask us to think, adapt, and step in whatever direction our circumstance calls for.</p>
<p><a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FBalancing-Agility-Discipline-Guide-Perplexed%2Fdp%2F0321186125&amp;tag=bernieblog1-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">Boehm</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" /> (balance) and <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FAgile-Software-Development-Cooperative-Game%2Fdp%2F0321482751&amp;tag=bernieblog1-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">Cockburn</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" /> (meta-methodologies) are wonderful starting points for this kind of thinking, at least in software developement.  I&#8217;m sure there are others &#8212; please add a comment if you want to point out a resource.</p>
<p>Can we discover and build this pattern language of adaptive project management &#8212; and make it a an approachable, practical tool for today&#8217;s managers and project teams?</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2007/10/21/dualities-a-pattern-language-of-project-mangement/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

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