<?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 &#187; XP Magazine</title>
	<atom:link href="http://xprogramming.com/category/xpmag/feed/" rel="self" type="application/rss+xml" />
	<link>http://xprogramming.com</link>
	<description>an agile software development resource</description>
	<lastBuildDate>Fri, 27 Aug 2010 15:53:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<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</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 &#8216;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 &#8216;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 the 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>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>
		<item>
		<title>Analogues for Test-Driven Development</title>
		<link>http://xprogramming.com/xpmag/analogues-for-test-driven-development/</link>
		<comments>http://xprogramming.com/xpmag/analogues-for-test-driven-development/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 14:18:19 +0000</pubDate>
		<dc:creator>Ron Jeffries</dc:creator>
				<category><![CDATA[XP Magazine]]></category>

		<guid isPermaLink="false">http://xprogramming.com/?p=1131</guid>
		<description><![CDATA[There has been some discussion of late regarding the use of Test-Driven Development ideas in non-software areas. This is a really good idea and I would like to talk about it here.]]></description>
			<content:encoded><![CDATA[<blockquote><p>There has been some discussion of late regarding the use of Test-Driven Development ideas in non-software areas. This is a really good idea and I would like to talk about it here.</p></blockquote>
<p>Kent Beck introduced &#8220;Test-Driven Development&#8221; as part of XP. This is a developer-focused design technique whereby developers write  microscopic tests and make them run, in a very short time cycle. The TLA is of course TDD.</p>
<p>XP proponents also introduced the notion of expressing requirements in terms of executable tests that the Customer (PO) understands, used to determine (in part) whether the software does what was requested. These are often called Acceptance Tests or Customer Tests, and facilitate communication of backlog items in concrete terms. By analogy, this technique is called ATDD: Acceptance Test Driven Development.</p>
<p>It&#8217;s worth noting that these two approaches, TDD and ATDD, are essentially the same idea: provide a concrete criterion, fulfill that criterion, then repeat. The distinction is of value because the idea is used at two very different levels, a matter of minutes for TDD, and days or longer for ATDD.</p>
<p>Concreteness and clarity are always valuable, even when what is being done is not amenable to executable testing as is software. Can we perhaps extend this test-driven idea to other areas? Certainly we can and probably we should.</p>
<p>Wise product owners will always make their needs as clear as possible. One way of helping teams focus on this is to extend the Customer Testing notion to non-software situations. In these other situations a Product Owner test might be as concrete as a set of measurements that a piece of hardware or furniture must meet, or vague as a set of criteria for hiring a new team member. In all cases, clear communication is enhanced as the criteria are made more clear.</p>
<p>Similarly, we might apply the idea of providing concrete criteria between elements of the dev team, or even for a single dev team member. For example, if a dev team member was building a stairway,  he might find it valuable to build a jig or template to ensure that each step was equally spaced and sized. Carpenters have known this trick for centuries, but we can certainly see that it is an analog of this more modern &#8220;test-driven&#8221; idea.</p>
<p>Where is the chicken, and where is the egg? We probably don&#8217;t care. The basic idea of setting up concrete criteria for the construction of something we want, and checking those criteria as we go, has been around a long time. Two specific instances of this idea have been given the names Test-Driven Development (TDD) and Acceptance Test-Driven Development (ATDD) in the software community, and it&#8217;s probably worth reserving those two terms for software, to avoid confusion.</p>
<p>The basic ideas, though, have been around for a long time, and are of value almost everywhere. Let&#8217;s use them where they can help us.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 9px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Kent Beck introduced &#8220;Test-Driven Development&#8221; as part of XP. This is a developer-focused design technique whereby developers write  microscopic tests and make them run, in a very short time cycle. The TLA is of course TDD.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 9px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">XP proponents also introduced the notion of expressing requirements in terms of executable tests that the Customer (PO) understands, used to determine (in part) whether the software does what was requested. These are often called Acceptance Tests or Customer Tests, and facilitate communication of backlog items in concrete terms. By analogy, this technique is called ATDD: Acceptance Test Driven Development.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 9px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">It&#8217;s worth noting that these two approaches, TDD and ATDD, are essentially the same idea: provide a concrete criterion, fulfill that criterion, then repeat. The distinction is of value because the idea is used at two very different levels, a matter of minutes for TDD, and days or longer for ATDD.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 9px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Concreteness and clarity are always valuable, even when what is being done is not amenable to executable testing as is software. Can we perhaps extend this test-driven idea to other areas? Certainly we can and probably we should.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 9px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Wise product owners will always make their needs as clear as possible. One way of helping teams focus on this is to extend the Customer Testing notion to non-software situations. In these other situations a Product Owner test might be as concrete as a set of measurements that a piece of hardware or furniture must meet, or vague as a set of criteria for hiring a new team member. In all cases, clear communication is enhanced as the criteria are made more clear.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 9px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Similarly, we might apply the idea of providing concrete criteria between elements of the dev team, or even for a single dev team member. For example, if a dev team member was building a stairway,  he might find it valuable to build a jig or template to ensure that each step was equally spaced and sized. Carpenters have known this trick for centuries, but we can certainly see that it is an analog of this more modern &#8220;test-driven&#8221; idea.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 9px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Where is the chicken, and where is the egg? We probably don&#8217;t care. The basic idea of setting up concrete criteria for the construction of something we want, and checking those criteria as we go, has been around a long time. Two specific instances of this idea have been given the names Test-Driven Development (TDD) and Acceptance Test-Driven Development (ATDD) in the software community, and it&#8217;s probably worth reserving those two terms for software, to avoid confusion.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 9px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The basic ideas, though, have been around for a long time, and are of value almost everywhere. Let&#8217;s use them where they can help us.</div>
<p><span id="more-1131"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://xprogramming.com/xpmag/analogues-for-test-driven-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kate Oneal: Funding Susan&#8217;s Projects</title>
		<link>http://xprogramming.com/xpmag/kate-oneal-funding-susans-projects/</link>
		<comments>http://xprogramming.com/xpmag/kate-oneal-funding-susans-projects/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 13:48: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=1049</guid>
		<description><![CDATA[Susan Prior drops in on Kate to talk about some new products she would like developed.]]></description>
			<content:encoded><![CDATA[<blockquote><p>Susan Prior drops in on Kate to talk about some new products she would like developed.</p></blockquote>
<p>&#8220;Hi, Susan,&#8221; said Kate. &#8220;You wanted to talk with me?&#8221;</p>
<p>&#8220;Hi, Kate. Yes. I&#8217;ve got some product ideas that I think we should invest in, and I wanted to talk with you about getting started. Dan is interested and said I should get your input.&#8221;</p>
<p>&#8220;Sure. What&#8217;s up?&#8221;</p>
<p>&#8220;There are three new products I&#8217;ve been talking about with my people and with customers. They&#8217;re all getting good reactions from prospects we&#8217;ve talked to. I think they would each bring us about a million dollars in the first year after release. I can show you the figures.&#8221;</p>
<p>Susan and Kate went over the figures, and talked about the three projects, which were codenamed Emerald, Obsidian, and Ruby.</p>
<p>Kate said: &#8220;The revenue looks good for each of these. What do you know about costs?&#8221;</p>
<p>&#8220;Gil and Jim looked at the specs and agreed that each one of these is about 15 person-months to develop.&#8221;</p>
<p>&#8220;OK,&#8221; said Kate. &#8220;What are you thinking you&#8217;d like to do?&#8221;</p>
<p>Susan said, &#8220;I have three people in Marketing who are working up feature stories. I would be the official Product Owner on all three, at least through first release. Development can free up six people soon. I&#8217;d like to get those six people committed to these projects for nine months to a year to get the products out.&#8221;</p>
<p>&#8220;Hmm. How did we get from 45 person months to 72 all of a sudden,&#8221; Kate said. &#8220;That&#8217;s a lot of money, from 375,000 to 600,000 dollars.&#8221;</p>
<p>&#8220;Well, I figured in a little extra in case Gil and Jim under-estimated, or in case they are late.&#8221;</p>
<p>&#8220;I understand, though I&#8217;m not sure I agree. And why are you going for all the money and time for all three projects at once?&#8221;</p>
<p>Susan said, &#8220;These are all important and valuable projects. We should get them all under way right away.&#8221;</p>
<p>&#8220;You&#8217;re asking Development to work on all three of them at once? Two people on each or something?&#8221;</p>
<p>&#8220;No,&#8221; said Susan. &#8220;Gil and Jim say the critical mass for each product is five or six. So I&#8217;ll have the team work on all three products.&#8221;</p>
<p>Kate put on her confused face. &#8220;All three? Wouldn&#8217;t it be better to work on them one at a time? Most important first?&#8221;</p>
<p>Susan said, &#8220;No. They&#8217;re all equally important and equally valuable. They should get equal priority.&#8221;</p>
<p>&#8220;Equal? Are you sure?&#8221;</p>
<p>&#8220;Well, as closely as we can tell,&#8221; said Susan. &#8220;Each of these projects takes about the same amount of time and will bring in about the same revenue flow. So they should get equal priority.&#8221;</p>
<p>Kate said: &#8220;Let&#8217;s test that thought. What if we could only afford one? What should we do?&#8221;</p>
<p>&#8220;I knew you would do this. This is my chance, and you want to wreck it. You&#8217;ve always hated me ever since the beginning.&#8221;</p>
<p>&#8220;Calm down,&#8221; Kate said. &#8220;I don&#8217;t want to wreck anything. And I don&#8217;t hate anyone. I can&#8217;t afford it, it poisons my soul. I just asked a question. What if we could only afford one? What would be best to do? Would you like to take a break to think about it?&#8221;</p>
<p>Susan steadied herself. &#8220;No, I&#8217;m OK. I&#8217;m just so excited and scared about this. These ideas are really good. They could make a difference to the company and I can show what I can really do.&#8221;</p>
<p>&#8220;I&#8217;d like that, too. You got off to a bad start with the team on Empire. But I know they are willing to work with you on this,&#8221; Kate said.</p>
<p>Susan asked, &#8220;You know? How do you know?&#8221;</p>
<p>Kate laughed: &#8220;I know almost everything around here. People tell me things. I think it&#8217;s because I spend so much time in the coffee room.</p>
<p>&#8220;Gil and Jim have both said, several times, that they respect your ideas and would like to see them get implemented.&#8221;</p>
<p>Susan calmed down some more. &#8220;They did? They never told me.&#8221;</p>
<p>Kate laughed again. &#8220;They&#8217;re programmers. They never say anything personal to anyone. It&#8217;s their job.&#8221;</p>
<p>&#8220;Good point. Anyway, if we could only do one, it should be Obsidian.&#8221;</p>
<p>&#8220;Why Obsidian?&#8221;</p>
<p>Susan said, &#8220;Three reasons. It&#8217;s a bit simpler, the prospects we have talked to seem more enthusiastic about it, and we understand it better.&#8221;</p>
<p>Kate thought, then spoke. &#8220;Those seem like good reasons. Thanks. Now, thinking again about doing these as you propose, let&#8217;s look at some pictures.&#8221;</p>
<p>This time Susan laughed. &#8220;I knew I could never get out of here without pictures.&#8221;</p>
<p>&#8220;It could be worse. I could make you listen to me singing. OK. Let&#8217;s look at a nine-month plan.&#8221;</p>
<p><img class="alignnone size-full wp-image-1058" title="making-date-parallel-blank" src="http://xprogramming.com/wp-content/uploads/making-date-parallel-blank.jpg" alt="making-date-parallel-blank" width="500" height="304" /></p>
<p>&#8220;OK,&#8221; Kate said. &#8220;Here&#8217;s a planning area. We have the three projects, Emerald, Obsidian, and Ruby. They&#8217;re all about the same size in stories, and you&#8217;re planning an ideal nine-month project. I won&#8217;t show any contingency here, just for clarity. OK?&#8221;</p>
<p>&#8220;Yes,&#8221; said Susan. &#8220;We may need the contingency, though.&#8221;</p>
<p>&#8220;Don&#8217;t worry, we&#8217;ll talk about that later. Now here is the way features will grow over the nine months, according to plan.&#8221;</p>
<p>Kate added feature lines to the chart:</p>
<p><img class="alignnone size-full wp-image-1059" title="making-date-parallel11" src="http://xprogramming.com/wp-content/uploads/making-date-parallel11.jpg" alt="making-date-parallel11" width="500" height="300" /></p>
<p>Kate went on. &#8220;The features all grow at about the same rate until the projects are all done after nine months. That&#8217;s the starting picture, agreed?&#8221;</p>
<p>Susan nodded. &#8220;Yes, exactly. The developers would work in parallel on all three products&#8221;</p>
<p>Kate said, &#8220;In parallel. Why is that good?&#8221;</p>
<p>&#8220;So we could see progress on each product.&#8221;</p>
<p>&#8220;And why do we need to see progress on each product?&#8221;</p>
<p>Susan thought. &#8220;Well, so that if anything goes wrong we can do something about it.&#8221;</p>
<p>&#8220;OK, I guess. Now when do we start making money from these products?&#8221;</p>
<p>Susan said, &#8220;If it goes according to the plan there and we don&#8217;t need the contingency, we start making money shortly after the nine months is up.&#8221;</p>
<p>&#8220;Shortly after,&#8221; Kate said.</p>
<p>&#8220;Well, we would have to roll them out with advertising, documentation and training and such.&#8221;</p>
<p>&#8220;Those couldn&#8217;t start sooner?&#8221;</p>
<p>Susan said, &#8220;Well but what happens if  the developers are late?&#8221;</p>
<p>&#8220;You keep asking that,&#8221; Kate said. &#8220;In my view developers are never late. Products are late sometimes, but never developers. I suppose that sounds like crazy talk.&#8221;</p>
<p>&#8220;Frankly, yes,&#8221; said Susan.</p>
<p>&#8220;OK, we&#8217;ll defer that for a moment. Returning to the picture, we start earning money at three million a year, starting nine months out, is that right?&#8221;</p>
<p>&#8220;Yes, that&#8217;s right,&#8221; Susan said.</p>
<p>&#8220;OK. Now take a look at this drawing instead.&#8221; Kate erased some lines and drew some new ones:</p>
<p><img class="alignnone size-full wp-image-1063" title="making-date-3-mo" src="http://xprogramming.com/wp-content/uploads/making-date-3-mo.jpg" alt="making-date-3-mo" width="500" height="300" /></p>
<p>&#8220;Susan, now I&#8217;m drawing a picture of what happens if we do the three projects one at a time. The new vertical lines are three release dates, at three months, six, and nine.&#8221;</p>
<p>Susan said, &#8220;But what about contingency?&#8221;</p>
<p>&#8220;I&#8217;ve left that out, as I did in the previous picture. We&#8217;ll talk about it though, don&#8217;t worry. Now in this scheme, we focus the developers on first Obsidian, then Emerald, then Ruby. Look what happens to Obsidian development:&#8221;</p>
<p><img class="alignnone size-full wp-image-1064" title="making-date-3-mo-obs" src="http://xprogramming.com/wp-content/uploads/making-date-3-mo-obs.jpg" alt="making-date-3-mo-obs" width="500" height="304" /></p>
<p>Susan said, &#8220;Yes. It gets done right away. But the others aren&#8217;t even started. That&#8217;s risky, isn&#8217;t it?&#8221;</p>
<p>Kate said, &#8220;I&#8217;m not clear on why it would be, so marshall your thoughts. But tell me what happens to company revenue with this scheme.&#8221;</p>
<p>&#8220;Well, we start earning after three months instead of nine.&#8221;</p>
<p>&#8220;Do we make more, or less, or about the same,&#8221; Kate said.</p>
<p>&#8220;About the same. Maybe more, because we are in the market sooner and might get more early adopters.&#8221;</p>
<p>&#8220;What about the impact on this fiscal year, and on our ability to fund projects?&#8221;</p>
<p>Susan scratched on a scrap of paper for a moment. &#8220;Well, we&#8217;d be to market six months sooner and in the first six months I think we get about 40 percent of the 12 months revenue for Obsidian. If we start right away, that would all fall in this fiscal year.&#8221;</p>
<p>&#8220;Yes! That would be $400,000 and that&#8217;s just about the low-end cost estimate for all three projects. What does that do to our concern about deferred risks for Emerald and Ruby?&#8221;</p>
<p>Susan thought. &#8220;OK, I see. Total cost of those two projects is scheduled to be less than $300K. Even if they completely failed, Obsidian&#8217;s first six months revenue would cover the costs. But again, what if development can&#8217;t get Obsidian done in three months?&#8221;</p>
<p>Kate smiled. &#8220;Go with me a bit longer while I finish this picture. Here&#8217;s the picture of the other two projects getting done sequentially after Obsidian:</p>
<p><img class="alignnone size-full wp-image-1065" title="making-date-3-all-3" src="http://xprogramming.com/wp-content/uploads/making-date-3-all-3.jpg" alt="making-date-3-all-3" width="500" height="304" /></p>
<p>&#8220;So here I&#8217;ve just assumed we&#8217;ll do Emerald next, then Ruby. It could be done the other way. So Emerald is done after six months. What happens with revenue there?&#8221;</p>
<p>&#8220;If things go according to plan, we think Emerald would bring in about 150K in its  first quarter out,&#8221; Susan said.</p>
<p>&#8220;Yes. So even that revenue is a big chunk of the cost of doing Ruby, and of course we&#8217;re already covered by Obsidian. So by the end of the three projects, we would see $500,000 in revenue, and it would all fall into this fiscal year. And the total cost of the projects you are asking for is around $375,000 if we use the development estimates. Even with six developers, we are looking at expenses of about 3/4 of 600K, or 450K for the nine months. See the difference?&#8221;</p>
<p>Susan stared for a moment. &#8220;Yes, sure. Done your way, the same projects actually break even this year or earn a small profit. Done my way, we spend $450,000 before we get anything.&#8221;</p>
<p>Kate said, &#8220;Let&#8217;s not think my way your way. Done in parallel, the projects burn through almost a half a million dollars this year. Done in series, they burn $150,000 in the first quarter, then start earning back, and we are back to even by the end of the fiscal year.&#8221;</p>
<p>Kate smiled. &#8220;If it was your money, Susan, which way would be &#8216;your way&#8217;?&#8221;</p>
<p>Susan said, &#8220;I get it. My way is to do this in series. That&#8217;s what I recommend. Yes, totally. I&#8217;m sure that&#8217;s what I meant all along. Serial.&#8221;</p>
<p>Kate laughed. &#8220;I thought so. It&#8217;s almost lunch time, are we done for the morning?&#8221;</p>
<p>Susan thought. &#8220;I think so, yes. I&#8217;d ask to have lunch with you but I need to think a bit first. I&#8217;m still worried about contingencies and risks.&#8221;</p>
<p>&#8220;Good,&#8221; said Kate. &#8220;I&#8217;d like you to think about that. As a hint, think in terms of what you can do as Product Owner to manage the risk. But keep in mind it&#8217;s your money, and you can just barely afford the $150K a month for your six developer team.&#8221;</p>
<p>&#8220;That&#8217;s scary,&#8221; Susan said. &#8220;I guess that&#8217;s what you feel all the time?&#8221;</p>
<p>&#8220;Well, it&#8217;s the problem I have all the time, Susan. But I&#8217;m not very scared. See if you can figure out why. When shall we meet again?&#8221;</p>
<p>&#8220;I&#8217;d like to come in again tomorrow, if that&#8217;s OK,&#8221; said Susan.</p>
<p>&#8220;Sure thing,&#8221; said Kate. &#8220;I&#8217;ll be here. Thanks, this was fun.&#8221;</p>
<p>&#8220;It was,&#8221; said Susan. &#8220;Oddly enough, it was. Thanks, Kate.&#8221;</p>
<p>&#8220;You&#8217;re welcome, Susan, and thank you. We could use another three million in revenue.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://xprogramming.com/xpmag/kate-oneal-funding-susans-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
