<?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; Scrum</title>
	<atom:link href="http://simpleprogrammer.com/category/agile/scrum/feed/" rel="self" type="application/rss+xml" />
	<link>http://simpleprogrammer.com</link>
	<description>Software Development from John Sonmez&#039;s Perspective</description>
	<lastBuildDate>Tue, 07 Feb 2012 17:47:46 +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; Scrum</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>Making Scrum Meetings Effective</title>
		<link>http://simpleprogrammer.com/2011/07/17/making-scrum-meetings-effective/</link>
		<comments>http://simpleprogrammer.com/2011/07/17/making-scrum-meetings-effective/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 04:17:23 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Psychology]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">https://complextosimple.wordpress.com/?p=1366</guid>
		<description><![CDATA[I’m not really the biggest fan of Scrum meetings. It doesn’t have anything to do with my like or dislike for Scrum itself.  Plenty of teams that aren’t following Scrum have Scrum meetings.  Plenty of teams that don’t even really follow any kind of Agile process have Scrum meetings. The reason why I am not [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=1366&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I’m not really the biggest fan of Scrum meetings.</p>
<p>It doesn’t have anything to do with my like or dislike for Scrum itself.  Plenty of teams that aren’t following Scrum have Scrum meetings.  Plenty of teams that don’t even really follow any kind of Agile process have Scrum meetings.</p>
<p>The reason why I am not a big fan is because most of the time they are very ineffective.</p>
<h2>The idea behind a Scrum meeting is simple</h2>
<p>The idea is that you have a daily stand up meeting where you basically determine how the work is progressing and if divine intervention is required to keep things progressing.</p>
<p>The idea is to provide a transparency where anyone can see what exactly the team is up to.</p>
<p>The basic format of a scrum meeting is pretty simple.  Each person on the team says three things:</p>
<ol>
<li>What did I do since our last meeting</li>
<li>What am I doing until our next meeting</li>
<li>What is impeding me</li>
</ol>
<p>On the surface these seem like sensible and valuable things for each team member to talk about, but…</p>
<h2>So often these three things end up being BSed</h2>
<p>No offense to anyone I’ve ever worked with.  Heck, I know I have BSed them myself.  It’s just too easy to do it.</p>
<p>When I say BSed here, I don’t necessarily mean blatantly lying about what you did and are going to do.  (Although that happens plenty as well.)</p>
<p>What I am talking about is saying what you did or what you intend to do without really having a purpose of why you are saying it.</p>
<p>How many times has this happened to you?  You walk into your Scrum meeting and panic hits!</p>
<blockquote><p>Oh crapola! It’s coming around to me!  What am I going to say?</p></blockquote>
<blockquote><p>I didn’t really get much done yesterday.  I was fooling with the build, then I kept getting interrupted.  Then I was answering a bunch of emails and I ended up helping Joe with that task he was working on.  Then we started talking about how we’d like to start using this framework.</p>
<p>I don’t even know what I am really planning on doing today.  I’m just going to keep working on the backlog I am working on.  I don’t want to say that though, I need to say something more important.</p></blockquote>
<p>So what do you do?  You kinda make up something important sounding, and you mix in some of what you did do and try and make it relate to things happening in the sprint.  You prattle on about stuff that no one really cares about, because you need to say something.  You’ll look like an idiot if you don’t.</p>
<p><a href="http://complextosimple.files.wordpress.com/2011/07/image1.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;" title="image" src="http://complextosimple.files.wordpress.com/2011/07/image_thumb1.png?w=485&#038;h=366" alt="image" width="485" height="366" border="0" /></a></p>
<h2>This kind of thinking is contagious</h2>
<p>Pretty soon you end up with the whole team just prattling on about things that aren’t really important to anyone else or just saying something like:</p>
<blockquote><p>I continued to work on backlog X, I’ll continue to work on backlog X today.</p></blockquote>
<p>Waste of time, waste of breath.  <strong>A scrum report is only valuable if it is providing usable information about the progress of an iteration and helping to bring impediments that can be resolved, to light.</strong></p>
<p>I really don’t mean to sound harsh here but I want to be truthful.  We don’t benefit anything if we can’t examine what we are doing with a impartial lens and tear it apart if needed.</p>
<h2>My solution</h2>
<p>I am a firm believer that pointing out problems without offering solutions is just whining.  It has no value.  I wish I could say I myself was never guilty of it, but the truth is, I do my fair share of it.</p>
<p>With that said, I am offering a solution to this problem…</p>
<p>Commitment!</p>
<p>By happenstance, I just finished reading <a href="http://www.amazon.com/gp/product/0137081073/ref=as_li_ss_tl?ie=UTF8&amp;tag=makithecompsi-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399373&amp;creativeASIN=0137081073">Clean Coder by Bob Martin</a>.  (I’ll post a review on that book when I get a chance, but excellent read.  It hurts to read it, because it will call you to a higher level of accountability, but read it.)</p>
<p>Anyway, that book has a great chapter on commitment, which coincides nicely with a technique I came up with awhile ago to help make Scrum meetings much more valuable and harder to BS.</p>
<p>The basic idea is pretty simple.  I replace the 3 topics in a Scrum report with my sub-classed version:</p>
<ol>
<li>What did I commit to doing yesterday and did I or did I not meet that commitment.  If not, why not.</li>
<li>What will I commit to getting done today.</li>
<li>What is impeding me that can be improved by bringing it up in this meeting.</li>
</ol>
<h2>Commitment can be scary</h2>
<p>But, it is something that carries with it accountability.  See the problem with your normal Scrum meeting is that it is far too easy to BS.  There is no accountability, so you can basically make up whatever you want.</p>
<p>I’m sorry if this offends some people, but I am not placing myself above BSing a Scrum report.  I would venture to guess that a majority of Scrum reports given on this planet are heavily weighted to the BS side of the scale.  Once again, not necessarily saying people are lying.  I am just saying that your Scrum reports contain the value of feces from a male bovine.  Just saying…</p>
<p>What I try to do with my solution is add some accountability by focusing on commitment.</p>
<p>The idea is that it makes you think about what you are actually reasonably going to get done in the day.  It forces you to think about priorities and schedule.  It requires you to break down your work and think ahead a bit so that you can come up with something that you can commit to.</p>
<p>It also tends to make sure that what gets worked on is what should be getting worked on.  You don’t get to say what you worked on yesterday, you only get to talk about what you committed to that you either did or did not get done.  This prevents team members from talking about all the other non iteration related stuff they did.</p>
<p>It really makes you think before you jump off down some rabbit trail if you really want to say in Scrum the next morning that you didn’t do anything you committed to.</p>
<p>It really makes you think first before implying you are going to get something done.  Instead of saying “I’m going to try and finish up backlog X today,” you are more likely to break down some component of backlog X and say “I will commit to getting done task A in backlog X.”</p>
<p>The difference here is critical, because in it lies the value.  The value is that someone listening to your report can actually get an idea of the true progress of the team and of the backlogs being worked on by the team.  If every day team member just report they are working on backlog X and backlog Y, we aren’t really learning anything about if backlog X and backlog Y are really progressing.  On the other hand, if team members are required to make a commitment about what they are going to get done on backlog X and backlog Y, we start to get a real picture of how that work is progressing.</p>
<h2>Keeping it relevant</h2>
<p>The other thing this Scrum meeting modification does is to keep everything talked about relevant.  By talking about what was committed to and what is going to be committed to, it doesn’t leave much room for talking about other unrelated issues that are best left to another meeting.</p>
<p>A Scrum meeting is effective because it is a short status meeting.  When other stuff bleeds in, people start tuning out and pretty soon we are all standing around talking to the mirror.</p>
<p>I make a point that no one should be talking about impediments that cannot be reasonably be expected to be helped by bringing them up in the Scrum meeting.  What is the point of talking about something that can’t be fixed?</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/1366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/1366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/1366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/1366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/1366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/1366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/1366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/1366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/1366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/1366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/1366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/1366/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/1366/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/1366/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=1366&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2011/07/17/making-scrum-meetings-effective/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>

		<media:content url="http://complextosimple.files.wordpress.com/2011/07/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<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&amp;blog=10597120&amp;post=1036&amp;subd=complextosimple&amp;ref=&amp;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&#038;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&amp;blog=10597120&amp;post=1036&amp;subd=complextosimple&amp;ref=&amp;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>The Scrum Bubble</title>
		<link>http://simpleprogrammer.com/2010/04/30/the-scrum-bubble/</link>
		<comments>http://simpleprogrammer.com/2010/04/30/the-scrum-bubble/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 22:30:53 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">https://complextosimple.wordpress.com/2010/04/30/the-scrum-bubble/</guid>
		<description><![CDATA[I thought today would be a good day to talk about what I am calling the &#34;Scrum Bubble.&#34;&#160; There seems to be just tons of heat on the Scrum and certifications topic going on lately.&#160; From my original post on Scrum for the Money to Ron Jeffries post on Certifications to Uncle Bob&#8217;s post on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=802&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I thought today would be a good day to talk about what I am calling the &quot;Scrum Bubble.&quot;&#160; There seems to be just tons of heat on the Scrum and certifications topic going on lately.&#160; From my original post on <a href="http://simpleprogrammer.com/2010/03/31/scrum-for-the-money/">Scrum for the Money</a> to <a href="http://xprogramming.com/articles/scrum-alliance-drop-certified/">Ron Jeffries post on Certifications</a> to<a href="http://blog.objectmentor.com/articles/2010/04/27/certification-dont-waste-your-time"> Uncle Bob&#8217;s post on Certifications</a>, to <a href="http://elegantcode.com/2010/04/29/scrum-and-the-c-word/">David Starr&#8217;s post on Certifications</a>.</p>
<p>Here is the thing about a dead horse.&#160; Well, you just can&#8217;t really know it&#8217;s dead.&#160; I mean, sure its eyes are closed.&#160; Sure, it’s lying there in a bloody mess on the floor, but is it really dead?&#160; The only sensible thing to do is beat it just one more time, just to make sure.&#160; Let’s kill that horse good!</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/04/beating_a_dead_horse.jpg"><img style="display:block;float:none;margin-left:auto;margin-right:auto;border-width:0;" title="beating_a_dead_horse" border="0" alt="beating_a_dead_horse" src="http://complextosimple.files.wordpress.com/2010/04/beating_a_dead_horse_thumb.jpg?w=240&#038;h=213" width="240" height="213" /></a>There is an underlying problem here… I call it</p>
<h2>THE SCRUM BUBBLE</h2>
<p>Remember the .com era.&#160; Ah, wasn’t that great.</p>
<p>How about that whole stock market always rises decade…</p>
<p>Oh, and don’t forget the housing boom.&#160; The housing boom was great!</p>
<p>But then… What happened?</p>
<p>Oh yes, we got nuked back to the stone age.&#160; </p>
<p>The same thing is happening with Scrum.&#160; Certification proliferation is fueling it.&#160; What happens when everyone in the software development world is a Certified Scrum Master, and we are still building shitty software?&#160; What then?</p>
<h2>BOOM!</h2>
<p>It implodes, just like a bubble.&#160; That bubble will burst and when that happens it is going to take Agile right along with it.</p>
<p>A wise man once said</p>
<blockquote><p>You can shear a sheep many times, but skin him only once. </p>
</blockquote>
<p>When you arm people with useless certifications and send them into organizations to go and conquer the beast of software development, you are skinning that sheep.&#160; All the consultants that are milking so much money out of Scrum will eventually find that tit dry.</p>
<h2>Scrum is good</h2>
<p>It is.&#160; It is really a great tool for building software.&#160; It makes sense, it is practical and if you apply it correctly you will get a good result.&#160; The problem is applying it correctly.&#160; The problem is it isn’t addressing the other things that need to change to really be able to do Agile development.&#160; (Which is why I suggested a <a href="http://simpleprogrammer.com/2010/04/28/the-kanbandand-guide/">new process Kanbanand</a> that does address those things.)</p>
<p>Training and consultants are good also.&#160; Getting good hands on training from someone who really knows what they are doing can accelerate you on your learning curve like nothing else.&#160; Consultants who have already been through a process and can look at things with a fresh eye can be invaluable in making positive changes in an organization.</p>
<p>The problem is Scrum is not the end-all-be-all to software development.&#160; It is not the silver bullet that kills death march zombies.&#160; It is a tool.&#160; I really like <a href="http://blog.crisp.se/henrikkniberg/">Henrik Kniberg’s</a> approach to Scrum and Kanban, where he talks about each being a tool to help you develop software.&#160; In his <a href="http://www.amazon.com/Kanban-Scrum-making-most-both/dp/0557138329/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1272660312&amp;sr=8-2">book</a>, (buy it this book is really good), he asks the question, which is better a fork or a knife?&#160; A pretty silly question to ask, which illustrates the point well. </p>
<p>When we hype up Scrum to the point of rock star stardom, and then use it as a tool to extract large amounts of money out of the software development eco systems quickly, we are creating a bubble.&#160; Just like any bubble, we should expect that to burst if we keep inflating it.</p>
<h2>There are a lot of good people in Scrum</h2>
<p>There are plenty of good people that have a sincere passion for the craft that are really investing into Scrum because they know it is a good way to deliver value to customers, and it is a simple framework that can be easily taught and implemented.&#160; There are plenty of people like <a href="http://elegantcode.com/about/david-starr/">David Starr</a> and <a href="http://www.scrumalliance.org/profiles/59-tobias-mayer">Tobias Mayer</a> that are honestly trying to do good in the world of software development and using Scrum to do it.&#160; I honestly believe that.</p>
<p>But, there are plenty of other people that are riding on the success of Scrum and building careers out of being a certificate factory.&#160; We have to take away the keys to the kingdom from those people if we want to avoid destroying the good that others are doing in the name of Scrum.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/802/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/802/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=802&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/04/30/the-scrum-bubble/feed/</wfw:commentRss>
		<slash:comments>3</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/beating_a_dead_horse_thumb.jpg" medium="image">
			<media:title type="html">beating_a_dead_horse</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&amp;blog=10597120&amp;post=783&amp;subd=complextosimple&amp;ref=&amp;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&#038;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&amp;blog=10597120&amp;post=783&amp;subd=complextosimple&amp;ref=&amp;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&amp;blog=10597120&amp;post=768&amp;subd=complextosimple&amp;ref=&amp;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&amp;blog=10597120&amp;post=768&amp;subd=complextosimple&amp;ref=&amp;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&amp;blog=10597120&amp;post=702&amp;subd=complextosimple&amp;ref=&amp;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&amp;blog=10597120&amp;post=702&amp;subd=complextosimple&amp;ref=&amp;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 For the Money&#8230;</title>
		<link>http://simpleprogrammer.com/2010/03/31/scrum-for-the-money/</link>
		<comments>http://simpleprogrammer.com/2010/03/31/scrum-for-the-money/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 15:53:14 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://simpleprogrammer.com/?p=577</guid>
		<description><![CDATA[Oh what an ethical dilemma. I&#8217;m about to piss off a lot of people. But, I am going to tell the truth. Often a person has to make a choice between standing by their convictions and doing what they believe is right or doing the more profitable thing at the cost of integrity.  I don&#8217;t [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=577&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Oh what an ethical dilemma.</h2>
<p>I&#8217;m about to piss off a lot of people.</p>
<p>But, I am going to tell the truth.</p>
<p>Often a person has to make a choice between standing by their convictions and doing what they believe is right or doing the more profitable thing at the cost of integrity.  I don&#8217;t like to use this blog as an avenue to bash anyone, but I have held myself to the requirement of being honest.  Honest in the most tactful way that I can.</p>
<p>I am also not always 100% correct.  Sometimes I am plain wrong, but I have to call things as I see them until corrected and shown otherwise.  I am open to being corrected.  That is how to learn.  Learning is more important than being right.</p>
<p>One last disclaimer.  <a href="http://simpleprogrammer.com/2010/02/23/scrum-will-die/">I don&#8217;t hate Scrum</a>.  I think it is good.  I think it is really good, and if implemented correctly can provide enormous benefits.  I think most of the ideas are sound, even though I do believe it has some major flaws.  I think if 90% of software companies stopped doing their broken process and at least tried to adopt Scrum, the world would be a better place.  But&#8230; I also think Scrum is not the end.  It is just the beginning of an eye opening and awakening of problems in developing software.</p>
<p>If I attack Scrum, it is for two reasons.</p>
<ol>
<li>To push us to build on the principles of Scrum and go beyond it to iteratively find an even better process.</li>
<li>To fight against the blood-thirsty vampire consultants, trainers and organizations preying on the uninformed and making Scrum a commercial enterprise which sacrifices its integrity.</li>
</ol>
<h2>Today I will talk about the latter</h2>
<p>Perhaps this isn&#8217;t a smart move.  Perhaps this will remove opportunities from my path and make people angry with me.  So be it.  If I am wrong, teach me.</p>
<p>What sparked this whole post is the relaunch of scrum.org.  I listened to <a href="http://www.pluralsight-training.net/community/blogs/pluralcast/archive/2010/03/29/pluralcast-12-the-future-of-scrum-with-ken-schwaber.aspx">Pluralcast #12: The Future of Scrum with Ken Schwaber</a>.  I truly listened to this with an open mind and was optimistic about the new programs being launched.  I bought into the story about the Scrum Alliance becoming a money making scheme and selling certifications.  I welcomed the fresh clean break to &#8220;free certifications&#8221; and altruistic motives.  I thought teaming up with Microsoft to bring in a .NET track, and later a Java track, was a great idea.  Until I visited the website and found the only difference between scrumalliance.org and scrum.org is who is taking your money.</p>
<p>But please, don&#8217;t take my word for it.  Lets look at the pages together.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/03/assessments-screen.jpg"><img class="alignnone size-full wp-image-578" title="assessments screen" src="http://complextosimple.files.wordpress.com/2010/03/assessments-screen.jpg?w=500" alt=""   /></a></p>
<p>This is the assessments page, let&#8217;s click Professional Scrum Master.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/03/scrummaster-1.jpg"><img class="alignnone size-full wp-image-579" title="scrummaster 1" src="http://complextosimple.files.wordpress.com/2010/03/scrummaster-1.jpg?w=500" alt=""   /></a></p>
<p>Hmm, there is also a Professional ScrumMaster II on the page below.  Let me register and add them both to my cart, so I can take this test and get certified.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/03/scrum-prices.jpg"><img class="alignnone size-full wp-image-580" title="scrum prices" src="http://complextosimple.files.wordpress.com/2010/03/scrum-prices.jpg?w=500&#038;h=296" alt="" width="500" height="296" /></a></p>
<p>WOW!  Umm, what is going on here?  Didn&#8217;t they just talk about how Scrum Alliance was ripping us off and turning Scrum into a money making venture?</p>
<p>Ok, how about Professional Scrum Developer, that one I am really interested in.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/03/scrum-developer.jpg"><img class="alignnone size-full wp-image-581" title="scrum developer" src="http://complextosimple.files.wordpress.com/2010/03/scrum-developer.jpg?w=500&#038;h=387" alt="" width="500" height="387" /></a></p>
<p>Okay, can&#8217;t take the test on here the first year.  Have to take a course first.  That sounds pretty reasonable.  Let&#8217;s check out the prices of the courses.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/03/kencourse.jpg"><img class="alignnone size-full wp-image-582" title="kencourse" src="http://complextosimple.files.wordpress.com/2010/03/kencourse.jpg?w=500&#038;h=278" alt="" width="500" height="278" /></a></p>
<p>Umm.  $2000?  Then I can be a Certified Scrum Master?  How is this different than Scrum Alliance?  Okay, what about the Certified Scrum Developer?</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/03/richardcourse.jpg"><img class="alignnone size-full wp-image-583" title="richardcourse" src="http://complextosimple.files.wordpress.com/2010/03/richardcourse.jpg?w=500&#038;h=238" alt="" width="500" height="238" /></a></p>
<p><a href="http://complextosimple.files.wordpress.com/2010/03/richardcourse.jpg"></a>Okay,  sorry, I&#8217;m not sipping that Kool-Aid anymore.</p>
<p>The ScrumAlliance.org courses are even cheaper.  (Although, they are still a rip off IMO)</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/03/agileallianceversion.jpg"><img class="alignnone size-full wp-image-584" title="agileallianceversion" src="http://complextosimple.files.wordpress.com/2010/03/agileallianceversion.jpg?w=500&#038;h=403" alt="" width="500" height="403" /></a></p>
<h2>It&#8217;s all about the Benjamins</h2>
<p>My current assessment of the Scrum consulting world just got worse instead of better.  I really wanted to believe in what I heard on that podcast.  It seemed really good to me.  I even bet the classes will be really good.  I know one of the instructors and he is awesome!</p>
<p>The problem is, I can&#8217;t trust Scrum.org, and I can&#8217;t trust ScrumAlliance.org, not when they are about making money.  (That little .org domain on the end is kind of ridiculous).  It is pretty clear to me that this is what the whole Scrum movement has become.  When all the dust settles and the consultants have certified every Scrum Master in the world, <strong>will software development really be better?</strong></p>
<p><strong></strong>If I am wrong, tell me.  I won&#8217;t filter the comments here.  Ken, if you want to, address this post.  Do so, you have a right to and I won&#8217;t filter your response.   Sorry if I am &#8220;hurting your guys business&#8221;, but my conscious does not allow me to stand by and say nothing.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/577/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/577/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/577/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/577/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/577/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/577/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/577/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/577/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/577/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/577/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/577/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/577/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/577/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/577/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=577&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/03/31/scrum-for-the-money/feed/</wfw:commentRss>
		<slash:comments>18</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/03/assessments-screen.jpg" medium="image">
			<media:title type="html">assessments screen</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/03/scrummaster-1.jpg" medium="image">
			<media:title type="html">scrummaster 1</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/03/scrum-prices.jpg" medium="image">
			<media:title type="html">scrum prices</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/03/scrum-developer.jpg" medium="image">
			<media:title type="html">scrum developer</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/03/kencourse.jpg" medium="image">
			<media:title type="html">kencourse</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/03/richardcourse.jpg" medium="image">
			<media:title type="html">richardcourse</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/03/agileallianceversion.jpg" medium="image">
			<media:title type="html">agileallianceversion</media:title>
		</media:content>
	</item>
		<item>
		<title>Moving the Finish Line</title>
		<link>http://simpleprogrammer.com/2010/03/17/moving-the-finish-line/</link>
		<comments>http://simpleprogrammer.com/2010/03/17/moving-the-finish-line/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 13:57:31 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://simpleprogrammer.com/?p=516</guid>
		<description><![CDATA[Question: How do you demotivate a Scrum team? Answer: Move the finish line. Let me paint you a picture&#8230;  imagine you are in a race.  The 100 yard dash.  You&#8217;ve been training, practicing the starting blocks and getting ready for the big race. You are in the blocks, ready to explode and start running at the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=516&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Question</strong>: How do you demotivate a Scrum team?</p>
<p><strong>Answer</strong>: Move the finish line.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/03/finishline.jpg"><img class="alignnone size-medium wp-image-517" title="finishline" src="http://complextosimple.files.wordpress.com/2010/03/finishline.jpg?w=300&#038;h=214" alt="" width="300" height="214" /></a></p>
<p>Let me paint you a picture&#8230;  imagine you are in a race.  The 100 yard dash.  You&#8217;ve been training, practicing the starting blocks and getting ready for the big race.</p>
<p>You are in the blocks, ready to explode and start running at the sound of the gun.</p>
<p>The gun fires &#8220;BANG&#8221;.</p>
<p>You take off down the track.</p>
<p>90 yards</p>
<p>70 yards</p>
<p>40 yards</p>
<p>30 yards, you can see the finish line clearly now&#8230; almost there</p>
<p>20 yards, just keep sprinting and you will be there!</p>
<p>50 yards, wtf?  Did the finish line just move?</p>
<p>60 yards, eh?  Did it just move again?!</p>
<p>Do you keep running hard at this point, or do you start walking?  If you are like most people, you will start walking.  If you are like most Scrum teams, you will start walking.</p>
<p>Now, imagine if this happens every sprint.  Pretty soon training becomes less important.  You find yourself not even using the blocks because it is not going to matter.  After a few iterations of this the team is walking from the get-go, not even running at all.</p>
<p>Do not move the finish line.  Don&#8217;t do it.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/516/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=516&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/03/17/moving-the-finish-line/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/03/finishline.jpg?w=300" medium="image">
			<media:title type="html">finishline</media:title>
		</media:content>
	</item>
		<item>
		<title>When Scrum Hurts: Mob Achitecture</title>
		<link>http://simpleprogrammer.com/2010/03/12/when-scrum-hurts-mob-achitecture/</link>
		<comments>http://simpleprogrammer.com/2010/03/12/when-scrum-hurts-mob-achitecture/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 19:07:52 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://simpleprogrammer.com/?p=499</guid>
		<description><![CDATA[If you have been following my blog, you know that I have a love/hate relationship with Scrum. I&#8217;ve previously talked about why I think Scrum will eventually die and I am still pretty much convinced of that point.  Scrum has become something you sell through training and consulting.  If you make your living off of doing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=499&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>If you have been following my blog, you know that I have a <a href="http://simpleprogrammer.com/2009/12/05/scrumbut-double-fudge-sunday-and-scrummaster-personal-trainer/">love</a>/<a href="http://simpleprogrammer.com/2010/02/23/scrum-will-die/">hate</a> relationship with Scrum.</h2>
<p>I&#8217;ve previously talked about why I think <a href="http://simpleprogrammer.com/2010/02/23/scrum-will-die/">Scrum will eventually die</a> and I am still pretty much convinced of that point.  Scrum has become something you sell through training and consulting.  If you make your living off of doing this, sorry, but you may be part of the problem.</p>
<p>What this post is really about though is the problem of good architecture when implementing Scrum.  In my experience, it is very difficult to create or maintain a good architecture and do Scrum.  There is one very simple reason for this: <strong>mobs don&#8217;t build good architectures</strong>.</p>
<h2>Why?</h2>
<p>Let me give you an example that helps to illustrate my point.  Let us take a second to think about real physical engineering and architecture.  Let us say we are going to put together a team to design and build a custom home.</p>
<p>So we get together a plumber, an electrician, a couple of framers and an architect.  Now, let&#8217;s have them start building the house.  What do you think the architecture of the building will be like?  What if the plumber and electrician know a good amount about architecture, because they studied it in highschool?  They outvote the actual architect.  In general the team is going to benefit from the real architect&#8217;s experience and guidance, but when he understands a critical component which the other team members do not see, he is going to be overridden and that will spell trouble down the line.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/03/uglyhouse.jpg"><img class="alignnone size-full wp-image-500" title="UglyHouse" src="http://complextosimple.files.wordpress.com/2010/03/uglyhouse.jpg?w=500" alt=""   /></a></p>
<p>Now, obviously this parallel does not completely apply.  I am just trying to take one aspect of it for the point of this illustration.  The idea that you don&#8217;t want a group of people, as intelligent as they are, to make a decision which could be better left in the hands of an expert. </p>
<p>At this point you might be thinking &#8220;what an arrogant jerk!&#8221;  You think a so called &#8220;software architect&#8221; knows so much better than the average developer?  No, that is not exactly the point.  The point is that <strong>there is a difference in level of experience and ability in software people, roles and labels aside, and when you use a democracy of team based decision-making methods, you get an average of the skill level and experience of the whole team as a result.</strong>  It is a mouthful, but read that over a few times until you get my point.  I think it is pretty hard to argue against, but let me give one more illustration.</p>
<p>Let us say now that you are going into a hospital to get heart surgery done.  Now, this kind of procedure is not a one man operation.  You would typically have a surgeon, an anesthesiologist, several nurses, and other doctors involved.  But let&#8217;s say for this instance that we let this surgical team operate like a Scrum team.  Instead of the surgeon or chief medical officer ultimately calling the shots, the team will make a decision as a whole.  Would you be ok with that?  The nurse has the same vote as the surgeon?  Two nurses can override the surgeon&#8217;s decision?  I think I would be a little bit alarmed, especially if I sat in on their design session.</p>
<p><a href="http://complextosimple.files.wordpress.com/2010/03/henrysurgery.jpg"><img class="alignnone size-medium wp-image-501" title="henrysurgery" src="http://complextosimple.files.wordpress.com/2010/03/henrysurgery.jpg?w=300&#038;h=283" alt="" width="300" height="283" /></a></p>
<p>I&#8217;m not trying to pick on anyone here or devalue anyone.  I am also not trying to destroy the concept of team.  Teams and teamwork are very important in the development of software.  But I hope you can see the point that Scrum can tend to lean towards a mob built architecture for a system, and that architecture is only as good as the average of the abilities of the team members.  Although more often than not it&#8217;s really just as good as the most vocal and assertive member(s) of the team.</p>
<h2>Where Scrum and Scrum-like processes fail</h2>
<p>I don&#8217;t see how a resolution to this problem fits inside of the Scrum framework, and that is a problem.  The idea of a completely self-managing team is ok for making construction type decisions about building the software, but it has no solution for the overall architecture and general best practices for the development of the application.  As much as we can despise hierarchy, it really has a value that is completely missed by Scrum.  You really want to have the more <span style="text-decoration:line-through;">senior</span> highly skilled <span style="text-decoration:line-through;">developers</span> technical people with more power over decisions and direction than your less skilled.  This isn&#8217;t mean, it isn&#8217;t spiteful or power-mongering, it is common sense.  The problem with the self-managing- everyone-is-equal team is that it levels the field.</p>
<h2>So what is the solution?</h2>
<p>Would I offer up a problem without offering up a solution?  There are several ways of dealing with this problem.  It depends on how far you are willing to step outside of Scrum.</p>
<p>Solution 1: Scrumminess Factor: 9</p>
<p>Appoint a small team of technical and business architects that have the responsibility of:</p>
<ul>
<li>Overseeing the general architecture of the system</li>
<li>Creating development best practices and guidelines</li>
<li>Attending design sessions for other teams</li>
<li>Stepping in when needed to steer a team back on the right course</li>
</ul>
<p> This solution works only if you have several Scrum teams on the project, where it would make sense to have a team dedicated to architecture.  This team is also a good one to be <a href="http://simpleprogrammer.com/2009/12/03/dedicated-developer-tools-teams/">creating developer tools</a>.  I have actually been part of a team doing this kind of role, and I think it worked out pretty well.  It doesn&#8217;t really violate Scrum, because that team is a separate Scrum team with a different kind of backlog.</p>
<p>Solution 2: Scrumminess Factor: 6</p>
<p>Appoint a technical architect to the project.  This person is in charge of the technical people on all of the teams for technical direction, but not HR duties.  This role would have the ultimate authority on any kind of development and architecture decisions for the project.  They would be a floating resource that could help teams at times where needed.  This person would be thinking about the bigger architecture picture that is being created by each of the teams.</p>
<p>Solution 3: Scrumminess Factor: 3</p>
<p>Appoint technical leads on the teams which are responsible for the architecture and ultimate technical direction of the team they are on.  If you have multiple teams, the technical leads should have a technical lead for the technical leads.  This allows for a unified vision when there is dissent among the technical team leads.  It has a low Scrum factor, because it puts a direct leadership role on the Scrum team, but it allows for the solution to the mob architecture problem, while still keeping the architecture within the team.</p>
<p>One final word here.  If you are still thinking that a central authority is not important to a business, consider this:  every company I know of has either a CEO or a president.  I have never seen a company with a Chief Executive Committee.  Sure, there is a board of directors, whom the CEO ultimately is accountable to, but you have one person setting the vision and business direction of the company.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/499/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=499&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/03/12/when-scrum-hurts-mob-achitecture/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>

		<media:content url="http://complextosimple.files.wordpress.com/2010/03/uglyhouse.jpg" medium="image">
			<media:title type="html">UglyHouse</media:title>
		</media:content>

		<media:content url="http://complextosimple.files.wordpress.com/2010/03/henrysurgery.jpg?w=300" medium="image">
			<media:title type="html">henrysurgery</media:title>
		</media:content>
	</item>
		<item>
		<title>Return of the Fatlog</title>
		<link>http://simpleprogrammer.com/2010/03/09/return-of-the-fatlog/</link>
		<comments>http://simpleprogrammer.com/2010/03/09/return-of-the-fatlog/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 16:38:22 +0000</pubDate>
		<dc:creator>jsonmez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[User Stories]]></category>

		<guid isPermaLink="false">http://simpleprogrammer.com/?p=480</guid>
		<description><![CDATA[Just make it work&#8230; I first introduced the concept of a Fatlog a couple of months ago. Basically, a fatlog is a Scrum backlog, or any Agile user story, that is too big and can be sliced vertically into thinner functions of the system. I talked about the kinds of symptoms which might indicate a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=480&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2><a href="http://complextosimple.files.wordpress.com/2010/03/returnoffatlog.jpg"><img class="alignnone size-medium wp-image-482" title="returnoffatlog" src="http://complextosimple.files.wordpress.com/2010/03/returnoffatlog.jpg?w=300&#038;h=300" alt="" width="300" height="300" /></a></h2>
<h2>Just make it work&#8230;</h2>
<p><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/">I first introduced the concept of a Fatlog a couple of months ago</a>.</p>
<p>Basically, a fatlog is a Scrum backlog, or any Agile user story, that is too big and can be sliced vertically into thinner functions of the system.</p>
<p>I talked about the kinds of symptoms which might indicate a backlog is indeed a fatlog, but today I want to hone in on a special kind of fatlog that really only exists in maintenance mode.</p>
<p>I like to call this kind of fatlog the &#8220;just make it work&#8221; fatlog.  It is kind of hard to describe what this fatlog looks like, but perhaps easier to describe one of the ways it comes to be.</p>
<p>Let&#8217;s say you have a major feature for your application.  Some feature that you built over several backlogs, perhaps over several sprints.  Some users start reporting a few bugs for that feature.  This doesn&#8217;t work, it doesn&#8217;t work when I do this, etc.  The business doesn&#8217;t really understand what the user is saying or doesn&#8217;t want to take the time to fully understand what is broken, they just know some of the parts of this feature are broken.  So what do they do?  Create a user story which describes all of the requirements of the entire feature and make it one single backlog.</p>
<p>What you end up with is a large backlog that really should be 10 or more backlogs, but is excused as one backlog, because &#8220;most of the stuff is working anyway.&#8221;  The idea here is not so far fetched.  The idea is that if most of it is working, the team should be able to identify which things are not working according to the requirements and fix just those things, and in the end the whole thing needs to work anyway, so they should make sure the complete feature works.</p>
<h2><strong>What is wrong with this?</strong></h2>
<p>It may seem like not that big of a deal, you can just estimate the backlog based on the parts you know are broken and the testing for the entire feature.  There are a few problems with this line of thinking.</p>
<ul>
<li>What if one or more of the things you thought were working are not working?  What if they are horribly broken?</li>
<li>How will you know how to test the entire feature without the entire detailed requirements?  If you think you&#8217;re just going to pull up the tests from back when you first implemented the feature, you had better check with your business first.  Chances are their idea of the correctness of the feature has changed.</li>
<li>How do you know where to start working?  You will have to access what is broken first.  This will mean that you must run all the regression tests to see what is broken.  The only problem is if your original tests would have failed for the failures in the first place, you would have already known about it and fixed it the first time.  You will have to write new tests to exploit the bugs that you don&#8217;t know about.</li>
<li>If the business cannot tell you what is broken, how will they know when it is fixed?  Your success criteria will be very interpretable.  That is a recipe for failure.</li>
</ul>
<p>Have you ever played one of those games where you try to figure out what is different between two almost identical pictures?  Some of those pictures can be very difficult to spot the differences.  It is a good thing they tell you how many wrong things you need to find.  When you have a &#8220;just make it work&#8221; fatlog you have exactly that.  Except you don&#8217;t have the count of how many things are wrong.  You have to keep guessing and hope you got them all.</p>
<p>Here is the key point: <strong>a user story sizing should not be based on the size of the work, but rather the scope of the work. </strong>The difference may not seem like much, but it is huge.</p>
<p>Consider the difference between these two statements:</p>
<ol>
<li>Find the one 1 needle in all of the haystacks on the entire farm.</li>
<li>Find 50 needles in the one haystack by the side of the barn.</li>
</ol>
<p>The first statement is not much work, (just finding one needle), but the scope is huge.  The second statement is much more work, (finding 50 needles), but the scope is much smaller.</p>
<p>Which statement do you think is likely to have more success?</p>
<p>One key thing each Scrum or Agile team should ask about each maintenance story they are going to take into an iteration is: <strong>can you tell me what is broken?</strong> If the business cannot tell you what is broken, but only lists a set of requirements of how something should work, you are going to be searching for a needle in an unknown number of haystacks.  Instead, the backlog should be changed to either reflect exactly what is known to be broken, or be broken up into many smaller stories with smaller scopes.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/complextosimple.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/complextosimple.wordpress.com/480/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/complextosimple.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/complextosimple.wordpress.com/480/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/complextosimple.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/complextosimple.wordpress.com/480/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/complextosimple.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/complextosimple.wordpress.com/480/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/complextosimple.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/complextosimple.wordpress.com/480/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/complextosimple.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/complextosimple.wordpress.com/480/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/complextosimple.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/complextosimple.wordpress.com/480/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=simpleprogrammer.com&amp;blog=10597120&amp;post=480&amp;subd=complextosimple&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://simpleprogrammer.com/2010/03/09/return-of-the-fatlog/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/03/returnoffatlog.jpg?w=300" medium="image">
			<media:title type="html">returnoffatlog</media:title>
		</media:content>
	</item>
	</channel>
</rss>
