<?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>Mike Cohn&#039;s Blog - Succeeding With Agile® &#187; Sprinting</title>
	<atom:link href="http://blog.mountaingoatsoftware.com/category/sprinting/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.mountaingoatsoftware.com</link>
	<description>Succeeding With Agile®</description>
	<lastBuildDate>Mon, 06 Feb 2012 18:11:05 +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>Deciding What Kind of Projects are Most Suited for Agile</title>
		<link>http://blog.mountaingoatsoftware.com/deciding-what-kind-of-projects-are-most-suited-for-agile</link>
		<comments>http://blog.mountaingoatsoftware.com/deciding-what-kind-of-projects-are-most-suited-for-agile#comments</comments>
		<pubDate>Sun, 16 Jan 2011 03:04:27 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Sprinting]]></category>
		<category><![CDATA[Transitioning to Agile]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[appropriateness]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=956</guid>
		<description><![CDATA[I was recently asked what kind of project is most suited for an agile approach and I’d like to address that here. In my view, the most appropriate projects for agile are ones with aggressive deadlines, a high degree of complexity, and a high degree of novelty (uniqueness) to them. We want to use agile [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently asked what kind of project is most suited for an agile approach and I’d like to address that here. In my view, the most appropriate projects for agile are ones with aggressive deadlines, a high degree of complexity, and a high degree of novelty (uniqueness) to them.</p>
<p>We want to use agile when we are doing something that is new, or at least new to the team building it. If it&#8217;s something the team has done before over and over then the team probably doesn&#8217;t need an agile approach. To my mind, this is where some of the manufacturing analogies come in. If we are building the same car day after day, we learn pretty quickly all the nuances of building that car. We don&#8217;t need an agile approach because the novelty of the situation is low. </p>
<p>Novelty alone does not mean we should use an agile process. I went to my favorite Chinese restaurant for lunch today. I ordered an entree &#8220;triple extra spicy and with jalapenos.&#8221; It was probably the first time they cooked this particular dish that way and so it was a novel or unique order. The cook prepared it wonderfully though and because I could see into the kitchen I&#8217;m sure they didn&#8217;t need a daily standup or even TDD to make my lunch. (I might have noticed a kanban back there, however. <img src='http://blog.mountaingoatsoftware.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   So, in addition to novelty, the project needs a certain amount of complexity. </p>
<p>One final element I believe is required in making a project appropriate for agile is urgency. The timeboxes and iterations of an agile approach are devised to keep the intensity and focus going on a project. If there&#8217;s no urgency to the project, those are unneeded.</p>
<p>So let&#8217;s see how these three factors&#8211;urgency, complexity, and novelty&#8211;mix on various projects, starting of course with software projects. There couldn&#8217;t be a better fit. Software projects are notoriously complex. Each software project is largely a new endeavor. And in today&#8217;s world, there is almost always a sense of urgency. </p>
<p>But let&#8217;s look at one other situation where we commonly here about Scrum (in particular) being applied: getting married. At least a couple of times a year I hear about a couple who planned their wedding using Scrum. There is always a wedding backlog&#8211;buy cake, pick photographer, send invitations, pick dress, etc. How does planning a wedding do against the three factors I&#8217;m proposing. Sense of urgency? Check. There&#8217;s always a deadline and it&#8217;s usually pretty fixed. Complexity? Well, it&#8217;s not like a software project but it does have its own complexities often enhanced by non-functional requirements such as a fixed budget, who sits next to whom, the type of food to be served, the need to let Cousin Ira&#8217;s band perform at the reception, etc. Novelty? Yep. Most people don&#8217;t get married enough times with large celebrations that planning the event becomes second hand. </p>
<p>So, agile is most appropriate on any urgent project with significant complexity and novelty&#8211;and that includes software development and weddings. It does raise the question though of whether a couple&#8217;s first kiss at the end of the ceremony is a product backlog item or part of the done criteria for the overall product.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/deciding-what-kind-of-projects-are-most-suited-for-agile/feed</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Rapid Feedback and the America&#8217;s Cup</title>
		<link>http://blog.mountaingoatsoftware.com/rapid-feedback-and-the-americas-cup</link>
		<comments>http://blog.mountaingoatsoftware.com/rapid-feedback-and-the-americas-cup#comments</comments>
		<pubDate>Sun, 08 Aug 2010 01:45:46 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Sprinting]]></category>
		<category><![CDATA[customers]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[sprints]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=840</guid>
		<description><![CDATA[It&#8217;s summer and I&#8217;ve been thinking about sailing. I didn&#8217;t get to do any this summer, but I can still think about it. Thinking about sailing reminded me of the 1995 America&#8217;s Cup race between the US and New Zealand. That race is a great illustration of the importance of both getting close to our [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s summer and I&#8217;ve been thinking about sailing. I didn&#8217;t get to do any this summer, but I can still think about it. Thinking about sailing reminded me of the 1995 America&#8217;s Cup race between the US and New Zealand. That race is a great illustration of the importance of both getting close to our customers and of rapid feedback. </p>
<p>To design their boat, Team New Zealand made use of software that would allow them to simulate the impact of various design changes on the speed of the boat. They evaluated thousands of design decisions. Each day the simulations were run on a small network that was located a few feet from the dock. To further evaluate designs, Team New Zealand made two boats and each day would alter one with a design change to be evaluated. The two boats then raced each other to assess the impact of the design change.</p>
<p>By contrast, the U.S. boat had been designed and tested using massive supercomputers. But they were located hundreds of miles from the dock. This created significant feedback delays. Feedback was also slowed because the team had only a single boat on which to test changes. </p>
<p>Getting close to their customer and using rapid feedback cycles led to Team New Zealand winning the America&#8217;s Cup for the first time. If you are not cycling ideas past your customers quickly enough to get rapid feedback, consider moving closer to the dock.</p>
<p><a href="http://blog.mountaingoatsoftware.com/wp-content/uploads/sailing.jpg"><img src="http://blog.mountaingoatsoftware.com/wp-content/uploads/sailing.jpg" alt="" title="sailing" width="425" height="282" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/rapid-feedback-and-the-americas-cup/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Remove Finish-to-Start Activities on Agile Projects</title>
		<link>http://blog.mountaingoatsoftware.com/remove-finish-to-start-activities-on-agile-projects</link>
		<comments>http://blog.mountaingoatsoftware.com/remove-finish-to-start-activities-on-agile-projects#comments</comments>
		<pubDate>Tue, 05 Jan 2010 15:56:40 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Sprinting]]></category>
		<category><![CDATA[teamwork]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=541</guid>
		<description><![CDATA[Think holistically but work iteratively toward solutions. All sprint activities can and should overlap. ]]></description>
			<content:encoded><![CDATA[<p>One element of <a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">agile project management</a> that is difficult for teams to master is how to overlap their work. If a team doesn’t learn effective ways to do this, team members may settle on a less desirable approach: activity-specific sprints. An activity-specific sprint is as bad a practice as it would be an acronym. In this approach, the team decides to use one sprint for analysis and design, a second sprint for coding, and a third for testing. The team is split in thirds, with the analysts working one sprint ahead of the programmers and the testers working one sprint behind them.</p>
<p>This can be a very alluring approach. Not only does it seemingly solve the problem of how to overlap work but it also allows each type of specialist to work mostly with others of their own kind, which many may prefer until they become used to the close collaboration of a Scrum team. Unfortunately, the same disadvantages apply to activity-specific sprints as apply to activity-specific teams: too many hand-offs and a lack of whole-team responsibility.</p>
<p>One of the biggest problems with activity-specific sprints is that they create what are known as finish-to-start relationships. In a finish-to-start relationship, one task must finish before the next can start. For example, a Gantt chart on a sequential project may show that analysis must finish before coding can start and that coding must finish before testing can start. Good Scrum teams learn that this is not true; many activities can be overlapped. What is important is not when tasks start but when they finish. Coding cannot finish until analysis finishes and testing cannot finish until coding finishes. These are known as finish-to-finish relationships and are reinforced by Scrum’s sprint mechanism. All work is done at the end of the sprint, or it is returned to the product backlog.</p>
<p>With a little experience, most teams are able to see how to overlap some types of work and create finish-to-finish relationships between them. Teams easily find ways to overlap discussions of what users need and programming. They also soon find ways to overlap programming and testing. These activities lend themselves to iterative and incremental approaches: Get a few details from the users about what they need and then build a little of it; build a little and then test what you’ve built. Other activities, though, do not appear at first to be as amenable to an iterative, incremental approach. User experience design, database design, and architecture are often cited as work that needs to be done up front because the work must be viewed holistically. I argue that we should think holistically but work iteratively toward solutions. All sprint activities can and should overlap. </p>
<p>For specific guidance on how to overlap work in a sprint, see Chapter 14, &#8220;Sprints,&#8221; in <em><a href="http://www.mountaingoatsoftware.com/books/7--succeeding-with-agile">Succeeding with Agile</a>.</em></p>
<p><a rel="license" href="http://creativecommons.org/licenses/by-nd/3.0/us/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nd/3.0/us/88x31.png" /></a><br /><span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type">Remove Finish-to-Start Activities on Agile Projects</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.mountaingoatsoftware.com" property="cc:attributionName" rel="cc:attributionURL">Mike Cohn</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nd/3.0/us/">Creative Commons Attribution-No Derivative Works 3.0 United States License</a>.<br />Based on a work at <a href="http://blog.mountaingoatsoftware.com/remove-finish-to-start-activities-on-agile-projects">Remove Finish-to-Start Activities on Agile Projects</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/remove-finish-to-start-activities-on-agile-projects/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>The Forgotten Layer of the Test Automation Pyramid</title>
		<link>http://blog.mountaingoatsoftware.com/the-forgotten-layer-of-the-test-automation-pyramid</link>
		<comments>http://blog.mountaingoatsoftware.com/the-forgotten-layer-of-the-test-automation-pyramid#comments</comments>
		<pubDate>Thu, 17 Dec 2009 15:53:46 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Sprinting]]></category>
		<category><![CDATA[Transitioning to Agile]]></category>
		<category><![CDATA[agile testing]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=555</guid>
		<description><![CDATA[An effective test automation strategy calls for automating tests at three different levels.]]></description>
			<content:encoded><![CDATA[<p>Even before the ascendancy of agile methodologies like Scrum, we knew we should automate our tests. But we didn’t. Automated tests were considered expensive to write and were often written months, or in some cases years, after a feature had been programmed. One reason teams found it difficult to write tests sooner was because they were automating at the wrong level. An effective test automation strategy calls for automating tests at three different levels, as shown in the figure below, which depicts the test automation pyramid.</p>
<p><img src="http://blog.mountaingoatsoftware.com/wp-content/uploads/Testpyramid.jpg" alt="Test Automation Pyramid" class="size-full wp-image-262" /></p>
<p>At the base of the test automation pyramid is unit testing. Unit testing should be the foundation of a solid test automation strategy and as such represents the largest part of the pyramid. Automated unit tests are wonderful because they give specific data to a programmer—there is a bug and it’s on line 47. Programmers have learned that the bug may really be on line 51 or 42, but it’s much nicer to have an automated unit test narrow it down than it is to have a tester say, “There’s a bug in how you’re retrieving member records from the database,” which might represent 1,000 or more lines of code. Also, because unit tests are usually written in the same language as the system, programmers are often most comfortable writing them.</p>
<p>Let’s skip for a moment the middle of the test automation pyramid and jump right to the top: the user interface level. Automated user interface testing is placed at the top of the test automation pyramid because we want to do as little of it as possible. </p>
<p>Suppose we wish to test a very simple calculator that allows a user to enter two integers, click either a multiply or divide button, and then see the result of that operation. To test this through the user interface, we would script a series of tests to drive the user interface, type the appropriate values into the fields, press the multiply or divide button, and then compare expected and actual values. Testing in this manner would certainly work but would be brittle, expensive, and time consuming.  </p>
<p>Additionally, testing an application this way is partially redundant—think about how many times a suite of tests like this will test the user interface. Each test case will invoke the code that connects the multiply or divide button to the code in the guts of the application that does the math. Each test case will also test the code that displays results. And so on. Testing through the user interface like this is expensive and should be minimized. Although there are many test cases that need to be invoked, not all need to be run through the user interface. </p>
<p>And this is where the service layer of the test automation pyramid comes in. Although I refer to the middle layer of the test automation pyramid as the service layer, I am not restricting us to using only a service-oriented architecture. All applications are made up of various services. In the way I’m using it, a service is something the application does in response to some input or set of inputs. Our example calculator involves two services: multiply and divide.</p>
<p>Service-level testing is about testing the services of an application separately from its user interface. So instead of running a dozen or so multiplication test cases through the calculator’s user interface, we instead perform those tests at the service level.</p>
<p>Where many organizations have gone wrong in their test automation efforts over the years has been in ignoring this whole middle layer of service testing. Although automated unit testing is wonderful, it can cover only so much of an application’s testing needs. Without service-level testing to fill the gap between unit and user interface testing, all other testing ends up being performed through the user interface, resulting in tests that are expensive to run, expensive to write, and brittle.</p>
<p>For more on Scrum and agile testing, pick up a copy of <em><a href="http://www.mountaingoatsoftware.com/books/7--succeeding-with-agile">Succeeding with Agile</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/the-forgotten-layer-of-the-test-automation-pyramid/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>The Benefits of Feature Teams</title>
		<link>http://blog.mountaingoatsoftware.com/the-benefits-of-feature-teams</link>
		<comments>http://blog.mountaingoatsoftware.com/the-benefits-of-feature-teams#comments</comments>
		<pubDate>Mon, 07 Dec 2009 15:43:06 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Scrum/Agile Roles]]></category>
		<category><![CDATA[Sprinting]]></category>
		<category><![CDATA[agile teams]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=454</guid>
		<description><![CDATA[Rather than organizing around components, each team on a multiteam project can ideally be responsible for end-to-end delivery of working (tested) features. There are many advantages to favoring feature teams over component teams.]]></description>
			<content:encoded><![CDATA[<p>Moving away from component teams is a difficult but necessary step for those who want to adopt an <a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">agile project management</a> approach. For example, when I first began to consult for a certain California-based game studio, its teams were organized around the specific elements and objects that would exist in the video game it was developing. There was a separate team for each character. There were weapons teams, a vehicle team, and so on. This led to problems, such as weapons too weak to kill the monsters, colors too dark to show secret passages, and obstacles that frustrated even the most patient player. The studio clearly needed to change its team structure.</p>
<p>On more traditional, corporate projects, we see equivalent problems when teams organize around the layers of an application, including</p>
<ul>
<li>Reduced communication across the layers</li>
<li>A feeling that design by contract is sufficient</li>
<li>Ending sprints without a potentially shippable product increment</li>
</ul>
<p>If structuring teams around the layers of an architecture is the wrong approach, what’s better? Rather than organizing around components, each team on a project can ideally be responsible for end-to-end delivery of working (tested) features. There are many advantages to organizing multiteam projects into feature teams:</p>
<ul>
<li><strong>Feature teams are better able to evaluate the impact of design decisions</strong>. At the end of a sprint, a feature team will have built end-to-end functionality, traversing all levels of the technology stack of the application. This maximizes members’ learning about the product design decisions they made (Do users like the functionality as developed?) and about technical design decisions (How well did this implementation approach work for us?)</li>
<li><strong>Feature teams reduce waste created by hand-offs. </strong>Handing work from one group or individual to another is wasteful. In the case of a component team, there is the risk that too much or too little functionality will have been developed, that the wrong functionality has been developed, that some of the functionality is no longer needed, and so on.</li>
<li><strong>It ensures that the right people are talking.</strong> Because a feature team includes all skills needed to go from idea to running, tested feature, it ensures that the individuals with those skills communicate at least daily.</li>
<li><strong>Component teams create risk to the schedule.</strong> The work of a component team is valuable only after it has been integrated into the product by a feature team. The effort to integrate the component team’s work must be estimated by the feature team, whether it will occur in the same sprint during which it is developed (as is best) or in a later sprint. Estimating this type of effort is difficult because it requires the feature team to estimate the integration work without knowing the quality of the component.</li>
<li><strong>It keeps the focus on delivering features.</strong> It can be tempting for a team to fall back into its pre-Scrum habits. Organizing teams around the delivery of features, rather than around architectural elements or technologies, serves as a constant reminder of Scrum’s focus on delivering features in each sprint.</li>
</ul>
<p>Of course, there will be occasions when creating a component team is still appropriate, for example when a new capability will be used by multiple teams or when the risk of multiple solutions being developed for the same problem is high. Overall, however, the vast majority of teams on a large project should be feature teams. </p>
<p>Additional advice on feature and component teams can be found in Chapter 10, &ldquo;Team Structure,&rdquo; of <em><a href="http://www.mountaingoatsoftware.com/books/7--succeeding-with-agile">Succeeding with Agile</a></em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/the-benefits-of-feature-teams/feed</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Agile Design: Intentional Yet Emergent</title>
		<link>http://blog.mountaingoatsoftware.com/agile-design-intentional-yet-emergent</link>
		<comments>http://blog.mountaingoatsoftware.com/agile-design-intentional-yet-emergent#comments</comments>
		<pubDate>Fri, 04 Dec 2009 15:43:40 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Agile Planning]]></category>
		<category><![CDATA[Sprinting]]></category>
		<category><![CDATA[agile product management]]></category>
		<category><![CDATA[product backlog]]></category>
		<category><![CDATA[product owner]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=436</guid>
		<description><![CDATA[On a Scrum project, design is both intentional and emergent. The design emerges because there is no up-front design phase (even though there are design activities during all sprints). Design is intentional because product backlog items are deliberately chosen with an eye toward pushing the design in different directions at different times. ]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">Agile project management</a> approaches favor an incremental, just-in-time approach to design. As such, Scrum projects do not have an upfront analysis or design phase; all work occurs within the repeated cycle of sprints. This does not mean, however, that design on a Scrum project is not intentional. An intentional design process is one in which the design is guided through deliberate, conscious decision making. The difference on a Scrum project is not that intentional design is thrown out, but that it is done (like everything else on a Scrum project) incrementally. Scrum teams acknowledge that as nice as it might be to make all design decisions up front, doing so is impossible. </p>
<p>This means that on a Scrum project, design is both intentional and emergent. The design emerges because there is no up-front design phase (even though there are design activities during all sprints). Design is intentional because product backlog items are deliberately chosen with an eye toward pushing the design in different directions at different times. </p>
<p>As an example of how the product backlog items can be sequenced to influence the architecture of the system, consider a workflow system I worked on. The system supported a fund-raising company that produced specialized T-shirts and similar products. School-age children would go door to door selling these items. The sales revenue would be split between the company and the organization the kids represented, such as a school, sports team, or other group. For each sale, the kid would complete a form and send it to the company, where it was scanned, sent through an optical character recognition (OCR) process, and converted into an order. To keep shipping costs down, orders from the same organization were batched together and sent back to the organization, after which the kids would hand-deliver the items. </p>
<p>Our software handled the entire process—from when the paper was received by the company until the shipment went out the door. Kids have notoriously bad writing and are bad spellers, so our system had to do more than just scan forms and prepare packing lists. There were various levels of validation depending upon how accurately we thought each order form had been read. Some forms were routed to human data-entry clerks who were presented the scanned form on one side of the screen, the system’s interpretation on the right, and an additional space to make corrections.</p>
<p>Because thousands of shirts were processed on the busiest days, this process needed to be as automated as possible. I worked with the product owner, Steve, to write the product backlog. After that I met with the development team to discuss which areas of the system were the highest risk or we were the most uncertain about how to develop. We decided that our first sprint would focus on getting a high-quality document to run through the system from end to end. It would be scanned, go through OCR, and generate a packing list. We would bypass optional steps such as deskewing crooked pages, despeckling pages, and so on but would prove that the workflow could be completed from start to finish. This wasn’t highly valuable but it was something that needed to be done, and it let the developers test out the general architecture. After we accomplished this, we had a basic database in place and could move documents from state to state, triggering the correct workflow steps.</p>
<p>Next the developers asked the product owner if they could work on the part of the system that would display a scanned document to a human who would be able to override the scanned and interpreted values. This was chosen as the second architectural goal of the project for three reasons:</p>
<ul>
<li>It was a manual step, making it different from the workflow steps handled already.</li>
<li>Getting the user interface right was critical. With the volume of documents flowing through this system, saving seconds was important. We wanted to get early feedback from users to allow time to iterate on usability.</li>
<li>After this feature was added, users could start processing shirt orders.</li>
</ul>
<p>The project continued in this way for a few months and was ultimately tremendously successful, meeting all of the prerelease targets for reliability and throughput. A key to the success was that the product owner and technical personnel worked together to sequence the work. The closest the team got to a design phase was the first afternoon in the conference room when we identified risky areas and dark corners and decided which one we wanted to tackle first. From there the design emerged sprint by sprint, yet was intentionally guided by which product backlog items were selected to illuminate the dark corners and risks of the project.</p>
<p><em><a href="http://www.mountaingoatsoftware.com/books/7--succeeding-with-agile">Succeeding with Agile</a></em> goes into much more detail on agile design, including how the roles of architect and user experience designer change with Scrum, the concept of emergent design, and how teams work together and with the product owner to deliver increments of functionality that guide the design of the final product.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/agile-design-intentional-yet-emergent/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Bugs on the Product Backlog</title>
		<link>http://blog.mountaingoatsoftware.com/bugs-on-the-product-backlog</link>
		<comments>http://blog.mountaingoatsoftware.com/bugs-on-the-product-backlog#comments</comments>
		<pubDate>Tue, 07 Jul 2009 03:17:28 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Sprint Artifacts]]></category>
		<category><![CDATA[Sprinting]]></category>
		<category><![CDATA[defect management]]></category>
		<category><![CDATA[product backlog]]></category>
		<category><![CDATA[user stories]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=208</guid>
		<description><![CDATA[Ideally bugs belong on the product backlog just like any feature request. But, that would often necessitate a significant change for the rest of the organization so two backlogs are used. ]]></description>
			<content:encoded><![CDATA[<p>A common <a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">agile project management</a> question is whether bugs belong on the product backlog. Before I address that question, let me clarify that the question refers to bugs that are unrelated to functionality being coded during the sprint. If someone finds a bug during a sprint that is related to the features being worked on, the best thing to do is yell, &#8220;Hey, Mike, the boojum code is broken when I&#8230;&#8221;  The second best thing to do is to stick a new task card on the task board saying &#8220;Fix the boojum code; it breaks when&#8230;&#8221;</p>
<p>But what about a bug found today in something the team wrote a month or a year ago? And what about the existing bug database that a team new to agile is almost sure to bring with them?</p>
<p>The ideal situation is to put the bugs right onto the product backlog. To see why, consider the situation from a user&#8217;s perspective: Do you think a user cares whether something is considered a New Feature or a Bug? No. The user just wants the system to behave in some way different from how it behaves today. They don&#8217;t care what it&#8217;s called. </p>
<p>But notice I called this the <i>ideal situation.</i> It isn&#8217;t always practical&#8211;and sometimes for reasons out of the team&#8217;s control or influence. Bug databases have a way of becoming embedded into organizations. The tech support group uses them as a primary way of communicating with the developers. The marketing group uses the bug database in a similar way. This makes it quit the bug database cold turkey. </p>
<p>In these cases, the most common solution teams use is to have two backlogs</p>
<ul>
<li>a product backlog of features</li>
<li>a bug backlog</li>
</ul>
<p>This approach is a bit harder on the team and the product owner but allows an agile team to work more easily with existing processes in the organization. </p>
<p>Sometimes when we make such accommodations to the overall organization, the accommodation can damage or destroy the agile adoption. Allowing everyone to work on five concurrent projects is an example of a crippling accommodation. Accommodating the organization&#8217;s use of a bug database is not crippling. It&#8217;s just a bit more work. </p>
<p>The product owner takes on most of the additional work by having to prioritize two separate work queues and then present them to the team in a more or less consolidated manner (&#8220;My top priorities are the first three items on the product backlog, then bugs #12403 and 12415, then these next two items on the product backlog&#8230;&#8221;). This isn&#8217;t too onerous as the items would need to be prioritized even if all were in one backlog.</p>
<p>So: Ideally bugs belong on the product backlog just like any feature request. But, that would often necessitate a significant change for the rest of the organization so two backlogs are used. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/bugs-on-the-product-backlog/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Using a Task Board with One Remote Team Member</title>
		<link>http://blog.mountaingoatsoftware.com/using-a-task-board-with-one-remote-team-member</link>
		<comments>http://blog.mountaingoatsoftware.com/using-a-task-board-with-one-remote-team-member#comments</comments>
		<pubDate>Sun, 31 May 2009 20:45:48 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Sprint Artifacts]]></category>
		<category><![CDATA[Sprinting]]></category>
		<category><![CDATA[agile teams]]></category>
		<category><![CDATA[distributed teams]]></category>
		<category><![CDATA[taskboard]]></category>
		<category><![CDATA[teamwork]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=203</guid>
		<description><![CDATA[Describes how to use a task board when a team has one remote member]]></description>
			<content:encoded><![CDATA[<p>I want to address a question I was emailed yesterday but that I receive frequently. What should we do in the case when the team really likes having a <a href="http://www.mountaingoatsoftware.com/task-boards">physical task board</a>, but when one team member is remote?</p>
<p>My first answer is always: Try to get the one person to move to where the rest of the team is. I don&#8217;t expect to see any moving trucks roll out when I ask this, but I have to ask. I figured if I keep asking, some team somewhere will eventually have the person move. Having one remote is a  cost that must be borne by the full team. For the right person, it&#8217;s easily worth it. But sometimes, the person who is remote has not special skills, knowledge or experience to justify the added hassle.  </p>
<p>So, assuming that we&#8217;ve tried the &#8220;move here&#8221; solution and it didn&#8217;t work, what can a team do that likes the physical task board but that has one remote member?</p>
<p>My recommendation is to continue to use the physical task board&#8211;it is simply too beneficial to the collocated team members to give it up in favor of a <a href="http://www.userstories.com">product backlog tool</a>, especially if team members are already used to it and like it. How the team conveys information on the task board to the remote team member depends on what that person does.</p>
<p>Sometimes the remote person works remotely because they have a very specialized skill that couldn&#8217;t be filled in the office where the rest of the team is. This would be the case, for example, if  our remote person is an expert in Windows internals and is writing boot-time code in C++. It would also be the case if our remote person has twenty years of experience in the domain and with some of our really old code. In these cases, the remote person usually (not always) works for a day or two relatively alone. The remote person in this case could identify during the daily Scrum what he or she will work on and not need further interaction with the task board until selecting the next task. Here, the remote person doesn&#8217;t really interact with the task board at all and interacts only with the team. Not ideal as I&#8217;d like the person to see the tasks, but this can work in some situations.</p>
<p>What is more common is for the ScrumMaster to take on the responsibility of updating an electronic version that mirrors the physical task board. A shared spreadsheet is normally sufficient for this, but some teams opt for a more specialized tool, which is fine. Many tools offer 5-10 user free licenses and since the tool is only needed by the ScrumMaster and one remote employees, the free license is adequate.</p>
<p>Normally the ScrumMaster updates the electronic task board once a day, usually right after the daily scrum meeting. Of course, reading the physical task board and updating the electronic one can be quite time-consuming because the ScrumMaster has to look at each task in both places to see if that item needs to be updated. </p>
<p>One good way of minimizing the time the ScrumMaster spends doing this is to mark the cards on the physical task board. The mark indicates &#8220;I&#8217;ve updated this task. Please update it in the online task board.&#8221; I like to use <a href="http://www.officedepot.com/a/products/395971/Post-it-Arrow-Flags-Bright-Colors/">Post-It flags</a> for this. As team members do their daily scrum, they stick one of these flags (of any color) on the card. If the estimate changes, if the task is done, if a new task is added, those cards are tagged with a flag. When the meeting is over, the ScrumMaster can very easily see which items need to be updated. The ScrumMaster removes the flags once the online task board is updated.  This approach also works in situations where the ScrumMaster updates the board more than once a day. Any time someone changes the board, flag the task. </p>
<p>Other teams do something similar using <a href="http://www.officedepot.com/a/products/395971/Post-it-Arrow-Flags-Bright-Colors/">color-coded dots</a>. Anything touched on Monday is blue, Tuesday is red, and so on. Two problems occur though: First, the dot packs usually come with four colors to a pack so you have to buy a fifth color. Second, it&#8217;s a hassle to make sure we have the right color on hand.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/using-a-task-board-with-one-remote-team-member/feed</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>The Ideal Agile Workspace</title>
		<link>http://blog.mountaingoatsoftware.com/the-ideal-agile-workspace</link>
		<comments>http://blog.mountaingoatsoftware.com/the-ideal-agile-workspace#comments</comments>
		<pubDate>Thu, 05 Mar 2009 19:46:58 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Sprinting]]></category>
		<category><![CDATA[agile books]]></category>
		<category><![CDATA[agile teams]]></category>
		<category><![CDATA[collocation]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[product backlog]]></category>
		<category><![CDATA[product owner]]></category>
		<category><![CDATA[sprint backlog]]></category>
		<category><![CDATA[sprint burndown chart]]></category>
		<category><![CDATA[taskboard]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=117</guid>
		<description><![CDATA[A list of things (such as all other team members) that should be visible from within an ideal agile workspace.]]></description>
			<content:encoded><![CDATA[<p>As you may now, I am working on a new book, which will be called <a href="http://www.succeedingwithagile.com">Succeeding with Agile</a>. I recently finished writing a chapter for it on the impact of the human resources and facilities groups on an organization that is transitioning to an <a href="http://www.mountaingoatsoftware.com/topics/agile-project-management">Agile project management</a> approach. While writing that chapter, I put together a list of all the things that I think should be visible within the ideal agile workspace:</p>
<ul>
<li><strong>Big Visible Charts.</strong> Alistair Cockburn coined the term &#8220Big Visible Charts&#8221 to describe the charts that agile teams like to hang on their walls. One of the most common of these is the sprint burndown chart, showing the number of hours remaining as of each day of the current sprint. Charts like these provide a strong visual reminder of the current state of the project. What is shown on these charts will get the attention of team members so display charts showing the most important information for that sprint. Ron Jeffries suggests considering big visible charts showing the number of passing customer acceptance tests, the pass/fail status of tests by day, sprint and release burndown charts, number of new stories introduced to the product backlog per sprint, and more. </li>
<li><strong>Additional feedback devices.</strong> In addition to big, visible charts, it is common for an agile team to use additional visual feedback devices in their workspace. One of the most common is a lava lamp that is turned on whenever the automated build is broken. I&#8217ve also worked with teams that use flashing red traffic lights to indicate exceptional conditions such as an issue on a production server. Also popular are <a href="http://www.ambientdevices.com">ambient orbs</a> and <a href="http://www.nabaztag.com">Nabaztag rabbits</a>, which are wireless programmable devices that can also be configured to change colors, speak messages, or wiggle their ears as a team desires. Devices like these make a workspace more dynamic, unobtrusively bringing into it information the team may find helpful.</li>
<li><strong>Everyone on your team.</strong> Each person on the team should ideally be able to see each other person on the team. This absolutely includes the ScrumMaster and ideally includes the product owner. I do understand, however, that product owners often have responsibilities to other groups outside the development team and so may sit near them instead. Still, in an ideal world the product owner would be visible to everyone in the team workspace.
<li><strong>The sprint backlog.</strong> One of the best ways to ensure that everything necessary is completed in the sprint is to make the sprint backlog visible. The best way to do that is by displaying the sprint backlog on a wall, ideally in the form of a <a href="http://www.mountaingoatsoftware.com/task-boards">task board</a> A task board is usually oriented in rows and columns with each row containing a particular user story and one index card or sticky note for each task involved in that story. Task cards are organized in columns, minimally including &#8220To Do&#8221 &#8220In Process,&#8221 and &#8220Done.&#8221 In this way, team members are able to see work progressing across the task board during the sprint and all work to be done is visible at all times.</li>
<li><strong>The product backlog.</strong> One problem with running an endless series of sprints is that each can feel disconnected or isolated from the whole of a planned released or related set of new capabilities. A good way to reduce the impact of this problem is by displaying the product backlog somewhere clearly visible. This can be as simple as keeping the shoebox full of user stories written on index cards on a table in the middle of the team&#8217s space. Even better, tack the index cards with those upcoming user stories on a wall where all can see them. This allows team members to see how the user stories they are working on in the current sprint relate to others that are coming soon.</li>
<li><strong>At least one big white board.</strong> Every team needs at least one big whiteboard. Locating this in the team&#8217s common workspace encourages spontaneous meetings. One developer may start using the board to think through a problem; others may notice and offer to help.</li>
<li><strong>Someplace quiet and private.</strong> As important as open communication is, there are times when someone needs some peace and quiet. Sometimes this is for something as simple as a private phone call. Other times it can be to think through a particularly challenging problem without being interrupted.</li>
<li><strong>Food and drink. </strong>It’s always a good idea to have food and drink available. These don’t need to be fancy, and they don’t even need to be provided by the organization. I’ve worked with plenty of teams that buy a small under-desk refrigerator and share the expense of buying water bottles or soda for it. Other teams buy a coffee machine, depending on team preferences. Some teams rotate bringing in snacks, both healthful and not.</li>
<li><strong>A window.</strong> Windows are often a scarce commodity and are doled out to an organization’s favored employees. One of the nice things about an open workspace is that windows are shared. Even if the view is only of our parking lot and can only be seen across three messy desks, at least I can see the window and some natural light.</li>
</ul>
<p>It&#8217;s unlikely that every one of these will be visible from your workspace, but the more of them visible, the better. Let me know what else you think should be visible from within the ideal agile workspace.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/the-ideal-agile-workspace/feed</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Should a Team Swarm on to One Backlog Item at a Time?</title>
		<link>http://blog.mountaingoatsoftware.com/should-a-team-swarm-on-to-one-backlog-item-at-a-time</link>
		<comments>http://blog.mountaingoatsoftware.com/should-a-team-swarm-on-to-one-backlog-item-at-a-time#comments</comments>
		<pubDate>Mon, 20 Oct 2008 16:24:30 +0000</pubDate>
		<dc:creator>Mike Cohn</dc:creator>
				<category><![CDATA[Sprinting]]></category>
		<category><![CDATA[agile teams]]></category>
		<category><![CDATA[sprint backlog]]></category>
		<category><![CDATA[sprints]]></category>
		<category><![CDATA[teamwork]]></category>

		<guid isPermaLink="false">http://blog.mountaingoatsoftware.com/?p=60</guid>
		<description><![CDATA[This week I want to address the question of whether a team should work on one product backlog item at a time or whether it&#8217;s OK to work on multiple items. In general, a team should feel comfortable working on multiple product backlog items at the same time during an iteration. A typical seven person [...]]]></description>
			<content:encoded><![CDATA[<p>This week I want to address the question of whether a team should work on one product backlog item at a time or whether it&#8217;s OK to work on multiple items.</p>
<p>In general, a team should feel comfortable working on multiple product backlog items at the same time during an iteration. A typical seven person team will plan between five and ten items into an iteration. They&#8217;ll usually be closer to the low end of that range with a one- or two-week iteration and closer to the high end with a four-week iteration. Perhaps surprisingly, though, iteration length has less influence on the number of product backlog items selected than you might think. It seems that teams with longer sprints simply have larger product backlog items. </p>
<p>A seven-person team will rarely be at its most efficient when all team members swarm onto a single product backlog item. There&#8217;s too much opportunity for them to get in each other&#8217;s way for this to be a good long-term strategy. However, an entire team swarming onto a single product backlog item can be a very effective learning technique and one that I often encourage. If you are part of a team that hasn&#8217;t yet learned how all disciplines can work well together, limiting the entire team to one product backlog item in progress at a time is something you might want to try. This forces people to quickly learn ways to work in small batches so that work can, for example, be transferred from programming to testing in multiple tiny increments. </p>
<p>Similarly, if you are on a team where each developer grabs a product backlog item and works independently on it throughout an iteration, a rule of &#8220;only one item in progress at a time&#8221; is a good way to experience the benefits of working in smaller batches.</p>
<p>So, while I think swarming in this way is an excellent technique to use sometimes, I don&#8217;t think it should be the default way of working for very many teams. Some may benefit from it over the long term, but most will find that it introduces too many opportunities to be in someone else&#8217;s way as they try to make progress. I consider it equivalent to a drill that a team may do to improve a skill&#8211;good to use for practice but not the way to do something forever.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mountaingoatsoftware.com/should-a-team-swarm-on-to-one-backlog-item-at-a-time/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>

