<?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; management</title>
	<atom:link href="http://leansoftwareengineering.com/category/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.0</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>3</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>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>Management Improvement Carnival #50</title>
		<link>http://leansoftwareengineering.com/2008/12/20/management-improvement-carnival-50/</link>
		<comments>http://leansoftwareengineering.com/2008/12/20/management-improvement-carnival-50/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 09:00:07 +0000</pubDate>
		<dc:creator>Corey Ladas</dc:creator>
				<category><![CDATA[lean]]></category>
		<category><![CDATA[management]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/?p=516</guid>
		<description><![CDATA[John Hunter asked us to host this edition of the Management Improvement Carnival, and of course, we are delighted to oblige! Here are some recent articles about topics that are near and dear to our hearts. Submit your nominations for management posts to include in future editions of the Carnival. Australia learns about outsourcing costs [...]]]></description>
			<content:encoded><![CDATA[<p>John Hunter asked us to host this edition of the <a href="http://management.curiouscatblog.net/category/carnival/">Management Improvement Carnival</a>, and of course, we are delighted to oblige!  Here are some recent articles about topics that are near and dear to our hearts.  <a href="http://curiouscat.com/management/carnival.cfm">Submit your nominations</a> for management posts to include in future editions of the Carnival.</p>
<table border="0">
<tbody>
<tr>
<td>
<ul>
<li><a href="http://www.evolvingexcellence.com/blog/2008/12/australia-learns-about-outsourcing-costs.html">Australia learns about outsourcing costs</a> by Kevin Meyer:  The decision to outsource work overseas is often driven by a mass-production mentality that yields predictably disappointing results.</li>
<li><a href="http://www.evolvingexcellence.com/blog/2008/12/blinders-of-supply-chain-complexity.html">Blinders of Supply Chain Complexity</a> by Kevin Meyer: Another day, another article trying to figure out how to simplify global supply chains&#8230;</li>
<li><a href="http://www.evolvingexcellence.com/blog/2008/12/examples-of-excellence-starbucks-queue.html">Starbucks queue</a> by Kevin Meyer (sorry just can&#8217;t get enough of Kevin this month):  A simple visual control can help your friendly coffee shop staff level out response times in the face of irregular demand (something about this example looks familiar!).</li>
<li><a href="http://availagility.wordpress.com/2008/11/05/is-kanban-only-suitable-for-mature-teams/">Is kanban only suitable for mature teams?</a> by Karl Scotland:  As Lean methods take root in the world of software development, some familiar questions appear regarding their adoption.</li>
<li><a href="http://blog.nayima.be/2008/10/25/exploit-the-workers/">Exploit the workers!</a> by Pascal Van Cauwenberghe:  A provocatively titled anecdote about applying Theory of Constraints to software development teams.</li>
<li><a href="http://www.socialanimal.com/archives/2008/12/14/real-options/">Real Options</a> by Al Priest:  An everyday example of using real options to make decisions under risk and uncertainty.</li>
<li><a href="http://www.gilb.com/tiki-view_blog_post.php?blogId=2&amp;postId=66">Is &#8216;Design To Cost&#8217; better than &#8216;Estimation of Cost&#8217;: I think so!</a> by Tom Gilb.  &#8220;[Time and cost estimates] are an old custom, intended to prevent overruns, and to give management some feeling that the job will get done in time at a reasonable cost. But they do not in fact prevent overruns or assure value.&#8221;</li>
<li><a href="http://blogs.msdn.com/eric_brechner/archive/2008/10/01/nailing-the-nominals.aspx">Nailing the nominals</a> by Eric Brechner.  It is easy for engineers or methodologists to get carried away with exotic optimizations.  You have to start with everyday discipline about the basics.</li>
<li><a href="http://shapingsoftware.com/2008/12/02/7-habits-of-highly-effective-program-managers/">7 habits of highly effective program managers</a> by J.D. Meier:  Microsoft has a lot of Program Managers.  What do the some of the best ones have in common?</li>
<li><a href="http://itmanagement.earthweb.com/features/article.php/3771746/Are+Cocky+Developers+Worth+It?.htm">Are cocky developers worth it?</a> by  Eric Spiegel.   Prima donna software developers can be encouraged by a heroic &#8220;performance review&#8221; culture.   But as Mary Poppendieck says, software development is a team sport.</li>
<li><a href="http://jeffreykrames.com/2008/12/05/peter-where-do-middle-managers-come-from/" target="_blank">Where did middle managers come from?</a> by Jeffrey Krames:  A new anecdote from a conversation with Peter Drucker, which leaves the reader wondering&#8230;where should middle managers be heading?</li>
</ul>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2008/12/20/management-improvement-carnival-50/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Getting lean to survive the downturn</title>
		<link>http://leansoftwareengineering.com/2008/11/10/getting-lean-to-survive-the-downturn/</link>
		<comments>http://leansoftwareengineering.com/2008/11/10/getting-lean-to-survive-the-downturn/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 21:04:33 +0000</pubDate>
		<dc:creator>Bernie Thompson</dc:creator>
				<category><![CDATA[lean]]></category>
		<category><![CDATA[management]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/?p=467</guid>
		<description><![CDATA[Promising startups are exiciting. But during a downturn, they can also feel a little too exciting. Funded startups are always on the clock:  Time till the next funding round. Time till cash flow positive. Time till a public offering. In a severe downturn the clock keeps ticking, but it becomes harder to bet on closing [...]]]></description>
			<content:encoded><![CDATA[<p>Promising startups are exiciting. But during a downturn, they can also feel a little too exciting.</p>
<p>Funded startups are always on the clock:  Time till the next funding round. Time till cash flow positive. Time till a public offering.</p>
<p>In a severe downturn the clock keeps ticking, but it becomes harder to bet on closing that next big sale or funding round.  Financial visibility declines.  Management must aggressively take action to steer the corporate ship to account for the increased external risk and uncertainty: </p>
<div>
<ol>
<li>Re-prioritize to focus on the highest probability, nearest term revenue opportunities</li>
<li>Cut spending to preserve cash</li>
<li>Look carefully for unique opportunities in the surrounding turmoil</li>
</ol>
</div>
<p>The more severe the downturn, the more aggressively these actions should be taken.  Yet traditional organizations are poorly equipped to handle this change:</p>
<ul>
<li>Forward-looking plans and budgets that were carefully set in stone, now break rather than bend.</li>
<li>Severe bottlenecks appear throughout the organization as the ratios between dependent teams and specialists get thrown off by hiring freezes or layoffs (“We were counting on that team to deliver their part of the project, but they’re all laid off!” or “How can we hit the same schedule with half the test team?”)</li>
<li>An organization that isn’t practiced at delivering value on short cycles and dynamically re-prioritizing, will find their plans churned and capacity to deliver shredded.</li>
</ul>
<p>The reason why lean thinking is so powerful is it embraces change. When the market is in turmoil, change is legion and organizations that apply lean thinking stand the best chance of surviving, or even thriving.  To best satisfy the 3 goals above, take steps in the lean direction to:</p>
<ol>
<li>Get closer to the customer. Listen to their priorities. Tighten the feedback loop.</li>
<li>Break projects into smaller pieces and deliver them on shorter cycles.</li>
<li>Drive the organization with clear but dynamic priorities, rather than long-term dates, deliverables, and deadlines. </li>
<li>Break dependencies between projects and between specialists.  Give small teams everything they need to deliver on their own faster schedule.</li>
<li>As change churns the organization, regularly ask “where is our bottleneck now?” and do what it takes to resolve it.</li>
<li>Break the “union mindset” of specialization. Ask everyone to attack the bottleneck wherever it is.  Retain generalists who can thrive in an environment of change.</li>
<li>Don’t let people and organizations be spread thin.  Focus on the highest value deliverables.  Do less, but get those priorities done faster.</li>
</ol>
<p>These are all great practices for any company, especially a creative startup.  Lean thinking gives an organization the tools to think about opportunities and capacity in a highly dynamic, scalable way. In a downturn, nothing could be more critical or valuable.  The urgency of a downturn may, in fact, be the best opportunity to adopt changes that will pay off even more when things turn up again.</p>
<p>In a nasty downturn, do not ask for whom the bell tolls.  Embrace change, get lean, and make darn sure the bell does not toll for thee.</p>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2008/11/10/getting-lean-to-survive-the-downturn/feed/</wfw:commentRss>
		<slash:comments>6</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>
		<item>
		<title>Division of Labor in Lean Software Development Workflows</title>
		<link>http://leansoftwareengineering.com/2008/02/10/division-of-labor-in-lean-software-development-workflows/</link>
		<comments>http://leansoftwareengineering.com/2008/02/10/division-of-labor-in-lean-software-development-workflows/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 04:47:59 +0000</pubDate>
		<dc:creator>Corey Ladas</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lean]]></category>
		<category><![CDATA[management]]></category>

		<guid isPermaLink="false">http://leansoftwareengineering.com/2008/02/10/division-of-labor-in-lean-software-development-workflows/</guid>
		<description><![CDATA[Imagine we have team of three people, each working as generalists in an agile-style process. They are all qualified and competent workers, and correctly execute the process that they intend to follow. They break their work up into customer-valued features that each take a few days to complete through integration. One developer is a true [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://leansoftwareengineering.com/wp-content/uploads/2008/02/wrigley_field_720.jpg" style="float:right;width:360px;margin-left:10px" />Imagine we have team of three people, each working as generalists in an agile-style process.  They are all qualified and competent workers, and correctly execute the process that they intend to follow.  They break their work up into customer-valued features that each take a few days to complete through integration.</p>
<p>One developer is a true generalist.  It takes her a couple of days to produce a testable functional specification and high-level design.  It takes her a couple of days to produce a detailed design and working code.  And it takes her a couple of days to verify and validate everything, from code correctness to functional acceptance.</p>
<p>Another developer is basically competent at all of these things, but he is a more stereotypically geeky programmer who can crank out high-quality code for most product features in a day, on average.  It takes him a bit longer than the others to do the customer-facing part, usually about 4 days for analysis and high-level design.  He&#8217;s also a bit slower with the validation, because again, if it ain&#8217;t writing code, he&#8217;s just not that excited about it.  And for all the time he spends on specs, they are still mediocre, which results in rework in spite of his good coding skills.</p>
<p>The third developer, by contrast, has a sharp eye for design and is very friendly and sympathetic to the business and the customers.  He knows the business so well that most of his specs only take a day to write.  He&#8217;s a competent coder, but a bit old-school in his style and it takes him a bit longer with the current technology.  Plus, his heart isn&#8217;t quite in it the way it used to be.  It takes him three days to develop good code that everybody will feel comfortable with.  On the other hand, since his specs are so clean and thorough, and he has a good rapport with the business, the testing usually goes very smoothly in about two days, also (tied for) the best on the team.</p>
<table>
<tr>
<td>
The team, on average, produces features with a cycle time of 6.67 days per feature.  Overall, each team member produces at a similar rate.</p>
<pre>
2d + 2d + 2d = 6d
4d + 1d + 3d = 8d
1d + 3d + 2d = 6d
-----------------
               20 days / 3 features = 6.67 days/feature
</pre>
<p>It is a one-piece flow (per developer), and everybody is always busy with his or her feature.  Nobody ever has to wait to start a new feature.  Other than the personal slack built into the task times, capacity utilization is high.</p>
<p>But imagine if this team of generalists were allowed to focus only on the skills that they were best at:</p>
<pre>
1d + 1d + 2d = 4d
1d + 1d + 2d = 4d
1d + 1d + 2d = 4d
-----------------
               12 days / 3 features = 4 days/feature
</pre>
<p>Same people, same features, 40% improvement in productivity&#8230;  </p>
<p>&#8230;if only it were that simple, because there is also a cost here.  If they organize themselves as a pipeline, then that pipeline becomes subject to the Theory of Constraints.  If they apply Drum-Buffer-Rope, then the testing task sets the pace at 2 days.  That means the total cycle time per feature is:</p>
<p>2d + 2d + 2d = 6d</p>
<p>&#8230;still an improvement over the generalists, but only by 10% (!).  On the other hand, capacity utilization is now low, because two people now spend half of their time idle, waiting for the drum.  Since they are the same people who were cross-trained enough to work as generalists in the first example, is there anything that they can do to speed up the testing process which has been otherwise unimproved?  Surely the answer must be yes.</p>
<p>Suppose each of the first two developers spends an extra half of a day doing additional work to optimize the testing process, so that testing only takes 1.5 days to complete instead of two.  Introducing a pipeline might also introduce a new communication cost, but imagine that the extra half-day spent by each of the first two developers is in collaboration on the two features they have in process, both communicating and optimizing testability.</p>
<p>The total labor expended is now 4.5 days per feature, but all of the idle time has been stripped out, so that the total cycle time per feature is also 4.5 days.  That is a real 33% improvement in throughput.  Same people, same features, same skills, 33% faster.  It is only an example, but is it not a realistic example?</p>
<p><strong>What about training?</strong></p>
<p>An enthusiastic and observant Agilist might, by this point, object that we could improve the productivity of the team in the first example by improving their skills with training.  That is indeed true.  We could provide such training, and it may very well yield improvement.  </p>
<p>We could also provide training to the team in the second example, which might also yield improvement.  What sort of improvement might we expect in each example?</p>
<p>The generalist model suggests that we help each team member improve their weak skills to bring them up to par with the rest of the team.  In any model, there is something to be said for cross-training because it facilitates communication and allows the business to adapt to change.  But investing in training to overcome weaknesses is a classic management mistake.</p>
<p>In <a href="http://www.amazon.com/First-Break-All-Rules-Differently/dp/0684852861" target="_blank">First, Break All the Rules</a>, Buckingham and Coffman make a compelling and well-researched case that the best return on investment in training comes from enhancing a worker&#8217;s strengths, rather than overcoming his weaknesses.  The geeky coder may have a lack of charm or graphic design sensibility that no amount of training can ever overcome, but picking up a new coding technique or web application framework might pay immediate dividends.</p>
<p>The more specialized team has another built-in advantage in training because they simply get more practice with their currently deployed skills.  The analyst gets more training on analysis, which he already has an aptitude for *and* then gets to spend all of his time practicing.</p>
<p>Back to our first team, imagine that we invest in generalist training, so that our</p>
<pre>
2 + 2 + 2 = 6
1 + 3 + 2 = 6
4 + 1 + 3 = 8
</pre>
<p>becomes</p>
<pre>
2 + 2 + 1 = 5
1 + 2 + 2 = 5
3 + 1 + 3 = 7
</pre>
<p>&#8230;for an improved average cycle time of (5+5+7)/3 = 5.67 days per feature.  A generous result in training, for a significant outcome.</p>
<p>What about our &#8220;invest in strengths&#8221; scenario for the first team?</p>
<pre>
2   + 2   + 1 = 5
0.5 + 3   + 2 = 5.5
4   + 0.5 + 3 = 7.5
</pre>
<p>&#8230;not as good!  Even with a very generous 50% improvement for all, we only get 6 days per feature.  But what about the specialized team?  If our original:</p>
<pre>1 + 1 + 2 = 4</pre>
<p>becomes</p>
<pre>0.5 + 0.5 + 1 = 2</pre>
<p>&#8230;and then we add back some collaboration overhead:</p>
<pre>1 + 1 + 1 = 3</pre>
<p>&#8230;well, then we are just smoking the generalist team.  These are contrived examples, but they should still illustrate some of the advantages that go to small lean teams over small craft teams.  The most effective teams have complementary skills and personalities, not homogeneous ones.  Otherwise, why organize into teams at all?</p>
<p><strong>Still not that simple?  Enter the kanban</strong></p>
<p>A problem with both examples is that they deal with average features.  But nobody ever actually works on an average feature.  They work on real features that can be averaged over time.  Those features have variation, and sometimes a lot of it.</p>
<p>For this reason (and others), we don&#8217;t organize our workflow by role.  We organize it by task or process, and let team members apply themselves to the workflow in the most efficient manner.  They may even hand off the work at different transitions depending on the feature or the state of the pipeline.  Such a soft division of labor preserves the efficiency advantage of each worker, while also allowing for variation and changes in circumstance.  What matters most is that the work is done in the right order by the best resource available at the time, not who does what.</p>
<p>Pooling work-in-process according to the kind of asynchronous kanban system we&#8217;ve been discussing smooths out the flow of variable-duration work items, so that some of the variation in cycle times between processes is traded off for variation in inventory.  Such a pooling strategy works better with more people than our examples, and also more people than the current common practice for agile teams.  For a pipelined kanban system, we think that about 20 people is the sweet spot.</p>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://leansoftwareengineering.com/2008/02/10/division-of-labor-in-lean-software-development-workflows/feed/</wfw:commentRss>
		<slash:comments>10</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>
	</channel>
</rss>

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