<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Making the Complex Simple &#187; Kanban</title>
	<atom:link href="http://simpleprogrammer.com/category/agile/kanban/feed/" rel="self" type="application/rss+xml" />
	<link>http://simpleprogrammer.com</link>
	<description>Software Development from John Sonmez&#039;s Perspective</description>
	<lastBuildDate>Thu, 17 May 2012 13:24:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='simpleprogrammer.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Making the Complex Simple &#187; Kanban</title>
		<link>http://simpleprogrammer.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://simpleprogrammer.com/osd.xml" title="Making the Complex Simple" />
	<atom:link rel='hub' href='http://simpleprogrammer.com/?pushpress=hub'/>
		<item>
		<title>Add Backlogs Not Requirements</title>
		<link>http://simpleprogrammer.com/2010/08/04/add-backlogs-not-requirements/</link>
		<comments>http://simpleprogrammer.com/2010/08/04/add-backlogs-not-requirements/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 19:00:06 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Kanbanand]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[User Stories]]></category>

		<guid isPermaLink="false">https://complextosimple.wordpress.com/?p=1036</guid>
		<description><![CDATA[I talked about how moving the finish line is one of the most destructive things to do to a Scrum team before, but I wanted to talk about another variation of the same problem, which is scope creep on backlog items in progress. Responding to change Agile is all about responding to change.  Don’t get [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=1036&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I talked about how <a href="http://simpleprogrammer.com/2010/03/17/moving-the-finish-line/">moving the finish line</a> is one of the most destructive things to do to a Scrum team before, but I wanted to talk about another variation of the same problem, which is scope creep on backlog items in progress.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/08/sblookatlonglist.jpg"><img style="display:inline;border-width:0;" title="sbLookAtLongList" src="http://complextosimple.files.wordpress.com/2010/08/sblookatlonglist_thumb.jpg?w=496&h=396" border="0" alt="sbLookAtLongList" width="496" height="396" /></a></p>
<h2>Responding to change</h2>
<p>Agile is all about responding to change.  Don’t get me wrong, I am not for one second suggesting that you should specify your requirements up front before working on the backlog item.</p>
<p>Agile is also about iterative development.  We take a thing, get a rough idea of what we want to build, build it and then iterate on it, making it better as we progress and figure out what we truly want.</p>
<p>The specific problem I am after today is about knowing when to allow change and at what resolution to iterate.</p>
<p>I think these are very important ideas that need to be understood to really be successful at Agile software development.</p>
<h4>Change</h4>
<p>To some people Agile means we allow change at any point in time.  I think this view is a little too far on the extreme.  There are certain points in an Agile process where change is welcomed and that depends on the process.</p>
<p>Scrum welcomes change up to the point the team has committed to the sprint.  After that point changes to the scope of what will be worked on during the sprint are detrimental.</p>
<p>Kanban and <a href="http://simpleprogrammer.com/2010/04/28/the-kanbandand-guide/">Kanban like</a> methodologies embrace change all the way up to the point that the backlog is in progress.  At that point a significant change to the scope or focus of the backlog causes more harm than it provides business value.  (In general)</p>
<p>What kind of changes are also important to define.</p>
<p>The kinds of changes greatly affect whether or not they can cause harm or be good.  Changing the layout of a screen during the development of a backlog usually is not a big deal.  Changing the way the screen functions usually is.  Changes that add significant functionality also are harmful when the backlog is already in progress.</p>
<p>A little later on I’ll talk about some of the reasons for this.  For now let&#8217;s look at…</p>
<h4>Iteration resolution</h4>
<p>There is a prevailing misunderstanding of what iteration means and how it is valuable in Agile software development.</p>
<p>Many Agile practitioners think iteration applies only to the software package itself and to iterate means to add features.</p>
<p>This resolution is far too large.  <strong>If the smallest iteration of your software is a complete feature, you probably have </strong><a href="http://simpleprogrammer.com/2010/01/26/scrum-backlogs-that-cover-too-much-and-are-not-thinly-sliced-enough-and-have-spreadsheets-attached-and-have-non-specific-things-like-fix-everything-on-this-page/"><strong>fatlogs</strong></a><strong>, and you are going to run into trouble.</strong></p>
<p>You may not ship features to a customer until they are completely evolved, but if you try to complete the evolution of features all in one sprint or cycle, you are probably going to bite off too much and miss out on the true value of iteration.</p>
<p>Just as your software should be iterating by adding features, the features themselves should be iterating by adding functionality.</p>
<p><strong>Think of your software as a tree and features as branches</strong>.  If you were to watch that tree grow, it would be pretty bizarre if whole complete branches just started popping up on the tree everywhere.</p>
<p>It is much more natural for the branches themselves to grow from little stubs into a large branch that might even have branches of its own.</p>
<h2>Tying it back together</h2>
<p>Given a backlog is already in progress and you have a good understanding of when change should be allowed in your process, and what resolution iteration should happen, it should start to become obvious why adding new requirements to that backlog is a bad idea.</p>
<p>If you take an existing backlog in progress and add new requirements to it, you&#8217;re introducing change at the wrong point, and possibly trying to “poof” branches onto your software tree, instead of truly iterating.</p>
<p>It is much better to add a new backlog that will serve as an iteration of the existing feature than it is to try and tack on new requirements to the work already in progress.</p>
<p>But why?</p>
<p>Well, hopefully our discussion of change and iteration resolution has given you some idea of why, but there is much more depth to the question than that.  Let&#8217;s discuss some of them.</p>
<p><strong>Psychology</strong></p>
<p>There is a huge psychological portion of software development.  We tend to be motivated by accomplishment and feelings of a “job well done.”  We tend to be demotivated by goals changing out from underneath us and feeling like a job won’t ever really be done.</p>
<p>Let me give you a simple example.  Imagine you tell your child that their chore for the day is to make their bed.</p>
<p>They go and do it, come back to you and tell you it is done, then ask for you to check it.  When you check, you see that the bed is made, but you say “the floor also needs to have everything picked up.”</p>
<p>So they go and do that, it takes a little longer this time, because they have lost some motivation, but they finish and come back to you again and you see the floor is now cleaned up, but this time you say “the floor needs to be vacuumed.”</p>
<p>In this situation although each request is reasonable, the building of the requests on top of the original task has the effect of demotivating the individual and deprives them of their sense of accomplishment.</p>
<p>When you do this in software development, a similar thing happens.  You also lose the trust of the team, because the team starts to think that when the business says X they are really going to want X + Y + Z.  The team starts to work much slower, because it doesn’t really matter anyway.  <strong>You do not want to operate in this mode!</strong> It is very bad!</p>
<p><strong>Not letting evolution takes its place</strong></p>
<p>If you try to cross a river by taking a huge leap across it, you are either going to get wet or you are going to make it.  If the river is big, you will mostly get wet.</p>
<p>It is much better to cross a river leaping from stone to stone until you are all the way across.</p>
<p>Adding a requirement to a backlog in progress can be like making a big leap.  By adding another backlog to bring you closer to the goal, you allow the current backlog to be a step, and the new backlog to be the next step.</p>
<p>It is a judgment call whether or not a change to an in progress backlog represents a new requirement which should be a new backlog or not.  I would err on the side of making new backlogs rather than adding requirements though.  I generally say if it will increase scope significantly it should be a new backlog.  Either way the work is going to be done, so why not have your…</p>
<p><strong>Estimating more accurate</strong></p>
<p>Nothing kills historical estimations like scope creep.  If you want accurate data, don’t add unaccounted for work.  Squeezing new requirements into in-progress backlogs adds work to your historical data that is not properly accounted for.</p>
<p>It is much better to catalog the work and account for it than to tack it onto a place where you will not have a way to extract it back out when you are trying to analyze your data.</p>
<p>Consider also the loss in quality as a developer assigned to the expanding backlog starts rushing the work in order to get it done, because they feel like they are going to be measured against the backlogs they completed, and work added to an existing backlog isn’t going to be counted in the metric.</p>
<p>Don’t forget prioritization here.  If you tack a requirement onto a backlog in progress, you can’t prioritize that work.  You may add that requirement at the expense of delaying other higher priority work in other backlogs.  Make the new requirement into a backlog and you can prioritize it correctly.</p>
<p><strong> </strong></p>
<h2>Parting words</h2>
<p>If you are a product manager, product owner, or business person reading this, give it a try.  You will be amazed how much more happy and productive your team is if the next time you are working on a backlog with them and realize it needs to account for X and Y also, you announce that you will create two more backlogs instead of tacking it right on.</p>
<p>If you are a developer on an Agile team, you may not have even realized this problem might be sapping your motivation.  You might not be in a position to do much about it, but you can always suggest that the new requirement be a new backlog.</p>
<h6>As always, you can subscribe to this <a href="http://feeds.feedburner.com/MakingTheComplexSimple">RSS feed</a> to follow my posts on Making the Complex Simple.  Feel free to check out <a href="http://elegantcode.com/">ElegantCode.com</a> where I post about the topic of writing elegant code about once a week.  Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/1036/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/1036/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/1036/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/1036/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/1036/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/1036/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/1036/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/1036/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/1036/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/1036/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/1036/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/1036/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/1036/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/1036/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=1036&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/08/04/add-backlogs-not-requirements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/695e2a956b2dcb5ac45a7095b6ee338a?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">jsonmez</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/08/sblookatlonglist_thumb.jpg" medium="image">
			<media:title type="html">sbLookAtLongList</media:title>
		</media:content>
	</item>
		<item>
		<title>Book Review: Scrumban</title>
		<link>http://simpleprogrammer.com/2010/07/07/book-review-scrumban/</link>
		<comments>http://simpleprogrammer.com/2010/07/07/book-review-scrumban/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 18:09:07 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Book Review]]></category>
		<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Process Improvement]]></category>

		<guid isPermaLink="false">https://complextosimple.wordpress.com/?p=987</guid>
		<description><![CDATA[I just finished reading “Scrumban” by Corey Ladas. This book is a self-published book, which is really a collection of essays.  Be prepared for that before you read the book, so that you know what to expect. It is not a book that tells you how to exactly do Kanban or Scrumban, but it gives [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=987&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just finished reading “<a href="http://www.amazon.com/gp/product/0578002140?ie=UTF8&amp;tag=makithecompsi-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0578002140">Scrumban</a>” by Corey Ladas.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/07/scrumban.jpg"><img style="display:inline;border:0;" title="scrumban" src="http://complextosimple.files.wordpress.com/2010/07/scrumban_thumb.jpg?w=439&h=439" border="0" alt="scrumban" width="439" height="439" /></a></p>
<p>This book is a self-published book, which is really a collection of essays.  Be prepared for that before you read the book, so that you know what to expect.</p>
<p>It is not a book that tells you how to exactly do Kanban or Scrumban, but it gives you ideas about Kanban and lean concepts and how to solve certain problems you might face in implementing a Kanban process.</p>
<p>Some parts of the book might be a bit difficult to understand without a background in lean methodology, but overall most of the common problems and solutions are understandable.  This is definitely a book you could study and contemplate on as you read through the material and look at the charts.</p>
<p><strong>Good:</strong></p>
<ul>
<li>Excellent use of diagrams and pictures of real Kanban boards to illustrate points.</li>
<li>Lots of different solutions for common Kanban problems.</li>
<li>In depth talk about strategy and reason behind different possible solutions.</li>
<li>Several unique perspectives on many of the concepts presented.</li>
</ul>
<p><strong>Bad:</strong></p>
<ul>
<li>Not exactly an easy read.  It is a little rough and some of the concepts rely on knowledge outside of the context of the book.</li>
<li>Some of the assumptions are a little broad and aren’t backup up by much real data.</li>
</ul>
<p><strong>What I learned:</strong></p>
<p>This book really expanded my mind about different ways of implementing Kanban and solutions for some of the common problems.  Some of the solutions surprised me, but made sense.</p>
<p>I learned more about the reasoning behind limiting the WIP to force the system to self-correct.  I had not considered that strictly limiting the WIP would force freed up resources to automatically move to help resolve the clog in the pipe, since they will not be able to take in new work.</p>
<p>Corey presented a great technique on planning by having a just-in-time planning session when the number of items in development reaches a certain threshold.  I had heard of this technique before but had not seen a practical implementation of it.</p>
<p>I would definitely recommend this book to expand your thinking on Kanban software development.  If you are looking for instructions on exactly how to set up your Kanban process, this book probably won’t help you, but if you are looking to understand more about the why of Kanban and how to solve particular problem or pain points, get this book.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/987/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/987/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/987/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/987/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/987/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/987/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/987/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/987/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/987/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/987/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/987/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/987/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/987/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/987/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=987&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/07/07/book-review-scrumban/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/695e2a956b2dcb5ac45a7095b6ee338a?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">jsonmez</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/07/scrumban_thumb.jpg" medium="image">
			<media:title type="html">scrumban</media:title>
		</media:content>
	</item>
		<item>
		<title>Kanban Story Sizing, Elephants and Mice</title>
		<link>http://simpleprogrammer.com/2010/06/21/kanban-story-sizing-elephants-and-mice/</link>
		<comments>http://simpleprogrammer.com/2010/06/21/kanban-story-sizing-elephants-and-mice/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 19:57:36 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Kanbanand]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[User Stories]]></category>

		<guid isPermaLink="false">https://complextosimple.wordpress.com/2010/06/21/kanban-story-sizing-elephants-and-mice/</guid>
		<description><![CDATA[In our morning standup meeting one of my team members made a pretty good point about the sizing of stories not being so important. In Kanban, we strive to have relatively same sized stories, because it allows us certain benefits. More accurate metrics on estimated time in queue for any story to be delivered. Reduced [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=955&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In our morning standup meeting one of my team members made a pretty good point about the sizing of stories not being so important.</p>
<p>In Kanban, we strive to have relatively same sized stories, because it allows us certain benefits.</p>
<ul>
<li>More accurate metrics on estimated time in queue for any story to be delivered.</li>
<li>Reduced dependence on estimation and planning.</li>
<li>Continuous flow as opposed to slow… fast… fast… slow.</li>
<li>Predictability.</li>
</ul>
<h2>I thought you said the sizing of stories is not so important?</h2>
<p>Right, exactly.&#160; It is important for them to be <strong>relatively</strong> same sized, but it is not so important that they be exactly the same size.</p>
<p>Basically, we don’t want to have mice and elephants thrown in together.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/06/elephantmouse.jpg"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="elephant-mouse" border="0" alt="elephant-mouse" src="http://complextosimple.files.wordpress.com/2010/06/elephantmouse_thumb.jpg?w=436&h=418" width="436" height="418" /></a> </p>
<p>It is the difference between breaking a candy bar in half to share and measuring out prescription medication.</p>
<p>You can look at the candy bar and say “yeah, that looks about the same size,” but you’d better not do the same thing with medication.</p>
<p>It is a complete waste of time to go overboard with the splitting of the candy bar, getting it even to the exact milligram.</p>
<p>It is a complete waste to try and get stories estimated down to the hour.</p>
<h2>Size ‘em up against each other</h2>
<p>In that case how do you actually size the stories?</p>
<p>Just compare them against each other.&#160; When looking at a new story, consider the other stories you already have on the board.&#160; Is this new story like an elephant in comparison to a bunch of mice?&#160; Is it the other way around?</p>
<p>If so, adjust the story to make sense.&#160; Don’t trust your gut without comparing it to what is out there already, otherwise you’ll start to drift in your estimations.</p>
<p>Don’t worry too much if you’re wrong sometimes.&#160; As long as you are close, it will all balance out in the end.</p>
<p>Also don’t forget to get rid of all the <a href="http://simpleprogrammer.com/2010/01/26/scrum-backlogs-that-cover-too-much-and-are-not-thinly-sliced-enough-and-have-spreadsheets-attached-and-have-non-specific-things-like-fix-everything-on-this-page/">Blue Whales</a>.&#160; You don’t want any of those on your board, ever.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/955/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/955/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/955/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/955/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/955/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/955/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/955/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/955/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/955/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/955/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/955/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/955/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/955/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/955/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=955&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/06/21/kanban-story-sizing-elephants-and-mice/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/695e2a956b2dcb5ac45a7095b6ee338a?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">jsonmez</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/06/elephantmouse_thumb.jpg" medium="image">
			<media:title type="html">elephant-mouse</media:title>
		</media:content>
	</item>
		<item>
		<title>The Kanbanand Guide</title>
		<link>http://simpleprogrammer.com/2010/04/28/the-kanbandand-guide/</link>
		<comments>http://simpleprogrammer.com/2010/04/28/the-kanbandand-guide/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 16:21:24 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Kanbanand]]></category>
		<category><![CDATA[Paired Programming]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[User Stories]]></category>

		<guid isPermaLink="false">http://simpleprogrammer.com/?p=783</guid>
		<description><![CDATA[In my last post, I talked about some of the problems of Agile processes and suggested the introduction of a new process which takes some of the best parts of each of the popular processes and condenses them into the Kanban lean- style-thinking of limiting the work in progress. For this post I want to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=783&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://simpleprogrammer.com/2010/04/26/kanbanand-the-new-agile-process-you-have-already-been-following/">last post</a>, I talked about some of the problems of Agile processes and suggested the introduction of a new process which takes some of the best parts of each of the popular processes and condenses them into the Kanban lean- style-thinking of limiting the work in progress.</p>
<p>For this post I want to clearly define what I am calling &#8220;Kanbanand&#8221; with two primary goals in mind.</p>
<ol>
<li>Allow someone who is interested in doing a Kanban like process to find enough information to be successful.</li>
<li>Create a common thread for people who are already basically doing what I am suggesting.</li>
</ol>
<p><a href="http://complextosimple.files.wordpress.com/2010/04/ajh-redtail-taking-off.jpg"><img class="alignnone size-full wp-image-786" title="AJH-redtail taking off" src="http://complextosimple.files.wordpress.com/2010/04/ajh-redtail-taking-off.jpg?w=500&h=493" alt="" width="500" height="493" /></a></p>
<h2>Three Pronged Fork</h2>
<p>I want to present Kanbanand as a three pronged fork.  In my mind there are 3 distinct areas of a successful Agile process which must be addressed.</p>
<ul>
<li>Business and overall encompassing project process.</li>
<li>Development practices, including standards and best practices.</li>
<li>Infrastructure: build systems, deployment, source control.</li>
</ul>
<p>We must know how to run our day to day process, how we physically construct our product, and how we actually build and deliver the product.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/04/fork.jpg"><img class="alignnone size-full wp-image-788" title="fork" src="http://complextosimple.files.wordpress.com/2010/04/fork.jpg?w=500" alt=""   /></a></p>
<h2>Process</h2>
<p><strong>Rules:</strong></p>
<ol>
<li>Project is broken into stories which are small vertical slices through the system which are prioritized.</li>
<li>A Kanban board is used to make the progress of a team visible and has limits to control the Work In Progress (WIP).</li>
<li>At least once a day team members meet around the Kanban board in a stand up meeting to talk about the progress of the board.</li>
<li>The team meets on a regular basis to have a retrospective to discuss how to better improve their process.</li>
<li>Teams always pull in work, work is never &#8220;pushed&#8221; in.</li>
<li>Once work has been approved as &#8220;done&#8221; it can never be &#8220;not done&#8221;.</li>
<li>Find something to measure and measure it.</li>
<li>The team is responsible for, and empowered to determine how the team accomplishes its goals.</li>
</ol>
<p><strong>Values:</strong></p>
<ul>
<li>Roughly same sized stories over irregular sized stories.</li>
<li>Stories specifying what, over stories specifying how.</li>
<li>Stories that are one sentence over stories that are one page.</li>
<li>Talking about how to move the board forward over talking about what I did or someone else did.</li>
<li>Cross functional teams over specialized teams.</li>
</ul>
<h2>Development</h2>
<p><strong>Rules:</strong></p>
<ol>
<li>All code is unit tested.</li>
<li>Static code analysis tools are used to set code standards, all code must meet those standards.</li>
<li>Any code that is done, is completely done.  It is refactored, it is unit tested, it meets the quality standards.</li>
<li>Code is never commented out.  Anyone is allowed to delete any commented out code at any time.</li>
<li>Determining code is meeting the quality standards must be done in an automated way.</li>
<li>No one owns code, anyone can work on any code.</li>
<li>Documentation is ONLY created when it will serve a known purpose and has an immediate value.  (Code should document itself with good names and simple flow, unit tests document the low level requirements of the system.  Automated tests document the behavior of the system.)</li>
<li>Testing requirements come from the customer, not from the developer.</li>
</ol>
<p><strong>Values:</strong></p>
<ul>
<li>Test driven development over writing unit tests after the code is done.</li>
<li>Pair programming over working alone.</li>
<li>Readable code over smaller sized code.</li>
<li>Doing things right over doing things fast.</li>
<li>Showing the customer over asking the customer.</li>
<li>Impromptu discussions at white-boards over scheduled meetings.</li>
<li>Building tools that will help make completing ten things faster, than completing one thing faster.</li>
<li>Writing automated tests over manual testing</li>
</ul>
<h2>Infrastructure</h2>
<p><strong>Rules:</strong></p>
<ol>
<li>Code is continuously built and integrated as soon as it is checked in.</li>
<li>Builds build code, run unit tests, run quality checks, produce deployable bits.</li>
<li>Builds fail if any unit test fails, or any quality check fails.</li>
<li>Code is only deployed from the exact bits that were produced by the build machine.</li>
<li>Code can be deployed to any environment with the push of a button.</li>
<li>Production data never goes to any other environment.</li>
<li>Developers can always run a local build which is the same as what will be built on the build server.</li>
</ol>
<p><strong>Values:</strong></p>
<ul>
<li><strong>﻿</strong>Moving forward to fix problems over rolling back.</li>
<li>Integrating soon over merging later.</li>
<li>Quick builds over slow builds.</li>
<li>Deploying on demand over deploying on a schedule.</li>
</ul>
<h2>Feedback?</h2>
<p>That is my first crack at it.  I have tried to keep the process as simple as possible, but still include as rules the things that I think are most important to be successful.  I tried to keep the things that involved judgment calls as values.  I believe this provides enough information to allow an organization to create a custom process that will work for them, but will still have enough controls to be consistent in the things that I feel make Agile practices valuable.</p>
<p>Let me know what you think, or if you have any suggestions.  I will update this post as this list evolves.  I am sure there is something I missed or could state in a better way.</p>
<p>Like I said before, if you are doing some form of Kanban, you probably are already doing Kanbanand.  If you are doing Scrum, your major change would be to drop the planning and instead try to get same sized stories while limiting your WIP.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/783/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/783/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/783/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=783&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/04/28/the-kanbandand-guide/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/695e2a956b2dcb5ac45a7095b6ee338a?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">jsonmez</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/04/ajh-redtail-taking-off.jpg" medium="image">
			<media:title type="html">AJH-redtail taking off</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/04/fork.jpg" medium="image">
			<media:title type="html">fork</media:title>
		</media:content>
	</item>
		<item>
		<title>Kanbanand, The New Agile Process You Have Already Been Following</title>
		<link>http://simpleprogrammer.com/2010/04/26/kanbanand-the-new-agile-process-you-have-already-been-following/</link>
		<comments>http://simpleprogrammer.com/2010/04/26/kanbanand-the-new-agile-process-you-have-already-been-following/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 22:26:24 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Kanbanand]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://simpleprogrammer.com/?p=768</guid>
		<description><![CDATA[I was originally going to call this post, &#8220;why I chose Kanban&#8221;, then I realized I didn&#8217;t choose Kanban. What I chose was Kanban and most of the other &#8220;Agile&#8221; stuff that I consider good practices and find valuable.  There really isn&#8217;t a good name for this and when people say they are doing Kanban, it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=768&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I was originally going to call this post, &#8220;why I chose Kanban&#8221;, then I realized I didn&#8217;t choose Kanban.</p>
<p>What I chose was Kanban and most of the other &#8220;Agile&#8221; stuff that I consider good practices and find valuable.  There really isn&#8217;t a good name for this and when people say they are doing Kanban, it really doesn&#8217;t say much.  Hence, I am coining a new phrase (Kanbanand), which I hope will be much more specific than saying I am doing &#8220;Agile or Kanban development&#8221;, and not quite as specific as saying &#8220;I am doing Scrum&#8221;.</p>
<h2>Agile is pretty vague</h2>
<p><a href="http://complextosimple.files.wordpress.com/2010/04/blurry_20030715.jpg"><img class="alignnone size-full wp-image-771" title="blurry_20030715" src="http://complextosimple.files.wordpress.com/2010/04/blurry_20030715.jpg?w=500" alt=""   /></a></p>
<p>There is a major problem in the Agile community today.  The problem is &#8220;Agile&#8221; is too broad and involves a large number of assumptions about what Agile involves.  There is not much that defines Agile even though many types of best practices are considered to be Agile.</p>
<p>Which of these best practices are clearly defined in the Agile manifesto or Agile principles?</p>
<ul>
<li>Test driven development</li>
<li>Paired programming</li>
<li>Daily stand up meetings</li>
<li>Progress board with swimlanes</li>
<li>Having a product owner</li>
<li>Stories or backlog items</li>
<li>Continuous integration</li>
<li>Automated testing</li>
</ul>
<p>The correct answer is none of them.  Don&#8217;t get me wrong here.  I am not attacking Agile.  I am just saying that when you are saying &#8220;I am doing Agile development&#8221;, what you&#8217;re saying means different things to different people, and most people don&#8217;t even realize what the <a href="http://agilemanifesto.org/">Agile Manifesto</a> actually says, or what the <a href="http://agilemanifesto.org/principles.html">Principles Behind the Agile Manifesto</a> says.  Instead they have this general idea of what Agile is and it may include one, all, or none of the items I listed above.  (Actually I would venture to wager that most people think Scrum and Agile are synonymous.)</p>
<h2>Scrum, XP and Kanban</h2>
<p>Scrum and XP don&#8217;t really suffer from the problem that Agile in general does.  They are not really vague at all.  Actually, to be more accurate, they are not really vague about process at all.  Scrum is a little vague about development practices.  Either way, both of these processes suffer from a different problem than Agile itself.  <strong>No one is actually doing them. </strong>Well, hardly anyone is.</p>
<p>Lots of people say they are doing Scrum.  But what they are actually doing is what is known as Scrumbut.  &#8220;We are doing Scrum, but&#8230; &#8220;.  And no one that I know of is actually brave enough to claim they are doing XP.</p>
<p>The problem is these processes are just a little too restrictive, a little too prescriptive.</p>
<p>Kanban is out there on the other end of the spectrum.  It is sitting closer to Agile.  It is the least descriptive.  Heck, Kanban doesn&#8217;t even have to be Agile at all!  I am sure most people that are doing Kanban are doing it in an &#8220;Agile&#8221; way, but there really is nothing about Kanban that says anything more than you have a Kanban board and you limit your Work In Progress (WIP).  If you have a whiteboard and you can put a number on that whiteboard, you are doing Kanban!</p>
<h2>Enter Kanbanand</h2>
<p>Kanbanand is good in the same way that Scrumbut is bad.</p>
<p>The goal of Kanbanand is to be a fully Agile process, adhearing to the Agile Manifesto and the Principles Behind the Agile Manifesto, as well as process that is not as specific as Scrum or XP, but specific enough to be distinct and recognizable.  The basic idea of Kanbanand is to take the simple non-prescriptive, open framework of Kanban and formally add some of the best practices that are considered &#8220;Agile&#8221; as requirement and others as guidelines.</p>
<p>In the spirit of the 80/20 rule.  I want someone saying they are doing Kanbanand to be able to convey with just those words, 80% of what their development process looks like.</p>
<p>In my <a href="http://simpleprogrammer.com/2010/04/28/the-kanbandand-guide/">next post</a> I am going to attempt to define what I will call Kanbanand.  I will proceed with the goal of making Kanbanand be much of exactly what most Kanban teams are already doing, just formalized in a way that is specific enough that someone doesn&#8217;t have to know the undocumented features of Agile development to understand it.</p>
<p>If there is enough support around this idea of creating a more formalized version of Kanban that more specifically states the process, and is still Agile, I intend to create a website and community dedicated to this idea.  Contact me if you are interested in participating.  I think we are at the point where the only thing holding Kanban back is that there isn&#8217;t a formal enough definition of what exactly it is.  I believe once we have a real Kanban process that can be implemented and clearly identified many of the teams and organizations that intially thrived under Scrum, but are now held back by the strict time-boxing, will jump to our side of the fence and embrace the idea of limiting WIP.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/768/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/768/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/768/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/768/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/768/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/768/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/768/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/768/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/768/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/768/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/768/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/768/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/768/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/768/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=768&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/04/26/kanbanand-the-new-agile-process-you-have-already-been-following/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/695e2a956b2dcb5ac45a7095b6ee338a?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">jsonmez</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/04/blurry_20030715.jpg" medium="image">
			<media:title type="html">blurry_20030715</media:title>
		</media:content>
	</item>
		<item>
		<title>Presentation on Waterfall vs Agile</title>
		<link>http://simpleprogrammer.com/2010/04/21/presentation-on-waterfall-vs-agile/</link>
		<comments>http://simpleprogrammer.com/2010/04/21/presentation-on-waterfall-vs-agile/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 14:05:32 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://simpleprogrammer.com/?p=702</guid>
		<description><![CDATA[I recently put together a brief Prezi presentation on Waterfall vs Agile. In doing so, I had to really think about why exactly I think waterfall is bad.  The feedback loop It really came back to one central thing for me, which is the length of the feedback loop.  When we are using a waterfall [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=702&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently put together a brief <a href="http://simpleprogrammer.com/2010/03/15/powerpoint-killer-prezi/">Prezi </a>presentation on <a href="http://prezi.com/chsbefgx55le/">Waterfall vs Agile</a>.</p>
<p>In doing so, I had to really think about why exactly I think waterfall is bad. </p>
<h2>The feedback loop</h2>
<p>It really came back to one central thing for me, which is the length of the feedback loop.  When we are using a <a href="http://simpleprogrammer.com/2010/04/07/dont-go-chasing-waterfalls-mini-waterfall-vs-agile/">waterfall process </a>for software development, the customer doesn&#8217;t really have a chance for feedback until the end of the project.  Even the testing is done at the end of the project, so that feedback is coming very late.</p>
<p>The biggest strength Agile gives over Waterfall, is the tightening of that feedback loop.  The quicker you can get the feedback, the quicker you can respond to it and the less time you spend going in the wrong direction.</p>
<p>From a programmer&#8217;s perspective, think about how many of us used to write code, before the tools came along to help us, and before we knew any better.</p>
<p>Write a bunch of code for 2 hours</p>
<ol>
<li>Run the compiler</li>
<li>Fix an error</li>
<li>Recompile</li>
<li>Repeat 2-3 until all errors are fixed</li>
</ol>
<p>That wasted a large amount of time.  Especially when we had some syntax wrong that affected large portions of code.</p>
<p>Using a modern IDE, we are able to see syntax errors getting highlighted the second we type them.  We can start to type a method name and auto-complete can take over and offer us suggestions.  It it difficult to write bad syntax because we are getting constant and immediate feedback as we write out code.  The feedback loop is so tight that we don&#8217;t even consider compiling to be a separate step.  There are even some IDE plugins which will continuously run any unit tests which may be affected by your code change in the background as you are making the change.</p>
<p>If the modern IDE experience is Agile, then Waterfall is punch cards.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/04/feedback.jpg"><img class="alignnone size-full wp-image-705" title="Feedback" src="http://complextosimple.files.wordpress.com/2010/04/feedback.jpg?w=500" alt=""   /></a></p>
<h2>Taking the best of all</h2>
<p>So, <a href="http://prezi.com/chsbefgx55le/">here </a>is my <a href="http://simpleprogrammer.com/2010/03/15/powerpoint-killer-prezi/">prezi </a>presentation.  Please give feedback if you have some.  Remember this presentation is designed to be a very basic beginners guide to why someone should choose Agile over Waterfall.  It is not going to go into very detailed topics about Agile.</p>
<p>Also, at the end of the presentation you will notice that I suggest taking some of the process of Scrum, and the XP best practices, and running Kanban using those guiding principles.  I currently believe that is the best mix of what Agile has to offer.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/702/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/702/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/702/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/702/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/702/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/702/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/702/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=702&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/04/21/presentation-on-waterfall-vs-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/695e2a956b2dcb5ac45a7095b6ee338a?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">jsonmez</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/04/feedback.jpg" medium="image">
			<media:title type="html">Feedback</media:title>
		</media:content>
	</item>
		<item>
		<title>Scrum Will Die</title>
		<link>http://simpleprogrammer.com/2010/02/23/scrum-will-die/</link>
		<comments>http://simpleprogrammer.com/2010/02/23/scrum-will-die/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 20:59:14 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://simpleprogrammer.com/?p=409</guid>
		<description><![CDATA[I have a prediction&#8230; I&#8217;m becoming more and more confident of it everyday&#8230; When I shake the magic 8 ball, it consistently says&#8230; SCRUM WILL DIE Now, don&#8217;t get me wrong here.  I like Scrum.  I think it is a good thing.  I think it changed the way many organizations think about software development, but [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=409&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have a prediction&#8230;</p>
<p>I&#8217;m becoming more and more confident of it everyday&#8230;</p>
<p>When I shake the magic 8 ball, it consistently says&#8230;</p>
<blockquote>
<h2>SCRUM WILL DIE</h2>
</blockquote>
<p>Now, don&#8217;t get me wrong here.  I like Scrum.  I think it is a good thing.  I think it changed the way many organizations think about software development, but I also think it is not so good.</p>
<p>I remember when Scrum was first gaining traction.  I thought to myself, is Scrum a fad?  I knew Agile was around to stay because the amorphous thing that is Agile is a bundle of good practices that really make sense, but I often wondered about Scrum.  I wondered if Scrum was over hyped by consultants trying to make money coaching people and trainers trying to make money training people to be certified ScrumMasters.  I especially questioned it when I noticed that the only requirement of becoming a ScrumMaster was to breathe the air of a ScrumMaster trainer for two days.  (I know there is a trivial test now.)</p>
<h2>The failings of Scrum</h2>
<p>Scrum addresses many problems of a development team, but it also tends to create problems.  After being in Scrum environments for several years and talking to many other people in organizations doing Scrum, I&#8217;ve identified what I think are the main failings of Scrum.</p>
<p><em>Planning</em></p>
<p>Planning is a total waste of time.  It provides no benefit to the bottom line.  The supposed benefit of planning is to be able to identify how much work a team can do in a sprint and use those metrics to plan releases and schedules.</p>
<p>The concept seems solid.  It seems to make sense, but the problem is we are devoting one day of a two week sprint to an activity that basically gathers metrics.  That is a 10% overhead if your planning session doesn&#8217;t go over a single day.  Essentially, planning&#8217;s primary purpose is to chart velocity and commit to some amount of work.  Let&#8217;s break some of this down.</p>
<p><em>Velocity</em></p>
<p>Velocity is the amount of work a team can get done on average based on how much work they have been able to get done in the past.  What comes out of planning is based on estimates teams give to backlog items during planning.</p>
<p>Again, seems like a solid concept, but here are some of the problems.  First of all, estimation is almost always wrong.  The only way to get a real accurate estimation is to talk about the backlog item until you have squeezed all the requirements out of it up front.  And if you do that, then your planning will probably take two days.</p>
<p>Even if you manage to get accurate estimates, if your team is not stable and your sprint length is not stable it won&#8217;t really matter, because you will be taking the average out of something that itself is not stable.</p>
<p><em>Commitment</em></p>
<p>One central unspoken theme of Scrum is commitment.  The team commits to get a certain amount of work done in a sprint.  The business commits to not change the work the team is working on.  These commitments are critical, because without them time boxing fails, velocity metrics fail, and trust is lost in both directions.</p>
<p>So, what is wrong with commitments?  They cannot be followed.  Everyone means well, at least I hope they do.  The problem is, like a fat kid in a candy store, they just can&#8217;t help themselves.  The business doesn&#8217;t want to change priorities, but a critical issue comes up.  The development team wants to commit to the sprint, but the development team can&#8217;t make more code get done faster simply by wanting to.  They can add more hours to the sprint, but then they are skewing the velocity.  The only way the development team can realistically commit to the sprint is to &#8216;pad&#8217;, and that is a very bad word.  Don&#8217;t ever say &#8216;pad&#8217; in a development shop.</p>
<p><em>Tasking</em></p>
<p>I&#8217;ve tried to fight it.  I have closed my eyes and said &#8220;NO! NO! NO!  There is a proper way to do tasks without copying and pasting,&#8221; but it&#8217;s simply not true.  I have tried many different techniques, have asked many other Scrum teams, but everyone essentially copy and pastes the same set of tasks.  The problem is, you don&#8217;t know the tasks for most backlog items until you have had some kind of design session to decide how you are going to implement the solution.  I just cannot see a way around that simple plain fact.  So, what we end up doing is making up templates and tasks that are generic.</p>
<p><em>Product Ownership</em></p>
<p>Scrum says there should be one product owner.  I agree with this point.  In theory it works great.  In practice it ends up putting a whole product&#8217;s life into the hands of one person.  Which person?  Well, if you make that person someone high up in the organization, they won&#8217;t be the product owner for the team, but rather the boss.  The team will just do whatever the product owner says and stop being autonomous and self-managing.  If you choose someone lower in the organization, you end up having someone who cannot make decisions, and now you have all these high up business people, who are basically worthless, trying to find ways to be worthwhile (which usually results in them abusing the poor product owner.)  I like to call this the &#8220;product renter.&#8221;</p>
<p><em>Scrum Meetings</em></p>
<p>These seem like a really good idea on the surface level.  As a ScrumMaster, I tried to make these work correctly.  15 minute stand up meetings, you say what you did, what you will do, and what&#8217;s impeding you.  The problem is, if you are working together doing pair programming, and &#8220;swarming&#8221; on backlogs, you already know what is going on and you are just repeating some rhetoric.  If you are not working together on backlogs and are working in isolation, 15 minutes is not enough time.  So what ends up happening is you either have a 1 hour long meeting where everyone talks about technical details of issues they are having, or you have a 15 minutes meeting where everyone repeats the same stuff everyone already knows.</p>
<h2>What next then?</h2>
<p>I don&#8217;t think Scrum is particularly bad.  I actually like Scrum and think it can be a great process for a team that can help them to learn to use Agile techniques and vertically slice the system instead of trying to horizontally slice it.  The best parts of Scrum are really Agile.  Scrum is kind of forcing you to be Agile and do things like creating user stories, test driven development,  having always releasable code, etc.</p>
<p><a href="http://simpleprogrammer.com/2009/12/14/kanbandwagon-kanban-vs-scrum/">I wrote about the Kanban before</a>, and I am still thinking that it is <a href="http://advancedtopicsinscrum.com/development/scrum-3-stages-of-evolution-explored/">the next evolution of Scrum</a>, but I can&#8217;t say because I haven&#8217;t actually done a project using Kanban.  It seems to be the way that the Scrum project I am working on wants to evolve on its own.</p>
<p>So, why even use a process at all, or why not make our own?  Rules and process are important because they keep us from arguing about how things should be done, and they keep us from wasting time reinventing the wheel.  The trick is in having your process lightweight enough that it is not burdensome, but constraining enough that you can enforce good patterns and principles without having to argue about and debate them each time.</p>
<p>So my advice is to learn what you can from Scrum, but don&#8217;t think it is the &#8220;be all end all.&#8221;  Scrum is a fad, it cannot last ,at least not in the form it is now, because it has problems.  But hold onto those Agile principles you learn from using Scrum; those principles will last much longer, if not indefinitely.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/409/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=409&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/02/23/scrum-will-die/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/695e2a956b2dcb5ac45a7095b6ee338a?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">jsonmez</media:title>
		</media:content>
	</item>
		<item>
		<title>Kanbandwagon? Kanban vs Scrum</title>
		<link>http://simpleprogrammer.com/2009/12/14/kanbandwagon-kanban-vs-scrum/</link>
		<comments>http://simpleprogrammer.com/2009/12/14/kanbandwagon-kanban-vs-scrum/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 22:32:15 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://simpleprogrammer.com/?p=81</guid>
		<description><![CDATA[I am almost jumping on the Kaban bandwagon, but not quite.  I don&#8217;t really like to be on any &#8220;bandwagon&#8221;, because when you are you seem to get stuck in a rut and don&#8217;t see the next improvement that is coming along. What is Kanban? Let me give you the simple simple and you can [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=81&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am almost jumping on the Kaban bandwagon, but not quite.  I don&#8217;t really like to be on any &#8220;bandwagon&#8221;, because when you are you seem to get stuck in a rut and don&#8217;t see the next improvement that is coming along.</p>
<p><strong>What is Kanban?</strong></p>
<p>Let me give you the simple simple and you can look up what other people have to say about the details.</p>
<p>The simple simple is this:  Kanban is a pull model where you are strictly controlling work in progress (WIP), by limiting the amount of work that can be in each phase of development.  It eliminates the needs for time boxing and committed sprints and replaces it with just in time priorities and time in queue instead of velocity.</p>
<p>Is it still agile? In my opinion yes and even more so.  Is it still Scrum? Only in some of the principles, but really it&#8217;s a different animal.</p>
<p>Here are some good links to people who have written about Kanban:</p>
<p><a href="http://simpleprogrammer.com/2009/12/11/pair-programming-why/">http://www.agilemanagement.net/Articles/Weblog/KanbaninAction.html</a></p>
<p><a href="http://www.infoq.com/articles/hiranabe-lean-agile-kanban">http://www.infoq.com/articles/hiranabe-lean-agile-kanban</a></p>
<p><a href="http://leanandkanban.wordpress.com/">http://leanandkanban.wordpress.com/</a></p>
<p>Excellent presentation <a href="http://leanandkanban.files.wordpress.com/2009/04/kanban-for-software-engineering-apr-242.pdf">here</a>:</p>
<p><strong>Why Kanban?</strong></p>
<p>The reason I am starting to move in this direction and away from Scrum is mainly that very few people can actually get Scrum working.  Let me list out some of the most important issues I have been seeing:</p>
<ol>
<li><span style="background-color:#ffffff;">Missing top level buy-in.  (Scrum pretty much requires this since you have to have the business commit to an iteration, and commit to what it means to be a chicken.)</span></li>
<li><span style="background-color:#ffffff;">Planning meetings take up time and provide no real value.  Estimation provides a value for planning releases and figuring out what work can get done, but itself does not actually provide a tangible value.</span></li>
<li><span style="background-color:#ffffff;">This is related to 1, but the business likes to be able to change priorities more frequently than 1 sprint.  (In general I have seen this to be true)</span></li>
</ol>
<p>In some ways I am starting to wonder if Scrum is like training wheels.  It takes a large amount of dedication and attention to rules to make it work, and if you are missing the top level buy in, you can pretty much forget about it.</p>
<p>I am seeing Kanban as taking the good things that we learned doing Scrum and applying them in a less restrictive sense.  I am really liking the idea of focusing on controlling work in progress versus controlling time in which work is done.  There is a subtle difference here, but I think it is important.  I am recognizing there a many things in Scrum that we are doing that are not really adding bottom line value and most of these issues really rely on the time boxing aspect of Scrum.  If you take away the time box, but keep the idea of working on items in priority, limiting the number of items you are working on at a time, and the agile development methods which are used in Scrum you get pretty close to Kanban already.</p>
<p>Am I 100% sold on Kanban yet?  No, but neither was I on Scrum.  I really think the best approach may lie somewhere inbetween a Kanban + <a href="http://www.extremeprogramming.org/">XP</a> type of process.  See my post on <a href="http://simpleprogrammer.com/2009/12/11/pair-programming-why/">pair programming</a>.  Perhaps I&#8217;ll get a chance to try this out.  I already bring a large amount of XP to my Scrum, because XP has very good software construction practices.</p>
<p>So if you get a chance take a look at Kanban.  I really like what <a href="http://elegantcode.com/about/david-starr/">David Starr</a> has been posting <a href="http://elegantcode.com/2009/11/25/agile-is-not-scrum/">here</a> and <a href="http://elegantcode.com/2009/12/13/agile-is-not-scrum-part-2/">here</a> about Agile not being Scrum.  It is very true.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/81/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&#038;blog=10597120&#038;post=81&#038;subd=complextosimple&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2009/12/14/kanbandwagon-kanban-vs-scrum/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/695e2a956b2dcb5ac45a7095b6ee338a?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">jsonmez</media:title>
		</media:content>
	</item>
	</channel>
</rss>
