<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>rob bowley</title>
	
	<link>http://blog.robbowley.net</link>
	<description>adventures in software craftsmanship</description>
	<pubDate>Mon, 29 Jun 2009 09:43:42 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/robbowley" type="application/rss+xml" /><item>
		<title>XPDay London ‘09: Call for sessions</title>
		<link>http://feedproxy.google.com/~r/robbowley/~3/puqKdj6NUp4/</link>
		<comments>http://blog.robbowley.net/2009/06/29/xpday-london-09-call-for-sessions/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 09:43:42 +0000</pubDate>
		<dc:creator>rob</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[XPDay]]></category>

		<guid isPermaLink="false">http://blog.robbowley.net/?p=700</guid>
		<description><![CDATA[Submissions are now open for programmed sessions at XpDay London 2009, to be held 7th and 8th December 2009. http://www.xpday.org/
You are invited to propose a session for the first day of the conference. They&#8217;re are particularly interested in the following

Experience reports—share your stories of challenge and success with Agile and Lean techniques. Experience reports will be [...]]]></description>
			<content:encoded><![CDATA[<p>Submissions are now open for programmed sessions at XpDay London 2009, to be held 7th and 8th December 2009. <a href="http://www.xpday.org/" target="_blank">http://www.xpday.org/</a></p>
<p>You are invited to propose a session for the first day of the conference. They&#8217;re are particularly interested in the following</p>
<ul>
<li>Experience reports—share your stories of challenge and success with Agile and Lean techniques. Experience reports will be intensively shepherded by experienced practitioners.</li>
<li>Hands-on technical sessions—share techniques and practices in practical sessions: workshops, tutorials, simulations</li>
<li>Practitioners&#8217; advances in the art—share the techniques of expert Agile and Lean practitioners, work with them to move the craft forward.</li>
</ul>
<p>The second day of the conference will be an OpenSpace session with topics selected at the end of the first day. Programmed sessions are most suitable for topics requiring some set up or extensive preparation.</p>
<p>To submit a session, please go to <a href="http://xpday-london.editme.com/XpDay2009Submissions" target="_blank">http://xpday-london.editme.com/XpDay2009Submissions</a></p>
<p>Submissions will be accepted until Friday 14th August.</p>
<img src="http://feeds.feedburner.com/~r/robbowley/~4/puqKdj6NUp4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.robbowley.net/2009/06/29/xpday-london-09-call-for-sessions/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.robbowley.net/2009/06/29/xpday-london-09-call-for-sessions/</feedburner:origLink></item>
		<item>
		<title>What’s the difference between Lean and Agile?</title>
		<link>http://feedproxy.google.com/~r/robbowley/~3/cK-toika5A8/</link>
		<comments>http://blog.robbowley.net/2009/06/23/whats-the-difference-between-lean-and-agile/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 08:09:59 +0000</pubDate>
		<dc:creator>rob</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[agile]]></category>

		<category><![CDATA[lean]]></category>

		<category><![CDATA[toyota]]></category>

		<guid isPermaLink="false">http://blog.robbowley.net/?p=696</guid>
		<description><![CDATA[There isn&#8217;t any.
Certainly not enough to be able to draw a clear line between the two and start comparing the benefits of one against the other. Daniel Jones, the author of The Machine That Changed the World did a keynote at XPDay2008 and said from what he saw there wasn&#8217;t really much difference, apart from [...]]]></description>
			<content:encoded><![CDATA[<p>There isn&#8217;t any.</p>
<p>Certainly not enough to be able to draw a clear line between the two and start comparing the benefits of one against the other. Daniel Jones, the author of The Machine That Changed the World did a keynote at XPDay2008 and said from what he saw there wasn&#8217;t really much difference, apart from the name. In fact, when they were looking for a name for Lean they thought about using Agile.</p>
<p>Agile came from Lean, the related processes came from people studying Demming, The Toyota Production System or through convergent evolution. The two guys who invented Scrum are Japanese and that&#8217;s no coincidence.  When I started reading about Toyota and Demming it all simply made sense to me and explained where Agile came from.</p>
<p>Then I found an article written by Craig Larman on the history of iterative development and that wrapped it up: <a href="http://www2.umassd.edu/SWPI/xp/articles/r6047.pdf">http://www2.umassd.edu/SWPI/xp/articles/r6047.pdf</a></p>
<p>There is no point spending any time discussing and trying to find differences between what is essentially the same thing just written in a different way.</p>
<p>It reminds me of how the Jews and Christians went their separate ways and then came the Muslims and then they split up into the Sunni and Shia&#8217;s. They&#8217;ve all been fighting bitterly for the last 2000 years but all worship the same god. Go figure!</p>
<img src="http://feeds.feedburner.com/~r/robbowley/~4/cK-toika5A8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.robbowley.net/2009/06/23/whats-the-difference-between-lean-and-agile/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.robbowley.net/2009/06/23/whats-the-difference-between-lean-and-agile/</feedburner:origLink></item>
		<item>
		<title>Snapshot of my team’s current practices</title>
		<link>http://feedproxy.google.com/~r/robbowley/~3/RpBm93q_yhs/</link>
		<comments>http://blog.robbowley.net/2009/06/22/snapshot-of-current-practices/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 08:10:59 +0000</pubDate>
		<dc:creator>rob</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[agile]]></category>

		<category><![CDATA[kanban]]></category>

		<category><![CDATA[lean]]></category>

		<category><![CDATA[scrum]]></category>

		<category><![CDATA[toyota]]></category>

		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://blog.robbowley.net/?p=543</guid>
		<description><![CDATA[It seems these days there are countless methodologies, processes and practices to choose from when developing software and, somewhat ironically, the list seems to be growing at the rate of Moore&#8217;s law. I&#8217;ve read about, discussed, been on courses and been to conferences about a lot of them and the thing I&#8217;ve consistently found most [...]]]></description>
			<content:encoded><![CDATA[<p>It seems these days there are countless methodologies, processes and practices to choose from when developing software and, somewhat ironically, the list seems to be growing at the rate of Moore&#8217;s law. I&#8217;ve read about, discussed, been on courses and been to conferences about a lot of them and the thing I&#8217;ve consistently found most useful is talking to other practitioners about what they&#8217;re doing and what&#8217;s working (or not working) for them.</p>
<p>Recently there&#8217;s been a lot of (and subsequently <a href="http://www.xprogramming.com/blog/needles/my-named-cloud-is-better-than-your-named-cloud.htm">criticism of</a>) debate on message boards and blogs about the relative benefits of <a href="http://www.google.co.uk/search?q=agile+vs+scrum+vs+kanban">one paradigm versus the other</a>. <em> </em>Personally I don&#8217;t care much for subscribing to any particular paradigm and am much more interested in what works and what doesn&#8217;t (and in which circumstances) so my response is to publish what my team and company is <em>actually doing right now. </em>This is a snapshot of our current practices. Ask me again in 6 months and hopefully I&#8217;ll show you something very different.</p>
<p>The inspiration and influences for the way we work mostly come from <a href="http://agilemanifesto.org/">Agile</a>, <a href="http://www.controlchaos.com/">Scrum</a>, <a href="http://www.extremeprogramming.org/">Extreme Programming</a>, <a href="http://manifesto.softwarecraftsmanship.org/">Software Craftsmanship</a>, <a href="http://www.lean.org/">Lean</a>, <a href="http://www.amazon.co.uk/Lean-Software-Development-Agile-Toolkit/dp/0321150783">Lean Software Development</a>, <a href="http://www.limitedwipsociety.org/">Kanban Software Development</a> and <a href="http://www.amazon.co.uk/Toyota-Way-Management-Principles-Manufacturer/dp/0071392319">The Toyota Way</a>. It is all and none of these things.</p>
<h3><span style="font-weight: normal;">Context</span></h3>
<p>We are a small to medium size &#8220;start up&#8221; organisation working in the new media industry. The company employs around 60 people mainly based in the UK. The development department numbers around 20 co-located people. Agile practices are a relatively new introduction and the previous approach was of the typically chaotic type familiar to young businesses.  We mainly work in .Net using C# but also dabble in Ruby, Javascript and UI languages. The rest of the article mostly relates specifically to one of the teams working within the department but also addresses some of the practices of the department as a whole.</p>
<h3><span style="font-weight: normal;">Team</span></h3>
<p>The team is made up of 4-5 developers and a tester. There is no project manager at the team level - in the spirit of <a href="http://agilemanifesto.org/principles.html">self-organisation</a> (principle 11) the duties traditionally the responsibility of a PM are shared between the team members. The <a href="http://www.mountaingoatsoftware.com/product-owner">Product Owner</a> role is shared between the stakeholders within the organisation for the products the team is responsible for.</p>
<h3><span style="font-weight: normal;">Iterations</span></h3>
<p>We currently work in 1 week <a href="http://en.wikipedia.org/wiki/Iterative_and_incremental_development">Iterations</a>. It&#8217;s a new team who are also new to many of the agile concepts and doing this enables us to <a href="http://en.wikipedia.org/wiki/Heijunka">control the amount of work in progress</a>, focus on delivery, improve our <a href="http://www.codinghorror.com/blog/archives/000931.html">discipline</a> and most importantly have short feedback cycles so <a href="http://en.wikipedia.org/wiki/The_Toyota_Way#Section_IV:_Continuously_Solving_Root_Problems_Drives_Organizational_Learning">improvements</a> can be discussed and applied frequently. The downside is the overhead created by the amount of meetings. Once we&#8217;re comfortable the team is working well together we will have the opportunity to change this if desired (e.g. <a href="http://en.wikipedia.org/wiki/Continuous_Flow_Manufacturing">Continuous Flow</a>, changing the iteration length, changing the frequency of meetings).</p>
<h3><span style="font-weight: normal;">Meetings</span></h3>
<p>Each iteration we have the following meetings:</p>
<p><strong>Work Prioritisation</strong> - occurs iteration minus one. Stakeholders come together to raise and prioritise work not yet commited to.<br />
<strong>Requirements Gathering</strong> - occurs ad hoc when necessary. All the team is required to attend along with the customer/s to bash out requirements for work prioritised in the prioritisation meeting.<br />
<strong>Planning</strong> - occurs at the beggining of the iteration. Prioritised features (MMFs) which have been analysed are broken down into stories, discussed, estimated and commited to based on our current <a href="http://www.scrumalliance.org/articles/39-glossary-of-scrum-terms#1110">velocity</a> (avg. over last 6 weeks)<br />
<strong><a href="http://www.think-box.co.uk/blog/2006/05/daily-stand-up-scrum-meeting.html"> Stand Up</a></strong> - occurs daily at 10am at the task board. Anyone outside the team is welcome to watch<br />
<strong><a href="http://retrospectivewiki.org/"> Retrospective</a></strong> - occurs at the end of the iteration. Any actions from the meeting are to be completed by the end of the next iteration.</p>
<h3><span style="font-weight: normal;">Requirements</span></h3>
<p><a href="http://blog.robbowley.net/wp-content/uploads/2009/06/uml.gif"><img class="alignright size-medium wp-image-686" style="border: 2px solid orange;" title="uml" src="http://blog.robbowley.net/wp-content/uploads/2009/06/uml-300x225.gif" alt="" width="300" height="225" /></a></p>
<p>Features are requested at the prioritisation session and use the <a href="http://en.wikipedia.org/wiki/User_story">User Story</a> format.</p>
<p>More detailed requirements are gathered during the requirements meetings mentioned above, with the customer/s and all team members present. We use whiteboards to bash out the requirements and convert them into acceptance criteria using the &#8220;<a href="http://dannorth.net/introducing-bdd">Given, When, Then</a>&#8221; format. We have a <a href="http://blog.robbowley.net/2009/04/29/team-principles/">rule</a> that no work can be commited to unless we&#8217;re happy we have a clear understanding of the requirements.</p>
<h3><span style="font-weight: normal;">Task Board</span></h3>
<p><a href="http://blog.robbowley.net/wp-content/uploads/2009/06/taskboard.jpg"><img class="alignnone size-medium wp-image-675" title="taskboard" src="http://blog.robbowley.net/wp-content/uploads/2009/06/taskboard-300x181.jpg" alt="" width="300" height="181" /></a></p>
<p>The task board is essentially a <a href="http://jamesshore.com/Blog/Kanban-Systems.html">Kanban</a> board with each stage of the delivery process separated into columns. We have an implicit limit of 2 stories in active, but otherwise have not applied limits to any other columns. Features (<a href="http://www.netobjectives.com/blogs/more-insights-on-epics-vs-mmfs">MMF</a>) are blue, the stories which make up the MMFs are yellow, bugs are pink and quick support tasks white. When a story is commited to, the feature card is moved into &#8220;commited&#8221;, above the titles of the columns and tracks the last related story.</p>
<h3><span style="font-weight: normal;">Measurement &amp; Metrics</span></h3>
<p><a href="http://blog.robbowley.net/wp-content/uploads/2009/06/dashboard.gif"><img class="alignnone size-medium wp-image-677" style="border: 2px solid orange;" title="dashboard" src="http://blog.robbowley.net/wp-content/uploads/2009/06/dashboard-300x195.gif" alt="" width="300" height="195" /></a></p>
<p>We use an Excel spreadsheet to hold the product backlog and track the data from the Kanban/Task board. Whenever an MMF moves to another column the date this occured is recorded. You can download a copy of the spreadsheet <a href="http://files.robbowley.net/ProductBacklog_And_Dashboard.xls">here</a> (you may want to check the calcs on the CFD, not sure they&#8217;re right). Among other things it calculates average cycle time, average <a href="http://www.scrumalliance.org/articles/39-glossary-of-scrum-terms#1110">velocity</a> and projections based on velocity. I&#8217;ve tried a few bespoke tracking tools (such as <a href="http://studios.thoughtworks.com/mingle-agile-project-management">Mingle</a>) and found nothing is as powerful and flexible as Excel.</p>
<p>We have a manual <a href="http://edn.embarcadero.com/article/32410">Cumulative Flow Diagram</a> (CFD) which each team member takes turns to update daily so everyone shares the responsibility (it is also their job to update the Excel spreadsheet each day). The CFD diagram only tracks the value delivered to the business (one unit = one MMF.<em> Measure the output, not the input</em>) and is also represented in the Excel spreadsheet. Why have both you may ask? <a href="http://en.wikipedia.org/wiki/The_Toyota_Way#Principle_7">Visibility</a>.</p>
<p><a href="http://blog.robbowley.net/wp-content/uploads/2009/06/cfd.jpg"><img class="size-medium wp-image-679 alignright" title="cfd" src="http://blog.robbowley.net/wp-content/uploads/2009/06/cfd-300x189.jpg" alt="" width="300" height="189" /></a></p>
<p>We have some rudamentry code metrics set up through our <a href="http://martinfowler.com/articles/continuousIntegration.html">continuous integration</a> framework such as <a href="http://www.ndepend.com/">NDepend</a> output and test coverage but are working towards something more visible and useful.</p>
<h3><span style="font-weight: normal;">Estimation</span></h3>
<p>Still very much a necessary <a href="http://blog.robbowley.net/2008/06/06/estimation/">evil</a>.</p>
<p>For comitting to work for an iteration we use <a href="http://en.wikipedia.org/wiki/Story_points">Story Points</a> using the fibernache (1, 2, 3, 5, 8&#8230;) sequence and achieve them by playing <a href="http://www.planningpoker.com/detail.html">Planning Poker</a> with everyone who may be involved in the work required to take part. We will only estimate (and commit to) work we have already analysed and gathered requirements for.</p>
<p><a href="http://blog.robbowley.net/wp-content/uploads/2009/06/poker.jpg"><img class="size-medium wp-image-678 alignleft" title="poker" src="http://blog.robbowley.net/wp-content/uploads/2009/06/poker-300x256.jpg" alt="" width="300" height="256" /></a></p>
<p>For longer term planning, as we don&#8217;t yet have enough information to be able to use cycle time for projecting work completion, using the velocity based on points completed per iteration has proven a very powerful toool to be able to give the rest of the business a better idea of our capacity and timescales (previously they had none). However this has <a href="http://agilesoftwaredevelopment.com/blog/jackmilunsky/measuring-velocity-not-enough-determine-team-productivity">well known drawbacks</a> and we must be careful it does not get abused, as I have seen before (such as gaming of estimates, whether intentionally on subconsciously). Also, as we need to understand and have gathered the requirements to be able estimate this way it means there is very limited scope to how far into the future we can do this with any degree of confidence (as requirements will <a href="http://en.wikiquote.org/wiki/Heraclitus">change</a>). Once we have a reasonable amount of data in the system we will be able to use average cycle time, which will be much more powerful.</p>
<h3><span style="font-weight: normal;">Coding Practices</span></h3>
<p>Apart from the <a href="http://blog.robbowley.net/2009/04/29/team-principles/">rules</a> we&#8217;ve commited to as a team, <a href="http://en.wikipedia.org/wiki/Pair_programming">Pair Programming</a>, <a href="http://en.wikipedia.org/wiki/Unit_testing">Unit Testing</a>, <a href="http://www.refactoring.com/">Refactoring</a> and the best working principles and practices of the software industry are encouraged from the top of the department and applied rigorously but pragmatically.</p>
<p>At the request of the department members (as a result of a disucssion on collective responsibility) we created a development standards document which includes topics such as naming conventions and testing. As much as possible the document is vague on implementation details to prevent it from holding us back when better working practices come along. We use shared Resharper and Visual Studio settings to help us keep to these standards.</p>
<p>As mentioned below we also frequently hold sessions to improve our skills.</p>
<h3><span style="font-weight: normal;"><span style="font-weight: normal;">Automated Testing</span></span></h3>
<p>All new or modified code is covered by unit tests, integration tests (such as database interaction) and automated acceptance tests which test against the acceptance criteria (this last one is quite new territory).</p>
<h3><span style="font-weight: normal;"><a href="http://martinfowler.com/articles/continuousIntegration.html">Continuous Integration</a> and Deployment</span></h3>
<p>All projects are under continuous integration (we use <a href="http://www.jetbrains.com/teamcity/">TeamCity</a>) and we are working towards having all deployments doing the same. We have monitors on the wall which <a href="http://blog.robbowley.net/2009/04/30/creating-a-teamcity-currently-failed-builds-page/">show all the currently failing builds</a>. Do I need to mention we use source control?</p>
<p><img class="aligncenter size-full wp-image-683" title="83703920" src="http://blog.robbowley.net/wp-content/uploads/2009/06/83703920.jpg" alt="Failed builds monitor" /></p>
<h3><span style="font-weight: normal;">Roles and Responsibilities</span></h3>
<p>Every role in the department is covered by a document explaining their roles and responsibilities. They are written in a way which encourages self-organisation and collective responsiblity. You can download them <a href="http://files.robbowley.net/Roles&amp;Responsibilities.zip">here</a>. I will be talking about these descriptions more in a future article.</p>
<h3><span style="font-weight: normal;"><a href="http://en.wikipedia.org/wiki/The_Toyota_Way#Section_III_.E2.80.94_Add_Value_to_the_Organization_by_Developing_Your_People">Learning Culture</a></span></h3>
<p>Each week two hours are set aside for learning sessions such as coding dojos and presentations (we&#8217;re currently running a design patterns study group). Outside of these developers are actively encouraged to take the time to learn new practices during working hours (within reason). We have a library of books available on a range of subjects which are at the disposal of everyone. More often than not if there&#8217;s a book that someone would like to read the company will purchase it and add it to the library (books are pretty cheap in the grand scheme of things).</p>
<h3><span style="font-weight: normal;"><a href="http://en.wikipedia.org/wiki/The_Toyota_Way#Section_IV:_Continuously_Solving_Root_Problems_Drives_Organizational_Learning">Continuous Improvement</a></span></h3>
<p>Outside of retrospectives we have a monthly departmental session where the most pressing problems are discussed and actions taken away. However there is no limit or retriction to when improvements can be made and everyone is encouraged to take the initiative when they see a problem that needs addressing.</p>
<h3><span style="font-weight: normal;"><br />
</span></h3>
<img src="http://feeds.feedburner.com/~r/robbowley/~4/RpBm93q_yhs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.robbowley.net/2009/06/22/snapshot-of-current-practices/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.robbowley.net/2009/06/22/snapshot-of-current-practices/</feedburner:origLink></item>
		<item>
		<title>Principles</title>
		<link>http://feedproxy.google.com/~r/robbowley/~3/FrEPmJiKuqg/</link>
		<comments>http://blog.robbowley.net/2009/06/09/principles/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 12:13:52 +0000</pubDate>
		<dc:creator>rob</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[agile]]></category>

		<category><![CDATA[lean]]></category>

		<category><![CDATA[principles]]></category>

		<guid isPermaLink="false">http://blog.robbowley.net/?p=528</guid>
		<description><![CDATA[The Principles behind the Agile Manifesto

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Welcome changing requirements, even late in development. Agile processes harness change for the customer&#8217;s competitive advantage.
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Business [...]]]></description>
			<content:encoded><![CDATA[<h2><span style="font-weight: normal;">The Principles behind the Agile Manifesto</span></h2>
<ul>
<li>Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.</li>
<li>Welcome changing requirements, even late in development. Agile processes harness change for the customer&#8217;s competitive advantage.</li>
<li>Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.</li>
<li>Business people and developers must work together daily throughout the project.</li>
<li>Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.</li>
<li>The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.</li>
<li>Working software is the primary measure of progress.</li>
<li>Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.</li>
<li>Continuous attention to technical excellence and good design enhances agility.</li>
<li>Simplicity&#8211;the art of maximizing the amount of work not done&#8211;is essential.</li>
<li>The best architectures, requirements, and designs emerge from self-organizing teams.</li>
<li>At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.</li>
</ul>
<h2>The Five Principles of Lean</h2>
<ol>
<li><strong>Value</strong> - specify what creates value from the customer’s perspective.</li>
<li><strong>The value stream</strong> – identify all the steps along the process chain.</li>
<li><strong>Flow</strong> - make the value process flow.</li>
<li><strong>Pull</strong> - make only what is needed by the customer (short term response to the customer’s rate of demand).</li>
<li><strong>Perfection</strong> - strive for perfection by continually attempting to produce exactly what the customer wants.</li>
</ol>
<h2>The Seven Principles of Lean Software Development</h2>
<ol>
<li>Eliminate waste</li>
<li>Amplify learning</li>
<li>Decide as late as possible</li>
<li>Deliver as fast as possible</li>
<li>Empower the team</li>
<li>Build integrity in</li>
<li>See the whole</li>
</ol>
<div>
<h2><span>The 4 Sections and the 14 Principles of the Toyota Way</span></h2>
</div>
<h3>I. Having a long-term philosophy that drives a long-term approach to building a learning organization</h3>
<p>1. Base your management decisions on a long-term philosophy, even at the expense of short-term financial goals</p>
<h3>II. The right process will produce the right results</h3>
<p>2. Create a continuous process flow to bring problems to the surface</p>
<p>3. Use &#8220;pull&#8221; systems to avoid overproduction</p>
<p>4. Level out the workload (heijunka). (Work like the tortoise, not the hare)</p>
<p>5. Build a culture of stopping to fix problems, to get quality right the first time</p>
<p>6. Standardized tasks and processes are the foundation for continuous improvement and employee empowerment</p>
<p>7. Use visual control so no problems are hidden</p>
<p>8. Use only reliable, thoroughly tested technology that serves your people and processes</p>
<h3>III. Add value to the organization by developing its people and partners</h3>
<p>9. Grow leaders who thoroughly understand the work, live the philosophy, and teach it to others</p>
<p>10. Develop exceptional people and teams who follow your company&#8217;s philosophy</p>
<p>11. Respect your extended network of partners and suppliers by challenging them and helping them improve</p>
<h3>IV. Continuously solving root problems to drive organizational learning</h3>
<p>12. Go and see for yourself to thoroughly understand the situation (Genchi Genbutsu).</p>
<p>13. Make decisions slowly by consensus, thoroughly considering all options; implement decisions rapidly (Nemawashi).</p>
<p>14. Become a learning organization through relentless reflection (hansei) and continuous improvement (Кaizen).</p>
<img src="http://feeds.feedburner.com/~r/robbowley/~4/FrEPmJiKuqg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.robbowley.net/2009/06/09/principles/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.robbowley.net/2009/06/09/principles/</feedburner:origLink></item>
		<item>
		<title>Kanban is just a tool, so why is it being treated like a methodology?</title>
		<link>http://feedproxy.google.com/~r/robbowley/~3/90GoKk83HjY/</link>
		<comments>http://blog.robbowley.net/2009/05/20/kanban-is-just-a-tool-so-why-is-it-being-treated-like-a-methodology/#comments</comments>
		<pubDate>Wed, 20 May 2009 08:32:58 +0000</pubDate>
		<dc:creator>rob</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[kanban]]></category>

		<category><![CDATA[lean]]></category>

		<guid isPermaLink="false">http://blog.robbowley.net/?p=493</guid>
		<description><![CDATA[I was throwing some shapes on Twitter recently about some concerns I have with the current Kanban craze. Unfortunately I think the cursed 140 character limit meant my points got misinterpreted and may have lead people to think I&#8217;m anti-Kanban which is not the case in fact it&#8217;s quite the opposite. I&#8217;ve been using Kanban [...]]]></description>
			<content:encoded><![CDATA[<p>I was throwing some shapes on Twitter recently about some concerns I have with the current Kanban craze. Unfortunately I think the cursed 140 character limit meant my points got misinterpreted and may have lead people to think I&#8217;m anti-Kanban which is not the case in fact it&#8217;s quite the opposite. I&#8217;ve been using Kanban boards for over a year and half and jointly ran a presentation at <a href="http://xpday-london.editme.com/UsingLeanToEvolveOutOfScrum">XPDay2008</a> on evolving from Scrum to Lean which focused heavily on the use of Kanban boards.</p>
<p>The thing that&#8217;s making me itchy is how Kanban has somehow been elevated into a methodology unto itself. We don&#8217;t have &#8220;Scrum and Sprint&#8221; conferences or XPandPairProgrammingDay so why do we have <a href="http://www.leankanbanconference.com/">Lean Kanban Conference Miami</a> or the <a href="http://ukleanconference.com/index.htm">UK Lean and Kanban Conference</a>? Also, pretty much everywhere you see someone talking about Lean software development the title of the blog or presentation also includes Kanban in the same breath? More than that I see a lot of discussion around Kanban in blog posts and Twitter but very little on Lean or the Lean Software Development principles.</p>
<p>I&#8217;m sure proponents of Kanban will say no one is suggesting Kanban is a methodology and I would agree I&#8217;ve not seen anyone say it is. The problem is interpretation. People have a habit of focusing on rules and methodologies because they&#8217;re a lot more easy to tackle than the problems they we&#8217;re created to solve. Scrum has been enormously successful (if you consider wide adoption a measure of success) but very few teams are doing it well as James Shore has been writing <a href="http://jamesshore.com/Blog/Stumbling-Through-Mediocrity.html">eloquently</a> about <a href="http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html">recently</a> because it does not force you address the real issues. The beauty of Lean software development is it is just a set of principles. It intentionally avoids prescribing how to do something. Obviously this causes problems as most people don&#8217;t want to get involved in the difficult stuff they just want to be told how to do it. Consider this reply I received on Twitter:</p>
<p><a href="http://twitter.com/erwilleke">erwilke</a> <a href="http://twitter.com/robbowley">@robbowley</a> <em>&#8220;I think we&#8217;re trying to avoid kanban being seen as a stand-alone methodology, but people don&#8217;t &#8220;get&#8221; it as a set of tools&#8221;.</em></p>
<p>Maybe there&#8217;s a good reason why people don&#8217;t get it - because it you need to understand where it&#8217;s coming from. Focusing on Kanban and ignoring all the rest however, that&#8217;s easy!</p>
<p>Elevating Kanban to the prominent position it is now in makes me feel like history is going to repeat itself. I prophesied this <a href="http://blog.robbowley.net/2008/11/15/lean-scrum/">some months back</a>. It has been the most popular post on my blog by a long way.</p>
<p>If you&#8217;re getting into Kanban, be warned. Kanban is just a tool and in my opinion no more important than say, pair programming, unit testing or domain driven development. It is certainly a lot less important than the white elephant in the room which very few people seem to be addressing which is building the right thing in the first place. As <a href="http://en.wikipedia.org/wiki/Peter_Drucker">Peter Drucker</a> famously said: &#8220;There is nothing so useless as doing efficiently that which should not be done at all&#8221;.</p>
<p>Kanban is a small part of something much, much bigger, <strong><a href="http://en.wikipedia.org/wiki/Lean_software_development#See_the_whole">see the whole</a></strong>.</p>
<p> </p>
<h5>*Edit* Some responses to this article:</h5>
<p><a href="http://www.agilemanagement.net/Articles/Weblog/IsKanbanJustaTool.html">Is Kanban Just a Tool?</a> - David Anderson</p>
<p><a rel="bookmark" href="http://theagileexecutive.com/2009/05/20/it-is-not-what-it-is-that-really-matters/">It is Not What It is that Really Matters</a> - Israel Gat</p>
<p><a href="http://thinkprojectmanagement.blogspot.com/2009/05/kanban-its-tool-and-theres-no-such.html">Kanban: It&#8217;s a Tool, and There&#8217;s No Such Thing as &#8220;Just&#8221; a Tool</a> - <span class="fn">Project Management Revolutionary</span></p>
<img src="http://feeds.feedburner.com/~r/robbowley/~4/90GoKk83HjY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.robbowley.net/2009/05/20/kanban-is-just-a-tool-so-why-is-it-being-treated-like-a-methodology/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.robbowley.net/2009/05/20/kanban-is-just-a-tool-so-why-is-it-being-treated-like-a-methodology/</feedburner:origLink></item>
		<item>
		<title>Depend in the direction of stability</title>
		<link>http://feedproxy.google.com/~r/robbowley/~3/hO-d_iqti7w/</link>
		<comments>http://blog.robbowley.net/2009/05/14/depend-in-the-direction-of-stability/#comments</comments>
		<pubDate>Thu, 14 May 2009 10:20:19 +0000</pubDate>
		<dc:creator>rob</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.robbowley.net/?p=474</guid>
		<description><![CDATA[As a general rule of thumb you should depend in the direction of stability (The Stable Dependencies Principle (SDP)). A package should only depend upon packages that are more stable than it is. If something is changing a lot it we should not depend on it. If it isn&#8217;t then we can comfortably reference it as a versioned [...]]]></description>
			<content:encoded><![CDATA[<p>As a general rule of thumb you should depend in the direction of stability (The <a href="http://c2.com/cgi/wiki?StableDependenciesPrinciple" target="_blank">Stable Dependencies Principle</a> (SDP)). A package should only depend upon packages that are more stable than it is. If something is changing a lot it we should not depend on it. If it isn&#8217;t then we can comfortably reference it as a versioned package/assembly.</p>
<p><em><strong>&#8220;But I want to add something to the GeneralFunctions/Domain/Utilities project&#8221;</strong></em><br />
Why? If you are the only one using it then there is no reason for it to be there.</p>
<p><em><strong>&#8220;But someone else may want to use it in the future&#8221;</strong></em><br />
The possibility that someone may is not a good enough reason to put it there. Follow the principle of <a href="http://c2.com/xp/YouArentGonnaNeedIt.html" >You Aren&#8217;t Gonna Need It</a> (YAGNI). </p>
<p><em><strong>&#8220;But what if I need to change something that already exists?&#8221;</strong></em><br />
&#8220;Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification</em>&#8221; - The <a href="http://en.wikipedia.org/wiki/Open/closed_principle">Open Closed Principle</a></p>
<img src="http://feeds.feedburner.com/~r/robbowley/~4/hO-d_iqti7w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.robbowley.net/2009/05/14/depend-in-the-direction-of-stability/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.robbowley.net/2009/05/14/depend-in-the-direction-of-stability/</feedburner:origLink></item>
		<item>
		<title>Creating a TeamCity currently failed builds page</title>
		<link>http://feedproxy.google.com/~r/robbowley/~3/KgRPucpyIX0/</link>
		<comments>http://blog.robbowley.net/2009/04/30/creating-a-teamcity-currently-failed-builds-page/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 10:32:30 +0000</pubDate>
		<dc:creator>rob</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[continuousintegration]]></category>

		<category><![CDATA[teamcity]]></category>

		<guid isPermaLink="false">http://blog.robbowley.net/?p=466</guid>
		<description><![CDATA[
Frustrated with seeing too many failed builds and wanting to make the issue more visible we are planning on putting an LCD monitor on the wall to display all the failing builds. However, unfortunately TeamCity does not have such a page available. There are various ways of receiving the status of builds such as through [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.robbowley.net/wp-content/uploads/2009/05/83703920.jpg" alt="" title="83703920" width="600" height="300" class="alignnone size-full wp-image-489" /></p>
<p>Frustrated with seeing too many failed builds and wanting to make the issue more visible we are planning on putting an LCD monitor on the wall to display all the failing builds. However, unfortunately TeamCity does not have such a page available. There are various ways of receiving the status of builds such as through RSS feeds and the Status Widget, but the information is no more than you can see on the overview page and if you have a lot of builds it&#8217;s not easy to see where the problems are.</p>
<p>First, I experimented with using Linq to mine the RSS feeds and was getting somewhere but it wasn&#8217;t exactly a five minute job. Then Kirill Maximov, a JetBrains TeamCity developer responded to my cries of help on <a href="http://twitter.com/maxkir/statuses/1647733146">Twitter</a> saying I could modify the External Status Widget and a whole world of fun was opened up to me.</p>
<h3>How to create a failed builds page</h3>
<ol>
<li>Create an html page that includes the External Status Widget as described <a href="http://www.jetbrains.net/confluence/display/TCD4/Enabling+the+Status+Widget+for+Build+Configurations">here</a>. By default this page will only show the current status of all projects as you see on the overview page, but we only want to know about <em>failed</em> builds.</li>
<li>Add the wrapping &lt;c:if test=&#8221;${not buildType.status.successful}&#8221;&gt;&lt;/c:if&gt; to the file *TeamCity*/webapps/ROOT/status/externalStatus.jsp (it is probably worth making a backup of this file first).</li>
<li>Thats it! However as you have now realised you can do a lot more customisation. If you have a root through some of the jsp files you&#8217;ll see there are a lot of features you can take advantage of to customise further.</li>
</ol>
<p>You can download my html page and modifed externalStatus.jsp files <a href="http://files.robbowley.net/FailedBuildsMonitor.zip">here</a></p>
<img src="http://feeds.feedburner.com/~r/robbowley/~4/KgRPucpyIX0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.robbowley.net/2009/04/30/creating-a-teamcity-currently-failed-builds-page/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.robbowley.net/2009/04/30/creating-a-teamcity-currently-failed-builds-page/</feedburner:origLink></item>
		<item>
		<title>Team principles</title>
		<link>http://feedproxy.google.com/~r/robbowley/~3/fLcWRnoIjKY/</link>
		<comments>http://blog.robbowley.net/2009/04/29/team-principles/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 11:41:52 +0000</pubDate>
		<dc:creator>rob</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[agile]]></category>

		<category><![CDATA[teams]]></category>

		<guid isPermaLink="false">http://blog.robbowley.net/?p=452</guid>
		<description><![CDATA[On my new team we&#8217;ve just started our first proper iteration. We&#8217;ve agreed to commit to the following principles:

No multi-tasking
All new or changed code must be thoroughly unit tested
No more than 2 pieces of work in “Active Work” at any time (our team is 3 developers)
We always work on the highest priority task
Our definition of [...]]]></description>
			<content:encoded><![CDATA[<p>On my new team we&#8217;ve just started our first proper iteration. We&#8217;ve agreed to commit to the following principles:</p>
<ul>
<li>No multi-tasking</li>
<li>All new or changed code must be thoroughly unit tested</li>
<li>No more than 2 pieces of work in “Active Work” at any time (our team is 3 developers)</li>
<li>We always work on the highest priority task</li>
<li>Our definition of done is “In UAT”</li>
<li>Leave it in a better condition than you found it</li>
<li>No hidden work</li>
<li>No overtime</li>
<li>No disruptions</li>
<li>Don’t SysTest your own work (we don&#8217;t have a tester yet)</li>
</ul>
<div>Have you done something similar? What are your team&#8217;s principles?<br/><br/></div>
<img src="http://feeds.feedburner.com/~r/robbowley/~4/fLcWRnoIjKY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.robbowley.net/2009/04/29/team-principles/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.robbowley.net/2009/04/29/team-principles/</feedburner:origLink></item>
		<item>
		<title>Quick tips for writing effective User Stories</title>
		<link>http://feedproxy.google.com/~r/robbowley/~3/zSqAbcPl_14/</link>
		<comments>http://blog.robbowley.net/2009/04/22/quick-tips-for-writing-effective-user-stories/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 20:04:32 +0000</pubDate>
		<dc:creator>rob</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[userstories]]></category>

		<guid isPermaLink="false">http://blog.robbowley.net/?p=416</guid>
		<description><![CDATA[I know there are plenty of books and resources dedicated to user stories, but as I consistently see people writing bad ones here&#8217;s a few things to remember.
Write them with the stakeholder/product owner and challenge their assumptions
To some it may seem shocking to think there are people out ther writing stories without the stakeholder/product owner [...]]]></description>
			<content:encoded><![CDATA[<p>I know there are plenty of books and resources dedicated to user stories, but as I consistently see people writing bad ones here&#8217;s a few things to remember.</p>
<h3>Write them with the stakeholder/product owner and challenge their assumptions</h3>
<p>To some it may seem shocking to think there are people out ther writing stories without the stakeholder/product owner present, but I&#8217;ve seen it enough to feel I need to reiterate this point. Also, don&#8217;t allow the stakeholder to dictate to you. Question their justification and assumptions and ensure they are clear in the final story.</p>
<h3>Don&#8217;t just write &#8220;As a customer&#8230;&#8221; or &#8220;As a staff member&#8230;&#8221;</h3>
<p>You might as well write &#8220;As a person&#8221; for all the difference it makes. Which customer and in what context? Where are they in your application and what role do they play?</p>
<h3>Write it so your gran would understand</h3>
<p>Anyone should be able to pick up a user story and quickly understand it. Avoid acronyms, abbreviations, tech speak or business jargon. Misinterpretation can be very costly.</p>
<h3>Use a whiteboard</h3>
<p>When defining the user story, if you can, use a whiteboard. It will allow you to refine it easily whilst also making it visible to everyone in the room.</p>
<h3>Don&#8217;t forget the &#8220;So that&#8230;&#8221;</h3>
<p>In my mind the &#8220;So that&#8230;&#8221; is the most important element of the User Story Holy Trinity but it&#8217;s invariably left off the end. Any work must have justification and everyone should know what it is. This is the &#8220;why&#8221; and often exposes the real business need as opposed to what the stakeholder <em>thinks</em> they need. The process of gathering this element often redefines the whole story.</p>
<img src="http://feeds.feedburner.com/~r/robbowley/~4/zSqAbcPl_14" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.robbowley.net/2009/04/22/quick-tips-for-writing-effective-user-stories/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.robbowley.net/2009/04/22/quick-tips-for-writing-effective-user-stories/</feedburner:origLink></item>
		<item>
		<title>More retrospective resources available</title>
		<link>http://feedproxy.google.com/~r/robbowley/~3/eQ9o1Z-T05A/</link>
		<comments>http://blog.robbowley.net/2009/04/14/more-retrospective-resources-available/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 19:19:44 +0000</pubDate>
		<dc:creator>rob</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[presentation]]></category>

		<category><![CDATA[retrospective]]></category>

		<category><![CDATA[SPA2009]]></category>

		<guid isPermaLink="false">http://blog.robbowley.net/?p=409</guid>
		<description><![CDATA[
After a successful run of Retrospective Surgery at SPA2009 we got some really good output so thank you to all who attended. As a result I&#8217;ve updated the Agile Retrospective Resource Wiki with new tools, ailments and cures and a cool new plan I bumped into the other day. It&#8217;s beginning to come together really [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-410" title="retrosurgery" src="http://blog.robbowley.net/wp-content/uploads/2009/04/retrosurgery.jpg" alt="Participants at Retrospective Surgery session" width="600" height="215" /></p>
<p>After a successful run of <a href="http://retrospectivewiki.org/index.php?title=Retrospective_Surgery">Retrospective Surgery</a> at SPA2009 we got some really good output so thank you to all who attended. As a result I&#8217;ve updated the <a href="http://retrospectivewiki.org">Agile Retrospective Resource Wiki</a> with new tools, ailments and cures and a cool new plan I bumped into the other day. It&#8217;s beginning to come together really nicely <img src='http://blog.robbowley.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
<img src="http://feeds.feedburner.com/~r/robbowley/~4/eQ9o1Z-T05A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.robbowley.net/2009/04/14/more-retrospective-resources-available/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.robbowley.net/2009/04/14/more-retrospective-resources-available/</feedburner:origLink></item>
	</channel>
</rss>
