<?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>Heather McLean &#187; Lean</title>
	<atom:link href="http://heathermclean.net/category/lean/feed/" rel="self" type="application/rss+xml" />
	<link>http://heathermclean.net</link>
	<description>Thoughts on agile methodologies and leadership.</description>
	<lastBuildDate>Tue, 24 Aug 2010 14:00:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Waste</title>
		<link>http://heathermclean.net/2009/07/waste/</link>
		<comments>http://heathermclean.net/2009/07/waste/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 14:00:18 +0000</pubDate>
		<dc:creator>Heather</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://heathermclean.net/?p=143</guid>
		<description><![CDATA[&#8220;Waste&#8221;—it&#8217;s an ominous word by itself, and in the world of Lean principles, it&#8217;s the one thing you&#8217;re striving to eliminate. Waste can be defined as that which adds no value to a project; i.e., those things that you are spending time and money doing, but they don&#8217;t move the project forward. Software projects are [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;Waste&#8221;—it&#8217;s an ominous word by itself, and in the world of Lean principles, it&#8217;s the one thing you&#8217;re striving to eliminate. Waste can be defined as that which adds no value to a project; i.e., those things that you are spending time and money doing, but they don&#8217;t move the project forward. Software projects are often full of waste, and in such an imprecise discipline, it can be difficult to identify the sources of waste. In fact, a lot of times we end up running in circles, attempting to clean up the symptoms rather than the causes.</p>
<p>In my experience, the one largest source of waste that can be eliminated or reduced to add immediate benefit to a project is <strong>rework</strong><sup>1</sup>. Rework falls into two major categories:</p>
<ul>
<li>Technical debt</li>
<li>Defects</li>
</ul>
<p><span id="more-143"></span>Technical debt refers to those shortcomings in the design of the software that we accept that we will have to address at a later date. This often comes as a result of running out of time in any given iteration; as we cut corners, quality suffers, and technical debt mounts<sup>2</sup>. Defects, on the other hand, are unintended consequences or misunderstood requirements; that is, they are unforeseen problems with the software that must be addressed immediately. The ratio of the two varies from project to project, but since defects often require immediate consideration, they tend to have a disproportionate effect on the deliverable date.</p>
<p>Of course, the obvious solution is to write bug-free code. That&#8217;s what we want to do anyways, right? Admirable, yes, but not practical in the least. It is impossible to write code that is free of defects, as it would at its very base require a product owner and development team that are somehow psychically linked as well as infallible. However, it is possible to reduce the number of defects by following some very simple principles. This list is by no means comprehensive, but it should give you a starting point.</p>
<p><strong>Limit work in progress.</strong> Each developer should really not be working on more than one or two tasks simultaneously in most situations. Focus increases reliability.</p>
<p><strong>Reduce &#8220;crunch.&#8221;</strong> It should be obvious at this point to both developers and managers that there is a diminishing return on hours worked. Try to take on realistic commitments for each development iteration and avoid working large amounts of overtime if at all possible.</p>
<p><strong>Pair programming.</strong> This is a highly useful tool not only for developers to check each other but also a developer and a quality/business analyst to check each other. Your team will think you&#8217;re weird at first for asking for such an odd pairing, but I&#8217;ve done this before, and it can be highly valuable to have someone who understands the business and requirements working with the developer up front. This also increases utilization of QA resources that often sit idle until the end of an iteration.</p>
<p><strong>Engage QA earlier.</strong> Frequently in agile environments we fall into the trap of doing &#8220;mini-waterfall.&#8221;<sup>3</sup> That is, we do a design and specification phase during sprint planning, then the coders spend a bunch of time doing heads-down work to meet sprint objectives, and then they finally throw their deliverables over the wall to the QA team at the very last minute. If you find this to be a frequent problem, then break your tasks down into even smaller chunks that can be completed and delivered without utilizing the entire sprint for each one.</p>
<p><strong>Inclusive design.</strong> Always strive to include the entire team in design and specification meetings. It&#8217;s a simple fact that if more people are involved, more problems are likely to be uncovered before development even starts. The team as a whole should have a keen understanding of the entire project, even parts they may not be responsible for. If you find that this inclusiveness is eating up too much time, it&#8217;s most likely because your team is too large or your meetings are not staying focused.</p>
<p><strong>Daily updates.</strong> The daily status or &#8220;stand up&#8221; meeting is one of the core principles of Scrum. Even if you&#8217;re not practicing Scrum (or any agile methodology for that matter), I highly recommend daily updates. A focused, repeated meeting to keep everyone up-to-date on the team&#8217;s progress can help the team be aware of its progress as a whole as well as help identify and address problems mid-stream rather than at the end.</p>
<p><strong>Visibility.</strong> Another principle of Scrum, task boards and burn-down charts can also help the team with understanding where it is. Whatever the actual implementation, it should be a highly visible cue into everyone&#8217;s projects and the overall health of the project. Increased visibility reduces one of the most frustrating defects—items that we just plain forgot about.</p>
<hr /><span style="font-size:80%"><sup>1</sup><a href="http://itmanagement.earthweb.com/entdev/article.php/3830426" target="_blank">Software Development and The War on Muda</a><br />
<sup>2</sup><a href="http://www.noop.nl/2009/07/commit-to-sprint-planning-or-definition-of-done-not-both.html" target="_blank">Commit to Sprint Planning or Definition of Done, Not Both</a><br />
<sup>3</sup><a href="http://www.agilegamedevelopment.com/2009/02/how-long-should-sprint-be.html" target="_blank">How long should a sprint be?</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://heathermclean.net/2009/07/waste/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The role of leadership in software development</title>
		<link>http://heathermclean.net/2008/12/the-role-of-leadership-in-software-development/</link>
		<comments>http://heathermclean.net/2008/12/the-role-of-leadership-in-software-development/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 16:26:21 +0000</pubDate>
		<dc:creator>Heather</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Training]]></category>

		<guid isPermaLink="false">http://heathermclean.net/?p=65</guid>
		<description><![CDATA[A coworker recently turned me on to the Google Tech Talks Channel on YouTube. There is a wealth of good information on many different topics. In particular, I found this presentation about leadership from Mary Poppendieck especially insightful this morning:]]></description>
			<content:encoded><![CDATA[<p>A coworker recently turned me on to the <a href="http://www.youtube.com/user/googletechtalks" target="_blank">Google Tech Talks Channel</a> on YouTube. There is a wealth of good information on many different topics. In particular, I found this presentation about leadership from Mary Poppendieck especially insightful this morning:</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/ypEMdjslEOI&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/ypEMdjslEOI&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://heathermclean.net/2008/12/the-role-of-leadership-in-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trashing Scrum</title>
		<link>http://heathermclean.net/2008/11/trashing-scrum/</link>
		<comments>http://heathermclean.net/2008/11/trashing-scrum/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 14:05:53 +0000</pubDate>
		<dc:creator>Heather</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Lean]]></category>

		<guid isPermaLink="false">http://heathermclean.net/?p=48</guid>
		<description><![CDATA[It seems that no matter what aspect of software development in which you&#8217;re involved, someone is always starting a holy war. I found David Anderson&#8217;s post, Trashing Scrum or Reflecting Reality?, amusing. Not because it was humorous, but because it&#8217;s in response to the same sort of war we see time and time again. This [...]]]></description>
			<content:encoded><![CDATA[<p>It seems that no matter what aspect of software development in which you&#8217;re involved, someone is always starting a holy war.</p>
<p>I found David Anderson&#8217;s post, <a href="http://www.agilemanagement.net/Articles/Weblog/TrashingScrumorReflecting.html" target="_blank">Trashing Scrum or Reflecting Reality?</a>, amusing. Not because it was humorous, but because it&#8217;s in response to the same sort of war we see time and time again. This time, it&#8217;s the Lean radicals versus the Scrum purists.</p>
<p>One thing I can&#8217;t stand is people who have a myopic view of things that they consider &#8220;correct.&#8221; Yes, I agree that Scrum is a wonderful tool for helping teams succeed. Relative to the waterfall way of doing things, Scrum can provide visibility and productivity increases that are almost undeniable for most teams. However, like everything, <strong>it is not the end of the journey</strong>.</p>
<p>In order to truly appreciate Scrum, one cannot assume that it is sacred. Scrum is about adaptability above all else, so the idea that Scrum cannot be improved, extended, or even superceded is absolutely ludicrous. One of the very reasons I created this blog was to examine agile and lean methodologies to get the most out of them, and if that means &#8220;trashing&#8221; a particular ideal, then so be it. Personally, I would rather trash Scrum than assume it is perfect.</p>
<p>Also be sure to read Alan Shalloway&#8217;s article, <a href="http://www.netobjectives.com/blogs/Is-Scrum-Failing-Us" target="_blank">Is Scrum Failing Us?</a>, linked from Mr. Anderson&#8217;s blog. I agree wholeheartedly with his observations and have witnessed several of them first-hand.</p>
]]></content:encoded>
			<wfw:commentRss>http://heathermclean.net/2008/11/trashing-scrum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scrum-ban: Small follow-up</title>
		<link>http://heathermclean.net/2008/11/scrum-ban-small-follow-up/</link>
		<comments>http://heathermclean.net/2008/11/scrum-ban-small-follow-up/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 13:58:22 +0000</pubDate>
		<dc:creator>Heather</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Lean]]></category>

		<guid isPermaLink="false">http://heathermclean.net/?p=34</guid>
		<description><![CDATA[I just wanted to post this link in addition to my earlier post, because it&#8217;s informative: Kanban, Flow and Cadence by Karl Scotland]]></description>
			<content:encoded><![CDATA[<p>I just wanted to post this link in addition to <a href="http://heathermclean.net/2008/10/scrum-ban-adapting-lean-processes-to-scrum/" target="_self">my earlier post</a>, because it&#8217;s informative:</p>
<p><a href="http://availagility.wordpress.com/2008/10/28/kanban-flow-and-cadence/" target="_blank">Kanban, Flow and Cadence</a> by Karl Scotland</p>
]]></content:encoded>
			<wfw:commentRss>http://heathermclean.net/2008/11/scrum-ban-small-follow-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scrum-ban: Adapting lean processes to Scrum</title>
		<link>http://heathermclean.net/2008/10/scrum-ban-adapting-lean-processes-to-scrum/</link>
		<comments>http://heathermclean.net/2008/10/scrum-ban-adapting-lean-processes-to-scrum/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 18:17:04 +0000</pubDate>
		<dc:creator>Heather</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Lean]]></category>

		<guid isPermaLink="false">http://heathermclean.net/?p=26</guid>
		<description><![CDATA[It seems that now we have agile processes in place, we&#8217;re starting to look at lean as well. The topic of lean software development within the Scrum framework came up at a meeting earlier this week at my office and sparked a lot of discussion. Oddly enough, the topic also came up on David J [...]]]></description>
			<content:encoded><![CDATA[<p>It seems that now we have agile processes in place, we&#8217;re starting to look at lean as well. The topic of lean software development within the Scrum framework came up at a meeting earlier this week at my office and sparked a lot of discussion. Oddly enough, the topic also came up on <a href="http://www.agilemanagement.net/Articles/Weblog/Practicalarticleonimpleme.html" target="_blank">David J Anderson&#8217;s blog</a> this morning as well.</p>
<p>In particular, some of our Scrum Masters were talking about possibly adapting and adopting Scrum-ban<sup>1</sup>, which uses the principles of the kanban<sup>2</sup> lean production process to implement a pull methodology in Scrum. This looks very interesting on the surface as it affords greater flexibility for inidividual tasks that are under development, but I have some reservations as well.</p>
<p>There are some advantages here that I see as appealing. One of the problems we sometimes run into with Scrum (and perhaps a symptom of our particualr implementation of it) is that occassionaly some team members will be over-allocated and others under-allocated. When we do our sprint planning, we assign stories to particular team members at that time, which obviously has the flaw of not really knowing (especially at this stage of maturity) how well each team member is actually utilized or if they&#8217;re going to get distracted with administrative or support tasks during the sprint. Scrum-ban emphasizes only assigning a minimum amount of work-in-progress to get started, then as tasks are completed, team members can pull a new task off the &#8220;ready&#8221; list. In this way, Scrum-ban seems to be even more &#8220;agile&#8221; than regular Scrum.</p>
<p>On the other hand, there&#8217;s a couple big stickers for me on Scrum-ban. First, it seems to throw iterations out the window on a surface level. As team members constantly pull tasks from the &#8220;ready&#8221; list, it seems that there is no well-defined start or end to ongoing work without artificially halting the process at some point. This could create a situation where some team members are idle while waiting for others to catch up with the end of the iteration.</p>
<p>Another one is that it seems to move in the opposite direction as Scrum regarding &#8220;individuals and interactions over processes and tools.&#8221;<sup>3</sup> In level 2 Scrum-ban, the process divides up the task queue into several chunks: backlog, ready, specifiy, complete, and done.<sup>2</sup> (Some of my colleagues proposed additional classifictions, but I will only address the ones described in the article.) I&#8217;ll admit I&#8217;m just looking at this from an academic standpoint rather than the experience of actual practice, but it appears that this adds more administrative overhead. First, someone has to define what things like &#8220;ready,&#8221; &#8220;specify,&#8221; &#8220;complete,&#8221; and &#8220;done&#8221; really mean in the particular domain. Second, someone has to be constantly monitoring the ready queue to make sure it has a suitable amount of tasks classified as &#8220;ready&#8221; available to the team. Third, team members have to do two iterations of each task, first specifying and then completing the actual work. I would argue that specification should have been done before the task was classified as &#8220;ready,&#8221; though this admittedly depends on your definitions of &#8220;ready&#8221; and &#8220;specify.&#8221; Lastly, someone must confirm that &#8220;done&#8221; items are really done pertaining to the established definition. I think that Scrum-ban at this level is making Scrum more complicated than it really should be.</p>
<p>I&#8217;m going to take some time in the near future to analyze Scrum-ban in depth. I think I might be able to use the Scrum/kanban hybrid approach effectively, but it will need to be different than what Scrum-ban proposes to address my particular needs. I&#8217;ll post more on that later.</p>
<p>Additional reading:<br />
<a href="http://www.developer.com/mgmt/article.php/3776851" target="_blank">Managing Change Requests Using Lean Methods and a Kanban Board</a><br />
<a href="http://kanbancon.pbwiki.com/FrontPage" target="_blank">KanbanCon</a></p>
<hr /><span style="font-size:80%"><sup>1</sup><a href="http://leansoftwareengineering.com/ksse/scrum-ban/"><em>Scrum-ban</em></a> at Lean Software Engineering<br />
<sup>2</sup><a href="http://en.wikipedia.org/wiki/Kanban">Kanban</a> at Wikipedia<br />
<sup>3</sup><a href="http://www.agilemanifesto.org/">Manifesto for Agile Software Development</a><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://heathermclean.net/2008/10/scrum-ban-adapting-lean-processes-to-scrum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
