<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Xebia Blog &#187; Machiel Groeneveld</title>
	<atom:link href="http://blog.xebia.com/author/mgroeneveld/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xebia.com</link>
	<description>Software development done right!</description>
	<lastBuildDate>Wed, 01 Feb 2012 00:30:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Feature Flow &#8211; Increasing velocity using Kanban</title>
		<link>http://blog.xebia.com/2009/05/28/feature-flow-1/</link>
		<comments>http://blog.xebia.com/2009/05/28/feature-flow-1/#comments</comments>
		<pubDate>Thu, 28 May 2009 11:00:24 +0000</pubDate>
		<dc:creator>Machiel Groeneveld</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/blog.xebia.com/www/wp-content/plugins/autometa/autometa.php</b> on line <b>303</b><br />
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[Lean]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=912</guid>
		<description><![CDATA[A few months ago I was joined a software development team that had some problems getting their process right. The team was doing Scrum by the book, apart from regular production releases they were doing it all: sprints, planning, retrospectives, Scrum board etc. This team didn&#8217;t need too much explanation of Scrum so I could [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago I was joined a software development team that had some problems getting their process right. The team was doing Scrum by the book, apart from regular production releases they were doing it all: sprints, planning, retrospectives, Scrum board etc. This team didn&#8217;t need too much explanation of Scrum so I could dive into development straight away, or so I thought. They struggled with getting the sprints right, their velocity was decreasing and spirits were low. Luckily we managed to change our process by changing some basic Scrum practices and replacing some of them with Lean practices, inspired by the new Kanban articles and presentations. Productivity is now higher than ever and we can now focus on what really matters: product quality and customer satisfaction.<br />
<span id="more-912"></span></p>
<p><strong>Work In Progress</strong><br />
When I started at this team, they had one major issue: getting things done. The major symptom was the frustration of management and the team with the project. The first 3-week time box (sprint) ending with about 30% (!) of all features still in progress, when, of course, they should all have been done and ready for shipment.</p>
<p>Their existing solution to this problem was to lower the expected velocity each sprint, so the next sprint would be on-time. But at the end of next sprint, the same problem occurred, so the velocity was going down sprint after sprint. The sprint planning meetings weren&#8217;t very pleasant, as the failed commitment hang heavily on the team and there was still the pressure of the rest of the organisation for the team to keep up their tempo. This pressure from both sides was crushing morale.</p>
<p>The way this team reacted to pressure was to work harder. Most people would have 2 or 3 tasks in progress at the same time. When a developer would finish a task, the testers were too busy testing something else, so they could give the developer direct feedback. When the tester found an issue with a new feature, the developers were already working on something else, so the tester had to wait. Simply put, there was too much focus on working long and hard, not on cooperation and the stuff that actually matters: features.</p>
<p>I&#8217;m believe most dysfunctional behaviour comes from the system people are in, so I first addressed the biggest struggle of this team: pressure &amp; predictability. Most Scrum masters challenge the team to reach the same (or higher) velocity each sprint. This pressure should give a team focus to perform at its best. However, it can also go haywire if the team doesn&#8217;t deliver. No focus, no pride, no happy customer. The effect on this team was that retrospectives were dismal and planning meetings were a huge burden. The teams&#8217; productivity dropped in the days after the sprint, finding new courage to start the next one. Because they had an ineffective work-process, the only outcome of each sprint was to lower the expected velocity, to make sure we would be predictable. Estimation and predictability are only a means to an end and since they were getting in the way of fixing the root cause (and were bringing down the team&#8217;s spirit) I opted to cut out the planning sessions and sprint deadlines.</p>
<p><strong>Kanban</strong><br />
The solution was inspired by Corey Ladas&#8217; presentation at Agile2008 about <a href="http://leansoftwareengineering.com/ksse/scrum-ban/">Kanban</a>. One of the tools Corey adds to his project is a limit of &#8216;work in process&#8217;. This was exactly what the team was struggling with (remember the big pile of unfinished tasks?). So the first change we made was to set a limit of 8 tasks on the &#8216;in progress&#8217; column. </p>
<p>We spent 3 weeks bringing the numbers of open tasks from 21 to 8, without picking up any new work. Of course the team struggled with this new limit. They were used to pick up new work whenever they were blocked somehow, this wasn&#8217;t allowed any more. It took some time for the team to really learn that picking up too much work would mean regression to the swamped way of working. Resisting the impulse of increasing WIP is still a discipline, but we now keep each other in check. This gave a stronger team focus on getting stuff to done and recognizing the systemic issues (impediments) with the flow of features. </p>
<p>We used the term Feature Flow to describe the goal of the team: to let features flow through the team without interruptions. Any feature that is in a state of waiting, or is simply taking more than a few days is analysed. It&#8217;s moved to done as quickly as possible by scrambling more team members. When we encounter features getting stuck, we don&#8217;t pick up more work, we try to find the root-cause of the stickiness and solve that. We increased the quality and capabilities of our build environment a few times for that very reason: to prevent future blockage in our flow of features.</p>
<p>When we introduced the &#8216;work-in-progress&#8217; limit, we also temporarily stopped doing planning meetings, as our first target was getting the w.i.p. down to 8. The interesting side effect was, that we were working for a few weeks without the need for a planning session. So we stopped the fixed-date planning session and replaced it with an ad-hoc planning session whenever the &#8216;sprint-backlog&#8217; was drying up. From our coarsely estimated product backlog our product owner introduced a couple of days worth of features each planning session. The great thing was that the priorities could change at the last moment, as long as the team hadn&#8217;t started working on a feature. As the Sprint planning meetings were always quite strenuous, the just-in-time one-hour planning sessions kept the teams energy at a constant.</p>
<p>This simple Kanban process worked pretty well and our velocity increased back to a decent level. In my next blog I&#8217;ll explain some extra improvements we&#8217;ve made, how we got the testers and developers to stay in sync and why we&#8217;ve introduced some lightweight planning again.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2009/05/28/feature-flow-1/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2009%2F05%2F28%2Ffeature-flow-1%2F&amp;title=Feature%20Flow%20%26%238211%3B%20Increasing%20velocity%20using%20Kanban" id="wpa2a_2"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2009/05/28/feature-flow-1/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>The Rise of Lean</title>
		<link>http://blog.xebia.com/2009/01/05/the-rise-of-lean/</link>
		<comments>http://blog.xebia.com/2009/01/05/the-rise-of-lean/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 09:00:29 +0000</pubDate>
		<dc:creator>Machiel Groeneveld</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[scrumban]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=823</guid>
		<description><![CDATA[Will infoq.com have a &#8220;Lean&#8221; section in the near future? Given the recent rise in blogs, presentations and articles on Lean subjects, don&#8217;t be surprised if, in 2009, Lean will be the new Agile. Lean is a process management philosophy derived from the Toyota Production System that aims to provide more value with less work. [...]]]></description>
			<content:encoded><![CDATA[<p>Will infoq.com have a &#8220;Lean&#8221; section in the near future? Given the recent rise in blogs, presentations and articles on Lean subjects, don&#8217;t be surprised if, in 2009, Lean will be the new Agile.</p>
<p>Lean is a process management philosophy derived from the Toyota Production System that aims to provide more value with less work. Lean originated from mass manufacturing, but has successfully been applied in other industries such as health care, travel industry, and services. That means Lean can also be applied in software development. </p>
<p>Although Lean is becoming more popular in the Agile community, the views on what Lean is, differ widely. Martin Fowler tries to avoid the entire Lean vs. Agile debate by <a href="http://martinfowler.com/bliki/AgileVersusLean.html">stating</a> that they are equal. Although the idea of keeping Lean within the boundaries of Agile has its appeal, not everyone agrees.</p>
<p><span id="more-823"></span></p>
<p>Some see Lean as an improvement on Agile. Alan Shalloway from Netobjectives sees Lean as &#8216;<a href="http://www.infoq.com/presentations/Lean-Agile-Alan-Shalloway">Agile in the Enterprise</a>&#8216;, referring to the &#8216;value stream&#8217; thinking tool that Lean offers. In a Value Stream Map, the entire process of delivering value to the customer is studied and improvements are made based on the biggest problems in the stream instead of optimizing only small parts. In an enterprise environment this could provide a lot more reduction of waste than a regular Agile approach. Scott Ambler refers to the local optimization of Agile as <a href="http://www.infoq.com/interviews/Agile-Scott-Ambler#">silos</a>, although he might not think of Lean as removing these silos.</p>
<p>Lean is also used to criticize current Agile methods such as Scrum. Tobias Mayer loosely quotes Marry Poppendieck in his <a href="http://agilethinking.net/blog/2008/10/23/getting-trashed-by-the-lean-machine/">blog</a> claiming Scrum being &#8220;insufficient&#8221;. This triggered a <a href="http://www.agilemanagement.net/Articles/Weblog/TrashingScrumorReflecting.html">response</a> by David Anderson; one of the most profound contributors to the current rise of Lean in software development. David presented Lean concepts at Agile2008 in his talk &#8216;<a href="http://www.infoq.com/presentations/Agile-Directions-David-Anderson">Future Direction for Agile</a>&#8216;, opening up Lean as a way to improve further on Agile.</p>
<p>For many, Lean will be used as a set of (thinking) tools that can aid in tuning current Agile practices. A perfect example is Corey Ladas&#8217;s <a href="http://leansoftwareengineering.com/ksse/scrum-ban/">Scrum-ban</a> approach; a way to upgrade the default Scrum task board using Lean tools. Given the rising popularity of that article, I predict many Scrum-ban boards will be implemented by current Scrum practitioners. I expect some case studies to appear on Scrum-ban at Agile2009. Thanks <a href="http://www.decision-coach.com">Olav Maassen</a>, a strong proponent of Kanban, a new stage has been added to Agile2009 for these cutting edge Lean practices. For more information, have a look at an in depth example is use of Kanban in the <a href="http://www.gamasutra.com/view/feature/3847/beyond_scrum_lean_and_kanban_for_.php">gaming industry</a>.</p>
<p>Although there are different views on Lean within the Agile community, they have one thing in common, they all adopt only parts of Lean. One cause is the limited amount of books available on Lean Software Development. Of course the Poppendiecks have written great books on Lean Software Development, but a community needs more than one source of information. Books such as &#8216;The Toyota Way&#8217; and &#8216;Lean Thinking&#8217; describe the original Lean principles. When one reads these books, it becomes apparent that some key Lean concepts are ignored in software development.</p>
<p><a href="http://www.takt-group.com/group/david-binnerts.php">David Binnerts</a> pointed out the concept &#8216;standard work&#8217; missing from Lean Software Development. Lean defines standard work as: &#8216;the current best practice&#8217;. Anyone performing the same task should follow the same procedure. This is the basis for &#8216;Kaizen&#8217;, the process of continuous improvement and refinement. Only with an established current practice can you improve that practice. Especially software developers have very limited experience with this amount of discipline and abolishment of variation. Perhaps David Anderson would want to to introduce this concept in software development using <a href="http://www.agilemanagement.net/Articles/Papers/CMMIandAgileWhynotembrace.html">CMMI</a>?</p>
<p><a href="http://www.davethomas.net/talks_index.html">Dave Thomas</a> and <a href="http://www.cooper.com/journal/2008/08/alans_keynote_at_agile_2008.html">Alan Cooper</a> describe the entire software development process more or less as a waterfall. According to Dave Thomas software is still hard to change once it is written, which makes Extreme Programming close to impossible for large projects. He claims the need for a design and architectural phase before actual implementation starts. This approach cuts the development part in two halves: the design and the implementation. Both this design and implementation phase would benefit greatly from a Lean approach. This is, however, not compatible to Scrum or XP and could be seen as un-Agile or labelled <a href="http://en.wikipedia.org/wiki/Big_Design_Up_Front">Big Design Up Front</a>.</p>
<p>A concept like Standard Work doesn&#8217;t seem to fit the XP/Scrum organic self organization of teams. Whereas Scrum does not exclude this concept, as David Anderson states, Scrum could be viewed as the current best practice on which a team can improve further. Scrum, perhaps similar to CMMI level 2, a good baseline for further refinement and expansion into all areas of practice and organisation.</p>
<p>I admire David Anderson and Corey Landas for their unconventional thinking. A lot of new Lean concepts and practices are ready to enter the software development community. I hope Lean will be embraced fully, including the hard parts that require great discipline. I crave a new view on software development and a long term vision. A few months ago at Agile 2008 I <a href="http://www.slideshare.net/machielg/agiles-future-wave-presentation">speculated</a> on a new hype that could surpass Agile, however I never expected it to come this quickly.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2009/01/05/the-rise-of-lean/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2009%2F01%2F05%2Fthe-rise-of-lean%2F&amp;title=The%20Rise%20of%20Lean" id="wpa2a_4"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2009/01/05/the-rise-of-lean/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Starting the Scrum community in The Netherlands</title>
		<link>http://blog.xebia.com/2008/10/04/starting-a-scrum-community/</link>
		<comments>http://blog.xebia.com/2008/10/04/starting-a-scrum-community/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 16:35:35 +0000</pubDate>
		<dc:creator>Machiel Groeneveld</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/blog.xebia.com/www/wp-content/plugins/autometa/autometa.php</b> on line <b>303</b><br />
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[nlscrum]]></category>
		<category><![CDATA[user group]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=762</guid>
		<description><![CDATA[In over two years of working with Scrum I&#8217;ve found it to be a great focus point for people who want to do projects better, faster and have more fun. The clients I&#8217;ve worked with, introducing Scrum, have all seen a surge in employee satisfaction, customer collaboration and focus on team effort. Xebia is entrenched [...]]]></description>
			<content:encoded><![CDATA[<p>In over two years of working with Scrum I&#8217;ve found it to be a great focus point for people who want to do projects better, faster and have more fun. The clients I&#8217;ve worked with, introducing Scrum, have all seen a surge in employee satisfaction, customer collaboration and focus on team effort. Xebia is entrenched in Scrum and we host certification, events and training. Together with some gurus like Jeff Sutherland and our colleagues we&#8217;ve trained hundreds of people in the Netherlands in using Scrum. After all this positive responses and experience, here at Xebia we thought there should be more ways of sharing Scrum experiences. So we think it&#8217;s time for a &#8220;Scrum User Group&#8221; in The Netherlands. </p>
<p>We&#8217;ve set up the Dutch Scrum group and named it <a href="http://nlscrum.org">nlscrum</a>. We have already hosted our first meetup last month and it was a great success! We hope our next event will even draw a bigger crowd and more inspiring ideas!<br />
<span id="more-762"></span><br />
The nlscrum community is now three months old and has over 50 members. Our first event was a few weeks ago, on the 3rd of September. About 25 nlscrum members attended our <a href="http://en.wikipedia.org/wiki/Open_Space_Technology">Open Space</a> meetup. The event got a great rating of <a href="http://scrum.meetup.com/9/calendar/8402896/">4,5</a> out of 5! Most of the people were Scrum Masters or people starting with Scrum. The Open Space format needed some getting used to as it was new to most people, but after a while it turned out great. There were lots of discussion, sharing of experiences and new insights generated. I was glad to hear people thought is was a great <a href="http://scrum.meetup.com/9/photos/">gathering</a>.   </p>
<p>Discussing Scrum I noticed a few things. Some people were talking about doing multiple projects with one team. Apparently most Scrum customers aren&#8217;t used to feeding their teams with a single task. Serge has done some great work with multiple team setups, so he could help out there. Another thing that came up is the unique way we at Xebia combine project management with Scrum. We should talk about that more often as it will help people get a more mature Scrum process faster. Listening to the attendees I noticed the Product Owner role is still a bit of a mystery. I expect that role will get some extra attention next year. </p>
<p>That&#8217;s why our next meetup on November 4th will have a Product Ownership theme! Check the <a href="http://nlscrum.org">nlscrum.org</a> website to apply and sign up for our next meeting. There are also pictures of the last meeting and a mailing list for burning Scrum questions. I&#8217;m curious what your experiences with Scrum are and I know we&#8217;ll be able to learn from sharing. </p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2008/10/04/starting-a-scrum-community/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2008%2F10%2F04%2Fstarting-a-scrum-community%2F&amp;title=Starting%20the%20Scrum%20community%20in%20The%20Netherlands" id="wpa2a_6"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2008/10/04/starting-a-scrum-community/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Agile 2008 &#8211; ideas and inspiration</title>
		<link>http://blog.xebia.com/2008/08/27/agile-2008-ideas-and-inspiration/</link>
		<comments>http://blog.xebia.com/2008/08/27/agile-2008-ideas-and-inspiration/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 08:58:34 +0000</pubDate>
		<dc:creator>Machiel Groeneveld</dc:creator>
				<category><![CDATA[Agile]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=694</guid>
		<description><![CDATA[Agile 2008 is an international conference in Toronto on Agile software development. It&#8217;s held from the 4th to the 8th of August. It&#8217;s gaining in popularity with 1600 participants from all over the world. Of course most attendants are from the US and Canada. I attended this conference and gave a presentation together with Olav [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.agile2008.org">Agile 2008</a> is an international conference in Toronto on Agile software development. It&#8217;s held from the 4th to the 8th of August. It&#8217;s gaining in popularity with 1600 participants from all over the world. Of course most attendants are from the US and Canada.</p>
<p>I attended this conference and gave a presentation together with Olav Maassen. I want to share some of the inspiring ideas and &#8216;vibes&#8217; that I picked up at the conference.</p>
<p><span id="more-694"></span></p>
<h3>On to something</h3>
<p>Being amongst Agile people for a whole week gave me a very rich and inspiring feel for what&#8217;s going on in the software industry. The Agile alliance really shines this year because the conference hosted many different people and ideas, some of which are promoting Agile while others are pointing out shortcomings of Agile and some sessions even had nothing to do with Agile but were still filled with great ideas. I think I&#8217;ve picked up a few inspirational ideas that I want to explore further.<br />
The thing that struck me most is the &#8216;vibe&#8217; of where software development will see big improvements in the next years. Coincidentally my <a href="http://www.slideshare.net/machielg/agiles-future-wave-presentation">own presentation</a> actually had similar points to the ones I picked up in other presentations. I was definitely on to something. </p>
<p>Apart from a few particular sessions that I&#8217;ll describe in later blogs, there are two main themes that I picked up at this conference that might not be obvious. One theme I like to call <strong>Agile+</strong> and the other is summarized best as <strong>Iteration-1</strong></p>
<h3>Agile+</h3>
<p>Agile+ for me is everything that I&#8217;ve heard at the conference that tries to improve Agile development beyond the current principles and practices. A few ideas were refinements of Agile practices while others extend to software development adding to the Agile foundation.</p>
<p>The principles of the <strong>theory of contraints</strong> will give an Agile team a new way of looking at their process and possible improvements. One shortcoming of Scrum and XP is that there are no limitations in for the team to increase their work-in-process. Using the Lean Kanban technique to push the cycle time down and revealing bottlenecks makes the self-organising aspect of Agile a much more disciplined and fruitful affair. One obvious practice that was mentioned is to always fix bugs immediately, don&#8217;t let the tester report a bug and then wait 2 days to fix it, but leave the feature in &#8216;testing&#8217; until all bugs are actually fixed keeping the WIP low. This fits into a larger theme of applying Lean and TOC to software development to extend Agile with more discipline and insights. The Kanban system is a very concrete implementation of this. David Anderson <a href="http://infoq.com/presentations/Agile-Directions-David-Anderson">gave</a> a convincing argument for <strong>Kanban</strong>. As an early adopter I would like to see some whitepapers and handles to introduce Kanban in Agile projects. The most striking differences to classic Agile is the abandonment of iterations and planning sessions. </p>
<h3>Iteration -1</h3>
<p>Scott Ambler made a somewhat cynical observation that a lot of talks on Agile2008 are about what we ought to be doing in Agile projects (such as automated acceptance testing, pair programming etc.) but that <strong>actual experience</strong> show that some practices are actually not very popular although they are immensely popular as a topic of discussion (such as automated acceptance testing). Agile+ will bring more research and real stories on what&#8217;s really going on in projects so we can discuss reality and not an idealized version of reality. Now that Agile is entering the mainstream we&#8217;ll need more facts and figures to increase adoption than the anecdotal and inspiring stories we&#8217;ve used in the past.</p>
<p>The Iteration-1 came up a few times, even at other conferences. Scott Ambler mentioned it explicitly, but David Thomas, Allen Cooper and Jeff Patton also have some notion of it. To it&#8217;s core is the &#8216;could-be-controversial&#8217; idea to <strong>not start developing software</strong> from the very first iteration. People like Scott are protesting the notion that your very first iteration of the project should start with coding (as XP and Scrum seem to promote). This might be a situation where Jeff Sutherland would say &#8220;I&#8217;m not sure on which Agile planet they are&#8230;&#8221; but I have experienced the pressure on Agile projects to fire up the IDE and start coding from the start. Now several people are proclaiming to take certain steps or phases before you start cranking out &#8216;potentially shippable products&#8217;. Now what you should do exactly varies from modelling to design, architecture, interaction design or building throw-away software.</p>
<p>Almost everyone agrees that you cannot build the right solution before you&#8217;ve seen the whole problem or scope of the project. This intrinsic problem might lead you to spend very little time on design or architecture because you don&#8217;t know what the best solution will be until you&#8217;re done. This is where Agile might overshoot in it&#8217;s focus on software and feedback. You can go around this smarter. You can use more than just &#8216;working software&#8217; to find out what your customer really needs. Allen Cooper even says that even live software won&#8217;t give you the right feedback because people tend to have a bad idea what the really need even when they see it. So more time needs to be spend on discovering what features your users really need. So <strong>Iteration-1</strong> starts before any coding starts. Scrum doesn&#8217;t describe what you do before the coding starts where except for &#8216;provide vision and backlog with features&#8217;. That gap needs to be filled.</p>
<p>I see one fundamental dilema with the Iteration-1, which is the Lean principles of minimising waste and work in progress. Design and architecture can be viewed as unvalidated artifacts that increase the cycle time of your features. On the other hand you can see a project as a discrete event that has a relative fixed set of problems to fix. Lean (and in some ways Scrum) seem to be geared more toward a continuous flow of features. This is great, but you&#8217;ll have to make sure that those features fit a coherent set, fit a coherent architecture and a coherent feature set. That&#8217;s where you&#8217;ll need a view of the whole system again. So if your starting a whole new project in a new context, you can&#8217;t start churning out features from the start, you&#8217;ll need some Iteration-1 (or -2, -3).</p>
<h3>Conscious Development</h3>
<p>I think a lot more attention will be spent on conscious preparation and applying requirements engineering, interaction design and architecting before the coding phase. This is of course a little like waterfall and a lot like the RUP iterations. The fact that people call it Iteration-1 shows they&#8217;re still a bit embarrassed trying to incorporate it with the Agile principles. Hopefully we&#8217;ll get over it and give it a proper name and give it a proper place in software development.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2008/08/27/agile-2008-ideas-and-inspiration/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2008%2F08%2F27%2Fagile-2008-ideas-and-inspiration%2F&amp;title=Agile%202008%20%26%238211%3B%20ideas%20and%20inspiration" id="wpa2a_8"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2008/08/27/agile-2008-ideas-and-inspiration/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Scrum: The Mythical Product Owner role</title>
		<link>http://blog.xebia.com/2008/05/22/scrum-the-mythical-product-owner-role/</link>
		<comments>http://blog.xebia.com/2008/05/22/scrum-the-mythical-product-owner-role/#comments</comments>
		<pubDate>Thu, 22 May 2008 17:59:29 +0000</pubDate>
		<dc:creator>Machiel Groeneveld</dc:creator>
				<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[business case]]></category>
		<category><![CDATA[product owner]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=574</guid>
		<description><![CDATA[The Product Owner role in Scrum In the Lean Software Development method Scrum there are three roles: the Team, the Scrum Master and the Product Owner. In my experience the Product Owner role is by far the most confusing and hardest role to ‘get right’ and provokes the most discussion. Even the mere definition of [...]]]></description>
			<content:encoded><![CDATA[<h3>The Product Owner role in Scrum</h3>
<p>In the Lean Software Development method Scrum there are three roles: the Team, the Scrum Master and the Product Owner. In my experience the Product Owner role is by far the most confusing and hardest role to ‘get right’ and provokes the most discussion. Even the mere definition of what this person should do is under debate amongst most Scrum practitioners I’ve talked to. I want to discuss the origins of the Product Owner role and my experience in how (not) to fill this role, especially in companies that don’t do product development. </p>
<h3>The mythical Product Owner</h3>
<p>I’ve seen many flavors of Product Owners and none of them really worked as they should have. Actually, rumor has it that good Product Owners actually don’t exist. Now that’s something we should be frank about if that’s true. If the Product Owner is a combination of responsibilities that doesn&#8217;t work in practice, we should find some alternative. First, I&#8217;ll explain my experience so far.</p>
<p> <span id="more-574"></span></p>
<h3>Definition of the role</h3>
<p>Scrum is based on best practices, no one ‘invented’ Scrum by merely theorizing about how the world should work. People like Jeff Sutherland and Ken Schwaber have done projects in the past that were successful and one of the major reasons for their success was the presence of one person who represented all customer interests to the team (later called the Product Owner). Ken Schwaber describes the product owner as ‘one person [that] is responsible for maintaining and sustaining the content and priority of a single Product Backlog’ Jeff Sutherland is more elaborate and lists all responsibilities of the product owner in his online book ‘The Scrum Papers’. Among others he adds the responsibility ‘[...] for the profitability of the product (ROI)’. The direct combination of the ROI and the features of the product are what Product Ownership is all about.</p>
<h3>Different flavors</h3>
<p>Keeping in mind what the product owner should be according to Scrum, I want to explain the different flavors of Product Owners I’ve come across. Their flavor was mostly defined by the person taking on Product Ownership and their ‘regular’ job.</p>
<p><b>PO the Product Manager</b><br />
In product development companies, such as famous Scrum companies like PatientKeeper  and Planon, there is usually a role called Product Manager. A Product Manager can be the Product Owner without any issues because they are almost synonymous. Scrum gives the Product Manager a specific way of controlling his product by use of the Product Backlog. The only real issue that I’ve seen is that product managers tend to push down on the teams to deliver, which is considered a bad practice and eventually decreased productivity. Product Manager ‘only’ have to learn empirical management to be good Product Owners.</p>
<p><b>PO the Project Manager</b><br />
In most projects I’ve worked in, the project manager does the planning of activities. If he gets the Product Owner role, he usually approaches the backlog from a planning perspective. That means he’ll decide what goes into what sprint based on external dependencies and availability of staff etc. Most project managers are actually not responsible for the profitability of the project or the budget. The PM makes the plan, but the Project Board approves the plan and budget. If the project goes over it’s deadline or budget the Project Board is accountable (if the PM gave ample warnings). The main problem is that work should not flow from managers but directly from stakeholders to developers because a manager is not the customer and usually lacks the business knowledge to make the right decisions. A project manager would actually have to be made accountable for the budget and profitability to be a good Product Owner.</p>
<p><b>PO the functional/information analyst</b><br />
For most teams this sounds like the ideal product owner. An information analyst usually has in depth knowledge on what the customer needs. The information analysts I’ve worked with were good at structuring information and conveying it to the developers. Although very good for the productivity, an information analyst is not the same thing as a Product Owner. The analyst usually has ‘feature perspective’: what should the product do. His main competence is getting the requirements and wishes from the (potential) users of the system. If left unmanaged he’ll try to please the customer by implementing everything the customer asks for.<br />
	Implementing all requirements sounds good, but few projects have enough resources to do that, that’s why you need to prioritize features. I haven’t seen information analysts do this very well because the budget was not their responsibility. The analyst might work very closely with the product owner to prepare coming Sprints but he doesn’t actually need the Product Owner for that if the Product Backlog is in good shape. In any case an information analyst is a very valuable team member, not a Product Owner.</p>
<p><b>PO the Release Manager</b><br />
A somewhat ambiguous term ‘release manager’, but it’s best explained as a coordinating planning and resource manager that plans work to be done and selects team members to do it. He also reports the status of work to stakeholders. In some ways the release manager role sounds a bit like the Product Owner role, they both feed work to the team. However, there were a few issues with this specific release manager as Product Owner. First of all, the release manager only planned work for one ‘type’ of developers (J2EE, C++ or .Net etc.)  which means that features had already been split up into work packages for each competence. This makes prioritization an impossible task because the link between the work packages and the actual features were missing. The distance between the business case and stakeholders and the release managers was simply to great to make any real decisions and it wasn’t allowed to drop features to meet the schedule. So these release managers were Product Owner for one reason, we were doing Scrum and we needed someone (anyone?) to fill that role because it was in the Scrum book.</p>
<p><b>PO the Unit Manager</b><br />
In one of my projects, a unit manager (manager of a business unit within an IT organization) took on the product owner role an in-house project. The main focus of a business unit manager is his people and because he knew Scrum he had no problem facilitating the team and giving them trust and responsibility. But that’s not the main responsibility of the Product Owner, that’s being accountable for the outcome of the project.<br />
	Getting the accountability right in an in-house project is perhaps even harder then when there’s a clear customer-vendor relationship. In this case team members were also stakeholders and the unit manager and stakeholders also wanted to help with development (are you still with me?). The main problem was accountability hadn’t been transfered explicitly to the Product Owner. The executive that controlled the budget had little control over the project and thus we fell into the age old project-trap where the people with the money ask “where is my money going?” The Unit Manager didn&#8217;t get to spend the money as he saw fit and didn&#8217;t take over responsibility for the success of the project, which left the Executive as the &#8216;hidden&#8217; Product Owner.</p>
<h3>The ‘right’ Product Owner</h3>
<p>Although I haven&#8217;t seen the role filled correctly, I do see the need the Product Owner role is intended to fulfill in Agile projects. The big word here is <i>Business Case</i>. The business case describes the benefits of the deliverables of the project, for instance: “If we implement software product x, we’ll save x amount of money per year”. Executives love Business Case driven development and that’s why the Product Owner should steer the project using the business case (perhaps we should call him &#8216;Business Case Owner&#8217;?). The reverse is also true, if your Product Owner isn’t accountable for realizing the Business Case, he’s not your real Product Owner. But if you can transfer accountability to the product owner, what kind of competences does the Product Owner need to posses to perform  Business Case driven steering?<br />
<b>Business Case Value</b><br />
He needs to know which features add most value to the business case. If time saving is the main goal of the product, measurable time-saving features are valued higher than (for instance) usability features or product maintenance features.<br />
<b>Financial</b><br />
He needs to know how much money a feature will cost and how much it will deliver. Having feature set X will increase our market share by Y. He needs to know how much to spend on each feature set and be able to drop or simplify features to match the budget.<br />
<b>Some domain knowledge</b><br />
The product owner needs some domain knowledge so he can decide on what the stakeholders are talking about. Combining high level knowledge of features coupled with owning the business case is the main benefit of the role.<br />
<b>Time</b><br />
One often discussed topic is the availability of the Product Owner. If you look at the responsibilities, he doesn’t have to be available full-time. If the product backlog is in good shape and priorities don’t change often the team can refine and implement the backlog items without the Product Owner. </p>
<h3>The impossible job?</h3>
<p>Now for the big problem: reality. Anyone can describe what a good Product Owner should be and do (I just did), but that doesn’t make it a reality. There is a fundamental problem with the Scrum Product Owner role outside of product development companies: good Product Owners are too rare. Most Scrum experts actually admit that a good Product Owner is a rare phenomenon.<br />
	One of the great selling arguments of Scrum is that it’s a lightweight process, some might even call it a process framework. That’s a good thing because that means you can start using Scrum quickly and then fine tune the actual process within the Scrum framework. However, the Product Owner role hinders this easy implementation of the framework. I can’t start up the customer-project feedback cycle immediately because in my experience the demands for the Product Owner role are too high. </p>
<h3>Conclusion</h3>
<p>I&#8217;ve explained when the Product Owner role didn&#8217;t work as it should have and also what a good Product Owner should be concerned with to maximize the project effectiveness by focussing on the business value of it&#8217;s features. I conclude that the role is hard to fill in the <i>right</i> way which makes Scrum hard to kick-start and makes the process feel either broken or too heavy.<br />
	Perhaps we need a special ‘non-product-development’ version of Scrum? Or redefine the Product Owner role to fit large organizations so that we can start the process immediately and then gradually move towards the ultimate vision of true collaboration between the business and development.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2008/05/22/scrum-the-mythical-product-owner-role/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2008%2F05%2F22%2Fscrum-the-mythical-product-owner-role%2F&amp;title=Scrum%3A%20The%20Mythical%20Product%20Owner%20role" id="wpa2a_10"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2008/05/22/scrum-the-mythical-product-owner-role/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>The joy of big up front design</title>
		<link>http://blog.xebia.com/2007/10/13/the-joy-of-big-up-front-design/</link>
		<comments>http://blog.xebia.com/2007/10/13/the-joy-of-big-up-front-design/#comments</comments>
		<pubDate>Sat, 13 Oct 2007 15:29:34 +0000</pubDate>
		<dc:creator>Machiel Groeneveld</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[General]]></category>

	<!-- AutoMeta Start -->
	<category>bufd</category>
	<category>pleased</category>
	<category>pleased</category>
	<category>imaginary</category>
	<category>thinking</category>
	<category>details</category>
	<category>coming</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/2007/10/13/the-joy-of-big-up-front-design/</guid>
		<description><![CDATA[Big up front design (BUFD) is a term that finds its origin in the standard waterfall model. It is often criticized and seen as something that should be avoided. I believe we should not be so easy to dismiss BUFD. I want to discuss the good things of BUFD, because I believe there are many. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Big_Design_Up_Front">Big up front design</a> (BUFD) is a term that finds its origin in the standard waterfall model. It is often criticized and seen as something that should be avoided. I believe we should not be so easy to dismiss BUFD. I want to discuss the good things of BUFD, because I believe there are many. For a minute, stop thinking about project effectiveness and all those agile principles and let&#8217;s zoom in on an imaginary group of people, team red, working on their Big Design. Perhaps you&#8217;ll agree BUFD has it&#8217;s merits if you look at it from a personal perspective.</p>
<p><span id="more-305"></span></p>
<p>Let&#8217;s imagine the project has just started, the business has come in with a request and they want their problem solved. The competition has launched a new product or is offering their services for a lower price, so things need to change. Let&#8217;s say their problem is &#8216;finding information on customers&#8217;. When the business wants information on a customer, it takes forever to find all information. They want an automated solution that can satisfy their information needs quickly and accurately. Sounds like a familiar problem? Let&#8217;s look at our team to see how they handle this. They&#8217;re having a meeting on &#8216;process and tools&#8217;, asking themselves &#8216;how can we tackle this?&#8217; They want to do a good job, letting the business know how the problem needs to be solved, coming up with answers and solutions. There is clearly a positive vibe in the team, you can feel the &#8216;we&#8217;re going to get it right this time&#8217; atmosphere. After a few weeks of solid discussion and studying of the business case they come up with a plan. The business is pleased, this looks like a real plan. What are they waiting for? Let&#8217;s do this thing! So after the business has given a &#8216;go&#8217; they start making plans for next year, &#8216;we&#8217;ll have this new search capabilities, how can we turn that into profit for our business?&#8217; The business starts to get exited as well, the goal of any IT project. </p>
<p>So next step, the design. It&#8217;s gonna be a big one, this is a complex problem which needs some complex solutions and good thinking. Thinking caps on and let&#8217;s make that design. All limits are off, out of the box thinking is what we need. Someone says: &#8216;What if we use this new technology? We&#8217;ll be able to roll out new solutions in no time, the business will be so pleased&#8217;. That&#8217;s what I call focus on business value! We&#8217;ve got some enthusiastic people on the team. The design is coming along nicely, after only a few weeks the outline is getting visible, without being limited by details the team can paint a perfect picture. Discussing all kinds of issues, thinking of possible problems (such as error handling) AND their solution (a error reporting tool or framework will do the trick) they work through all the details. It&#8217;s not easy, but after a few months they finish the design. A job well done! </p>
<p>Now it&#8217;s time to get some more support for the project, more people need to get involved. The business needs to be updated of our design as well, we want to include them in the process, we&#8217;ve got feedback along the way but now they can see the finished design. If we present it well they&#8217;ll come with good feedback and perhaps even new ideas. That will give the project a new boost&#8230; Luckily, the presentation goes as planned, the business is pleased. If it all works as designed they&#8217;ll be competing like crazy in a few months&#8230;</p>
<p>This is where the implementation cycle starts and my blog ends. I won&#8217;t go into further details, you might have experience with this kind of projects and fill in the rest yourself. But let&#8217;s think about what the team and the business went through. BUFD allows for good communication, working as a team, sharing experience, fixing problems, involving the business, thinking about business value etc. With the added benefit of setting high ambitions and creating an imaginary product and business process that makes everyone feel good. People like imagining things, thinking big, thinking of future issues and coming up with their solutions by discussing different options. Plus, the development phase is tough, so good preparation increases confidence throughout the company. BUFD gives you that confidence&#8230; </p>
<p>If people want to stop doing BUFD, where will they get our sense of security? Can they keep using their imagination and expertise to reach that state of perfection that they&#8217;re used to work towards? If we want to improve the way people do IT projects, we&#8217;ll have to understand their current motivation for doing it waterfall, only then can we make the first steps towards change.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2007/10/13/the-joy-of-big-up-front-design/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2007%2F10%2F13%2Fthe-joy-of-big-up-front-design%2F&amp;title=The%20joy%20of%20big%20up%20front%20design" id="wpa2a_12"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2007/10/13/the-joy-of-big-up-front-design/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Scrum questions</title>
		<link>http://blog.xebia.com/2007/09/05/scrum-questions/</link>
		<comments>http://blog.xebia.com/2007/09/05/scrum-questions/#comments</comments>
		<pubDate>Wed, 05 Sep 2007 09:16:55 +0000</pubDate>
		<dc:creator>Machiel Groeneveld</dc:creator>
				<category><![CDATA[Agile]]></category>

	<!-- AutoMeta Start -->
	<category>checklist</category>
	<category>checklists</category>
	<category>stakeholders</category>
	<category>answer</category>
	<category>scrum</category>
	<category>questions</category>
	<category>iteration</category>
	<category>cheat</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/2007/09/05/scrum-questions/</guid>
		<description><![CDATA[When doing any development process it&#8217;s always good to keep ourself aware of the things you intend to do. A cheat sheet or checklist is an easy way to keep your team on track and doing the right things. For me a checklist is not to be followed to the letter, it&#8217;s just a good [...]]]></description>
			<content:encoded><![CDATA[<p>When doing any development process it&#8217;s always good to keep ourself aware of the things you intend to do. A cheat sheet or checklist is an easy way to keep your team on track and doing the right things. For me a checklist is not to be followed to the letter, it&#8217;s just a good way to start thinking about your process. </p>
<p>There are some scrum checklists out there: <a href="http://www.agileadvice.com/archives/Scrum%20Rules%20Cheat%20Sheet.pdf">Scrum Rules Cheat Sheet</a>, <a href="http://www.infoq.com/minibooks/scrum-checklists">Scrum checklist</a>. I would like to add another list. My list is not so much about the practices of scrum, but focusses more on the goals of scrum (such as communication, trust, teamwork). The list contains questions you can ask the team. Try to answer all questions within short time (say half an hour) by looking at the work space and talking to the team. If you need more time or cannot answer all questions, you might have some things to discuss during the next retrospective. I hope it will get you and your team thinking about areas of improvement.<br />
<span id="more-280"></span><br />
<strong>Scrum Questions</strong></p>
<p>Try to answer the following questions by looking at the whiteboards:<br />
- When will the iteration be finished, how&#8217;s it going?<br />
- If it&#8217;s not finished in time, what are the impediments blocking the team?<br />
- When will the next milestone/release be finished?</p>
<p>Try to answer the following question by looking at the product backlog?<br />
- What would be the next item to pick if the current iteration is done?<br />
- Where are the features/tasks that don&#8217;t have a priority (yet)?<br />
- Which stakeholders would understand the items on the backlog, which wouldn&#8217;t?</p>
<p>Try to answer the following question by looking at the team at work?<br />
- Is the energy level high?<br />
- Which people belong to the same team?</p>
<p>Try to have the following questions answered by talking to the team.<br />
- Who are the stakeholders for the project?<br />
- When was the last communication with a big group or all of the stakeholders on the project status, less than a month?<br />
- When was the last time stakeholders gave feedback on work that was delivered, less than a month?</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2007/09/05/scrum-questions/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2007%2F09%2F05%2Fscrum-questions%2F&amp;title=Scrum%20questions" id="wpa2a_14"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2007/09/05/scrum-questions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Doing Scrum and Agile is hard for developers too</title>
		<link>http://blog.xebia.com/2007/07/11/doing-scrum-and-agile-is-hard-for-developers-too/</link>
		<comments>http://blog.xebia.com/2007/07/11/doing-scrum-and-agile-is-hard-for-developers-too/#comments</comments>
		<pubDate>Wed, 11 Jul 2007 15:47:38 +0000</pubDate>
		<dc:creator>Machiel Groeneveld</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Java]]></category>

	<!-- AutoMeta Start -->
	<category>owner</category>
	<category>scrum</category>
	<category>frustration</category>
	<category>freedom</category>
	<category>decisions</category>
	<category>organisation</category>
	<category>complaining</category>
	<category>master</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/2007/07/11/doing-scrum-and-agile-is-hard-for-developers-too/</guid>
		<description><![CDATA[I&#8217;m introducing the Scrum process in the development department of a large organisation. I anticipated the problems we&#8217;re currently facing with the rest of the organisation. Specifications are vague and several months old, people we need for information and feedback are hard to find. So in short, the usual impediments. When observing development teams you&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m introducing the Scrum process in the development department of a large organisation. I anticipated the problems we&#8217;re currently facing with the rest of the organisation. Specifications are vague and several months old, people we need for information and feedback are hard to find. So in short, the usual impediments. When observing development teams you&#8217;ll usually hear people complaining about these things. But the thing that is not often discussed is that developers that are new to Scrum have some things to overcome as well.</p>
<p><span id="more-263"></span></p>
<p><strong>Scrum practices</strong><br />
There are a few things Scrum enforces that aren&#8217;t always embraced by the development team. The time that Scrum takes for meetings such as the stand-up and sprint review are considered overhead. It’s hard to motivate people to stop and think about their process or communicate about their issues when they’re thinking ‘how to get out of this meeting’. It’s also quite hard for people not to think about all the stuff that has always gone wrong but only the trouble you’ve had in the previous sprint. Complaining about problems that are out of your scope and influence is not productive, but focussing on just a few weeks takes more effort than I expected.</p>
<p><strong>Take action</strong><br />
In Scrum decisions are made quickly while actively seeking feedback on the result. This can also be a disruption in the way people are used to work. Decisions are usually made very carefully, with lots of discussion on the pros and cons. In Scrum we assume that decisions should be made quickly to keep the project going and in most cases the end result is acceptable. Stopping developers doing research on different options and creating proof of concepts feels like imposing a restriction on how they want to work. I think Scrum allows for a lot of freedom, but not the freedom to waste time dwelling on options.</p>
<p><strong>Product owner decides</strong><br />
The hardest one for me is the decision on technical issues. The product owner decides on the priorities, even on taks that the developers come up with. The team has the responsibility to do the work in the way they seem fit, keeping up quality standards but other stuff such as ‘we should automate all testing’ is something the product owner can give lower priority to. ‘Creating a test script for feature X’ might be less ambitious and get a higher priority or can even be seen as a necessary step to complete a feature. This haggle between the product owner and the team is a new phenomenon, which could end in frustration because developers aren’t given to the time to make things ‘perfect’. Everything should be driven by business goals and sometimes that leaves no room for optimization or tweaking.</p>
<p><strong>Listen to the team</strong><br />
So what can the scrum master do? First of all, listen to the team. Most of the time the frustration and complaints have a serious cause. Challenge the team to come up with things they do to deal with those causes. But some things in Scrum will just take getting used to, some things might never feel right for developers. I think that, when Scrum has been introduced, working together as a team and getting the satisfaction from getting things done and pleasing your stakeholders is more than enough reward to keep the team motivated.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2007/07/11/doing-scrum-and-agile-is-hard-for-developers-too/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2007%2F07%2F11%2Fdoing-scrum-and-agile-is-hard-for-developers-too%2F&amp;title=Doing%20Scrum%20and%20Agile%20is%20hard%20for%20developers%20too" id="wpa2a_16"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2007/07/11/doing-scrum-and-agile-is-hard-for-developers-too/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Acceptance Testing, the Agile way</title>
		<link>http://blog.xebia.com/2007/01/10/acceptance-testing-the-agile-way/</link>
		<comments>http://blog.xebia.com/2007/01/10/acceptance-testing-the-agile-way/#comments</comments>
		<pubDate>Wed, 10 Jan 2007 13:08:38 +0000</pubDate>
		<dc:creator>Machiel Groeneveld</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Testing]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/2007/01/10/acceptance-testing-the-agile-way/</guid>
		<description><![CDATA[There is one thing in software development that any developer should remember at all times: test, retest and test again. Any true Agile project revolves around testing. Test your code, screens, databases and test whether your user stories actually work. Nothing is left to chance and testing is done before everything else and after your [...]]]></description>
			<content:encoded><![CDATA[<p>There is one thing in software development that any developer should remember at all times: test, retest and test again. Any true Agile project revolves around testing. Test your code, screens, databases and test whether your user stories actually work. Nothing is left to chance and testing is done before everything else and after your done and your code will undergo regression testing when you&#8217;re long gone. Pretty obvious, you might say, but some parts of testing are more obvious than others. Unit tests are pretty much covered, there are dozens of tools and frameworks for that, the same goes for screen testing. But one thing that still feels like new ground is <a href="http://en.wikipedia.org/wiki/Functional_testing">functional testing</a> (or acceptance testing).</p>
<p>In Agile projects there are a two constraints that apply to the &#8216;traditional&#8217; way acceptance tests are performed: <strong>test first</strong> and <strong>agile (flexible) test cases</strong>. When working with dedicated testers, the developers need to work together with them as a single team. Using the &#8216;test-first&#8217; approach, you need the input from the tester before you can start coding, otherwise you won&#8217;t know when your work does what it needs to. One other problem that both developers and testers face is responding to changes. When the customer wants a new feature, you can&#8217;t reply: &#8220;It was never build to do that!&#8221;. We&#8217;re agile, so we&#8217;ll refactor the code if needed. Changes also apply to tests, requirements change and the software changes (database changes, user interface changes, etc.). So the tester needs to be able to deal with those changes.</p>
<p>There are a few things we can tackle. The magic word here is <a href="http://fitnesse.org/">&#8216;Fitnesse&#8217;</a>. Fitnesse allows you to combine test case specification and execution on one page. This allows for very smart test cases, you could have something as simple as:</p>
<p>My test data:</p>
<table>
<tr>
<th>id</th>
<th>name</th>
</tr>
<tr>
<td>1</td>
<td>Tom</td>
</tr>
<tr>
<td>2</td>
<td>Dick</td>
</tr>
<tr>
<td>3</td>
<td>Harry</td>
</tr>
</table>
<p>The test:</p>
<table>
<tr>
<td>Find user by name</td>
<td><b>Harry</b></td>
</tr>
</table>
<p><span id="more-145"></span></p>
<p>You can actually &#8216;run&#8217; this table and using some glue code (called Fixtures) you can actually test your application for searching people. This kind of test case format doesn&#8217;t require any knowledge of the inner workings of the application. Whether it&#8217;s a swing or web application, uses a database or a mainframe to store information. The fixture will make sure the test will work. That makes it more readable and agile because I can refactor my application and change the way we store data (let&#8217;s stop using that mainframe) and as long as the fixture is refactored too, the test is still executable.</p>
<p>That&#8217;s how we like to test, leaving the implementation details out of the test and define them on a <em>functional</em> level. We implement our fixtures using <a href="http://www.openqa.org/selenium/">selenium</a> so we can run the test directly in a web browser (such as firefox).</p>
<p>Although we have been working using this approach for quite some time now, there are still a few problems we haven&#8217;t quite solved yet. User acceptance testing is about proving that the application works exactly as it should. The tester needs to prove that no (serious) bugs exist, by testing complete scenarios (for example test the whole process of ordering a product, from registration to payment) but also test corner cases. But there is a problem with all these test cases, you need to change them when the application changes. After about a year of development, you&#8217;ll acquire hundreds of test cases. Suppose the registration process changes, and you used registration in dozens of cases, how do you change all of them? </p>
<p>One way to minimize impact of changes is to create the idea of unit testing in acceptance testing. Unit testing means you test one unit at a time, when unrelated units change, your test won&#8217;t break (because it wasn&#8217;t testing those). The same could apply to User Interface tests, you could test the registration part in many different ways, but when testing other parts of the system you should just be able to assume there is a user that can log in (again something the fixture can solve). This user could be specified as a default application user (a &#8216;John Doe&#8217;). Now you don&#8217;t have to go through the whole registration process, just to be able to log in to the application. Our test cases (for our web shop application) can now be written like this: &#8220;<em>John searches for &#8216;ipod&#8217; and finds these items&#8230;</em>&#8221; You could call this a Domain Specific Language specific for testing user stories. You can have very powerful tests this way.</p>
<p>Although Fitnesse is a good tool for Agile testing, doing Acceptance Testing is always demanding and maybe more so when doing it Agile. Most customers use professional testers, but they are usually not used to Agile development. Often they rely on lots of excel sheets, lots of specifications and sometimes even loads of SQL scripts for their input-output tests. A lot of knowledge about the application is spread and duplicated across all those files. Helping them automate their tests in a more expressive and condensed way will keep the tests easy to change and readable by everyone. However, actually finding the most efficient way to give the testers the insight and control they need whilst staying Agile remains a challenge.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2007/01/10/acceptance-testing-the-agile-way/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2007%2F01%2F10%2Facceptance-testing-the-agile-way%2F&amp;title=Acceptance%20Testing%2C%20the%20Agile%20way" id="wpa2a_18"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2007/01/10/acceptance-testing-the-agile-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  blog.xebia.com/author/mgroeneveld/feed/ ) in 0.81251 seconds, on Feb 9th, 2012 at 5:22 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 9th, 2012 at 6:22 pm UTC -->
