<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>lean-software-development &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/lean-software-development/</link>
	<description>Feed of posts on WordPress.com tagged "lean-software-development"</description>
	<pubDate>Tue, 18 Jun 2013 23:39:05 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[What software development should NOT learn from manufacturing]]></title>
<link>http://udayanbanerjee.wordpress.com/2010/05/20/what-software-development-should-not-learn-from-manufacturing/</link>
<pubDate>Thu, 20 May 2010 05:16:40 +0000</pubDate>
<dc:creator>Udayan Banerjee</dc:creator>
<guid>http://udayanbanerjee.wordpress.com/2010/05/20/what-software-development-should-not-learn-from-manufacturing/</guid>
<description><![CDATA[In software engineering there have always been two schools of thought. One school feels that there i]]></description>
<content:encoded><![CDATA[<p>In software engineering there have always been two schools of thought. One school feels that there is a lot to learn from manufacturing. The other school thinks that they are entirely different.</p>
<p>There have been 3 distinct phases in this debate:</p>
<ol>
<li><strong>CMM Phase</strong>: Manufacturing has transitioned from craftsmanship to mass production – productivity and quality has improved many-fold. Software development can also benefit from such transition. CMM movement was born from this thought.</li>
<li><strong>Agile Phase</strong>: Manufacturing deals with machine, software development deals with people. Processes involving machines can be controlled precisely. People are inherently different and are not interchangeable. People communicate better face to face rather than through written documentation. From this realization agile movement was born.</li>
<li><strong>Lean Phase</strong>: Toyota revolutionized manufacturing through lean manufacturing system and dramatically improved quality and optimized cost. The core of lean manufacturing is empowered teams. Since agile movement also is based on self-organizing teams it must be possible to transplant the learning from lean manufacturing to software development. This lead to lean software development.</li>
</ol>
<p>There is an apparent logic in all three reasoning. So, which advice should you follow? Are they compatible with each other? Before answering these questions you should look at the differences between manufacturing and software development.</p>
<div>
<table style="border-collapse:collapse;" border="0">
<col style="width:233px;"></col>
<col style="width:294px;"></col>
<tbody>
<tr style="background:#d9d9d9;">
<td style="padding-left:7px;padding-right:7px;border:solid black .5pt;"><strong>Manufacturing</strong></td>
<td style="padding-left:7px;padding-right:7px;border-top:solid black .5pt;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><strong>Software Development</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><strong>Repeatable:<br />
</strong></p>
<p>Same item produced many-many time</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><strong>Unique:<br />
</strong></p>
<p>Software is written only when nothing similar exists</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><strong>Well-defined:<br />
</strong></p>
<p>Even before start, the specification of the output is clearly defined</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><strong>Incomplete &#38; Evolving:<br />
</strong></p>
<p>Not only are requirements sketchy at the beginning, but also likely to change during the development cycle</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><strong>Known:<br />
</strong></p>
<p>The process of converting input to output is clearly known and can be repeatedly done</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><strong>Unknown:<br />
</strong></p>
<p>There always are unknowns &#8211; in form of new technology, new interfacing requirement …</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black .5pt;border-bottom:solid black .5pt;border-right:solid black .5pt;"><strong>Machine &#38; Tool:<br />
</strong></p>
<p>Any process efficiency is dependant mostly of the machines and tools used and less on the people operating it</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black .5pt;border-right:solid black .5pt;"><strong>People:<br />
</strong></p>
<p>Knowledge, experience and skill of people can make huge difference in productivity sometime as much as 1:100 between best and worst</td>
</tr>
</tbody>
</table>
</div>
<p>Will this gap ever be bridged? Will software development move closer to manufacturing?</p>
<p>I doubt it – here is why.</p>
<p><strong>Repeatability vs. Uniqueness</strong>:</p>
<p style="margin-left:36pt;"><em>&#8220;…Every advance for the future state of the world requires the presence of software yet to be written…&#8221; – Grady Booch (<a href="http://www.zdnetasia.com/ibm-scientist-predicts-software-s-future-62042270.htm">here</a>)<br />
</em></p>
<p>You are never going to write software which already exists!</p>
<p><strong>Well-defined vs. Incomplete &#38; Evolving</strong>:</p>
<p>The authors of the <a href="http://agilemanifesto.org/">Agile Manifesto</a> understood it when they wrote:</p>
<p style="margin-left:36pt;"><em>&#8220;…Responding to change over following a plan…&#8221;<br />
</em></p>
<p style="margin-left:36pt;"><em>&#8220;…Welcome changing requirements, even late in development. Agile processes harness change for the customer&#8217;s competitive advantage…&#8221;</em></p>
<p>Software is about advancement … software is about new idea … not all new idea succeed. Trial and error cannot be avoided.</p>
<p><strong>Known vs. Unknown:<br />
</strong></p>
<p><a href="http://toddanglin.sys-con.com/">Todd Anglin</a> in his very interesting post <a href="http://web2.sys-con.com/node/1372259">The Future of Software Development</a> states:</p>
<p style="margin-left:36pt;"><em>&#8220;…There is no end in sight to the deluge of new technologies being delivered to market…&#8221;<br />
</em></p>
<p style="margin-left:36pt;"><em>&#8220;…If there is any one concept or idea that software developers must absolutely comprehend, it is this: it really is okay not to know it all…&#8221;</em></p>
<p>The rate of technology change is accelerating. Technology options are increasing. Current software, for all practical purpose, has <a href="http://setandbma.wordpress.com/2008/10/14/infinite-features/">infinite features</a>! The world is becoming more and more interconnected. Hence, software developers of the future will need to handle more unknown, not less.</p>
<p><strong>Machine &#38; Tool vs. People:<br />
</strong></p>
<p><a href="http://www.envisionsoftware.com/About_Daiv_Russell.html">Daiv Russell</a>, in the article <a href="http://www.envisionsoftware.com/articles/Break_the_Golden_Rule_techy.html">Hold On to Your Top Performers</a>, states:</p>
<p style="margin-left:36pt;"><em>&#8220;…Most CTO&#8217;s realize that <a href="http://www.envisionsoftware.com/Management/Pareto_Principle.html">The Pareto Principle</a> applied to IT staff means that 20% of your people are delivering 80% of your entire team&#8217;s bottom-line value…&#8221;<br />
</em></p>
<p style="margin-left:36pt;"><em>&#8220;…The difference between the extremes has been reported as high as 100:1…&#8221;<br />
</em></p>
<p>Unless we can find a method of completely automating the process of software writing, the dependency on people will remain. The chances of automating the process of software development in foreseeable future look remote.</p>
<p><span style="font-size:12pt;"><strong>What can we conclude from this?<br />
</strong></span></p>
<p style="margin-left:18pt;"><span style="color:red;"><strong>Reject</strong> all idea which is derived or borrowed for the purpose of managing predictable processes.<br />
</span></p>
<p style="margin-left:18pt;"><span style="color:#00b050;"><strong>Accept</strong> all idea which helps you to deal with unknown and uncertainty.<br />
</span></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Corporate tool or pragmatist?]]></title>
<link>http://mbv3.wordpress.com/2010/02/23/corporate-tool-or-pragmatist/</link>
<pubDate>Tue, 23 Feb 2010 16:12:28 +0000</pubDate>
<dc:creator>spombat</dc:creator>
<guid>http://mbv3.wordpress.com/2010/02/23/corporate-tool-or-pragmatist/</guid>
<description><![CDATA[I am a software engineer.  What does that mean?  It means that I take a systematic approach to solvi]]></description>
<content:encoded><![CDATA[<p>I am a software engineer.  What does that mean?  It means that I take a systematic approach to solving problems. It also means that I study my craft. It also means that I get giddy over geeky things.  I am not a computer enthusiast or a dabbler. I do not spend endless hours on my computer doing geeky things, nor do I write a lot of programs for my personal use.  I take most of my professional joy from solving real problems and solving them as efficiently and methodically as possible.  I also like my solutions to be as robust as they can be.</p>
<p>Now, I am also a manager in a business. That business has stockholders and the stockholders expect a return on their investment.  Moreover, they (and my managers) expect not <em>just</em> a return, but the <em>maximum </em>return on their investment.</p>
<p>Here is my dilemma and here is my epiphany:</p>
<p>As a problem solver, the best solution is what I strive for, but I am often frustrated when I am told to stop short of the best solution or to solve a much smaller problem instead.  I am not talking safety issues here, those are always handled as a top priority (really they are), but I am speaking about real functional defects that users hate and that I (and many of the people I work with) cannot stand the existence of.  The stupid fact, that actually only dawned on me recently, is that a business is not interested in solving every problem there is with their products.  The goal of a business is not some ultimate quality product that will clobber the competition, but instead a business is interested in finding (what I call) their customer&#8217;s &#8220;toleration point&#8221;.  The &#8220;toleration point&#8221; is the point at which the market/customer will continue to pay for and be satisfied with something that is incomplete, defective, or marginally effective. If you have ever used software, then you know what I mean.  You probably have lost documents in your favorite word processing program &#8211; but it works most of the time, everyone else uses it, and you know how to do stuff with it.  Corporate tools must determine what you can stand and then walk right up to that line.  This will never be the best solution from the stand point of a craftsman, but it will be the best solution from the standpoint of a stockholder.</p>
<p>Why do I care?</p>
<p>Well, engineering is about doing the right thing the right way (to the best of your ability).  Even when you make compromises in your designs, it is for a larger purpose that makes sense in the physical world.  When you put on the business hat, you have a total shift in reality and it is very jarring.  Getting something out that will build a habit in your users becomes a top priority &#8212; regardless of the quality.  The business will look at revenue factors and consider that they can always find someone to cheaply fix stuff later (as needed) as they make money now.  It does not always end with the best product or solution winning, but with the most popular (and often the cheapest) product winning.  That really bugs me, and yet that is how economies have run since there were economies.  So as you read this on your computer that downloads patches, updates, and security fixes almost weekly, you need to think about how the world really runs and whether we are all corporate tools or the ultimate pragmatists.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Are We Agile Yet? Are We Agile Yet?]]></title>
<link>http://rmaksimchuk.wordpress.com/2010/01/18/are-we-there-yet-are-we-there-yet/</link>
<pubDate>Mon, 18 Jan 2010 19:53:59 +0000</pubDate>
<dc:creator>rmaksimchuk</dc:creator>
<guid>http://rmaksimchuk.wordpress.com/2010/01/18/are-we-there-yet-are-we-there-yet/</guid>
<description><![CDATA[That question is not nearly as irritating as “Are we there yet?” being chanted ceaselessly from the]]></description>
<content:encoded><![CDATA[<p>That question is not nearly as irritating as “Are we there yet?” being chanted ceaselessly from the backseat on a long summer road trip.  But I have heard it asked in many development shops who are trying to “become agile”.  The question is somewhat puzzling.  What is the real intent of their question?  Are they looking for a blessing “Yea, thou art agile.  Now go forth and Scrum.”?  Is “agile” a badge they are looking to wear?  If so, they are missing the point.  They need to ask a better question.</p>
<p> Agile is more about the journey than a specific destination.  You should maintain awareness of how well the journey is going instead of how long you’ve been traveling.  How can we explain this, in a simple manner … <a href="http://www.projectpragmatics.com/Home/resources-for-you-1/are-we-agile-yet" target="_blank">Read More</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[The Psychology of Poor Process]]></title>
<link>http://philwheeler.wordpress.com/2009/12/21/the-psychology-of-poor-process/</link>
<pubDate>Mon, 21 Dec 2009 08:50:12 +0000</pubDate>
<dc:creator>Phil</dc:creator>
<guid>http://philwheeler.wordpress.com/2009/12/21/the-psychology-of-poor-process/</guid>
<description><![CDATA[Empty Production Line You would think after 18 months of forming and stabilising my development team]]></description>
<content:encoded><![CDATA[<div id="attachment_46" class="wp-caption alignleft" style="width: 150px"><a href="http://philwheeler.files.wordpress.com/2009/12/conveyor-belt.jpg"><img class="size-medium wp-image-46 " title="Empty Production Line" src="http://philwheeler.files.wordpress.com/2009/12/conveyor-belt.jpg?w=140&#038;h=210" alt="Conveyor Belt" width="140" height="210" /></a><p class="wp-caption-text">Empty Production Line</p></div>
<p>You would think after 18 months of forming and stabilising my development team that we&#8217;d have a pretty strong and settled process in place.  But the development team is only one player in a larger ecosystem and how that team is fed depends heavily on the requirements that they are given.</p>
<p><!--more--></p>
<p>When you&#8217;re in the software building business, the pressure to deliver something &#8211; anything &#8211; by a certain date can be quite intense.  Sometimes its because a marketing campaign is scheduled, sometimes because a product is being released that the software needs to tie into or it may be that a service has been promised to customers or end-users by that date.  Whatever the reason, developers work best when given a fixed set of requirements to deliver by a committed, set target date.</p>
<p>Contrast this with a situation where one or more of the following situations occurs regularly:</p>
<ul>
<li>The client provides requirements with an assurance that they are &#8220;final and signed-off&#8221;, but continues to insist that small additions or amendments be made right up until &#8211; or even after &#8211; the final testing process has begun.</li>
<li>The client &#8211; in agreement with you &#8211; settles on a deliverable date by which all scoped work should be provided.  This is then casually pushed out to accommodate scope creep or alter the requirements.</li>
<li>The functional requirements are running late and the client asks that you just get started with what they&#8217;ve documented so far and the rest will be added in as you go.</li>
<li>The final requirements provided to the development team include numerous assumptions, vague functional specifications and &#8220;documented omissions&#8221; that will &#8211; assuredly &#8211; be provided in due course.</li>
</ul>
<p>People generally don&#8217;t enjoy working like this.  There is motivation, job satisfaction and a personal sense of pride (among other benefits) to be found in the challenge of achieving a goal.  People &#8211; and developers in particular &#8211; work well under conditions of managed stress and challenges where there is a tangible reward to be found at the end.  That reward is self-respect, the pride in achievement, appreciation, recognition or respect of the client and stakeholders and satisfaction in the delivery of a quality product.  Take away the measures for those motivators and you take away the motivation as well.</p>
<h2>The Problem</h2>
<p>Consider these scenarios:</p>
<ol>
<li>Your development team is working to a tight deadline, busting themselves to achieve it.  At the last minute it gets moved out. Your team was expecting victory,  some congratulations and appreciation (maybe a cake), and instead all they get  is more work.</li>
<li>The team is working to a difficult deadline, and must cut corners. They  build things quick-and-dirty because time is short and it&#8217;s better to  have something ugly that works than something beautiful half-built. The  deadline is pushed back and now the team (or, more likely, the Team Lead) have to explain why they did such a rough  job. The time to clean it up is longer than the extension.</li>
<li>The deadline gets moved out, so the team realigns priorities, working on  the new goals for the altered requirements.  The estimate for work is recalculated and work carries on towards the new deadline.  This happens once &#8211; maybe twice &#8211; more before the final deliverable is released.  The line manager asks the Team Lead how the original estimate compared to the actual development cost and the Team Lead must explain why the scope and cost started at Point A for $10 000, but finished at Point C for a total cost of $25 000.  (Even worse is if you have no adequate measurements of effort spend per developer and cannot even provide figures for how the estimate compares with the final product).</li>
</ol>
<p>Vague deadlines open the door for:</p>
<ul>
<li>Delivery dates that are hard to commit to</li>
<li>Meaningless estimates</li>
<li>Impact on scope for other deliverables</li>
</ul>
<p>Conversely, vague requirements lend themselves to</p>
<ul>
<li>Scope creep</li>
<li>Technical deficiencies</li>
<li>Redundant or inaccurate estimates</li>
</ul>
<p>As a product owner, line manager or client, you should be concerned about this because</p>
<ol>
<li>Your development costs begin to run away on you</li>
<li>Your product quality slips</li>
<li>Your development team becomes disillusioned, disaffected or cynical</li>
<li>Future projects are put at risk as your development team becomes accustomed to deadline extensions and scope changes</li>
</ol>
<p>Any one of these issues should be enough to cause concern &#8211; if not from a purely cost point of view then from a risk and succession planning one.  So what steps can be done to ensure that the psychology of your software shop team is healthy and robust?</p>
<h2>The Solution</h2>
<p>When it comes down to it, there are two broad ways in which you can remedy the state of delivered requirements and conditions under which you are expected to deliver the final product: influence the client (i.e. require them to adapt their processes to accommodate your needs better) or influence your environment (i.e. adapt your own internal processes to compensate for those factors outside your control).  The first is harder to achieve in large amounts although depending on what is asked of the client and how the request is packaged up, some results may be better than others.  The second allows more immediate and practical scope for change, but may not provide the breadth of control needed to effect meaningful results.</p>
<p>To this end, the following strategies can help you add value to your own service delivery:</p>
<ul>
<li>Ensure you have tools for defining when a deliverable has been satisfied.</li>
<li>Ensure estimates are based on tiny tasks, each no longer than a day or  two.</li>
<li>Ensure requirements are measurable (e.g. &#8220;Function X should work in exactly this way&#8230;&#8221;) and work with the client until they are.</li>
<li>Build to your own shorter fixed time frames (e.g. monthly) that can be dove-tailed into the client&#8217;s delivery deadlines.</li>
<li>Deliver only to your agreed time frames and initial scope, with any deadline or scope changes being pooled into a backlog to be commenced on completion of the original project requirements.</li>
<li>Ensure you leverage the tools you have to give you meaningful information about how your production process is performing and identify ways in which it could be streamlined.</li>
</ul>
<p>The concepts around <a title="Wikipedia (Opens in a new window)" href="http://en.wikipedia.org/wiki/Lean_software_development" target="_blank">Lean Software Development</a> provide excellent, non-prescriptive strategies for approaching the development process and for looking at key areas in which to improve: in particular, minimising waste.</p>
<div id="attachment_48" class="wp-caption alignright" style="width: 122px"><a href="http://philwheeler.files.wordpress.com/2009/12/production-line.jpg"><img class="size-thumbnail wp-image-48" title="Production Line" src="http://philwheeler.files.wordpress.com/2009/12/production-line.jpg?w=112&#038;h=150" alt="Production Line" width="112" height="150" /></a><p class="wp-caption-text">Well-Tuned Production</p></div>
<p>Ultimately, the best approach is to engage with the client and agree on a requirements / product delivery process that affords each party the flexibility they need coupled with the policies against which they can most effectively operate.  Setting the expectation with the client that late or incomplete requirements will result in those affected features being delayed for a future iteration (or until the requirements are satisfactory) and then committing to that will create a culture where there are consequences for a relaxed approach and reduces the waiting around or re-work for the development team.</p>
<p>No project &#8211; or any other relationship for that matter &#8211; can operate in strong and healthy way unless both parties are communicating effectively and often.  The development team can feel empowered and resolute with fixed, predictable deadlines and a set of confirmed, explicitly-defined requirements.  The client can feel more comfortable about their requirements delivery knowing that they can provide only those instructions that have been properly thought-out and need not operate under pressure to some intangible time frame.  Both parties know that if something can&#8217;t be provided in this iteration, it will not be forgotten and gets scheduled for completion on the next pass.</p>
<p>Protecting the head space of the development team is often stated to be the sole responsibility of the <abbr title="Technical Team Lead">TTL</abbr>, however the reality is that it often takes the contributions of a number of stakeholders to really create the sort of environment where the developer can fully thrive.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Definition of... Agile Testing]]></title>
<link>http://ullizee.wordpress.com/2009/12/09/definition-of-agile-testing/</link>
<pubDate>Wed, 09 Dec 2009 22:02:27 +0000</pubDate>
<dc:creator>Gunther</dc:creator>
<guid>http://ullizee.wordpress.com/2009/12/09/definition-of-agile-testing/</guid>
<description><![CDATA[The book Implementing Lean Software Development (from concept to cash) by Mary and Tom Poppendieck g]]></description>
<content:encoded><![CDATA[<p><a href="http://ullizee.files.wordpress.com/2009/09/poppendieck-implementing-lean-software-development.jpg?w=113"><img class="alignright size-thumbnail wp-image-3737" title="Poppendieck - Implementing Lean Software Development" src="http://ullizee.files.wordpress.com/2009/09/poppendieck-implementing-lean-software-development.jpg?w=51&#038;h=65" alt="Poppendieck - Implementing Lean Software Development" width="51" height="65" /></a>The book <strong>Implementing Lean Software Development (from concept to cash)</strong> by Mary and Tom <a href="http://www.poppendieck.com/index.htm" target="_blank">Poppendieck</a> gave me an additional perspective and language (terminology) on <em>quality</em> and <em>testing</em>, thus enriching my existing insights.</p>
<p>Traditional testing is focused too much on bug hunting, mostly <em>after</em> a development cycle and including a devious rewarding or penalty policy. There is too little attention for <em>verification</em> of quality <em>while building</em>.</p>
<p>The development process should be oriented towards <strong>creating </strong>quality upfront (i.e. before UAT, release or whatever post-process control), and verification during the development process. If verification reveals a defect, the &#8216;line&#8217; is stopped, the cause identified and resolved.</p>
<p><a href="../files/2009/03/logo-myfragility.jpg"><img class="alignleft" title="logo-myfragility" src="../files/2009/03/logo-myfragility.jpg?w=150" alt="logo-myfragility" width="97" height="23" /></a>My <a href="http://en.wordpress.com/tag/my-fragility-agile/" target="_blank">My.Fragility</a> framework holds <strong>Quality Loops</strong>. These are performed continuously and at least <em>daily</em>. It is based upon <a href="http://ullizee.wordpress.com/2009/11/04/extreme-programming-revisited-part-ii/">eXtreme Programming </a>practices. They serve as engineering standards within the Scrum process that is at the heart of my framework. It shows our focus on quality and <em>integrated</em> testing:</p>
<p><a href="http://ullizee.files.wordpress.com/2009/10/grafx-quality-loops.jpg"><img class="aligncenter size-full wp-image-3889" title="My.Fragility - Quality Loops" src="http://ullizee.files.wordpress.com/2009/10/grafx-quality-loops.jpg?w=450&#038;h=337" alt="My.Fragility - Quality Loops" width="450" height="337" /></a></p>
<p><a href="../files/2009/03/logo-myfragility.jpg"><br />
</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Lean Software Development - Eliminating Waste]]></title>
<link>http://heratech.wordpress.com/2009/11/28/lean-software-development-eliminating-waste/</link>
<pubDate>Sat, 28 Nov 2009 18:20:32 +0000</pubDate>
<dc:creator>heratech</dc:creator>
<guid>http://heratech.wordpress.com/2009/11/28/lean-software-development-eliminating-waste/</guid>
<description><![CDATA[I’m still digesting last week’s Nashua Scrum Club meeting. As a technical writer, one of my roles in]]></description>
<content:encoded><![CDATA[<p><a href="http://heratech.files.wordpress.com/2009/11/istock_000003242669xsmall.jpg"><img src="http://heratech.files.wordpress.com/2009/11/istock_000003242669xsmall.jpg?w=300&#038;h=201" alt="Waste barrel" title="iStock_000003242669XSmall" width="300" height="201" class="alignleft size-medium wp-image-76" /></a>I’m still digesting last week’s <a href="http://nashua.scrumclub.org/">Nashua Scrum Club</a> meeting.  As a technical writer, one of my roles in the organization is to be a user advocate, so I’m pondering the concept that “everything not adding value to the Customer is considered waste.”</p>
<p>I’ve been fan of the concept of <a href="http://en.wikipedia.org/wiki/Kaizen">kaizen</a> or continuous, incremental improvement, for a couple of years now.  Now I can add to that <a href="http://en.wikipedia.org/wiki/Muda_(Japanese_term)">muda</a>, the Japanese term for an activity that is wasteful and doesn&#8217;t add value or is unproductive.  I wish I’d been exposed to lean principles last spring when I was talking to my manager about how I wanted to handle documentation bugs.</p>
<p>When I was hired last October there was a pretty big backlog of documentation bugs because 1) the company had been without a technical writer for six months before I was hired and 2) the Support manager had recently had the members of the Support organization read through the entire doc set and enter bugs and enhancement requests.</p>
<p>Since I’m a lone writer, I would prefer that when someone finds a simple typo (misspelled word, missing punctuation) that they simply e-mail me so that I can correct it.  This would lead to a very simple workflow:</p>
<p>1.	Employee sends an e-mail to the technical writer.<br />
2.	Technical writer reads e-mail.<br />
3.	Technical writer opens document files and fixes typo.</p>
<p>This workflow can lead to a simple typo being fixed within a few minutes of it being found.  As a fan of efficiency, this is my preferred method of dealing with typos.  If someone e-mails me a problem that takes more than five minutes to fix, it makes sense to create a documentation issue to track the work on that issue (and to make sure that it doesn’t fall between the cracks and get lost in my inbox).</p>
<p>However, my manager wanted to track ALL documentation issues, no matter how small, in our issue tracking system.  This leads to a workflow like the following:</p>
<p>1.	Employee enters an issue. Note that not all of our employees have permissions to create issues in our system, so the employee may need to find someone else to enter the issue for them.<br />
2.	The issue has to be triaged by one or more managers, assigned a priority and a target release, and assigned to the technical writer.<br />
3.	When the writer receives the automated e-mail that the issue has been assigned to them, they may have to go to the issue tracking system to view the issue.<br />
4.	Writer opens the document file and fixes the typo.<br />
5.	Writer has to go back into the issue tracking system and change the issue status to “fixed” and then assign it to the QA manager.  Because I don’t generate PDFs on a daily basis, this may not happen until days or weeks after I’ve actually fixed the typo.<br />
6.	QA manager assigns the issue to a QA tester to verify that the issue has been fixed.  Sometimes this doesn’t happen until we are nearing a patch release, as the testers are testing code, not checking that typos have been corrected.<br />
7.	QA tester checks the documentation and closes the issue.</p>
<p>This was the workflow that we used at one of my previous jobs, where I was a member of a large doc group and the writer responsible for any particular document might change at the end of a release. But since I’m the only writer at my current job, and typos aren’t something that I need other members of the team to assist me in correcting, it doesn’t make sense to me to have so many people involved in verifying whether or not a word was spelled correctly or a period was added at the end of a sentence.  Instead of a process that takes two people and five minutes, my manager wanted a process that involved at least seven people and could possibly take days or weeks to complete.  </p>
<p>This just seems wasteful to me and not very Agile.</p>
<p>How do other lone writers, who don&#8217;t have peer reviewers or editors, handle editorial tasks?  Especially in an Agile environment?</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[November Scrub Club - Scrum and Kanban]]></title>
<link>http://heratech.wordpress.com/2009/11/25/november-scrub-club-scrum-and-kanban/</link>
<pubDate>Wed, 25 Nov 2009 17:45:07 +0000</pubDate>
<dc:creator>heratech</dc:creator>
<guid>http://heratech.wordpress.com/2009/11/25/november-scrub-club-scrum-and-kanban/</guid>
<description><![CDATA[Last Thursday night’s Nashua Scrum Club introduced me to yet another new software development term. ]]></description>
<content:encoded><![CDATA[<p><a href="http://heratech.files.wordpress.com/2009/11/istock_000002214787xsmall.jpg"><img class="alignleft size-medium wp-image-63" title="iStock_000002214787XSmall" src="http://heratech.files.wordpress.com/2009/11/istock_000002214787xsmall.jpg?w=300&#038;h=199" alt="Bulletin board with post it notes" width="300" height="199" /></a>Last Thursday night’s <a href="http://nashua.scrumclub.org/">Nashua Scrum Club</a> introduced me to yet another new software development term.  Kanban.  The speaker was <a href="http://damonpoole.blogspot.com/">Damon Poole</a>, who spoke on the topic &#8220;Scrum and Kanban, Chocolate and Peanut Butter?&#8221;</p>
<p>Since I’d never heard the term Kanban before, I hit <a href="http://en.wikipedia.org/wiki/Kanban">Wikipedia</a> before the meeting to look it up.  But only ended up confused about how a manufacturing process applied to software development? </p>
<p>After the meeting, it seems that the answer is not so much kanban, but “<a>lean software development</a>.”</p>
<p>I only took a few notes, mostly listening and trying to understand what was, for me, a new concept.  Damon started out giving a brief overview of Agile (which was useful for the majority of the audience, who were not working in an Agile environment).  Then he talked a little bit about Lean.  My notes say “providing value” and “continuous improvement”.  Aha,  I know that one, <a href="http://en.wikipedia.org/wiki/Kaizen">kaizen</a>!   He mentioned 14 critical mass Agile practices, but I was only able to scribble down five before he flipped to the next slide.  I do hope that the slide deck is posted online at some point.</p>
<p>The next part of his talk focused on process.  He had some color coded slides that showed several iterations, with Development doing their work during one iteration, and QA doing the testing during the next iteration.  My notes say “This is not Agile.”</p>
<p>He talked a bit about how to break down large stories into smaller ones by listing the tasks, and then determining the critical tasks and the dependencies between them.  He had some great slides for this, which I appreciated, because I’m a visual learner.  And I was grateful that when he talked about workflow that he included Documentation (Specify &#62; Design &#62; Code &#62; Unit Test &#62; Integration/Doc &#62; Testing) because so many people seem to forget or ignore Doc when talking about Agile.</p>
<p>Then there were color coded slides, showing several small stories being worked on during several different sprints and showing how there were bits of downtime for the testers while they waited for the code.  Then he had a rather spiffy animation that removed the lines indicating the iterations, and sliding the testing tasks right up to match the coding tasks.  “Getting rid of the iteration fills the gaps between coding and testing.”</p>
<p>He talked about decoupling the tasks of Agile from the iteration/Sprint.  Backlog grooming can happen anytime.  Story point estimating can happen anytime.  These tasks can be decoupled from the Retrospective or the Planning phase of a Sprint.  “Done” is decoupled.  Done is no longer the end of the iteration, but the end of the story.  And when you’re finished with a story, you pull the next story off the top of the backlog and start working on that.  He also talked about a Work In Progress (WIP) limit, that no more than X story points could be in progress at any one time.  During the Q &#38; A someone asked when you demo?  His answer was not every time you finish a story (which might be every day or two) but when it makes sense to the team.</p>
<p>Damon finished his talk with a list of Lean and Kanban concepts that he thinks can be applied to Agile:</p>
<ul>
<li>Decoupling</li>
<li>Lean thinking</li>
<li>One piece flow</li>
<li>Work in Progress limits</li>
<li>Eliminating waste</li>
</ul>
<p>*****</p>
<p>Related Blog posts that I found while researching Kanban:</p>
<p><a href="http://kallokain.blogspot.com/2009/06/defining-kanban.html"> Defining Kanban</a></p>
<p><a href="http://leansoftwareengineering.com/ksse/feature-brigade/"> Between kanban and pair programming lies the feature brigade</a></p>
<p>Related Books:</p>
<p><a href="http://damonpoole.blogspot.com/2009/09/second-edition-of-do-it-yourself-agile.html"> Do It Yourself Agile by Damon Poole</a> &#8211; Free download!</p>
<p><a href="http://www.amazon.com/Lean-Software-Development-Agile-Toolkit/dp/0321150783">Lean Software Development by Mary and Tom Poppendieck</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Agile Philosophy: Is Lean the Missing Link?]]></title>
<link>http://fastfrontier.wordpress.com/2009/04/22/agile-philosophy-is-lean-the-missing-link/</link>
<pubDate>Wed, 22 Apr 2009 21:35:56 +0000</pubDate>
<dc:creator>Drew Jemilo</dc:creator>
<guid>http://fastfrontier.wordpress.com/2009/04/22/agile-philosophy-is-lean-the-missing-link/</guid>
<description><![CDATA[Agile Minds, Lean Thoughts (This entry was originally published in the Fast Frontier blog (Part 1 |]]></description>
<content:encoded><![CDATA[<div id="attachment_25" class="wp-caption alignright" style="width: 210px"><img class="size-full wp-image-25" title="philosophy-c1t0557-200w" src="http://fastfrontier.files.wordpress.com/2009/04/philosophy-c1t0557-200w.jpg?w=200&#038;h=150" alt="Agile Minds, Lean Thoughts" width="200" height="150" /><p class="wp-caption-text">Agile Minds, Lean Thoughts</p></div>
<p><em>(This entry was originally published in the <a href="http://fastfrontier.com/blog/">Fast Frontier blog</a> (<a title="Part 1" href="http://fastfrontier.com/blog/?p=144&#34;">Part 1</a> &#124; <a title="Part 2" href="http://fastfrontier.com/blog/?p=232">Part 2</a>) by <a href="http://fastfrontier.com/about/">Drew Jemilo</a>)</em></p>
<p>You&#8217;ve likely read the <a title="Agile Manifesto" href="http://agilemanifesto.org/">Agile Manifesto,</a> the values which were developed by representatives from Extreme Programming, Scrum, DSDM, Feature Driven Development, Crystal, and other alternatives to the heavy, document-driven Waterfall methodology.</p>
<blockquote>
<p style="text-align:center;"><em>We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:<br />
<strong>Individuals and interactions</strong> over processes and tools<br />
</em><em><strong>Working software</strong> over comprehensive documentation<br />
</em><em><strong>Customer collaboration </strong>over contract negotiation<br />
</em><em><strong>Responding to change</strong> over following a plan</em></p></blockquote>
<p>The Manifesto statements offer traceability to many of the Agile management practices.  If we use Scrum management practices for our examples, we can make the following connections:</p>
<ul>
<li>The daily 15-minute Scrum meeting with the team standing around the low tech task board supports the value of <em>individuals and interactions over processes and tools</em></li>
<li>The Sprint Planning meeting, where the light-weight User Stories are transformed into a shared understanding of the features to be implemented, supports the value of <em>working software over comprehensive documentation</em></li>
<li>The application of &#8220;good&#8221; versus &#8220;good enough&#8221; in order to deliver on time supports the value of <em>customer collaboration over contract negotiation</em></li>
<li>The re-prioritization of the Product Backlog before each Sprint Planning Meeting supports the value of <em>responding to change over following a plan</em></li>
</ul>
<h2>Agile Values vs. Business Value</h2>
<p>Though the Manifesto articulates the values that provide the foundation for the &#8220;what&#8221; and &#8220;how&#8221; of Agile, it doesn&#8217;t answer the question &#8220;why.&#8221;</p>
<p>Why are individuals and interactions more valuable than processes and tools?  Many people could argue that individuals are inconsistent, their memories are fallible, and their interactions are unpredictable.  Shouldn&#8217;t defined processes bring consistency and tools record decisions which may otherwise be lost or reinterpreted?</p>
<p>How do we move from Agile values to business value?</p>
<h2>Finding the &#8220;why&#8221; in Lean</h2>
<div id="attachment_26" class="wp-caption alignright" style="width: 210px"><img class="size-full wp-image-26" title="Birthplace of the Agile Manifesto" src="http://fastfrontier.files.wordpress.com/2009/04/skis-200w.jpg?w=200&#038;h=223" alt="Birthplace of the Agile Manifesto" width="200" height="223" /><p class="wp-caption-text">Birthplace of the Agile Manifesto</p></div>
<p>When the Agile Manifesto was developed in 2001 at the Snowbird Ski Resort in the Wasatch Mountains of Utah, Mary and Tom Poppendieck had not yet released their book on Lean Software Development.</p>
<p>Lean Software Development draws heavily from the rules of the Toyota Product System, later called Lean Manufacturing.  Simply put, it is a time-tested method which focuses on providing more value with less work.</p>
<p><strong>More value with less work.</strong> Now that&#8217;s something which any CEO could understand and support.</p>
<h2>Mapping Lean Manufacturing to Agile</h2>
<p>There are ten rules which can sum up the fundamental practices of Lean Manufacturing in the 1980&#8242;s.  By looking at both Lean Manufacturing and Lean Software Development, the &#8220;why&#8221; emerges for the Agile management practices.  These management practices can then be traced to the fundamental goal of producing more value with less work.</p>
<h2>Why Agile Management Practices Produce More Value with Less Work</h2>
<h3>
<div id="attachment_28" class="wp-caption alignright" style="width: 210px"><img class="size-full wp-image-28" title="Birthplace of Lean Manufacturing" src="http://fastfrontier.files.wordpress.com/2009/04/manufacturing-200w1.jpg?w=200&#038;h=195" alt="Birthplace of Lean Manufacturing" width="200" height="195" /><p class="wp-caption-text">Birthplace of Lean Manufacturing</p></div>
<p>Rule 1: Eliminate Waste</h3>
<p><em><strong>In Lean Manufacturing&#8230;</strong></em></p>
<ul>
<li>Value Stream Analysis is used to identify all activities in the manufacturing process and the value they add to the final product, not the process.  The process is then re-evaluated to find the most efficient way to add the intended product value.</li>
</ul>
<p><em><strong>In Agile&#8230;</strong></em></p>
<ul>
<li>The biggest waste in software development comes from building features which will be outdated or have little value when finally released.  A high priority feature today may be irrelevant in a year.  In Agile, the business re-evaluates requirements against changing customer needs before each Sprint so that only the highest priority ones are built.<strong></strong></li>
<li>In Agile, the User Stories are only frozen for the Sprint (though how they are implemented is negotiated throughout).  The business is less hesitant to commit to requirements for the Sprint because they have the opportunity to re-prioritize before each Sprint.  They waste less time on forecasting needs and the sign-off process.</li>
<li>The production of documentation which has no value after the completion of an iteration translates to the scrutiny of document production.  Which documents add value to the final product, and which simply support the process?  Agile replaces verbose requirements documentation with light-weight User Stories and Validation Conditions.  The design is then elaborated through conversation in the Sprint Planning Meeting and the daily Scrums.</li>
<li>In the Sprint Planning meeting, only the highest priority requirements are broken down into tasks so that time is not wasted on features which may never be implemented.  This process is often referred to as “just-in-time elaboration.”  Time is not wasted on details which may never be needed.</li>
</ul>
<h3>Rule 2: Minimize Inventory</h3>
<p><em><strong>In Lean Manufacturing&#8230;</strong></em></p>
<ul>
<li> Inventory is minimized because it costs money, consumes resources to manage, and becomes obsolete.</li>
</ul>
<p><em><strong>In Agile&#8230;</strong></em></p>
<ul>
<li> The inventory of requirements is kept at a high level and broken down “just in time” so that unnecessary details don’t need to be managed. During the Release Planning process, high level Epics are created, but not broken down into stories until they are targeted for a release.</li>
<li> Epics and stories are managed by the business and regularly pruned to eliminate the constant review and re-shuffling of the low or no-value items.</li>
</ul>
<h3>Rule 3: Maximize Flow / Reduce Work-In-Process</h3>
<p><em><strong>In Lean Manufacturing</strong></em>&#8230;</p>
<ul>
<li> Smaller batches and faster cycle times increase the flow of products from the manufacturer to the customer.</li>
</ul>
<p><em><strong>In Agile&#8230;</strong></em></p>
<ul>
<li> Short Sprint cycles produce completed units of functionality which can be released to the customer.  This allows a smoother flow of features, more frequent customer feedback, and faster responsiveness to change.<em><strong></strong></em></li>
</ul>
<h3>Rule 4: Pull From Demand / Decide as Late as Possible</h3>
<p><em><strong>In Lean Manufacturing&#8230;</strong></em></p>
<ul>
<li>Pulling from actual demand reduces reliance on and investment in forecasting models.  Driving from actual demand is more reliable in volatile environments.</li>
</ul>
<p><em><strong>In Agile&#8230;</strong></em></p>
<ul>
<li> Freezing requirements at the beginning of a long development process relies heavily on forecasting. By re-prioritizing the Product Backlog before each short Sprint begins, features are driven by actual demand rather than speculation.</li>
<li> Rather than trying to forecast architecture needs, Agile software engineering practices keep the initial architecture design light-weight and allows for refactoring (reworking of code).  This keeps designs simpler, but allows additional architecture elements to be added if needed.</li>
</ul>
<h3>Rule 5: Empower Workers</h3>
<p><em><strong>In Lean Manufacturing&#8230;</strong></em></p>
<ul>
<li> Teams are trained in work measurement and improvement techniques.  Changes which are driven from the workers  &#8220;on the floor&#8221; improve productivity and morale over changes mandated by management.</li>
</ul>
<p><em><strong>In Agile&#8230;</strong></em></p>
<ul>
<li>Teams are self organizing, and re-evaluate their processes after each Sprint in the Retrospective Meeting.</li>
<li>The team is empowered to decide how the stories are implemented.  Through User Stories, the Product Owner defines the &#8220;who,&#8221; the &#8220;what,&#8221; and the &#8220;why.&#8221;  The &#8220;how&#8221; is collaboratively developed by the team.</li>
</ul>
<h3>Rule 6: Meet Customer Requirements</h3>
<p><em><strong>In Lean Manufacturing&#8230;</strong></em></p>
<ul>
<li>This rule is self-evident, and follows Rule 1 (Eliminate Waste).  Manufacturing products which no one buys results in inventory which will never be sold.</li>
</ul>
<p><em><strong>In Agile&#8230;</strong></em></p>
<ul>
<li>In traditional Waterfall, success is measured by delivering the required features on time and on budget.  The delivery of the <em>right</em> requirements is often overlooked.  As in Rule 1, the creation of low or no-value features is the most wasteful aspect of software development.  Success is measured by delivering only the highest priority features each release in a &#8220;good&#8221; or &#8220;good enough&#8221; manner.</li>
<li>Before the Sprint begins, the business creates validation conditions for each User Story.  These validation conditions become the business&#8217; acceptance test criteria.  This means coding is driven by tests written by the business, not designs and tests created by the developers.</li>
<li>During the Sprint Review meeting at the end of each Sprint, the functionality is reviewed with the business to confirm that the requirements have been met.</li>
</ul>
<h3>Rule 7: Do it Right the First Time</h3>
<p><em><strong>In Lean Manufacturing&#8230;</strong></em></p>
<ul>
<li>Lean integrates quality at the source, putting controls in place at each step in the process.  Before Lean, manufacturing was optimized for product throughput.  At the end of the process, tests were conducted and defects were fixed at rework stations.</li>
</ul>
<p><em><strong>In Agile&#8230;</strong></em></p>
<ul>
<li> Tests are written before code, and defects are fixed at each step in the development process.  Barry Boehm observed that it costs 100 times more to fix a problem after release than early in the process.</li>
<li>In an Agile organizational structure, QA is not a silo.  Instead, QA personnel are integrated into each team.</li>
<li> The change control process becomes simpler and less costly because fewer defects are passed on.</li>
</ul>
<h3>Rule 8: Abolish Local Optimization</h3>
<p><em><strong>In Lean Manufacturing&#8230;</strong></em></p>
<ul>
<li>For rapidly changing markets requiring responsiveness over mass production, faster machine change-over is more important than the higher throughput of individually optimized stations.</li>
</ul>
<p><em><strong>In Agile&#8230;</strong></em></p>
<ul>
<li> Cross training and team collaboration are more important than siloed roles.  This allows team members to jump in where needed rather than passively waiting for someone else to complete a task or correct an issue blocking their progress.</li>
<li>Teams are responsible for delivery rather than individuals.  Rewarding individual performance (local optimization) rather than team performance detracts from each persons focus on the overall objective.</li>
</ul>
<h3>Rule 9: Partner With Suppliers</h3>
<p><em><strong>In Lean Manufacturing&#8230;</strong></em></p>
<ul>
<li>Companies are able achieved the the greatest efficiencies in their supply chain by reducing the number of suppliers and working with them as partners. The efficiencies gained by trust, collaboration, improved product flow, just-in-time movement of goods, and less supplier turnover outweigh the savings which come from competitive bidding.</li>
</ul>
<p><em><strong>In Agile&#8230;</strong></em></p>
<ul>
<li> Just as moving parts between suppliers is expensive, so is moving tasks between siloed departments.  Agile distributes siloed departments into the teams.</li>
<li>Integrating the business into each team with daily contact creates a partnership which provides just-in-time elaboration of business requirements and more cooperative relationships.  Requirements are not &#8220;thrown over the wall&#8221; with visibility only at the end of a long development cycle.</li>
</ul>
<h3>Rule 10: Create a Culture of Continuous Improvement</h3>
<p><em><strong>In Lean Manufacturing&#8230;</strong></em></p>
<ul>
<li>As Rule 5 (Empower Workers) states, everyone involved in the process has the power to improve it.  In contrast, a command and control environments rewards adherence to a strict process.  Assuming that processes can continuously be optimized, especially in changing markets, a culture is needed to support continuous improvement.</li>
</ul>
<p><em><strong>In Agile&#8230;</strong></em></p>
<ul>
<li> At the end of each Sprint, the team conducts a Sprint Retrospective, discussing two simple questions: what went well and what can be improved.  Software maturity models such as ISO9000 and the Software Engineering Institute&#8217;s (SEI) Capability Maturity Model (CMM) reward adherence to strict processes.  It assumes that their specific process is right for every situation.  Agile assumes that as markets change, requirements change, and the processes to meet those requirements change as well.</li>
</ul>
<h2>Agile: More Value with Less Work</h2>
<p>Tracing Agile back to the time-tested rules of Lean Manufacturing, we begin to move from philosophical values to business value.</p>
<ul>
<li>Rather than telling a CEO that Agile values individuals and interactions over processes and tools, you can tell her that Agile eliminates waste and creates productive partnerships between all parts of the business.</li>
<li>Rather than telling a CEO that Agile values working software over comprehensive documentation, you can tell her that Agile speeds up the delivery of valuable functionality to the customer.</li>
<li>Rather than telling a CEO that Agile values responding to change over following a plan, you can tell her that Agile delivers functionality based on current demand rather than forecasted needs or outdated requirements.</li>
</ul>
<p>And the list goes on: higher quality, continuous process improvement, and stronger collaboration.  Your Agile value proposition is suddenly defined.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Keep It Short And Simple]]></title>
<link>http://extremedeveloper.wordpress.com/2009/04/20/keep-it-short-and-simple/</link>
<pubDate>Mon, 20 Apr 2009 19:00:18 +0000</pubDate>
<dc:creator>mborisov</dc:creator>
<guid>http://extremedeveloper.wordpress.com/2009/04/20/keep-it-short-and-simple/</guid>
<description><![CDATA[One of the key principles of agile software development is minimizing the amount of written code and]]></description>
<content:encoded><![CDATA[<p>One of the key principles of agile software development is minimizing the amount of written code and keeping the design as simple as possible. Extreme programming for instance advocates the KISS (Keep It Short and Simple or Keep It Simple, Stupid), YAGNI (You Aren&#8217;t Going to Need It) and OAOO (Once And Only Once) principles and constant refactoring aimed at achieving design simplicity and code maintainability. Lean development encourages simplicity and implementing only what&#8217;s needed now, because maintaining and extending bloated code becomes a waste in the future. Less code means having to test less and in general &#8211; fewer bugs.</p>
<p>Keeping things neat and simple and fulfilling the acceptance criteria of implemented features with the least amount of code helps the project move forward quickly and achieve its goals.</p>
<p>How to implement the same amount of functionality with less code?</p>
<ul>
<li><strong>Practice test-driven development (TDD)</strong> &#8211; TDD is in part a method for testing code, but mostly a method for design. Adding new code just to make a failing test pass keeps things simple design-wise. Once all the tests pass, you&#8217;re done, no bells and whistles necessary.</li>
<li><strong>Use third party libraries</strong> &#8211; Using proven third party libraries saves you code. And most of the time they&#8217;ll work better than homegrown ones. Example for this is the <a href="http://commons.apache.org/" target="_blank">Apache Commons</a> project, which provides various useful Java libraries. Delegate as much work as possible to the underlying platform &#8211; use EJBs and JPA for persistence instead of JDBC, rely on container managed transactions and not on application managed transactions, use JSF instead of pure Servlet/JSP.</li>
<li><strong>Refactor continuously and mercilessly</strong> &#8211; Whenever you spot an area in the code that just looks too complex and bloated, try to simplify it. Practicing TDD, you already have the tests which will verify that the functionality is not broken.</li>
</ul>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Who do you charge for the context switch?]]></title>
<link>http://johannordin.wordpress.com/2009/01/08/who-do-you-charge-for-the-context-switch/</link>
<pubDate>Thu, 08 Jan 2009 21:35:16 +0000</pubDate>
<dc:creator>Johan Nordin</dc:creator>
<guid>http://johannordin.wordpress.com/2009/01/08/who-do-you-charge-for-the-context-switch/</guid>
<description><![CDATA[Assuming you are billing by the hour&#8230; who do you charge for the cost of the context switching]]></description>
<content:encoded><![CDATA[<p>Assuming you are billing by the hour&#8230; who do you charge for the cost of the context switching between different projects you are working with?</p>
<p><img class="alignnone size-full wp-image-20" title="cost-of-context-switch" src="http://johannordin.files.wordpress.com/2009/01/cost-of-context-switch.png?w=450&#038;h=282" alt="cost-of-context-switch" width="450" height="282" /></p>
<p>The picture and more information around the topic was found at: <a href="http://www.codinghorror.com/blog/archives/000691.html" target="_blank">http://www.codinghorror.com/blog/archives/000691.html</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Lets Talk Agile : Excellent Presentation from Slideshare]]></title>
<link>http://agilediary.wordpress.com/2008/12/31/lets-talk-agile-excellent-presentation-from-slideshare/</link>
<pubDate>Wed, 31 Dec 2008 12:23:44 +0000</pubDate>
<dc:creator>vikramadhiman</dc:creator>
<guid>http://agilediary.wordpress.com/2008/12/31/lets-talk-agile-excellent-presentation-from-slideshare/</guid>
<description><![CDATA[I happened to chance upon a spectacular and to-the point introduction from Denis Caron. I thought it]]></description>
<content:encoded><![CDATA[<p>I happened to chance upon a spectacular and to-the point introduction from <a title="Denis Caron" href="http://www.slideshare.net/dcaron" target="_blank">Denis Caron</a>. I thought it was direct [although sometimes it just was probably too much rather than just enough] and very exciting. It touched upon the normal subjects like agile not being a silver bullet/ magic wand but also that it is not a process or methodology. Slide 24 explained the main essence of Agile pretty well:</p>
<ol>
<li>Time-box everything and   stick to it!</li>
<li>Anticipate change in   everything you do.</li>
<li>Don’t build monuments,   keep it light and   malleable.</li>
</ol>
<p>And the market compulsions have been explained succinctly too : Change happens fast,   our competitors will   not wait for us while   we get ready! and Learning faster than   our competitor is our   only sustainable   competitive advantage</p>
<p><span style="display:block;width:425px;margin:0 auto;"> <embed src='http://widgets.vodpod.com/w/video_embed/ExternalVideo.766549' type='application/x-shockwave-flash' AllowScriptAccess='sameDomain' pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' flashvars='' /></p>
<p></span></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Lean Thinking - An Introduction]]></title>
<link>http://agilediary.wordpress.com/2008/12/21/lean-thinking-an-introduction/</link>
<pubDate>Sun, 21 Dec 2008 12:17:27 +0000</pubDate>
<dc:creator>vikramadhiman</dc:creator>
<guid>http://agilediary.wordpress.com/2008/12/21/lean-thinking-an-introduction/</guid>
<description><![CDATA[I have done an online webinar on Lean Thinking Introduction for Beginners and Dummies on WiZiQ. This]]></description>
<content:encoded><![CDATA[<p>I have done an online webinar on <a title="Lean Thinking Introduction" href="http://www.wiziq.com/public/session.aspx?detail=17903_Introduction-to-Lean-Thinking_teacher_Vikrama_Dhiman" target="_blank">Lean Thinking Introduction for Beginners and Dummies</a> on <a title="WiZiQ" href="http://www.wiziq.com/" target="_blank">WiZiQ</a>. This presentation has been the basis for the same &#8211; I have compiled this from various sources and keep improving it when I find an example from real world experience or web, that I feel should go here. I hope you find this a useful resource for Lean Thinking Introduction.</p>
<p style="text-align:left;"><span style="display:block;width:425px;margin:0 auto;"><a title="Lean Thinking Introduction" href="http://www.wiziq.com/educational-tutorials/presentation/7713-Lean-Thinking-An-Introduction" target="_blank">Lean Thinking Introduction</a> by <a title="Vikrama Dhiman" href="http://www.wiziq.com/member-profile/31559-vikrama-dhiman-agile-software-development-teacher" target="_blank">Vikrama Dhiman</a></p>
<p><embed src='http://widgets.vodpod.com/w/video_embed/ExternalVideo.763988' type='application/x-shockwave-flash' AllowScriptAccess='sameDomain' pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' flashvars='' /></span></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Mary Popendieck On The Role Of Leadership In Software Development]]></title>
<link>http://onlinemanagement.wordpress.com/2008/10/15/mary-popendieck-on-the-role-of-leadership-in-software-development/</link>
<pubDate>Wed, 15 Oct 2008 16:11:55 +0000</pubDate>
<dc:creator>godzhesas</dc:creator>
<guid>http://onlinemanagement.wordpress.com/2008/10/15/mary-popendieck-on-the-role-of-leadership-in-software-development/</guid>
<description><![CDATA[I&#8217;ve stumbled on this video on youtube, very interesting, i am sure that you know the speaker,]]></description>
<content:encoded><![CDATA[<p>I&#8217;ve stumbled on this video on youtube, very interesting, i am sure that you know the speaker, and if you don&#8217;t her name is Mary Popendieck, the co-author of the book <a href="http://www.poppendieck.com/">&#8220;Lean Software Development</a>&#8220;</p>
<p>From Google Tech Talks. It is a long video but well worthwhile to watch it.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Kanban and Scrum (done or to be done?)]]></title>
<link>http://ullizee.wordpress.com/2008/09/30/kanban-and-scrum-done-or-to-be-done/</link>
<pubDate>Tue, 30 Sep 2008 22:39:44 +0000</pubDate>
<dc:creator>Gunther</dc:creator>
<guid>http://ullizee.wordpress.com/2008/09/30/kanban-and-scrum-done-or-to-be-done/</guid>
<description><![CDATA[Kan and Ban are Japanese for Card and Signal. A Kanban (signal card) originates from the Toyota Prod]]></description>
<content:encoded><![CDATA[<p><em><a href="http://ullizee.files.wordpress.com/2008/06/the-machine-that-changed-the-world.jpg"><img class="alignright size-medium wp-image-116" title="the-machine-that-changed-the-world" src="http://ullizee.files.wordpress.com/2008/06/the-machine-that-changed-the-world.jpg?w=66&#038;h=100" alt="" width="66" height="100" /></a>Kan </em>and <em>Ban </em>are Japanese for <em>Card</em> and <em>Signal</em>. A <strong>Kanban</strong> (<em>signal card</em>) originates from the <strong>Toyota Production System</strong> (<em>TPS</em>) where it is a physical card that visualizes a pull question for inventory. <em>It serves to minimize stock in a &#8216;Just In Time&#8217; strategy and is a way to &#8216;eliminate waste&#8217; while assuring a continuous flow of goods.</em></p>
<p><a href="http://ullizee.files.wordpress.com/2008/09/kent-beck-extreme-programming-explained.jpg"><img class="alignleft size-medium wp-image-828" title="Ken Beck - Extreme Programming Explained" src="http://ullizee.files.wordpress.com/2008/09/kent-beck-extreme-programming-explained.jpg?w=80&#038;h=100" alt="" width="80" height="100" /></a>In an Agile context, a <strong>Story Card</strong> is a Kanban. <em>Out of eXtreme Programming it grew into an established Agile practice in describing a feature.</em> A <strong>Kanban Board</strong> holds the active Story Cards per &#8216;status&#8217;, thus being an <strong>Information Radiator</strong> (<em>term by <a title="Website of Alistair Cockburn" href="http://alistair.cockburn.us/index.php/Main_Page" target="_blank">Alistair Cockburn</a>, also my inspiration for the <a title="My publication on Scrum and the Cooperative Game" href="http://ullizee.wordpress.com/2008/06/25/scrum-and-the-cooperative-game/">Games</a> metaphor</em>).</p>
<p><a href="http://ullizee.files.wordpress.com/2008/09/myfragility_logo-2.jpg"><img class="size-thumbnail wp-image-864 alignright" title="myfragility_logo" src="http://ullizee.files.wordpress.com/2008/09/myfragility_logo-2.jpg?w=102&#038;h=21" alt="My.Fragility_logo" width="102" height="21" /></a>My <strong>Scrum </strong>Product ànd Sprint Backlog items are User Stories.<em> (&#8216;Minimal Marketable Feature&#8217; is more </em><em>generic</em><em>, but I stick to &#8216;User Story&#8217;)</em> The Sprint Backlog is made visible by sticking a printout from my (Excel) <strong>tracking model </strong>on a <strong>wall</strong>. Around the Daily Scrum (<em>we do it standing up</em>) each Story Lead writes the estimated time to finish a Story on the printout and I create the Sprint Burndown. That works fine. <em>We use a Kanban Board only for feedback from functional testing. This is generally too small to create a Story (would be &#8216;waste&#8217;).</em></p>
<p><strong>Velocity</strong> is a way to optimize the inventory and the continuity of work. Traditionally &#8216;velocity&#8217; equals the #<strong>Story Points</strong> (<em>gummy bears</em>) that can be finished in one iteration (a Sprint). However, I apply an overall Velocity as a multiplicator on Story Points (<em>ideal time</em>) to result in #planning days. The size of the inventory (in #Story Points) for a Sprint is determined by dividing the available #planning days of a team (<em>minus 2 slack days</em>) by expected Velocity (<em>Yesterday&#8217;s weather</em>). <em>Note: continuity is also assured by the presence of the Product Owner. He/she makes sure that no functional issue remains unsolved, on the spot!</em></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Lean Software Development Methodologies: Tom and Mary Poppendieck]]></title>
<link>http://ceointelliflex.wordpress.com/2008/07/09/lean-software-development-methodologies-tom-and-marry-poppendiecks/</link>
<pubDate>Wed, 09 Jul 2008 02:31:49 +0000</pubDate>
<dc:creator>Abhishek Agrawal</dc:creator>
<guid>http://ceointelliflex.wordpress.com/2008/07/09/lean-software-development-methodologies-tom-and-marry-poppendiecks/</guid>
<description><![CDATA[July 06: Xebia India IT Architects hosted a session by The Poppendiecks. I was fortunate to be one o]]></description>
<content:encoded><![CDATA[<p><a href='http://ceointelliflex.files.wordpress.com/2008/07/poppendiecks-001.jpg'><img src="http://ceointelliflex.files.wordpress.com/2008/07/poppendiecks-001.jpg?w=300&#038;h=224" alt="" title="poppendiecks-001" width="300" height="224" class="alignnone size-medium wp-image-662"></a><b>July 06:</b> <a HREF="http://www.xebiaindia.com" target="_blank">Xebia India IT Architects</a> hosted a session by <a HREF="http://www.poppendieck.com/people.htm" target="_blank">The Poppendiecks</a>.<br />
I was fortunate to be one of the participants as well as the organizer of their North India trip. Having practicing Lean, Scrum and XP for quite some time now, it was a nice experience to measure our understanding of these concepts against the &#8220;creator&#8217;s definitions&#8221;. Here I take you on a quick(??) trip to the session through my eyes&#8230;</p>
<p><!--more--></p>
<p>We started with a cup of steaming coffee on a beautiful rainy day at <a HREF="http://www.claridges-hotels.com/Delhi/index.asp" target="_blank">Hotel Claridges</a>. When the clock struck 10 AM, I heard Mary telling me &#8220;Lets get started&#8221; &#8211; I was impressed by her punctuality which she displayed at many more ocassions during the sessions &#8211; and proceeded to quickly introduce them and thank Xebia (the sponsors) and ASCI (they are behind gettin all these great guys to India to share their learnings with us). Mary took over from there on.</p>
<p>Mary narrated how the company she was working with faced stiff competetion during mid 80s. Innovating and &#8220;cutting the waste&#8221; seemed to be the only way to survival &#8211; as they say: Necessity is the mother of all inventions <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>During 1998-99, Mary happened to work on a government project and was introduced to the &#8220;Waterfall Model&#8221; &#8211; she was surprised and could hardly believe people were developing software that way! On completing the project, she decided to formalize her thinking about software development and her learnings from other industries, specially 3M- her former employer.</p>
<h2>Principles of Lean Software Development</h2>
<ul>
<li>Eliminate Waste</li>
<li>Embed Quality</li>
<li>Learn First</li>
<li>Deliver Fast</li>
<li>Improve Forever</li>
<li>Respect People</li>
<li>Think System</li>
</ul>
<p>Having defined the above principles, she then moved on to giving a few crisp and concise definitions:</p>
<p><a href='http://ceointelliflex.files.wordpress.com/2008/07/poppendiecks-003.jpg'><img src="http://ceointelliflex.files.wordpress.com/2008/07/poppendiecks-003.jpg?w=300&#038;h=224" alt="" title="poppendiecks-003" width="300" height="224" class="alignnone size-medium wp-image-667"></a><b>Waste</b> is…<br />
Anything that depletes resources of time, effort,<br />
space, or money without adding customer value.</p>
<p><b>Value</b> is…<br />
Seen through the eyes of those who pay for, use,<br />
and derive value from the systems we create.</p>
<p>A <b>System</b> is…<br />
A complete and useful product, along with whatever<br />
is needed to create and distribute the product.</p>
<p>This was followed by drawing up an intersting parallel between &#8220;The Seven Wastes of Manufacturing Industry&#8221; as defined by <a HREF="http://en.wikipedia.org/wiki/Muda_(Japanese_term)#The_seven_wastes" target="_blank">Taiichi Ohno</a> and the <b>Seven Wastes of Software Development</b>:</p>
<ol>
<li>Extra Features</li>
<li>Partially Done Work</li>
<li>Relearning</li>
<li>Handoffs</li>
<li>Task Switching</li>
<li>Delays</li>
<li>Defects</li>
</ol>
<p>
The baseline being: &#8211; &#8220;Put on the customer&#8217;s glasses and then decide &#8211; if its not value, its waste&#8221;<br />
This naturally led us to the mention of the famous <b>80-20 principle</b> that states that &#8220;<b>80% value is derived from 20% features</b>&#8220;<br />
<a href='http://ceointelliflex.files.wordpress.com/2008/07/poppendiecks-004.jpg'><img src="http://ceointelliflex.files.wordpress.com/2008/07/poppendiecks-004.jpg?w=300&#038;h=224" alt="" title="poppendiecks-004" width="300" height="224" class="alignnone size-medium wp-image-666" style="float:right;" /></a><br />
We then pondered over the thought that this should mean fewer lines of code are better, fewer function points (only as much as required by the customer) as better than lots of FPs &#8211; but traditionally the companies measure productivity and performance in number of function points  &#8211; thus it needs a change of mindset rather than just the processes to really adapt Lean Way successfully.</p>
<p>We all nodded that there&#8217;s a need to think out-of-the-box.<br />
Mary illustrated with a beautiful example from manufacturing industry:<br />
One of the machines took 3 days to setup whenever there was a change of die required. So the <b>&#8220;common knowledge&#8221;</b> said</p>
<ul>
<li>Die changed have a huge overhead</li>
<li>Don’t change dies very often</li>
</ul>
<p>While Taiichi Ohno&#8217;s out-of-the-box thinking believed that:</p>
<ul>
<li>Economics requires frequent die change</li>
<li>One Digit Exchange of Die</li>
</ul>
<p></p>
<p>As it turned out, it really was possile to do a &#8220;One Digit Exchange of Die&#8221; &#8211; <u>The setup time came down from 3 weeks to a whooping 9 minutes!</u><br />
If we apply this theory to software dvelopment, it turns out that while <b>&#8220;common knowledge&#8221;</b> states:</p>
<ul>
<li>Releases have a huge overhead</li>
<li>Don’t release very often</li>
</ul>
<p>The Lean would suggest:</p>
<ul>
<li>Economics requires many frequent releases</li>
<li>One Digit Releases &#8211; welcome to the concept of iterative and incremental &#8211; did we hear &#8220;sprints&#8221; <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<p>
Indeed, if we come to think of it, &#8220;One digit releases&#8221; do make a lot of sense &#8211; Learning from the &#8220;real user&#8221; of the system would be the best learning.<br />
Which in turn means frequent customer feedback that comes from frequent &#8220;one digit&#8221; releases.</p>
<p>An interesting kind of waste was discussed &#8211; <b>&#8220;Wishful thinking&#8221;</b>. Its when we &#8220;hope&#8221; or &#8220;assume&#8221; things like availability, roadblocks, capabilities et al rather than &#8220;knowing&#8221; these parameters based on facts.<br />
<br />
<b>&#8220;Hand offs&#8221;</b>, another kind of waste occurs when we try and seperate:</p>
<ul>
<li>Responsibility &#8211; What to do</li>
<li>Knowledge &#8211; How to do it</li>
<li>Action &#8211; Actually doing it</li>
<li>Feedback &#8211; Learning from results</li>
</ul>
<p><a href='http://ceointelliflex.files.wordpress.com/2008/07/crossfunctionalteams.jpg'><img src="http://ceointelliflex.files.wordpress.com/2008/07/crossfunctionalteams.jpg?w=300&#038;h=80" alt="" title="crossfunctionalteams" width="300" height="80" class="alignnone size-medium wp-image-665" /></a><br />
This is when we discussed the importance of <b>&#8220;Cross Functional Teams&#8221;</b>.</p>
<p>Mary quickly discussed &#8220;Task Switching&#8221; and &#8220;Delays&#8221; as other forms of wastes, illustrating with the example of The Empire State Building  &#8211; how it was completed in 1.5 years defing the common beliefs and all odds.</p>
<p>&#8220;Pulling&#8221; the work rather than the work getting &#8220;Pushed&#8221; seemed to be the common sense way of working.</p>
<p><b>&#8220;Defects&#8221;</b>, arguably the most important waste, can be avoided by <b>&#8220;Inspection&#8221;</b>.<br />
Again, inspection itself might be a waste!</p>
<p><i><b>Inspection to FIND defects is a waste, pro-active inspection to PREVENT defects is essential.</b></i><br />
<br />
<a href='http://ceointelliflex.files.wordpress.com/2008/07/categoriesoftesting.jpg'><img src="http://ceointelliflex.files.wordpress.com/2008/07/categoriesoftesting.jpg?w=300&#038;h=165" alt="" title="categoriesoftesting" width="300" height="165" class="alignnone size-medium wp-image-664"></a>The importance of making the system error-proof at every stage came up &#8211; taking an example from hardware industry, its impossible to plug-in the monitor cable into your laptop the &#8220;wrong&#8221; way &#8211; if it fits in, it got to be right!</p>
<p>Testing at each step was emphasized and four categories of testing were introduced.</p>
<p>At this point Tom pitched in with an enticing statement &#8211; &#8220;If you don&#8217;t engage in getting what the customer really wants, in getting the big picture, in interacting with the client, then you are not a developer, but a mere coder!&#8221;</p>
<p>Mary then introduced <b>&#8220;Value Stream Map&#8221;</b> as a diagnostic tool to find the biggest waste (opportunity for improvement) in a development process.<br />
We quickly went on a short break and reassembled in 10 mins to do a hands-on excercise Mapping the Value Stream of one of the real life processes from our companies. We realised how small wastages at each step accumulated to give a very low efficiency and why it is so important to eliminate waste and staying lean.</p>
<p><a href='http://ceointelliflex.files.wordpress.com/2008/07/untitled.jpg'><img src="http://ceointelliflex.files.wordpress.com/2008/07/untitled.jpg?w=300&#038;h=213" alt="" title="untitled" width="300" height="213" class="alignnone size-medium wp-image-663" /></a></p>
<p>As Claridges people gently suggested that lunch was ready and its aroma made us hungry, Mary and Tom Poppendieck decided to call it a day. We had some sumptuous food and proceeded to Xebia office for the <a HREF="http://blog.xebia.com/2008/07/07/lean-gurus-mary-and-tom-poppendieck-at-xebia-india/">second part of &#8220;Open Discussions&#8221;</a> &#8211; this one being exclusively for Xebians.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Scrum and the Cooperative Game]]></title>
<link>http://ullizee.wordpress.com/2008/06/25/scrum-and-the-cooperative-game/</link>
<pubDate>Wed, 25 Jun 2008 12:38:09 +0000</pubDate>
<dc:creator>Gunther</dc:creator>
<guid>http://ullizee.wordpress.com/2008/06/25/scrum-and-the-cooperative-game/</guid>
<description><![CDATA[In many (IT) partnerships and implementations people seem to prefer to strangle each other rather th]]></description>
<content:encoded><![CDATA[<p style="text-align:center;">In many (IT) partnerships and implementations people seem to prefer to strangle each other rather than assure mutual benefits.</p>
<p><a href="http://ullizee.files.wordpress.com/2008/06/scrum-alliance-logo.jpg"><img class="size-medium wp-image-114 alignright" src="http://ullizee.files.wordpress.com/2008/06/scrum-alliance-logo.jpg?w=87&#038;h=18" alt="" width="87" height="18" /></a>I&#8217;m applying <a title="Control Chaos website by Scrum founding father Ken Schwaber" href="http://www.controlchaos.com/" target="_blank">Scrum</a> (over 4 years already), in my projects and in my management. It continuously helps me to cross fences; between suppliers and customers, business and IT, analysts and developers, <em>x</em>-layer developers and <em>y</em>-layer developers, etc.</p>
<p><a href="http://ullizee.files.wordpress.com/2008/06/alistair-cockburn-agile-software-development.jpg"><img class="alignright size-medium wp-image-115" src="http://ullizee.files.wordpress.com/2008/06/alistair-cockburn-agile-software-development.jpg?w=66&#038;h=84" alt="" width="66" height="84" /></a>In my Scrum-based <em>development </em>process I use <em><strong>Pre-Game Staging</strong></em> to name the <em>barely enough</em> preparative phase for 1 stage of software development. The &#8220;Games&#8221; metaphor was described by <a title="Website of Alistair Cockburn" href="http://alistair.cockburn.us/index.php/Main_Page" target="_blank">Alistair Cockburn</a> in his biblical work <em>Agile Software Development</em>. I strongly agree with him that software development should be a <strong>Cooperative Game</strong>.</p>
<ul>
<li><em>Cooperative</em>: a team of people works <em>together</em> towards a common goal, not to fight each other.</li>
<li><em>Non-zero sum</em>: the players are not opposed and do not try to win by getting the other at zero. There are multiple winners.</li>
<li><em>Finite</em> and <em>goal-seeking</em>: the game ends when the goal is achieved. The game is not meant for just staying in existence.</li>
</ul>
<p style="text-align:left;"><a href="http://ullizee.files.wordpress.com/2008/06/the-machine-that-changed-the-world.jpg"><img class="size-medium wp-image-116 alignright" src="http://ullizee.files.wordpress.com/2008/06/the-machine-that-changed-the-world.jpg?w=57&#038;h=82" alt="" width="57" height="82" /></a>You will find this as well in the <em>integrated</em> prerequisite for supplier-customer relationships (possibly multi-tier), from Toyota&#8217;s <strong>Lean Production</strong> to Poppendieck&#8217;s <strong>Lean Software Development</strong>. It offers far more certainties than our commonly applied bidding processes. Think (read) about it!</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Programming While Stupid]]></title>
<link>http://darynholmes.wordpress.com/2008/06/21/programming-while-stupid/</link>
<pubDate>Sat, 21 Jun 2008 14:37:23 +0000</pubDate>
<dc:creator>darynholmes</dc:creator>
<guid>http://darynholmes.wordpress.com/2008/06/21/programming-while-stupid/</guid>
<description><![CDATA[Over engineering is a major problem within the software industry. This problem has led to the adopti]]></description>
<content:encoded><![CDATA[<p>Over engineering is a major problem within the software industry. This problem has led to the adoption of ‘lean software development’ &#8211; <em>at least amongst the agile folk</em>. Lean software development is writing code to support the current set of requirements and nothing more. This is not as easy to do as one might think.</p>
<p>As developers we naturally tend to make assumptions as to what the user, or system, will need. In truth, it is very difficult to accurately predict the future requirements of a system. Coding to meet our assumptions will inevitably lead to over engineering.</p>
<p>We should not let our intuition guide us into false requirements. As strange as it may sound, it takes a concious effort to stop ourselves from doing extra work. We need to adopt a &#8216;lean coding culture&#8217;. We need to constantly remind our selves to stick to lean software development. In agile teams it is common to hear developers reminding each other with certain acronyms and expressions e.g. &#8216;do the simplest thing that works&#8217;.</p>
<p>‘Do the simplest thing that works’ is in-line with lean software development, although it can be misleading. Some people interpret this as &#8216;do the first thing that comes to mind&#8217; e.g. slap on another if statement &#8211; that is a simplistic solution and not a simple solution. If you take a quick and dirty simplistic approach you will end up with a <a href="http://www.laputan.org/mud/mud.html#BigBallOfMud" target="_blank">big ball of mud</a>. You need to do the simplest thing that <em>works</em>. The thing that <em>works</em> is something that can be tested, it is something that does not add unnecessary complexity. Therefore the simplest thing that works is not necessarily the quickest and easiest thing to do.</p>
<p><!--more-->When talking about lean software development we often refer to KISS (Keep It Simple Stupid). I agree with keeping things simple but I don’t like to be called stupid, <em>the truth hurts</em>. I prefer to use: Keep It Simple and Sensible. This is more positive and the sensible part indicates that we should give some thought to our code. For example, instead of littering your code with conditional statements you could refactor the code to use an established design pattern. Having said that, design patterns are not always a good idea.</p>
<p>You should not implement a design pattern unless there are real signs indicating that you need a smarter solution. It can be detrimental to implement a design pattern for the sake of having one. You are likely to implement the wrong pattern and that code will be a hindrance. Only do what you really <em>need</em> to do. This is also referred to as YAGNI.</p>
<p>YAGNI (You Ain’t Gonna Need It) – This is a term used by Russ Olsen in <a href="http://www.rubyinside.com/design-patterns-in-ruby-by-russ-olsen-695.html" target="_blank">Design Patterns in Ruby</a>. In this book, Russ Olsen does a fantastic job of explaining design patterns. He also explains when not to use certain patterns and the problems that come with using each pattern &#8211; <em>After all, software is about trade off&#8217;s.</em></p>
<p>Russ Olsen explains that we should not write code or implement patterns in anticipation of a requirement that might emerge. Firstly that requirement may never surface, and if it does it may have a stipulation which makes the pre-emptive solution void. It is safer to code to meet the current and real requirements of the system. To drive this point home, here is a <em>delightful </em>paragraph from Russ Olsens’ Design Patterns in Ruby:</p>
<p>“Look at it this way: Barring a sharp blow to the head, as you stand here today you are as dumb as you ever will be. We are all learning, getting smarter every day. This is especially true in software projects: You can be sure that you will have a better grasp of the requirements, technology, and design of any software that you work on at the end of the project then at the beginning. Whenever you put in a feature before you really need it, you are guilty of programming while stupid; if you wait until you really do need the thing, you are likely to have a better understanding of what you need to do and how you should go about doing it.”</p>
<p>The moral is: Don&#8217;t be guilty of programming while stupid</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Comparing Lean and Scrum - What's the difference? ]]></title>
<link>http://johannordin.wordpress.com/2008/06/11/comparing-lean-and-scrum-whats-the-difference/</link>
<pubDate>Wed, 11 Jun 2008 20:02:55 +0000</pubDate>
<dc:creator>Johan Nordin</dc:creator>
<guid>http://johannordin.wordpress.com/2008/06/11/comparing-lean-and-scrum-whats-the-difference/</guid>
<description><![CDATA[What&#8217;s the main difference between Lean software development and agile methods like Scrum? Unt]]></description>
<content:encoded><![CDATA[<p>What&#8217;s the main difference between Lean software development and agile methods like Scrum? Until recently, that question has not bothered me at all because I didn&#8217;t really care. The principles of Lean software development has helped me to focus on value and waste in software development. Agile values, principles and practices are useful tools when developing software.</p>
<p>But, then it occurred to me that there is really another difference, I&#8217;ll try to describe my thought by raising the question to you and your development team: What are you actually selling to your customer, how do you create value?</p>
<p>I&#8217;ll give you three alternatives: 1) are you selling a plan, 2) are you selling a team or 3) are you selling a product.</p>
<p><strong>Selling the plan</strong></p>
<p>Selling a plan, to me,  is not agile or lean at all. Let&#8217;s say that the customer would like to have some kind of software development, and the intentions, business case etc. are all valid and correct. The customer contacts development company <em>MasterPlan.Net </em>and they will create a plan describing how they are going to create the value needed.</p>
<p>The assumption here is that if we follow the plan, then something valualble will be created. Let&#8217;s look at the other part:</p>
<p><strong>Selling a team</strong></p>
<p>When selling a team; the customer can choose to use the team in any way he like, if it is to develop a piece of software, build a house etc. in theory it does not matter.</p>
<p>If the customer has a vision, a product backlog and uses agile methods such as Scrum, then there will most likely come something valuable out from the team every 2-4 weeks.</p>
<p>The cost for producing the software is based on the cost of the team and the number of iterations needed by the team to create a version that meets the need from the customer.</p>
<p>This scenario is much more agile and will respond to change much better than the scenario with the plan. On the other hand, what about&#8230;</p>
<p><strong>Selling a product</strong></p>
<p>Let&#8217;s assume that there is a software system, and we call it a product. Each feature in the system flows through a value creating process including actions such as development, testing, and deployment.</p>
<p>The challange here, is to transform business needs into business values as efficent as possible. And the development process is a description of the current best way of doing that.</p>
<p>To do this efficiently, a motivated, complete team is created. With the ability to move items through the process. The team uses the concept of Scrum to work in iterations. The team tries to minimize the number of things in process the size of the items in the process so that the speed is maximized.</p>
<p>In the perfect world, features are delivered just-in-time, and development teams pulls work from the input queue. Or even better, it can be seen as a Kanban system&#8230; where the order is added last in the process&#8230; that&#8217;s where the motivations for test-driven development is really clear.</p>
<p><strong>So what&#8217;s the point?</strong></p>
<p>Maybe, I&#8217;ll really need to describe this in a better way. But for me this states the real difference between Scrum and Lean.  Do you see the difference?</p>
<p>Scrum is the framework for helping the <strong>team </strong>collaborating, to make things flow through the development process.</p>
<p>Lean Software Development, is about creating <strong>value, </strong>make things flow in the value stream from business need to business value.</p>
<p>It is possible to use waterfall project methods to push things thorugh the value stream, but what you&#8217;ll see then is a number of large queues between for example development and test etc. Ie. waste in the lean world&#8230; so that is something that we don&#8217;t like.</p>
<p>SO, again, what&#8217;s the point, Agile methods and Scrum are useful practices to enable Lean Software Developent. For me, that complements the perspective of Lean being a foundation of principles guiding software development.</p>
<p>So, is Lean Software Development applicable when you are developing software in a non-product line environment? Yes, I&#8217;ll believe so but more on that in another post. What do you think?</p>
<p>cheers!</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Is technical debt waste?]]></title>
<link>http://johannordin.wordpress.com/2008/03/21/is-technical-debt-waste/</link>
<pubDate>Fri, 21 Mar 2008 06:43:45 +0000</pubDate>
<dc:creator>Johan Nordin</dc:creator>
<guid>http://johannordin.wordpress.com/2008/03/21/is-technical-debt-waste/</guid>
<description><![CDATA[How does technical debt relate to the seven wastes in Lean Software Development? Extra features]]></description>
<content:encoded><![CDATA[<p>How does technical debt relate to the seven wastes in Lean Software Development?</p>
<ol>
<li>Extra features &#8211; I cannot see any direct correlations here</li>
<li>Partially done work &#8211; If code that is not refactored is not done, then skipping refactoring will be valid here. But I don&#8217;t think it is that obvious. Based on that argument, we can actually motivate allmost everyting by this kind of waste</li>
<li>Relearning &#8211; Does not help me that much here, or?</li>
<li>Task switching &#8211; Nope</li>
<li>Handoffs &#8211; Nope</li>
<li>Delay &#8211; Code that is not refactored will result in delay and will take longer to maintain and make changes to. So, Delay can be an effect, but is not the cause.</li>
<li>Defects &#8211; Not really, but as with delay, sloppy code will most likely result in more defects or increased cost.</li>
</ol>
<p>In the book Lean Software Development &#8211; From concept to Cash by Tom and Mary Poppendieck, the topic complexity is one of the first topics discussed when waste is discussed. Technical debt will result in increased complexity. Adding complexity into the code is &#8211; what I can see &#8211; increasing the technical debt.</p>
<p>So, my current standpoint is that putting technical debt into the code base is waste. Removing technical debt is neccessary waste that should not be needed if the sloppy code was not there from the first place.</p>
<p>Then the next question is how we can develop code with minimal technical debt fast enough? Well, write less code, build quality into the software via Test-Driven-Development and constant refactoring might be a good start.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Slack]]></title>
<link>http://johannordin.wordpress.com/2008/02/12/slack/</link>
<pubDate>Tue, 12 Feb 2008 21:29:36 +0000</pubDate>
<dc:creator>Johan Nordin</dc:creator>
<guid>http://johannordin.wordpress.com/2008/02/12/slack/</guid>
<description><![CDATA[I&#8217;ve just realized the huge impact slack has to development productivity within an organizatio]]></description>
<content:encoded><![CDATA[<p>I&#8217;ve just realized the huge impact slack has to development productivity within an organization. I have read the theories, but it is not until I&#8217;ve seen it in practice I really get it (or think I get it).</p>
<p>Do you have the guts to create slack to increase productivity?</p>
<p>Go lean !</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Is a company wide standard a failure? ]]></title>
<link>http://johannordin.wordpress.com/2008/02/10/is-a-company-wide-standards-a-failure/</link>
<pubDate>Sun, 10 Feb 2008 14:46:28 +0000</pubDate>
<dc:creator>Johan Nordin</dc:creator>
<guid>http://johannordin.wordpress.com/2008/02/10/is-a-company-wide-standards-a-failure/</guid>
<description><![CDATA[Inspired of Mary Poppendiecks post on Lean Software Development What is true for a company standard?]]></description>
<content:encoded><![CDATA[<p>Inspired of <a href="http://tech.groups.yahoo.com/group/leandevelopment/message/2152">Mary Poppendiecks post on Lean Software Development</a></p>
<p>What is true for a company standard? Is it:<br />
1)  These standards should be used throughout the whole company<br />
2) We cannot have local customizations of that standard, because then it would not be a company standard<br />
3)  If someone finds a better way of working ie. improving the standard, that that change should be communicated throughout the whole company.</p>
<p>If these three statements are true; then I don&#8217;t think company standards are something to strive for, for a couple of reasons:</p>
<p>1) It feels like, this standard is the best way to do things, just follow the process and the work will be done..<br />
2) We remove local creativity<br />
3)  We as a company get really slow, every improvment turns into a large change in way of working for a lot of people.<br />
4) Instead of enable standards for improvement and efficiency, the standards are things that will prevent people for being productive and creative.</p>
<p>So, how should we think about standards then? I thik the concepts from Lean and Kaizen can guide us here:</p>
<p>Standards are there to describe our current best way of doing things. The teams can <b>choose </b>to follow the standards. The team is accountable and responsible for achieving the result of thier work, if they decide to not follow our current best way of doing things, it is their call.</p>
<p>Let&#8217;s assume that it is not the culture of the company to delegate responsibility to the teams. Then the people deciding what the team should do must have a tool to commuicate the directions for the team. Let us also assume that these directions are called company standards. Because these standards describe how we are doing things in this company&#8230;</p>
<p>If the team is not responsible for what they are doing, where is the motivation for improvements? I think respect for people and delegating responsibility as close to the work as possible is the key to continous improvements.</p>
<p>So, is a company wide standard a failure? Well, it depends on how the company thinks about the people in the enterprise.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[How do you create value in your enterprise? ]]></title>
<link>http://johannordin.wordpress.com/2008/02/01/how-do-you-create-value-in-your-enterprise/</link>
<pubDate>Fri, 01 Feb 2008 06:08:28 +0000</pubDate>
<dc:creator>Johan Nordin</dc:creator>
<guid>http://johannordin.wordpress.com/2008/02/01/how-do-you-create-value-in-your-enterprise/</guid>
<description><![CDATA[One traditional way of looking at Software Development is that the development organisation delivers]]></description>
<content:encoded><![CDATA[<p>One traditional way of looking at Software Development is that the development organisation delivers software within a development project. The solution is then maintained and operated in some way during its life cycle. Withe one or more larger change projects happening during the life-cycle.</p>
<p>Looking at the value stream and the principles of lean, the lean organization aims at reducing the cycle time from the need/request of feature until it is in production. Moving focus to features (and we only do the features that provide the highest value right?) we reduces a lot of waste partially done work, extra features etc etc.</p>
<p>In a larger enterprise, with many different processes and also many different sysetms, the need comes from the business in the process improvements rather than in syftem improvements. Well this is just plain old SOA, or?</p>
<p>Looking at SCRUM; you have the product owner and the product backlog. Where the product backlog is an prioritized list of the most valuable featuresets for that solution.</p>
<p>From a business perspective, moving from a system backlog to a process backlog, and the development company/partner/department/team is responsible for eliminating backlog items as effectively as possible. Software development can be a more natural part in business improvements instead of just delivering software.</p>
<p>For me, this aligns very well with what I consder to be Lean.</p>
<p>So my question are, are there any process backlogs available?  Anyone having experiences of this? I</p>
<p>/ Johan Nordin</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Poppendiecks on Lean Software Development]]></title>
<link>http://ihack.us/2007/11/13/poppendiecks-on-lean-software-development/</link>
<pubDate>Tue, 13 Nov 2007 22:13:22 +0000</pubDate>
<dc:creator>Dr. Ernie</dc:creator>
<guid>http://ihack.us/2007/11/13/poppendiecks-on-lean-software-development/</guid>
<description><![CDATA[Thomas and Mary Poppendieck are to Lean Product Development (for Software) what Charles and Ray Eame]]></description>
<content:encoded><![CDATA[Thomas and Mary Poppendieck are to Lean Product Development (for Software) what Charles and Ray Eame]]></content:encoded>
</item>

</channel>
</rss>
