<?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>xProgramming.com</title>
	<atom:link href="http://xprogramming.com/feed" rel="self" type="application/rss+xml" />
	<link>http://xprogramming.com</link>
	<description>an agile software development resource</description>
	<lastBuildDate>Wed, 17 Mar 2010 04:14:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Developer Quality! &#8230; and Certification?</title>
		<link>http://xprogramming.com/xpmag/developer-quality-and-certification/</link>
		<comments>http://xprogramming.com/xpmag/developer-quality-and-certification/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 15:48:27 +0000</pubDate>
		<dc:creator>Ron Jeffries</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[XP Magazine]]></category>

		<guid isPermaLink="false">http://xprogramming.com/?p=1463</guid>
		<description><![CDATA[Uncle Bob Martin comments on "Developer Certification WTF?" in a recent blog entry. Let's talk a bit about developer quality, and some things that are being done about it.]]></description>
			<content:encoded><![CDATA[<p>Uncle Bob Martin comments on &#8220;<a title="Uncle Bob's Blog" href="http://blog.objectmentor.com/articles/2010/03/07/developer-certification-wtf" target="_blank">Developer Certification WTF?&#8221;</a> in a recent blog entry. Let&#8217;s talk a bit about developer quality, and some things that are being done about it.</p>
<p>It&#8217;s well known that developer quality is critical to successful implementation of Agile software development. Unfortunately, the Scrum Alliance has paid little attention to this concern, not because they think it isn&#8217;t important, but because Scrum is designed to be a sort of container for the development process. As I&#8217;ve mentioned here before, Jeff Sutherland, Scrum&#8217;s co-creator, says explicitly that high performance Scrum teams need XP-style technical practices. Bottom line, no one is arguing against technical practice, and the Scrum movement has by choice not made a lot of noise about it.</p>
<p>That&#8217;s going to change. I&#8217;ll be writing here from my informed belief that the Scrum Alliance is sincerely interested in people&#8217;s success, and that they are doing their best to help people succeed. I say &#8220;informed&#8221; because I know members of the Alliance leadership and many members of the Scrum training community, and I assess them as good people who are doing their best to help.</p>
<p>As I say, the Scrum Alliance focus on developer quality is going to change. In fact, it has been changing for quite a while. You&#8217;ll recall that Chet, Uncle Bob, Brian Marick, Jim Shore and I had a meeting in Chicago to talk about developer certification. That meeting was funded by the Scrum Alliance, with no strings attached. The Scrum Alliance also paid for the followup meeting in Ann Arbor, reported here under <a title="dev cert meeting report" href="http://xprogramming.com/blog/tech/developer-certification/" target="_blank">Developer Certification</a> and here under <a title="Agile Skills Workshop" href="http://xprogramming.com/blog/tech/agile-team-skills-workshop/" target="_blank">Agile Skills Workshop</a>. The result of that was the <a title="Agile Skills Project" href="http://xprogramming.com/blog/tech/the-agile-skills-project/" target="_blank">Agile Skills Project</a>. As I&#8217;ve described before, this project is building an inventory of the many skills that developers need in order to be effective in an Agile situation. There are mailing lists on this subject, and a wiki, and things are proceeding well. <a href="https://sites.google.com/site/agileskillsprojectwiki/home" target="_blank">Here&#8217;s a link to the wiki.</a></p>
<p>One outcome of the Agile Skills Project will be that any piece of courseware, any book, any information offering, can be compared with the Skills Inventory. This will give a quick view of what that course addresses, how deeply it does so, and what it misses. We believe that this will help people better assess what courses to consider.</p>
<p>Now, again, all this has been supported by the Scrum Alliance (and no other organization so far), with no strings attached.</p>
<p>There&#8217;s more to come. What I&#8217;ll report next is early information, and is subject to change in details, but I expect not in focus.</p>
<h3>Scrum Alliance Recognizes Need</h3>
<p>The Scrum Alliance continues to recognize the need for developer quality, just as Uncle Bob does, as you do, and as I do here in the corporate towers of XProgramming.com. The Alliance also knows that the notion of &#8220;Certified&#8221; as they presently use it is weak with respect to any guarantee of quality (there is none) and that it is strong as a marketing approach.</p>
<p style="padding-left: 36px;">Let me speak to that for a moment. You&#8217;re probably aware that Chet and I teach a Certified Scrum Developer course. We have even taught a couple under the Object Mentor flag, by the way, and it was at Object Mentor&#8217;s suggestion and support that I became a CST a year ago. Yes, Uncle Bob&#8217;s company.</p>
<p style="padding-left: 36px;">We have had a clear indication that our course that offers the CSM is easier to sell, and easier to fill seats, than a course we would teach without that little certificate. We are clear, always, about what the certificate means and what it doesn&#8217;t, and our customers are quite aware of that truth already.</p>
<p style="padding-left: 36px;">And still, it sells better. We do our best to sell and teach without deceit, and as an insider I am certain that the Scrum Alliance and the Scrum Trainers that I know do the same. There&#8217;s certainly a conflict of interest that I feel: on the one hand, I&#8217;m the same delightful guy with or without the certificate. On the other, I get more students, and thus more income, when I offer the CSM. On the gripping hand, I also get to influence more people.</p>
<p style="padding-left: 36px;">What I mostly care about is influence. But I do care about money and I recognize that it&#8217;s acting as a force on me. I do my best to be fair about it. This is the problem that any honest marketer faces.</p>
<p>The Scrum Alliance knows that the CSM is an entry-level rating, as is the CSPO. They want to adjust people&#8217;s understanding to focus on the CSP (now Certified Scrum Practitioner, possibly to be renamed Certified Scrum Professional.) The CSP is much harder to get: you have to actually work in a Scrum environment, and you have to write an acceptable report convincing people that you have a clue. It&#8217;s still not Rocket Surgery but it is definitely a higher bar.</p>
<p>From my connections with the Alliance, I&#8217;m sure they are sincere about doing this. As time goes on, we&#8217;ll all see what they do. But what about developers and their skills?</p>
<h3>The SA Plan for Developers</h3>
<p>There is a plan under way to have a new rating, which will probably be called Certified Scrum Developer . (Yes, I&#8217;d rather it was called Rank Apprentice Agile Developer but that name isn&#8217;t likely. Let&#8217;s focus on what it will be, not just on the name.)</p>
<p>The CSD program will focus originally on actual software developers, that is, programmers. (Other specialties will probably follow.) It will require that a developer complete training including Scrum basics (or a CSM), plus an approved course about development. The course must be taught by a &#8220;SA-REP&#8221;, Scrum Alliance Registered Education Provider. And the course itself must be examined and approved by a representative of the Scrum Alliance who has a clue about what such courses will be. I happen to know who&#8217;s doing that for them now, and I&#8217;m happy to say that I trust him.</p>
<p>The approval will be based on the course introducing a core of essential ideas and practices, and on offering actual experience doing the practices. It will need to be a programming course, not a sit down and listen course.</p>
<p>At the end of the course, the student will have heard the words we say, will have had experience doing the practices in a lab environment, and will have been told in no uncertain terms that this is their next step on a road to learning that will never end.</p>
<p>Chet and I will be producing a CSD course. I hope that you know us well enough to be confident that it will be darn good. It&#8217;ll still be just a few days, but it will be packed with everything we can pack into it.</p>
<p>The SA plans to invite others to produce and offer courses under the SA-REP program. I&#8217;d expect that Uncle Bob and his organization would be a very valuable resource for such programs, as would many of our other colleagues in the XP community.</p>
<h3>Bottom Line: Perfect, no. Better, yes.</h3>
<p>I am confident that the Scrum Alliance sees the need for developer improvement, and that they are working toward making their members aware of the need. I am confident that they are working to provide resources that Scrum teams can use to begin to build the skills that they need. And I&#8217;m dedicated to influencing them in the right direction, and to bringing as many people into the situation to help accomplish that.</p>
<p>In the end, what I care about is software development, as narrow and geeky as that might be. I care about other people finding the joy in the craft that I&#8217;ve found, and that means they have to discover the joy of life-long learning. I think this Scrum Alliance effort can help with that, and I think that &#8220;certification&#8221; has little or nothing to do with it. What counts will be what we tell the people who show up.</p>
<p>I welcome your thoughts on this and will leave the comments open at least for now.</p>
]]></content:encoded>
			<wfw:commentRss>http://xprogramming.com/xpmag/developer-quality-and-certification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Choose Tools to Increase Skill</title>
		<link>http://xprogramming.com/xpmag/choose-tools-to-increase-skill/</link>
		<comments>http://xprogramming.com/xpmag/choose-tools-to-increase-skill/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 12:49:24 +0000</pubDate>
		<dc:creator>Ron Jeffries</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[XP Magazine]]></category>

		<guid isPermaLink="false">http://xprogramming.com/?p=1456</guid>
		<description><![CDATA[Choose your tools wisely, that they allow for the development of your skill.]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://wisdomofhands.blogspot.com/2010/03/compare-chisel-and-plane.html" target="_blank">&#8220;compare, a chisel and a plane</a>&#8220;,  Doug Stowe writes:</p>
<p style="padding-left: 30px;"><em>And yet, it is risk, not knowing the outcome, working against the odds, putting forth effort, and accomplishing things that express mindfulness, effort and skill, that make life and the things we make most meaningful. And so, what this boils down to is that at least some good measure of what we do should be done the hard way. Choose your tools wisely, that they allow for the development of your skill.</em></p>
<p>In<a href="http://wisdomofhands.blogspot.com/2010/03/skill-and-toolery.html" target="_blank"> &#8220;skill and toolery&#8221;</a>, he says:</p>
<p style="padding-left: 30px;"><em>These simple charts may help to explain why so many wood workers like to work with hand tools. Skill and attention are matters that create feelings of self-worth and accomplishment. They are the soft side of harsh reality, and the human component that compels engagement in physical and cultural reality.</em></p>
<p>These things speak to my heart. If I&#8217;m good at a few things, it is because of the joy that the craft of making them has brought to me. This applies to all the things I may do moderately well.</p>
<p>If I express software development ideas nicely once in a while, it is as a result of having expressed them hundreds of times in different ways. Some of those ways have worked well, some incredibly poorly. (I apologize to those of you who have had to read so many of them, and offer thanks for your help in the occasional success.)</p>
<p>If I have the ability to look at most any design, most any code, and see how to make it better, it is because I&#8217;ve looked at so many bad designs, so much poor code, that needed improvement, and have worked with them to try to make them better. I hasten to add that most of these unsavory collations were my own.</p>
<h3>A small lesson for me &#8230;</h3>
<p>Last week, Chet and I taught a TDD/Refactoring class. We also taught two Agile Introductions, a CSM, a Story Workshop, and a Partridge in a Pear Tree, but the TDD/Refactoring one is on my mind just now. In that class, we demonstrated how we do TDD/Refactoring.</p>
<p>Naturally, duplication was one of the first smells we encountered, and removing it was one of the first refactorings we applied. We did that with Extract Method, and we used the built-in tool. As I think about it now, we&#8217;d probably do well to do the first few refactorings by hand. There are at least these reasons:</p>
<ol>
<li>First, the tools work instantaneously and as if by magic, and the audience almost certainly cannot follow what happens as code disappears from one place, replaced by something different, and then appears somewhere else. I know that when I watch coding examples, those quick transforms escape me, and I generally know what to look for.</li>
<li>Second, what&#8217;s important about this refactoring, and any refactoring, is what&#8217;s going on in our mind &#8230; and that is best learned by looking at what we do with our hands.  We perceive the code transformation better if we move the code around ourselves. We learn it better.</li>
<li>Third, real-world refactorings can be aided by tools but the tools won&#8217;t do them, they&#8217;ll just do the steps. We learn to proceed in steps, not by pushing the magic button, but by proceeding in steps.</li>
</ol>
<p>Henceforth, when we do these demonstrations, I&#8217;ll make a point of doing things by hand for a while. The magic tools, as Doug Stowe suggests, may decrease risk, but they also decrease our skill.</p>
<h3>&#8230; and a question for us all</h3>
<p>Which of our tools are increasing our skill, and which ones are standing in the way? Which of our tools are bringing joy to our lives, and which ones are standing in our way?</p>
]]></content:encoded>
			<wfw:commentRss>http://xprogramming.com/xpmag/choose-tools-to-increase-skill/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problems with Acceptance Testing (combined)</title>
		<link>http://xprogramming.com/xpmag/problems-with-acceptance-testing/</link>
		<comments>http://xprogramming.com/xpmag/problems-with-acceptance-testing/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 08:23:47 +0000</pubDate>
		<dc:creator>Ron Jeffries</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[XP Magazine]]></category>

		<guid isPermaLink="false">http://xprogramming.com/?p=1399</guid>
		<description><![CDATA[Jim Shore has written a short item with the above title. Let's think about it a bit.]]></description>
			<content:encoded><![CDATA[<h3>Initial Remarks</h3>
<p><a href="http://jamesshore.com/Blog/The-Problems-With-Acceptance-Testing.html" target="_blank">Jim Shore has written a short item on the above subject</a>. I&#8217;ll begin by paraphrasing him, following his outline closely.</p>
<p style="padding-left: 30px;">In a nutshell, he&#8217;s saying that customer acceptance testing using Fit (and FitNesse I imagine) isn&#8217;t paying off for him. His objection seems primarily to be that the &#8220;natural language&#8221; tools don&#8217;t pay off.</p>
<p style="padding-left: 30px;">Two things drive this. First, the people in the customer role don&#8217;t want to take the time to write the examples. However, they don&#8217;t trust examples written by others. The result is that the responsibility gets handed off to testers, which defeats the purpose.</p>
<p style="padding-left: 30px;">Second, the tests that Jim&#8217;s teams get with Fit seem to be end-to-end, and therefore slow, and brittle.</p>
<p style="padding-left: 30px;">Therefore, Jim is no longer recommending this kind of testing. Instead, he relies on close communication with the on-site customers (product owners), only sometimes creating the examples that correspond to conventional Fit tests, and then turning those examples into TDD tests.</p>
<p>In a couple of tweets, Jim also tells me that his teams do create regression tests, and of course they do exploratory testing as any wise team would. When exploration finds things, or when defects are reported, then the team realizes they are too confident, improves their practice a bit, bears down a bit, and gets back on track.</p>
<p>On the one hand, I find Fit and FitNesse to be an intense pain to use, and in my gut I suspect that if I were made to use it, I&#8217;d refuse. Or, I hope, come up with a better idea.</p>
<p>On the other hand, I believe that examples are the best way to communicate about any complex requirement, and I&#8217;m concerned that Jim&#8217;s teams may not be working on the complex end of the requirements scale. (This could be good for a number of reasons, but it might imply that his advice is only good at that end of the scale.) Still, his teams are using examples where they think it counts. In many applications that are basically CRUD, examples may well be a waste of time.</p>
<p>On the gripping hand, I&#8217;m concerned about the potential loss of understanding and agreement between on-site customer / product owner and the team. Examples are the best way to do that and while it is more work for the customer, the examples are more likely to be understood, and to be correct.</p>
<p>Bottom line, I&#8217;m concerned about this issue because I like the clarity that results from having concrete tests that are agreed to be &#8220;the definition of done&#8221;. At the same time, Jim is a smart and experienced person, and we need to pay attention to what he&#8217;s finding out there.</p>
<p><a href="http://gojko.net/2010/03/01/are-tools-necessary-for-acceptance-testing-or-are-they-just-evil/" target="_blank">This related post just in from Gojko Adzic.</a></p>
<p><a href="http://blog.gdinwiddie.com/2010/03/01/the-reality-of-automated-acceptance-testing/" target="_blank">This related post just in from George Dinwiddie.</a></p>
<h3>Jim Explains &#8230;</h3>
<p>For all our benefit, Jim Shore goes on to describe the things his teams do that help make it safe to operate without Acceptance Tests per se. Good stuff. <a href="http://jamesshore.com/Blog/Alternatives-to-Acceptance-Testing.html" target="_blank">Read it. </a>I&#8217;ll wait.</p>
<p>OK, well, yes. Jim lists essentially the entire contents of the XP lexicon. And all those practices are good and done in concert, you&#8217;ll be pretty safe. Let&#8217;s look at a few of these for comment.</p>
<p>Jim points out that his teams use unit tests, focused integration tests, and end to end integration tests, written in TDD style. The latter two are exactly the kind of tests you&#8217;d get if you could get what I call &#8220;Customer Tests&#8221;, except that they might not be in a form that the Customer herself could write or read. These should ensure reliability, though they might fall short a bit in communication value compared to Customer-written tests. With good communication around them, this can surely work.</p>
<p style="padding-left: 30px;">(Mind you, I&#8217;m sure it does work. Jim is doing it. I&#8217;m just saying that we can see how the laws of software physics support this approach working. It&#8217;s readily credible.)</p>
<p>Jim then lists a few million standard XP practices which do support quality. Excellent. Then, he says:</p>
<p style="padding-left: 30px;">And finally, when my teams find a bug, we fix it right away &#8212; or decide that it isn&#8217;t ever worth fixing. &#8230; After writing a test to reproduce the bug and fixing it, we refactor the code so similar bugs are less likely in the future.</p>
<p>Well. This is interesting. The point is that if we fix things right away, and reflect, and improve our code (and our process I imagine), we&#8217;ll improve so as to reduce defect injection. Again, it is easy to see that this will certainly work.</p>
<p>We still have open a small concern about customer-team communication, since all this is mostly on the technical side.</p>
<p>Now Jim goes on to talk about collaboration. He has fully cross-functional, collocated teams, including customers and testers on site. Forgive me for suggesting that if you&#8217;re not doing these things, you are not on safe ground for full communication and that the need for Acceptance Tests, however painful, may be increased.</p>
<p>But wait, don&#8217;t answer yet! There&#8217;s more! Jim&#8217;s teams use &#8220;Customer Examples&#8221; for anything that is difficult to explain. And the developers use these examples for tests &#8230; which may not be able to be reviewed by the customers.</p>
<p>This is quite OK. If customers provided Acceptance Tests, the developers would be fools not to run them until they work. It really wouldn&#8217;t matter, other than for confidence building, if the customers never saw them run. That has always been true: on C3, our test running person would report the results of the tests every day, and the customer almost never ran any of them. She was satisfied that they were being run and looked at.</p>
<p>Jim goes on to say that he&#8217;s OK if the tests are not automated and if they are not customer-understandable. I&#8217;m OK that they are not customer-understandable &#8212; though I would prefer that they were if it were close to free. I am less comfortable with the notion that they are not automated. My concern would be that if they are not automated, doors are opened to regressions.</p>
<p>It would be interesting to know when these tests are automated, and when they are not, and what other tests are commonly put in place when they are not. Certainly it is not necessary to run every example to be sure that the code works. Probably it is necessary to run some.</p>
<p>Jim then digresses to point out that the real way to trust is to ship stuff that works. Yes. Our question here is about the extent to which Customer Acceptance Tests contribute to things working. I agree that with a sufficiently weird customer they wouldn&#8217;t generate trust just by printing &#8220;Yay, we work!&#8221;</p>
<p>Jim goes on to list every other known XP and related practice as things that his teams do. If your team is doing all those things, then you, too, may not need to automate acceptance tests.</p>
<p style="padding-left: 30px;">And remember: I hate automating acceptance tests with Fit and suspect that I couldn&#8217;t sustain doing them. I also hope and vow that I would do everything else I knew about, to make up for it.</p>
<p>In sum, take a hard look at all the things Jim&#8217;s teams do, including every known good practice, especially including root cause analysis on every defect. Notice that his teams do not treat defects as business as usual.</p>
<p>My bottom line on all this is that if I were that good, I could skip acceptance tests as well. On my best days, I&#8217;m that good. On my normal days, not so much.</p>
<p>I suggest that the right notion might be this one:</p>
<p>Acceptance Tests are at <em>shu </em>level and the bottom half part of <em>ha</em> level. When your team is at or near the <em>ri </em>level, you&#8217;ll have enough other rigor in place to safely drop them. Even then, keep a weather eye peeled for increases in defects. We&#8217;re not as good as we think we are.</p>
<h3>Summary Remarks</h3>
<p>Jim and I, and a few others, exchanged some Q&amp;A on Twitter. My main concern is this one:</p>
<p style="padding-left: 30px;">Acceptance Tests are what Joshua Kerievsky calls &#8220;Story Tests&#8221;. They test whether stories work. It appears that Jim&#8217;s teams do these sometimes, but not always. They always do lots of low-level TDD, and they do what he calls &#8220;integration&#8221; and &#8220;end-to-end&#8221; tests. However, Jim says that they do not always save the end to end tests, sometimes just doing them manually during development.</p>
<p style="padding-left: 30px;">It seems to me that if any given patch of code is not covered by an automated test, in principle we do not know whether it still works or not. It could be broken by a change to the code itself &#8230;  or by a change to any object on which the code relies. Yes, the TDD tests for the objects involved will help prevent defects in the users but they are not as solid a guarantee as we&#8217;d have with automated story tests for all stories.</p>
<p>Jim&#8217;s observations seem to me to touch on these related but separate topics.</p>
<p>First, customer-owned examples are hard to drag out of the customer. Jim&#8217;s teams work to get the examples in the cases where the stories are complex enough to warrant them.</p>
<p>Second, building visible story tests for customers is costly, given today&#8217;s tools, and often the team and its customers do not get enough value to make it worth doing customer-visible story tests.</p>
<p>Third, Jim&#8217;s teams have found that intensive TDD, including unit tests, integration and some story tests, gives them enough confidence (and enough real quality).</p>
<p>To the first, I&#8217;ve seen plenty of teams where the customer (Product Owner) was too busy to create examples. I&#8217;ve also seen it lead to slow-downs, and to mistakes, especially when things were complex. Examples are a good way to go in those cases.</p>
<p>To the second, I, too, find the existing tools to be way too much trouble to use. On the C3 project, we built our own tool, which made tests practical. We had examples, mostly from the Customer&#8217;s helpers, and it turns out that we reported the results to the Customer: she rarely looked directly at the tests. In addition the C3 project had a very complex domain, which made the tests more valuable.</p>
<p>To the third, I remain a bit uncomfortable. Certainly, if the team is producing very few defects, then what they are doing is working. I would be interested to know some statistics, notably: How often, when a defect arises, could the defect have been prevented by a story test that was not written?</p>
<p><strong>My bet would be that missing story tests will be associated with the majority of story defects that are discovered.</strong></p>
<p>Does that make Customer-owned Acceptance Tests written with Fit or equivalent worth while? No, not if resistance is high enough and value low enough.</p>
<p>Does that make story tests automatically worth while? No, not if errors are infrequent enough.</p>
<p>My conclusion is that certainly what Jim&#8217;s teams are doing is working, and they are doing all the XP practices quite well. If other teams do the practices that well, they&#8217;ll probably have similar results.</p>
<p>And I think that automated story tests are the simplest and most certain way to prevent defects cropping up in stories later on.</p>
]]></content:encoded>
			<wfw:commentRss>http://xprogramming.com/xpmag/problems-with-acceptance-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kate Oneal: Choosing the Stories</title>
		<link>http://xprogramming.com/xpmag/kate-oneal-choosing-the-stories/</link>
		<comments>http://xprogramming.com/xpmag/kate-oneal-choosing-the-stories/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 16:40:07 +0000</pubDate>
		<dc:creator>Ron Jeffries</dc:creator>
				<category><![CDATA[Kate Oneal]]></category>
		<category><![CDATA[XP Magazine]]></category>

		<guid isPermaLink="false">http://xprogramming.com/?p=1320</guid>
		<description><![CDATA[After a failed iteration, the team regroups with a few new stories.]]></description>
			<content:encoded><![CDATA[<div class="precis">After a failed iteration, the team regroups with a few new stories.</div>
<p>The team returned to the meeting room in better spirits. Kate had drawn a new picture on her tablet.</p>
<p><img title="aoko5to8" src="http://xprogramming.com/wp-content/uploads/aoko5to8-300x147.jpg" alt="aoko5to8" /></p>
<p>&#8220;Welcome back,&#8221; Kate said. &#8220;Jim? Susan? Do you have some stories for us?&#8221;</p>
<p>Jim took the lead. &#8220;We brought five stories, not because we expect five but because we&#8217;re not sure whether they are too small or too large. Normally we&#8217;d have time to talk with some of the team members to get a sense of size. This time we had to guess. OK&#8221;?</p>
<p>Jim and Gil had been leaning forward, ready to leap, but sat back. &#8220;OK,&#8221; Jim said. &#8220;Let&#8217;s see what you&#8217;ve got.&#8221;</p>
<p>&#8220;Should we put them all up at once,? Susan said.</p>
<p>Gil said, &#8220;Let&#8217;s go one at a time and talk a bit about what each one involves.&#8221;</p>
<p>The team all nodded.</p>
<p>One story at a time, Susan and Jim described what they needed. After each one, the team discussed how they might test that story, and talked a bit about how the story could be implemented.</p>
<p>When they got finished with the third story, Kate noticed that the team was looking tense. &#8220;How is it looking, gang? You look a bit edgy.&#8221;</p>
<p>Chuck spoke up. &#8220;In the earlier meeting, I was pretty optimistic about getting last week&#8217;s five all done. We talked about it during the break, and I&#8217;m still optimistic but I think there might be more work than I thought. I feel like this is enough, or maybe even too much.&#8221;</p>
<p>Kate said, &#8220;Are your stories in priority order, Jim and Susan?&#8221; They nodded. &#8220;Shall we look at the other two while we&#8217;re here, or stop now?&#8221;</p>
<p>Jim Anderson said, &#8220;I&#8217;d like to hear the other two. It won&#8217;t take long and it&#8217;ll give us a look at the future.&#8221; The team seemed to agree.</p>
<p>After all five stories had been discussed, Kate said: &#8220;OK. We&#8217;re looking at finishing last iteration&#8217;s stories and some of these. What do you think?&#8221;</p>
<p>Carlos said, &#8220;It would help me if we could put the old stories up on the board and task them out.&#8221;</p>
<p>Gil said, &#8220;We already know what we have to do for those. We don&#8217;t need to review.&#8221;</p>
<p>Carlos sat back, but Kate said, &#8220;I don&#8217;t want to be here all day, but let me ask a question, Gil. If we had everyone in the room write down on a sheet of paper what the five other stories are, and what work needs to be done, would all the sheets agree?</p>
<p>&#8220;I&#8217;m the disappointed story lady, and I really don&#8217;t want to be disappointed again, and I don&#8217;t want your children and kitties to starve. Should we take some time, or take a chance?&#8221;</p>
<p>Gil said, &#8220;OK, good point. Obviously Carlos isn&#8217;t sure, so let&#8217;s review. I&#8217;m sure we could figure it out but let&#8217;s be a bit more explicit, since we screwed up last time.&#8221;</p>
<p>It didn&#8217;t take long to put the other stories up on the board and to brainstorm the work that needed to be done.</p>
<p>Kate said, &#8220;OK. I noticed that there was a bit of discovery there. We saw a task that wasn&#8217;t mentioned this morning, and we found a task that could be done another way. I&#8217;m thinking that was worth doing.</p>
<p>&#8220;Now let&#8217;s take a short break and see what I can look forward to when I come in to the story store next week.&#8221;</p>
<h2>Commitment time &#8230;</h2>
<p>&#8220;OK, crew,&#8221; Kate said. &#8220;Looking at these ten stories on the board, what do you think?</p>
<p>No one spoke. After a while, Chuck said, &#8220;I still think we are good for the original five stories in two days. I&#8217;m sure the one I was working on is only a day, then I can pitch in on something else.&#8221;</p>
<p>Jim looked around the room. &#8220;Two days, guaranteed?&#8221;</p>
<p>Again no one spoke. Then Carlos said, &#8220;Let&#8217;s play it safe and say three, then shoot for two.&#8221;</p>
<p>That seemed to be a good idea.</p>
<p>&#8220;OK,&#8221; said Kate. &#8220;What else can be accomplished?&#8221;</p>
<p>The team huddled a bit. Then Jim said, &#8220;I know we said three before, but these are a bit larger than we had in mind or something. We&#8217;re sure we can do the first two. Maybe the third, but maybe not.&#8221;</p>
<p>&#8220;Probably not,&#8221; said Alice. &#8220;All three of these need GUI work that I&#8217;ll need to do. I really don&#8217;t think it happens.&#8221;</p>
<p>Susan wrote on a card, and handed it to Kate with a grin.</p>
<p>Kate grinned. &#8220;Good Susan,&#8221; she said. &#8220;Biscuit later. Gang, Susan&#8217;s card says &#8216;Stretch Goal?&#8217;. What do you think?&#8221;</p>
<p>&#8220;I say go for it,&#8221; said Jim. Some of the team nodded, some just sat there.</p>
<p>&#8220;Objections?&#8221; asked Kate. Again silence.</p>
<p>Finally Jim spoke up. &#8220;Kate, Susan and I have been pushing the team to &#8217;stretch goals&#8217; right along. We think they respond well to a little challenge.&#8221;</p>
<p>Kate looked around. &#8220;I don&#8217;t see smiling faces, Jim. And when you&#8217;ve pushed the team to stretch goals, what has happened? Do they meet them?&#8221;</p>
<p>Susan raised her hand and got the nod. &#8220;I happen to know that. About three-fourths of the time, they fail to deliver one or two stories. When they do deliver, every single time at least one of the stories turned out to be seriously incomplete or broken.&#8221;</p>
<p>Jim said, &#8220;Yes. Think how bad things would have been if we didn&#8217;t keep the pressure on!&#8221;</p>
<p>It seemed like the entire dev team snarled. Gil jumped up. &#8220;Damn it, you just set us up to fail! We tell you what we can accomplish and then you push us to do more. If we do the job right, we fail. If we do the job wrong, we ship crap. Stretch goals, my ass!&#8221;</p>
<p>Everyone kind of fell back. Gil looked around, then said, &#8220;Well, sorry. But it&#8217;s crap. We can&#8217;t win. We can&#8217;t even tie.&#8221;</p>
<p>Kate said, &#8220;Let&#8217;s see if I understand. Someone said&#8211;I don&#8217;t remember who&#8211;that under pressure, programmers have secret quality dials that they are tempted to turn in order to make a deadline that should never have been set. The result is code that never comes together, or that seems to work but isn&#8217;t really robust. Is that what you mean, Gil? Leaving your seat out of it?&#8221;</p>
<p>Gil said, &#8220;Yes, that&#8217;s it. And it&#8217;s crap. It asks us to produce crap and I don&#8217;t want to live that way. I&#8217;m here to do good work. Damn it.&#8221;</p>
<p>Kate laughed. &#8220;Well at least you&#8217;re consistent about this. What about the rest of you? Do you agree with Gil&#8217;s point, if not his format?&#8221;</p>
<p>Right around the table, the developers agreed. Chuck said, &#8220;Yes. I&#8217;m here to do good work. I know what good work is. I really value the clarity we&#8217;re getting with these smaller stories. But it doesn&#8217;t help me to have work piled on to work.&#8221;</p>
<p>Alice said, &#8220;Yes. And it&#8217;s worse than that. Remember you asked if others could do the GUI work that I do. They nearly could, with a little coaching. But if I have too many stories to do, I don&#8217;t have the time to sit with people and help them work through things. That takes a little longer the first few times. Under pressure I feel I don&#8217;t have the time and I&#8217;m too stressed to do it.&#8221;</p>
<p>Kate said, &#8220;Jim? Susan? It sounds to me like your &#8217;stretch goal&#8217; strategy has never really worked. You usually don&#8217;t get what you want and what you do get isn&#8217;t as good. What do you think?&#8221;</p>
<p>Susan went to speak, but Jim held up his hand. &#8220;Let me say it. We&#8217;re afraid if we don&#8217;t keep the pressure on, the team won&#8217;t go as fast as they could. They may lay back and take it easy.&#8221;</p>
<p>Again the team erupted. This time Kate held up her hand. &#8220;Let me take this one.</p>
<p>&#8220;How would you feel, Jim, or you, Susan, if Dan told you that he thought you weren&#8217;t working as hard as you could, and started pushing more work on you?</p>
<p>&#8220;Take a moment, then be truthful. Feel it, and tell us how it feels.&#8221;</p>
<p>Jim and Susan paused. Then Jim said, &#8220;I&#8217;d hate it. Dan knows we&#8217;re the best. He gave us these jobs. He should trust us to do the right things and to do them right. Dan&#8217;s not like that anyway. Dan would coach us and help us, not treat us like &#8230;&#8221;</p>
<p>Kate said, &#8220;Like what?&#8221;</p>
<p>Jim said, &#8220;I get it. We&#8217;re making the team feel untrusted, and by pushing more work on them, we overload them.&#8221;</p>
<p>Kate said, &#8220;And why does that overload them? Why don&#8217;t they just go along at the slacker pace you&#8217;re worried about and deliver what they can? What could possibly explain what they do?&#8221;</p>
<p>Susan chipped in. &#8220;They&#8217;re not good enough &#8230;&#8221;</p>
<p>Kate stopped her. &#8220;No one is ever good enough. Everyone is as good as they are. If they&#8217;re getting in trouble trying to reach stretch goals, not being good enough can&#8217;t be the real cause.&#8221;</p>
<p>Jim said, again, &#8220;I get it. They do poorly because they&#8217;re trying to do what we ask, and it is too much for them.&#8221;</p>
<p>Kate said, &#8220;Exactly. And what does that tell us about trust?&#8221;</p>
<p>A long silence ensued. Finally, Jim nodded. &#8220;They&#8217;re failing because they&#8217;re trying to do to much. The fact that they&#8217;re trying tells us that they&#8217;re willing to work hard and that we don&#8217;t need to push them. We can trust them to work hard.&#8221;</p>
<p>Kate gathered everyone&#8217;s eyes. &#8220;Is that right, team? Can we trust that you&#8217;re doing your best?&#8221;</p>
<p>Gil laughed. &#8220;Let&#8217;s see, we could say no, or we could say yes &#8230;</p>
<p>&#8220;Yes, you can trust us. We&#8217;re professionals. We do this work because we want to do it well.&#8221;</p>
<p>Kate said, &#8220;One more thing, and we&#8217;ll close. Jim, Susan? When the team has fallen short of the stretch goals, how do you feel?&#8221;</p>
<p>Susan said, &#8220;I feel let down. I feel like they broke a promise.&#8221;</p>
<p>The team rustled. Susan went on, &#8220;Oh. They didn&#8217;t promise. They always said &#8216;We&#8217;ll try.&#8217; Anyway, I do feel disappointed.&#8221;</p>
<p>Exactly, said Kate. &#8220;I would as well. So when Binary Girl the Feature-buying Lady leaves today, what shall we tell her? Seven, or eight?&#8221;</p>
<p>Carl said, &#8220;We can do seven. Tell her seven. Right gang?&#8221;</p>
<p>Everyone on the team nodded or said yes.</p>
<p>Kate looked around. &#8220;OK. We&#8217;re all tired. Tough meeting today but I think it has been worth it. The team says they can do seven. Next week BG the SL will be expecting seven. Let&#8217;s close for now, but tomorrow I&#8217;d like a brief session with interested folks to talk about what we should do to make sure we get seven, and what to do if it turns out we can&#8217;t. Would 9 AM work for that? Attendance is optional.&#8221;</p>
<p>Everyone agreed.</p>
<p>&#8220;OK, seven stories it is. Thanks. See you tomorrow.&#8221;</p>
<p>The team filed out. Kate gestured Susan to stay. &#8220;Susan? I&#8217;d still like to have a session with you. Today? Or is tomorrow better after all this?&#8221;</p>
<p>&#8220;Do we have to?&#8221; said Susan. &#8220;I&#8217;ll be good.&#8221;</p>
<p>&#8220;Yes, please,&#8221; Kate said. &#8220;I just want to help you understand what I&#8217;m up to.&#8221;</p>
<p>&#8220;OK, tomorrow then. After the 9 AM thing?&#8221;</p>
<p>&#8220;Great,&#8221; said Kate. &#8220;Don&#8217;t worry. I promise not to blow my whistle.&#8221;</p>
<p>&#8220;Yikes, I hadn&#8217;t even thought to worry about that. OK. I&#8217;ll just stay after then 9 o&#8217;clock, OK?&#8221;</p>
<p>Kate said, &#8220;That&#8217;ll work fine. Thanks. Bye for now.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://xprogramming.com/xpmag/kate-oneal-choosing-the-stories/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: Shop Class as Soulcraft</title>
		<link>http://xprogramming.com/xpmag/book-review-shop-class-as-soulcraft/</link>
		<comments>http://xprogramming.com/xpmag/book-review-shop-class-as-soulcraft/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 14:47:02 +0000</pubDate>
		<dc:creator>Ron Jeffries</dc:creator>
				<category><![CDATA[Book Review]]></category>
		<category><![CDATA[XP Magazine]]></category>

		<guid isPermaLink="false">http://xprogramming.com/?p=1301</guid>
		<description><![CDATA[Author Matthew B. Crawford is a physicist, has a Ph.D. in political philosophy, and is a motorcycle mechanic. What's not to like? Recommended for practitioners, managers, executives.]]></description>
			<content:encoded><![CDATA[<div class="precis">Author Matthew B. Crawford is a physicist, has a Ph.D. in political philosophy, and is a motorcycle mechanic. What&#8217;s not to like? Recommended for practitioners, managers, executives.</div>
<p><a href="http://www.amazon.com/exec/obidos/ASIN/1594202230/ref=nosim/armaties" target="blank"><br />
<img class="size-full wp-image-1302" title="Shop Class as Soulcraft Cover" src="http://xprogramming.com/wp-content/uploads/shop-class.jpg" alt="Shop Class as Soulcraft Cover" width="240" height="240" /><br />
<strong> Shop Class as Soulcraft: An Inquiry into the Value of Work</strong><br />
&#8211; Matthew B. Crawford</a></p>
<p>Crawford speaks eloquently about the value people feel in work that is tangible. He is primarily extolling the joy we feel in applying the manual arts well, and suggests that we should value those skills more highly.</p>
<p>He points out that a craft like plumbing is not subject to off-shoring, because it must be done on site. The Agile software community, of course, understands that working on site is far more effective for us, though it is not logically necessary in quite the way that plumbing is.</p>
<p>But there&#8217;s more for us in this book besides a good read. People do get joy and work harder, when their work is tangible. This has implications for how a developer can work toward greater joy, by focusing on delivering real features that people want.</p>
<p>There are implications for management as well. Because people are motivated to see their work come to fruition, we&#8217;re likely to get better results with feature-focused teams rather than teams divided along other lines, such as infrastructure levels.</p>
<p>This book is a quick and enjoyable read and it will give you valuable ideas.Give it a look!</p>
]]></content:encoded>
			<wfw:commentRss>http://xprogramming.com/xpmag/book-review-shop-class-as-soulcraft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kate Oneal: Slices</title>
		<link>http://xprogramming.com/kate-oneal/aokoslices/</link>
		<comments>http://xprogramming.com/kate-oneal/aokoslices/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 06:06:56 +0000</pubDate>
		<dc:creator>Ron Jeffries</dc:creator>
				<category><![CDATA[Kate Oneal]]></category>

		<guid isPermaLink="false">http://xprogramming.com/?p=69</guid>
		<description><![CDATA[The team has fallen far short in the most recent iteration. What should they do?]]></description>
			<content:encoded><![CDATA[<div class="precis">The team has fallen far short in the most recent iteration. What should they do?</div>
<p><a name="N65575"></a></p>
<h2>Another Perfect Start to Another Perfect Day</h2>
<p>&#8220;Let me see if I understand, Carl,&#8221; Kate said. &#8220;In our last planning meeting, the team said that they would take on five stories? And now, at the end of the iteration, none of them are done?&#8221;</p>
<p>&#8220;That&#8217;s right!&#8221; said Susan. &#8220;They promised us five critical features and now they let us down again! These so-called engineers just aren&#8217;t very good!&#8221;</p>
<p>Gil jumped up. Carl, normally Mr Calm, jumped up. &#8220;Susan &#8230;&#8221; they said, as if in chorus.</p>
<p>&#8220;Stop!&#8221; Kate said. &#8220;Stop now!&#8221;</p>
<p>Everyone kept shouting.</p>
<p>&#8220;Stop! Everyone who wants to be a part of this meeting, calm down now. We have work to do!&#8221; Kate said, louder this time.</p>
<p>The hubbub continued. Gil and Carl and Susan were raving and the rest of the room looked shocked. Kate grasped a chain around her neck and pulled out her emergency whistle. She blew it, loudly. Sudden silence.</p>
<p>Kate smiled. &#8220;Thank you. Carl and Gil, please sit down. I want to explore this situation and to hear what you have to say. Susan, you may leave.&#8221;</p>
<p>&#8220;I want to stay. My concerns need to be heard,&#8221; said Susan.</p>
<p>&#8220;Susan, we are here to find out what happened in this iteration, and to do something about it. You seem to have some other agenda. You and I will discuss our concerns after the meeting. For now, you may leave.&#8221;</p>
<p>&#8220;Please. I want to stay,&#8221; Susan said.</p>
<p>Kate relaxed her shoulders, almost visibly collecting calmness from the air around her. &#8220;OK. You may stay, but not another word. If you have a question or comment, write it on a card and give it to me. And find an hour on my calendar today: we need to talk.&#8221;</p>
<p>Susan frowned, nodded, and sat down. Kate sat perfectly still for a moment. Then it was as if she reanimated.</p>
<p>&#8220;OK. That wasn&#8217;t fun. Let&#8217;s not do that again. Any of us. I&#8217;m all for passion in our work and I insist that we keep the passion directed in a positive way. There are to be no personal attacks on this project, in my presence or outside it. Take a few minutes in silence and decide whether you can work that way.&#8221;</p>
<p>Susan moved as if to speak. Kate gave her a little head-shake. Susan subsided.</p>
<p>Gil raised his hand. Kate grinned, gestured a heart attack, then nodded and gave Gil a calming gesture at the same time. After a little time for thought, Kate started looking around the room, making eye contact with people in turn. She tilted her head as if with a question.</p>
<p>Jim Anderson looked her in the eyes and nodded. One by one, the developers, who had been silent anyway, nodded. Kate looked at Carl, who nodded. She looked at Gil, who clearly wanted to speak.</p>
<p>Kate took a chance. &#8220;Go ahead, Gil.&#8221;</p>
<p>&#8220;Kate, I&#8217;m sorry. I&#8217;ll do as you ask.&#8221;</p>
<p>Glances were shared all over the room. No one had ever heard Gil say he was sorry before. Kate just said, &#8220;Thanks, Gil.&#8221;</p>
<p>Kate then looked at Susan for the first time. She held up her hand. &#8220;One word, Susan. Yes or no?&#8221; She dropped her hand.</p>
<p>&#8220;Yes. And I&#8217;m sorry too.&#8221;</p>
<p>Kate smiled. &#8220;You were supposed to write that on a card. But OK. Now please everyone take a short bio and calming break and we&#8217;ll start over. Back in ten minutes?&#8221;</p>
<p>Everyone nodded and got up to break. Carl said, &#8220;Can I bring you a Diet Coke, Kate?&#8221;</p>
<p>Gil said, &#8220;Let me.&#8221;</p>
<p>Kate said, &#8220;Thanks, you two. Gil, yes please.&#8221; Gil turned to go, and Kate gave Carl a friendly nod. After a moment he smiled and returned it, and left the room.</p>
<p><a name="N65658"></a></p>
<h2>If At First &#8230;</h2>
<p>While she waited for the team to come back, Kate amused herself doodling on her Tablet. The picture on the wall screen took form:</p>
<p><img src="http://xprogramming.com/images/5%20to%200.jpg" alt="image" />Kate had just finished this masterpiece when people started filing back in. Everyone was subdued, but there was a sense of energy. Gil put a Diet Coke in front of Kate.</p>
<p>&#8220;Thanks, Gil, I owe you a quarter.&#8221;</p>
<p>&#8220;It&#8217;s on me.&#8221;</p>
<p>&#8220;OK. I never turn down a free soda.&#8221;</p>
<p>Kate gathered up the eyes of the people in the room. &#8220;OK, as I was saying before the storm, we thought we were going to get five things, and nothing came out. We&#8217;re here to explore productively what happened, and to decide what we should do about it. Do any of you know of Diana Larsen?&#8221;</p>
<p>Carlos raised his hand. &#8220;She&#8217;s a coach. She specializes in retrospectives, and people-focused things.&#8221;</p>
<p>&#8220;Yes,&#8221; said Kate. &#8220;I once heard Diana say &#8216;A person is never the root cause of a problem,&#8217; and I try to live by that idea. We need to look at what happened, and to figure out how our approach let all of us people down, then improve our approach. This isn&#8217;t a formal retrospective, but we&#8217;ll live by Diana&#8217;s guideline.</p>
<p>&#8220;So, as I understand it, we set out to do five features, and we got none of them done. Carl, what happened?&#8221;</p>
<p>Carl didn&#8217;t need any time to think. &#8220;We got lots done, Kate. Those five features are ninety percent done, maybe more.&#8221; All the developers nodded or murmured agreement.</p>
<p>&#8220;OK, Carl. But call me Binary Girl. Done, or Not Done?&#8221;</p>
<p>Carl smiled ruefully. &#8220;Well, BG &#8212; can I call you BG? &#8212; if those are the rules, I guess I have to say Not Done. But darn it, we&#8217;re nearly there!&#8221;</p>
<p>&#8220;&#8216;Kate&#8217; will be just fine. Binary Girl is my job title, and we&#8217;re pretty informal around here. Let&#8217;s pretend for a moment that I was paying for this project.&#8221;</p>
<p>&#8220;But you are paying for the project,&#8221; said Susan, and then made a lip-zipping motion.</p>
<p>Kate laughed. &#8220;We&#8217;d better let you speak, Susan, or you&#8217;ll explode. But let&#8217;s keep it positive. You&#8217;re right, I guess I am paying for the project. So we shouldn&#8217;t have any trouble pretending.</p>
<p>&#8220;But my point is a larger one. We should all, always, pretend that we are paying for the project. Every week we have another iteration, and every week we have to shell out enough money to keep the team fed.</p>
<p>&#8220;Let&#8217;s talk about what it takes. You all know that I think of our product as made up of features. Oh, sure, we all know there are functions and objects and tests and databases and such in there, but to me, and to Jim and Susan, the product is a collection of features that we think will make us successful.</p>
<p>&#8220;Features are what we&#8217;re trying to buy and features are how we measure our progress. If I came into your feature store today, planning to buy five features, there just wouldn&#8217;t be any on the shelf to buy. I&#8217;d have to go home without features, and your feature store would have to run for another week with no revenue &#8230;&#8221;</p>
<p>Jim chimed in. &#8220;Before you can say it, Kate &#8230;&#8221;</p>
<p>Everyone chorused: &#8220;That would be bad!&#8221;</p>
<p>Kate blushed and grinned. &#8220;I guess I do say that a lot. But it would be no pizza all around. That would definitely be bad.&#8221;</p>
<p>Somehow, at that moment, the pizza guy walked in.</p>
<p>&#8220;How does she do that?&#8221; Carlos asked.</p>
<p>&#8220;Ask me the secret of humor,&#8221; Jim said.</p>
<p>Carlos took the bait. &#8220;What&#8217;s the sec&#8230;?&#8221;</p>
<p>&#8220;Timing!&#8221; said Jim.</p>
<p>Kate smiled and nodded. &#8220;Timing. And the timing is always right for pizza. Let no one say I&#8217;m not a reasonable woman. Grab a slice and a soda, and let&#8217;s dig into the pizza and the problem.&#8221;</p>
<p>Fully unified against the pizza challenge, they did.</p>
<h2>&#8230; You Don&#8217;t Succeed &#8230;</h2>
<p>&#8220;OK,&#8221; said Kate, &#8220;the feature-buying lady has just left your feature store. She was a bit sad because she couldn&#8217;t buy any features. And you&#8217;re a bit sad because your children and kitties are going to go hungry for a week. What are you going to do? And remember, no recriminations.&#8221;</p>
<p>Jim raised his hand. &#8220;I&#8217;ve got a business idea. Let&#8217;s call the feature lady back and ask her which one of those features is most valuable to her. Then let&#8217;s finish that one first and maybe we can have it for her by Tuesday. She might give us the money for that one and we could keep going.&#8221;</p>
<p>Kate said, &#8220;Interesting idea, and I think we should explore later what if I said yes. But suppose I say that I only shop for features on Friday?&#8221;</p>
<p>Susan raised her hand, and Kate gave her a nod. &#8220;Jim, Gil? You said those stories are all ninety percent done? How accurate is that?&#8221;</p>
<p>Jim said, &#8220;I think it&#8217;s pretty solid. I really think we can get them all done in one more day.&#8221;</p>
<p>&#8220;Just one more?&#8221; Kate said.</p>
<p>Jim looked at his developers. Those who weren&#8217;t looking at their shoes were shaking their heads. &#8220;OK, guys. How many? Show of fingers.&#8221;</p>
<p>The developers all showed two or three fingers, except Chuck, who was shielding his one-finger signal from Kate with his other hand.</p>
<p>Kate said, &#8220;Chuck? Your estimate seems out of line with the others.&#8221;</p>
<p>Chuck blushed. &#8220;How do you do that?&#8221;</p>
<p>Kate smiled. &#8220;I counted. You know, one, two, three. Was one your estimate, or your opinion of the proceedings?&#8221;</p>
<p>Chuck said, &#8220;My estimate, with a little spank for my conservative brothers and sisters here. I can finish my stuff in a morning, and probably help someone else finish up in an afternoon.&#8221;</p>
<p>&#8220;OK,&#8221; Jim said. &#8220;So we can finish these up in a couple of days. But Kate won&#8217;t buy stories on Tuesday, Susan. So what?&#8221;</p>
<p>Susan actually smiled. &#8220;So I was wondering why you &#8230; why we didn&#8217;t focus all our effort last week on just three or four of the features. Wouldn&#8217;t we have had enough time to get those done? Then Kate, um, the feature lady would have given us the money for at least three.&#8221;</p>
<p>&#8220;I would definitely pay for three or four,&#8221; said Kate. &#8220;Would that have been possible?&#8221;</p>
<p>The techies conferred, then Gil answered. &#8220;We could probably have finished three of those features. We might have finished the fourth, but probably not. But there&#8217;s a problem. Four of the stories had significant GUI work to do, and Alice is our only GUI person.&#8221;</p>
<p>Kate said, &#8220;Let&#8217;s ask Alice. I think she&#8217;ll know. Alice, are you really the only person who can do the GUI work?&#8221;</p>
<p>Alice said, &#8220;I&#8217;m most experienced with the GUI code, and I&#8217;m pretty good at the design side. I&#8217;m our most effective person at it, I think. But almost everyone can actually do it. So if someone else could have picked up the GUI work on the fourth story, they would probably be done by now, or maybe they&#8217;d have needed me to pitch in a little help for the hard parts. As it was, I only got three of the GUIs done.&#8221;</p>
<p>Kate said, &#8220;Let&#8217;s review, please. We undertook five stories. Three of them have their GUIs done. All of them have a lot done on them, only another day or two of work for one person, but none of them got completed.  There&#8217;s a general feeling that if we had focused on fewer stories, we&#8217;d have had three of them done, maybe even four. Right?&#8221;</p>
<p>There was agreement all around.</p>
<p>&#8220;OK, then, what shall we do?&#8221;</p>
<p>Gil said, &#8220;Do you want to buy some stories on Tuesday?&#8221;</p>
<p>Kate thought a moment. &#8220;No, I would like to stick to the rhythm. Let&#8217;s plan to do a full week&#8217;s iteration. I propose that the team sign up for the same five stories as last iteration, and get them done this time.&#8221;</p>
<p>Gil said, &#8220;Team, I think we can get those five done, and more. What do you think?&#8221;</p>
<p>Carl said, &#8220;Those five and about three more of the same size?&#8221;</p>
<p>Everyone agreed.</p>
<p>Kate said, &#8220;Works for me.  Jim, Susan? Does that make sense to you?&#8221;</p>
<p>Susan said, &#8220;Yes. We&#8217;d like more but that&#8217;s good.&#8221;</p>
<p>Jim said, &#8220;Yes.&#8221;</p>
<p>Kate looked around. &#8220;Good. You need three more stories of about the same size. Let me suggest a short break, and that we then reconvene to get three stories from Jim and Susan.&#8221;</p>
<h3>To be continued &#8230; after the break!</h3>
]]></content:encoded>
			<wfw:commentRss>http://xprogramming.com/kate-oneal/aokoslices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is really essential?</title>
		<link>http://xprogramming.com/blog/what-is-really-essential/</link>
		<comments>http://xprogramming.com/blog/what-is-really-essential/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 16:04:02 +0000</pubDate>
		<dc:creator>Ron Jeffries</dc:creator>
				<category><![CDATA[Hot Needle of Inquiry]]></category>
		<category><![CDATA[Practices]]></category>

		<guid isPermaLink="false">http://xprogramming.com/?p=1292</guid>
		<description><![CDATA[<p><em>Jens Meydam asked &#8220;What do you really care about in Scrum?&#8221; I decided to answer, instead, &#8220;What do you think is really essential in Scrum-style software development?</em></p>
<p><span id="more-1292"></span>First, two things are fundamental:</p>

Ship running, tested software every two weeks, or,<p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><em>Jens Meydam asked &#8220;What do you really care about in Scrum?&#8221; I decided to answer, instead, &#8220;What do you think is really essential in Scrum-style software development?</em></p>
<p><span id="more-1292"></span>First, two things are fundamental:</p>
<ol>
<li>Ship running, tested software every two weeks, or, if you are a wuss, every month. (DONE == DONE)</li>
<li>Reflect frequently on how it&#8217;s going, and revise your practices in accord with what you observe. (Inspect and Adapt)</li>
</ol>
<p>Now then. When you set out to do these things, certain chains of events are inevitable and I do mean inevitable. Here&#8217;s one example:</p>
<ol>
<li>To ship done software, it must be tested.</li>
<li>To ship done software every two weeks, it must be tested every two weeks.</li>
<li>Changes to the software can, in principle and in practice, break essentially any feature anywhere in the software.</li>
<li>To ship done software every two weeks, essentially every feature needs to be tested every two weeks.</li>
<li>This testing burden increases linearly or worse than linearly with the number of features.</li>
<li>Manual testing cannot sustain the two week delivery cycle.</li>
<li><strong>Therefore</strong>, for a truly successful iterative software project, automated testing is absolutely necessary.</li>
</ol>
<p>There are quite a few things like this that are just inevitable. There are others that are almost always needed, others that are commonly needed, still others that are sometimes needed.</p>
<p>To call a process &#8220;Scrum&#8221;, we demand certain things. All of those things are pretty good ideas. Some of them may be necessary to a successful project, even if they are necessary in order to call the process Scrum. I&#8217;m more interested in successful projects than I am in the name of the process.</p>
]]></content:encoded>
			<wfw:commentRss>http://xprogramming.com/blog/what-is-really-essential/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Features or Date</title>
		<link>http://xprogramming.com/blog/features-date/</link>
		<comments>http://xprogramming.com/blog/features-date/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 13:55:02 +0000</pubDate>
		<dc:creator>Ron Jeffries</dc:creator>
				<category><![CDATA[Hot Needle of Inquiry]]></category>

		<guid isPermaLink="false">http://xprogramming.com/?p=1269</guid>
		<description><![CDATA[Have all your desired features or make an exact date. What's so hard about that?]]></description>
			<content:encoded><![CDATA[<p>Jonathan Rasmussen replied recently to a question on the Scrum list, saying that you can pick your feature set and let the date move, or pick the date and let the features move. Roy Morien asked &#8220;Why isn&#8217;t this obvious&#8221;, noting that it sure seems that people don&#8217;t get it.</p>
<p><span id="more-1269"></span></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Historically, software projects have had no API. You gave a software team an unchangeable list of requirements and an immutable date. The project was done in phases such that nothing was useful until all phases were finished for everything: analyze, design, code, test. Along the way, the project produced no measurable output and could not be controlled in any useful way.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">As the manager became more and more concerned that things weren&#8217;t going well, their only available approaches were to add people, which is usually not possible and doesn&#8217;t work anyway, or to add pressure, which doesn&#8217;t work either.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Incremental projects using approaches such as Scrum offers of course do have an API. They produce completed features which can be counted, and you can control very nicely what gets done by the date just by selecting the features to do next. (You still can&#8217;t improve things by using pressure, however.)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">However, well-crafted incremental projects don&#8217;t let the manager control scope: they put that in the hands of business-side people, product planners and the like, who used to be passive &#8211;and unhappy&#8211; recipients of whatever the software project actually did.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">So software managers now have a very odd job to do, if they have a job at all, since they are not really able to manage anything. The date and scope are set by the business side, the team&#8217;s practice is guided by a coach or ScrumMaster, the team makes all the technical decisions, adding people still won&#8217;t work, and pressure still doesn&#8217;t work.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">No wonder they are confused.</div>
<p>Historically, software projects have had no API. You gave a software team an unchangeable list of requirements and an immutable date. The project was done in phases such that nothing was useful until all phases were finished for everything: analyze, design, code, test. Along the way, the project produced no measurable output and could not be controlled in any useful way.</p>
<p>As the manager became more and more concerned that things weren&#8217;t going well, their only available approaches were to add people, which is usually not possible and doesn&#8217;t work anyway, or to add pressure, which doesn&#8217;t work either.</p>
<p>Incremental projects using approaches such as Scrum offers of course do have an API. They produce completed features which can be counted, and you can control very nicely what gets done by the date just by selecting the features to do next. (You still can&#8217;t improve things by using pressure, mind you.)</p>
<p>However, well-crafted incremental projects don&#8217;t let the <em>manager </em>control scope: they put that in the hands of business-side people, product planners and the like, who used to be passive &#8211;and unhappy&#8211; recipients of whatever the software project actually did.</p>
<p>So software managers now have a very odd job to do, if they have a job at all. They are not really able to manage much of anything about the project. The date and scope are set by the business side, the team&#8217;s practice is guided by a coach or ScrumMaster, the team makes all the technical decisions, adding people still won&#8217;t work, and pressure still doesn&#8217;t work.</p>
<p>No wonder they are confused.</p>
]]></content:encoded>
			<wfw:commentRss>http://xprogramming.com/blog/features-date/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Beyond Agile &#8212; The Agile Barrier</title>
		<link>http://xprogramming.com/xpmag/beyond-agile-the-agile-barrier/</link>
		<comments>http://xprogramming.com/xpmag/beyond-agile-the-agile-barrier/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 18:09:36 +0000</pubDate>
		<dc:creator>Ron Jeffries</dc:creator>
				<category><![CDATA[Beyond Agile]]></category>
		<category><![CDATA[XP Magazine]]></category>

		<guid isPermaLink="false">http://xprogramming.com/?p=1196</guid>
		<description><![CDATA[Agile projects very often seem to stall out after gaining perhaps twenty-five percent of the possible benefit. Why is this? What can be done?]]></description>
			<content:encoded><![CDATA[<div class="precis">Agile projects very often seem to stall out after gaining perhaps twenty-five percent of the possible benefit. Why is this? What can be done?</div>
<p><img class="alignnone size-medium wp-image-1198" title="agile barrier" src="http://xprogramming.com/wp-content/uploads/agile-barrier-300x175.jpg" alt="agile barrier" width="450" height="270" /></p>
<p>If your organization is like many others, you have adopted Scrum or another &#8220;Agile&#8221; method. You have received some benefit and are glad you have gone Agile. Yet very likely you feel there should be more &#8212; and you&#8217;re right!</p>
<p>The creators of Scrum agree: Ken Schwaber has said that perhaps only twenty-five percent of Scrum teams get the full benefit of doing Scrum. Jeff Sutherland has said that every high-performance Scrum team he has seen was using practices that go beyond Scrum.</p>
<p>To move beyond what Scrum and &#8220;Agile&#8221; have given us, we need to do some new things, and likely we need to do some old things better. Let&#8217;s explore together how to recognize those things, and how to begin to address them.</p>
<p>We’ll be looking in these articles at the things that need to be done inside your projects, and outside your projects. We’ll point out what the manager or executive should ask teams to do, and we’ll talk about why. We’ll also be look at what managers and executives themselves need to do to help projects to become successful. Some of these ideas may not be new to you, and others probably will be. Some of the ideas will be challenging, even a bit difficult. Make no mistake: to attain the higher levels of performance, we all need to work a bit differently.</p>
<p>The fundamental benefit that the Agile methods try to provide is the continuous delivery of “Running Tested Features”. Here’s why:</p>
<p>For most projects, we have a deadline in mind, and we have some understanding of the capability we want to have by that date. There are two key questions we need to address:</p>
<p style="padding-left: 30px;"><strong>Planning</strong>: How can we decide how much time and how many people we need, in order to get the capability we need by the time we need it?</p>
<p style="padding-left: 30px;"><strong>Managing</strong>: Given this overall plan, how can we manage the project to get what we need by the time we need it?</p>
<p>Even with a great plan, we can’t succeed without good project management. We can even produce great results from poor plans. Our teams need to execute every day, and we plan only seldom. So first we’ll look at ongoing management of our projects, and then at how we should plan them.<br />
<img src="http://xprogramming.com/wp-content/uploads/features-conventional-plan2-300x216.jpg" alt="features conventional plan" title="features conventional plan" width="450" height="270" class="alignnone size-medium wp-image-1216" /></p>
<p>Conventional software project plans used to look like the picture above. Mysterious and magical things go on in development, and then toward the end of the project, we expect to see features rapidly coming on line, with a successful delivery right at the deadline.</p>
<p>Yes, and on Christmas, Santa will bring you a pony. When we plan this way, the reality usually looks more like this:</p>
<p><img src="http://xprogramming.com/wp-content/uploads/features-conventional-reality-300x197.jpg" alt="features conventional reality" title="features conventional reality" width="450" height="270" class="alignnone size-medium wp-image-1220" /></p>
<p>The mysterious and magical stuff happens all right, but when things start coming on line, they start late, and arrive more slowly than expected. The project turns from “ALL OK” to “IN TROUBLE” very late on. As managers, we have little or no time to respond to the trouble, yet our sunk costs are so large that we have no real choice but to go ahead.</p>
<p>Incremental development, as Scrum and Agile taught us, gives us the ability to manage the project. The capabilities of the modern project come on line incrementally, a few every month. We can project the growth of features to see how we’re doing. Even if we don’t go any faster, we’re in a better position to make decisions about what to do. We can look at feature growth and the deadline and decide to what extent we should cut scope, and to what extent we should extend the deadline. The incremental project looks like this in comparison with the conventional:</p>
<p><img src="http://xprogramming.com/wp-content/uploads/features-incremental-vs-conventional-300x197.jpg" alt="features incremental vs conventional" title="features incremental vs conventional" width="450" height="270" class="alignnone size-medium wp-image-1222" /></p>
<p>Because of the value of this information, the modern software manager asks for an incremental process, with smooth growth of features. We demand that actual progress be faithfully presented to us regularly, like the blue line above. Our first job is to recognize that a faithful blue line is the truth, and that our job is to manage to that truth. We build our organization’s plans around the truth of what is happening.</p>
<p>Secondarily, we do want to help that line to climb more rapidly. We do things to help it climb – and we do things to make sure that the line remains true. As we succeed in improving feature growth, we update our plans. Always, we focus our plans on what’s true, not on what we wish were true.</p>
<p>In the articles that follow, we&#8217;ll discuss what it takes to keep that line growing smoothly and steadily. We&#8217;ll talk about how to manage them, and about what the people on the projects need to do. Our focus will always be on this blue line of progress, keeping it smooth and steady, so that we can guide our projects to the best possible success.</p>
]]></content:encoded>
			<wfw:commentRss>http://xprogramming.com/xpmag/beyond-agile-the-agile-barrier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beyond Agile &#8212; Inspect and Adapt? How?</title>
		<link>http://xprogramming.com/xpmag/beyond-agile-inspect-and-adapt-how/</link>
		<comments>http://xprogramming.com/xpmag/beyond-agile-inspect-and-adapt-how/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 16:11:18 +0000</pubDate>
		<dc:creator>Ron Jeffries</dc:creator>
				<category><![CDATA[Beyond Agile]]></category>
		<category><![CDATA[XP Magazine]]></category>

		<guid isPermaLink="false">http://xprogramming.com/?p=1184</guid>
		<description><![CDATA[Incremental and iterative development processes provide frequent opportunities for teams to "Inspect and Adapt". What should we inspect? How should we adapt? Is this part of the process?]]></description>
			<content:encoded><![CDATA[<div class="precis">Incremental and iterative development process frameworks provide frequent opportunities for teams to &#8220;Inspect and Adapt&#8221;. What should we inspect? How should we adapt? Is this part of the framework?</div>
<p><img class="size-medium wp-image-1185" title="How to Adapt?" src="http://xprogramming.com/wp-content/uploads/how-to-adapt-300x200.jpg" alt="We have opportunities to adapt. How do we do it?" width="450" height="300" /></p>
<p>Teams using incremental and iterative processes have daily stand up meetings that provide an opportunity to observe how things are going, and they can set up a quick meeting to remove obstacles and improve things. At the end of every iteration, there is an opportunity to review the whole iteration and decide how to make things better.</p>
<p>Most experts, and most named iterative methods, explicitly call for a retrospective, at the end of each iteration if not more frequently.</p>
<p>Some people &#8212; and at least one named method &#8212; argue that if we iterate, reflect, inspect, and adapt, we can and will become a high-performance team. This is true, to an extent: if we observe the right things and make the right choices, then of course we can improve as much as we want. Unfortunately, we were not born knowing the right things to observe, much less the right things to do about what we see. If we get it wrong, good things will be missed.</p>
<p style="padding-left: 30px;"><em>Alpha Team has been building features for quite some time now. When they hand things off to QA, they rarely come back, and when they do come back, Alpha looks at what they’ve done, and devises ways to avoid that kind of return from QA. Alpha has beefed up its testing ability substantially, and they use pair programming and code reviews to great benefit. Still, things seem sluggish. Even with no bugs coming back from QA at all, it still takes a week or two to be sure that features are done. This seems wrong, but they don’t see what to do.</em></p>
<p>Alpha Team, for some reason, has not thought of some valuable ways of restructuring the team, and their work, to help them get things done more quickly. The most effective teams move the QA function before development to the greatest extent possible. The testers are part of the team, not in some separate group. They provide tests before the iteration even starts, and the team considers anything “done” that passes all those tests. When something passes all the tests but does not seem “done”, the whole team considers, not who screwed up, but what tests were not thought of, and how to improve their thinking for next time. The result is much more certainty of where the team stands, and much less stress all around.</p>
<p>Where is a team supposed to get ideas like this? If we wait for each team to think of things, some of them may never do so. If we set up a standard way of doing things, we’ll be cheating ourselves of learning, and we’ll wind up making process followers of our people rather than intelligent creative workers.</p>
<p>What’s most important is that team members need to improve their skills. The organization can help with this by providing training, by subsidizing books, or by other means. We believe that the best approach is for the organization to encourage retrospectives, draw proposals from the team, try them, and watch what happens. When ideas come in from outside, make a point of noting what book or web site was read or what course was taken. In short, show respect for people’s efforts to improve themselves.</p>
<h3>Sources of Good Ideas</h3>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1120px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">For internal technical practices, we suggest looking at the practices of Extreme Programming. In particular, automated testing, both Test-Driven Development and Acceptance Test-Driven Development are very valuable, as we discuss elsewhere.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1120px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">For in-team workflow practices, look to Kanban and other approaches to limiting “Work in Progress”. These ideas highlight bottlenecks and delays inside the development team.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1120px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">It’s important to look at the larger flow as well. Nothing good will happen if we get development time down to zero in an organization that takes six months to get an idea off the ground and another six months to deploy it. Here we would recommend ideas from Lean, such as Value Stream Analysis.</div>
<p>For internal technical practices, we suggest looking at the practices of Extreme Programming. In particular, automated testing, both Test-Driven Development and Acceptance Test-Driven Development are very valuable, as we discuss elsewhere.</p>
<p>For in-team workflow practices, look to Kanban and other approaches to limiting “Work in Progress”. These ideas highlight bottlenecks and delays inside the development team.</p>
<p>It’s important to look at the larger flow as well. Nothing good will happen if we get development time down to zero in an organization that takes six months to get an idea off the ground and another six months to deploy it. Here we would recommend ideas from Lean, such as Value Stream Analysis.</p>
<h3>Is Our Process Framework Complete? Is It Sufficient?</h3>
<p>If your process framework includes taking in features at the beginning of an iteration, delivering them complete at the end, and reflecting on and improving what you do, it is probably complete. In principle, that&#8217;s enough to make a good framework.</p>
<p>It&#8217;s far from sufficient as a process, however. There are many practices, many ideas, many things that we have to do in order to improve. Those things are necessary and they should come from the team and its explorations. No process framework can list everything we need to do. No framework should try.</p>
]]></content:encoded>
			<wfw:commentRss>http://xprogramming.com/xpmag/beyond-agile-inspect-and-adapt-how/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
