<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  --><rss xmlns:lj="http://www.livejournal.org/rss/lj/1.0/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>
  <title>Traversing the Ocean of Knowledge</title>
  <link>http://sirenian.livejournal.com/</link>
  <description>Traversing the Ocean of Knowledge - LiveJournal.com</description>
  <lastBuildDate>Wed, 01 Jul 2009 10:22:19 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>sirenian</lj:journal>
  <lj:journalid>5312024</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <copyright>NOINDEX</copyright>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/sirenian" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/60524.html</guid>
  <pubDate>Wed, 01 Jul 2009 10:22:19 GMT</pubDate>
  <title>Pixie Driven Development</title>
  <link>http://sirenian.livejournal.com/60524.html</link>
  <description>&lt;p&gt;While I&amp;#8217;m coding, I usually have a bunch of very helpful pixies hanging around my desk. (They&amp;#8217;re &lt;a href="http://dannorth.net"&gt;Dan&amp;#8217;s&lt;/a&gt; pixies really, since he thought of them first; I&amp;#8217;m just borrowing them.)&lt;/p&gt;
&lt;p&gt;The pixies are bored, and just waiting for a job to do. So, when I&amp;#8217;m coding a class, they look out for opportunities to help out that class. When I&amp;#8217;m coding the Game of Life, for instance, I write a Gui class that lets me toggle the cells on the grid. Then I have to work out what happens when I toggle the cells.&lt;/p&gt;
&lt;p&gt;I could do it in the same class - in the gui - but fortunately the pixies step in to prevent me making these poor design decisions. &amp;#8220;Oh, I&amp;#8217;ll do that for you!&amp;#8221; one of the pixies calls out. (They usually start with this phrase, and they&amp;#8217;re all called Thistle.)&lt;/p&gt;
&lt;p&gt;&amp;#8220;Thanks, Thistle! Do you know what you&amp;#8217;re doing?&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Um, not really. What&amp;#8217;s toggling a cell? Why&amp;#8217;s that valuable? What is it you want me to do for you again?&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;I need you to handle the cell living and dying when I toggle it.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Oh, okay!&amp;#8221; Thistle says. &amp;#8220;I don&amp;#8217;t like the &amp;#8216;and&amp;#8217; word so much, though. It makes me feel like I&amp;#8217;m doing two things at once. What do you call that? The living and dying thing?&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Hm.&amp;#8221; I think about it while the pixie taps his foot impatiently. &amp;#8220;I&amp;#8217;d call it a lifespan, maybe. Can you handle the cell lifespan for me? Just let me toggle the cells. I also need you to tell any observers that there have been some changes to the cells, and give them a way of finding out where those changes are. I think they&amp;#8217;ve already got an idea of what they want there.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Really? Both things?&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Well, there&amp;#8217;s no point doing one if you don&amp;#8217;t do the other. It&amp;#8217;s all part of the same role.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;If that&amp;#8217;s what&amp;#8217;s valuable to you then I&amp;#8217;ll do it,&amp;#8221; he says. &amp;#8220;Just pretend I&amp;#8217;m there for the moment; I&amp;#8217;ll be back when you need me.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Fine,&amp;#8221; I say. So I use a mock pixie in place of the real one. I create an interface which does what the pixie&amp;#8217;s going to do: &lt;code&gt;IHandleCellLifespans&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;(See, it&amp;#8217;s an interface that starts with &amp;#8220;I&amp;#8221;, and it represents a role that the pixie is playing for me. This is a role-based, anthropomorphized interface.)&lt;/p&gt;
&lt;p&gt;So, now we have code which compiles. Of course, the real code in the Gui is null, or maybe a null object pattern - I might create something like &lt;code&gt;IHandleCellLifespans.KILLING_THEM_ALL&lt;/code&gt; if I&amp;#8217;m feeling particularly mean. But that&amp;#8217;s all right, because Thistle the pixie will step in when it&amp;#8217;s time.&lt;/p&gt;
&lt;p&gt;So, I run the code. I&amp;#8217;ve usually written an automated scenario. It doesn&amp;#8217;t matter whether I run the scenario or step through the game manually; both result in the same thing happening, or not happening - no matter where I click the mouse, no cells appear. Pixies are notoriously unreliable.&lt;/p&gt;
&lt;p&gt;Since I can&amp;#8217;t rely on the pixies, I inject a new class to handle the dependency instead. I decide to call it the &lt;code&gt;Engine&lt;/code&gt;, for the moment, and I write an example of how to use it and what it should do for me.&lt;/p&gt;
&lt;p&gt;The next step is the &lt;code&gt;Next&lt;/code&gt; button. I think about how this would work in the &lt;code&gt;Engine&lt;/code&gt;, and start writing some code to show how the &lt;code&gt;Engine&lt;/code&gt; needs to behave. I&amp;#8217;ll need to calculate the number of neighbours, and apply the rules accordingly.&lt;/p&gt;
&lt;p&gt;One of the pixies pipes up, &amp;#8220;Oh, I&amp;#8217;ll do the neighbours!&amp;#8221; and another one says, &amp;#8220;Oh, I&amp;#8217;ll handle the rules!&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Fantastic!&amp;#8221; I&amp;#8217;m so trusting; I always forget what these pixies are really like when it comes to getting the work done.&lt;/p&gt;
&lt;p&gt;&amp;#8220;If I&amp;#8217;m going to count the neighbours,&amp;#8221; Thistle says, &amp;#8220;I&amp;#8217;ll need some information about where I&amp;#8217;m counting from, and what&amp;#8217;s around me.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Ah, I can get the information from the cell itself,&amp;#8221; I say.&lt;/p&gt;
&lt;p&gt;&amp;#8220;No, don&amp;#8217;t do that. It&amp;#8217;s fine where it is; I&amp;#8217;ll just sit inside the cell and do it from there. Can you give me something that lets me know where the other cells around me are? Then I can do the work for you.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Sure,&amp;#8221; I say, &amp;#8220;the &lt;code&gt;Engine&lt;/code&gt; knows where the life is. I&amp;#8217;ll just give you access to the &lt;code&gt;Engine&lt;/code&gt; and let it play that role for you.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Can&amp;#8217;t I do it instead? I&amp;#8217;m bored,&amp;#8221; one of the other pixies asks. &amp;#8220;Just give me the information from the engine, and let him talk to me instead.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Um, Okay.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Of course, when I try to run it then I find out that all the pixies have mysteriously vanished, and I end up assigning the role to the Engine anyway, or one of its anonymous inner classes. Having it defined as a different role means that it&amp;#8217;s easy to move this responsibility around. Maybe I&amp;#8217;ll create a World to look after the cells, and let that do the job instead; the pixies certainly aren&amp;#8217;t very helpful.&lt;/p&gt;
&lt;p&gt;&amp;#8220;What do you mean, we&amp;#8217;re not very helpful?&amp;#8221; Thistle says. &amp;#8220;Look at your code. You haven&amp;#8217;t written anything that isn&amp;#8217;t needed by something else, so there&amp;#8217;s less code to maintain. Because we jump in all the time to try and do jobs for you, every time you can assign a new responsibility to something else, you do - that&amp;#8217;s the single responsibility principle in action; none of your classes are doing too much. And you can replace us with something else that does the job at any time - that&amp;#8217;s the Liskov Substitution principle. The roles we perform are clearly named. It&amp;#8217;s been easy to describe the behaviour of each class using mocks to stand in when we&amp;#8217;re not there, and the examples are very readable. You can also use them to work out whether your code still works or not, by running them as tests.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Okay. I can&amp;#8217;t see myself relying on you guys for bigger, enterprise stuff, though.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;What do you mean?&amp;#8221; Thistle looks offended. Oops.&lt;/p&gt;
&lt;p&gt;&amp;#8220;Well, let&amp;#8217;s say that I&amp;#8217;ve got a shop, and I need the tills to talk to stock control.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Controlling stock? Oh, I&amp;#8217;ll do that!&amp;#8221; one of the pixies announces excitedly.&lt;/p&gt;
&lt;p&gt;&amp;#8220;What, all on your own?&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Well, I&amp;#8217;ll probably delegate it to a team, but that&amp;#8217;s my responsibility - you don&amp;#8217;t need to worry about it. I&amp;#8217;ll be there when you need me. Just pretend I&amp;#8217;m there for now. How would you like to find me? What kind of stuff are you going to send to me, and what do I need to do with it? What would you like back?&amp;#8221;&lt;/p&gt;
&lt;p&gt;So I start with something simple - a URL that I&amp;#8217;ll use to find Thistle the pixie, some domain objects that I want to send him, and some objects that I&amp;#8217;d like back in return. We talk about how to get the information across, whether some of the tills might provide different stock information, how to talk to the claims department about the quality of the goods we&amp;#8217;re selling, and whether I&amp;#8217;ll be okay if the claims he gives me have more information than I need.&lt;/p&gt;
&lt;p&gt;&amp;#8220;Hold on,&amp;#8221; I say. &amp;#8220;You&amp;#8217;ve got me playing this game now. I&amp;#8217;m not a Claims Department. I&amp;#8217;m not going to do the job myself. I&amp;#8217;ve got a home to go to!&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Meh, never mind,&amp;#8221; Thistle replies. &amp;#8220;I&amp;#8217;ll be sitting with this team over here, coding the stock control. We&amp;#8217;ll just pretend you&amp;#8217;re doing the job; we&amp;#8217;ll mock you out for now.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;How will I know that I&amp;#8217;m doing the job correctly?&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;We&amp;#8217;ll have to talk to each other occasionally. Is that going to be hard? We&amp;#8217;ll write some scenarios over in our team that describe how we&amp;#8217;re going to use you.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;What if I make a mistake?&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Do you know what mistakes you&amp;#8217;re going to make already?&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;No,&amp;#8221; I confess. &amp;#8220;I&amp;#8217;m sure there will be some, though.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;When you make a mistake, we&amp;#8217;ll deal with it at that point. Sound good?&amp;#8221;&lt;/p&gt;
&lt;p&gt;I think about it. I reckon I could write some code that pretends to be doing the job of the Claims Department and responds correctly to the way they&amp;#8217;ve described how they&amp;#8217;re going to use me - just for those examples - then I could go home and Thistle would never know. I knock up a quick stub and slip it into the stock control team&amp;#8217;s scenarios, then I disappear too, just like the pixies. I figure I&amp;#8217;ll start coding a real Claims Department that does a more robust job tomorrow.&lt;/p&gt;
&lt;p&gt;When I get back the next morning, all the pixies performing the role of Stock Control have been replaced with code too. The Stock Control team claim that they&amp;#8217;ve never even seen them.&lt;/p&gt;
&lt;p&gt;I corner Thistle again. &amp;#8220;You&amp;#8217;re really not very helpful, are you?&amp;#8221;&lt;/p&gt;
&lt;p&gt;Thistle looks sulky. &amp;#8220;Of course we are! Look at your architecture. You&amp;#8217;ve got simple messages going back and forth. Your code is very tolerant of extra information, as is the code on this side. You&amp;#8217;ve got lovely RESTful URLs, because you were thinking about how you&amp;#8217;d like to find us, instead of us providing you with some weird mechanism that doesn&amp;#8217;t match exactly what you wanted. We&amp;#8217;ve got clean interfaces and APIs. There are no extra columns in your database, because you only replaced exactly what we said we&amp;#8217;d do in the first place. You&amp;#8217;ve got scenarios to describe how we work together, and at a unit level examples to describe how you&amp;#8217;re delegating responsibility to the other pixies. It&amp;#8217;s a lovely, maintainable system with a fairly flat cost of change. Isn&amp;#8217;t that what you wanted?&amp;#8221;&lt;/p&gt;
&lt;p&gt;I nod thoughtfully. &amp;#8220;I think it would have been easier for me to just write the code instead of going through you all the time.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Ah,&amp;#8221; says Thistle, &amp;#8220;but then you&amp;#8217;d have code that was easy to write, instead of code that&amp;#8217;s easy to use.&amp;#8221;&lt;/p&gt;
&lt;p&gt;I think about how they made me fill in the role of the Claims Department. &amp;#8220;You never did any of the work, though! I could have done that job myself; put myself in each of those roles and then replaced myself with real code. That would have let me create consumer-driven interfaces just as easily as using you.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Thistle shrugs. &amp;#8220;If that&amp;#8217;s what works for you, sure.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Won&amp;#8217;t people think I&amp;#8217;m a bit mad? If I start talking about how I&amp;#8217;m personally going to use a particular class, or how I&amp;#8217;m offering to do a job for another?&amp;#8221;&lt;/p&gt;
&lt;p&gt;Thistle looks at me with raised eyebrows, then gestures at all the other pixies clustered around my desk.&lt;/p&gt;
&lt;p&gt;&amp;#8220;I think it&amp;#8217;s a little late to be worrying about that now,&amp;#8221; he says.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/07/01/pixie-driven-development/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/07/01/pixie-driven-development/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>bdd</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/60407.html</guid>
  <pubDate>Tue, 16 Jun 2009 08:55:13 GMT</pubDate>
  <title>Business Velocity</title>
  <link>http://sirenian.livejournal.com/60407.html</link>
  <description>&lt;p&gt;&lt;a href="http://blog.nayima.be/"&gt;Pascal Van Cauwenberghe&lt;/a&gt; has written &lt;a href="http://blog.nayima.be/2009/06/08/estimating-business-value/"&gt;a great post on estimating business value&lt;/a&gt;, tying it into a &lt;a href="http://www.infoq.com/news/2009/05/pulling-power"&gt;feature-injection&lt;/a&gt; style template. I particularly like the idea of calculating business velocity, and showing value earned over cost on a visible chart.&lt;/p&gt;
&lt;p&gt;Even though we know that &lt;a href="http://business.lovetoknow.com/wiki/Cost_Accounting"&gt;cost accounting isn&amp;#8217;t useful without looking at ROI&lt;/a&gt;, many companies still have this focus (how many people have had problems getting hold of &lt;a href="http://www.sharpie.com/enUS/Product/Sharpie_Fine_Point_Permanent_Marker.html"&gt;sharpies&lt;/a&gt; because they&amp;#8217;re &amp;quot;too expensive&amp;quot;&amp;lt;/a&amp;gt;? Coloured post-its? Free coffee?)&lt;/p&gt;
&lt;p&gt;Perhaps by making the return on investment over time apparent to everyone, we can motivate the team, show the value we&amp;#8217;re earning and gain the trust of the business at the same time.&lt;/p&gt;
&lt;p&gt;As an aside, I remember one client where the deadline was very tight, but nobody wanted to work overtime or weekends. Our PM asked us if there was anything we&amp;#8217;d like to have which would help us work more effectively. We asked for - and got - fresh fruit every day. The difference in our work - both the amount and quality - was noticeable! (We already felt very well respected, so I discount the placebo effect here).&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s amazing how much difference a few pounds of expense can make.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/06/16/business-velocity/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/06/16/business-velocity/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>business value</category>
  <category>stories</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/59945.html</guid>
  <pubDate>Tue, 02 Jun 2009 15:52:58 GMT</pubDate>
  <title>Doing the simplest thing and YAGNI</title>
  <link>http://sirenian.livejournal.com/59945.html</link>
  <description>&lt;p&gt;On an aside, some people have asked me why I&amp;#8217;ve chosen to set up &lt;a href="http://lunivore.com"&gt;my services site&lt;/a&gt; as a hard-coded website with server-side includes, instead of using another Wordpress blog or something similar. I did it because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It was the quickest way I could think of to get a website out with a reasonable amount of content&lt;/li&gt;
&lt;li&gt;I wanted to be able to get the style right (or at least usable) before I had to wrap it around Wordpress&lt;/li&gt;
&lt;li&gt;I had no idea what I was going to put in the website when I started.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Having said that, it&amp;#8217;s now annoying me. There&amp;#8217;s enough up there that the next stage is to, um, move it to a customised Wordpress site (it should look exactly the same, but be easier for me to administer).&lt;/p&gt;
&lt;p&gt;I did learn a lot about CSS, Mercurial over SSH from Windows, and Apache SSI configuration while I was playing with this. It will be much easier for me to set up the Wordpress site, now I know what I &lt;em&gt;don&amp;#8217;t&lt;/em&gt; want on it and what I need for the styling to work. And I didn&amp;#8217;t need a Wordpress site when I started. YAGNI wins again.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/06/02/doing-the-simplest-thing-and-yagni/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/06/02/doing-the-simplest-thing-and-yagni/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>uncategorized</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/59680.html</guid>
  <pubDate>Tue, 02 Jun 2009 15:50:58 GMT</pubDate>
  <title>Dreyfus Modelling</title>
  <link>http://sirenian.livejournal.com/59680.html</link>
  <description>&lt;p&gt;I&amp;#8217;ve put up a page on &lt;a href="http://lunivore.com"&gt;lunivore.com&lt;/a&gt; which describes &lt;a href="http://lunivore.com/dreyfusmodelling.html"&gt;how I use the Dreyfus Model&lt;/a&gt; in coaching. This model was the one we adapted to mark the XP values in the &lt;a href="http://localhost/gameoflife.html"&gt;Game of Life workshop at Screwfix&lt;/a&gt;, and I&amp;#8217;ve also found it powerful when used in one-on-one coaching in combination with &lt;a href="http://en.wikipedia.org/wiki/GROW_model"&gt;GROW&lt;/a&gt; and &lt;a href="http://www.nlp-now.co.uk/wfo.htm"&gt;well-formed outcomes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s taken me a fair bit of practice to get good at building Dreyfus models, using them appropriately and adapting them for different organisations; however, I&amp;#8217;ve not encountered much downside to using them. If anything, the act of creating them has taught me a great deal (&lt;a href="http://dannorth.net"&gt;Dan North&lt;/a&gt; reckons there&amp;#8217;s a Dreyfus Model for Dreyfus Modelling.)&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/06/02/dreyfus-modelling/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/06/02/dreyfus-modelling/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>uncategorized</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/59458.html</guid>
  <pubDate>Fri, 29 May 2009 10:07:19 GMT</pubDate>
  <title>Pulling Power and Kanban experiences</title>
  <link>http://sirenian.livejournal.com/59458.html</link>
  <description>&lt;p&gt;My first ever article, &lt;a href="http://www.infoq.com/news/2009/05/pulling-power"&gt;&amp;#8220;Pulling Power: a new Software Lifespan&amp;#8221;&lt;/a&gt; is up on &lt;a href="http://www.infoq.com"&gt;InfoQ&lt;/a&gt;. BDD, Feature Injection, Lean and Kanban playing nice together!&lt;/p&gt;
&lt;p&gt;Big thanks to Dan North, Chris Matts, David Anderson, Amr Elssamadisy and the amalgam of developers who make up &amp;#8220;Jerry&amp;#8221;; also to the Thoughtworkers who reviewed my article and gave me advice, and the Kanbanjins like Eric Willeke who patiently talked me through Lean and Kanban. Several times. Anything I still haven&amp;#8217;t understood is my error, not theirs.&lt;/p&gt;
&lt;p&gt;I wish I could have put in everything I&amp;#8217;ve learnt about Kanban, which is far larger than this article allows. It strikes me as a lovely, simple, high-discipline, least-wasteful way to deliver software, and it matches my feeling that you should fit your process to reality, not reality to your process.&lt;/p&gt;
&lt;p&gt;My experiments with Kanban boards so far have been highly successful. Now I want to know about the problems, too. Have you tried Kanban? What happened? Did you try to introduce it? Did that work out? If not, why not? Did you think about introducing it, but decide not to? Tell me your stories!&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/05/29/pulling-power-and-kanban-experiences/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/05/29/pulling-power-and-kanban-experiences/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>bdd</category>
  <category>stories</category>
  <category>writing</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/59380.html</guid>
  <pubDate>Thu, 28 May 2009 10:53:43 GMT</pubDate>
  <title>Feedback sandwiches and Real Options</title>
  <link>http://sirenian.livejournal.com/59380.html</link>
  <description>&lt;p&gt;Esther Derby writes &lt;a href="http://www.estherderby.com/weblog/2009/05/praise-sandwich-tastes-icky-ii.html"&gt;great advice&lt;/a&gt; on giving feedback. I&amp;#8217;m intrigued by her closing comment:&lt;/p&gt;
&lt;div style="margin-left: 30px; margin-right: 30px;"&gt;Praise sandwich tends to erode trust in the feedback givers intentions, and once that&amp;#8217;s gone, there&amp;#8217;s not much chance any useful information will get through.&lt;/div&gt;
&lt;p&gt;I think it depends on how a feedback sandwich is used. I tend to use it to make a safe space in which I can share feedback with people without them feeling like the world&amp;#8217;s just been cut out from underneath them. I find it helps me phrase feedback in a very positive, constructive manner.&lt;/p&gt;
&lt;p&gt;This is not, to me, the most effective feedback sandwich, despite adhering to any rules I might previously have given:&lt;/p&gt;
&lt;div style="margin-left: 30px; margin-right: 30px;"&gt;&amp;#8220;I learn a lot from pair-programming with you, but you sometimes take the keyboard from me when I&amp;#8217;m trying to type. If you could please ask me before you do that, it would help me to learn and I&amp;#8217;d feel less frustrated. I&amp;#8217;d like to pair with you more often and I think it could be fun.&amp;#8221;&lt;/div&gt;
&lt;p&gt;So, here&amp;#8217;s how I&amp;#8217;m using the feedback sandwich now (all &lt;a href="http://andypalmer.com/2009/05/making-feedback-more-effective/"&gt;other&lt;/a&gt; &lt;a href="http://www.estherderby.com/weblog/labels/feedback.html"&gt;rules&lt;/a&gt; of &lt;a href="http://www.evancarmichael.com/Business-Coach/330/How-To-Give-Effective-Feedback.html"&gt;giving&lt;/a&gt; &lt;a href="http://www.thekua.com/atwork/2009/04/improving-collaboration-between-developers-and-testers/"&gt;effective&lt;/a&gt; &lt;a href="http://www.thekua.com/atwork/2007/06/asking-for-feedback-today/"&gt;feedback&lt;/a&gt; also apply).&lt;/p&gt;
&lt;h3&gt;I value this&amp;#8230;&lt;/h3&gt;
&lt;p&gt;Whenever someone gives me some advice or criticism, it makes me want to change things so that I&amp;#8217;m more effective, or so that the problem is fixed.&lt;/p&gt;
&lt;p&gt;For instance, a graphic designer gave me some feedback on my new business cards. &amp;#8220;You need to revisit the whole card,&amp;#8221; he told me. &amp;#8220;Change the shape, add some texture. Put in a tag line, something catchy that people can remember you by.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Well, I&amp;#8217;m not a graphical artist! Nor am I pretending to be, so the feedback didn&amp;#8217;t really get me down. I knew I couldn&amp;#8217;t get new business cards ready in time for the conference, nor can I really afford the services of a graphical artist right now. I thought to myself, &amp;#8220;I could just give out my email address; that&amp;#8217;s worked for me before. I don&amp;#8217;t really need to take my business cards to the conference.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Then it occurred to me much later that perhaps that wasn&amp;#8217;t the artist&amp;#8217;s intention. So I asked him: &amp;#8220;Would it be better for me not to take the cards at all?&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Oh, no! That&amp;#8217;s not what I meant. They&amp;#8217;re fine, I mean, they&amp;#8217;ll do the job if that&amp;#8217;s what you want. I just wanted to give you some help to improve them.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Fantastic!&amp;#8221; I smiled. &amp;#8220;So, what do you like about them?&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;I like the colour scheme, and the symbol you&amp;#8217;ve chosen - the big red moon - is very powerful.&amp;#8221; And then he described the things he liked about the card.&lt;/p&gt;
&lt;p&gt;Without anchoring the things that I value, I am in danger of losing them altogether. If I bring up someone&amp;#8217;s annoying behaviour when they pair program with me, they might just stop pair programming. If I suggest a different way of solving a problem, they might stop thinking of themselves as problem-solvers. The human mind has this dangerous way of abstracting generalisations from particular situations, and confidence can be easily knocked! Even in the situation with the business cards, where I didn&amp;#8217;t really feel depressed by the feedback, I was in danger of throwing away valuable work.&lt;/p&gt;
&lt;p&gt;So, I can anchor the things I value; things that might change as a result of what I&amp;#8217;m about to say. &lt;/p&gt;
&lt;div style="margin-left: 30px; margin-right: 30px;"&gt;&amp;#8220;I learn a lot when I&amp;#8217;m pair-programming with you.&amp;#8221;&lt;br /&gt;
&amp;#8220;I love the solution you&amp;#8217;ve come up with.&amp;#8221;&lt;br /&gt;
&amp;#8220;I really like the colour scheme and the icon.&amp;#8221;&lt;/div&gt;
&lt;h3&gt;And&amp;#8230;&lt;/h3&gt;
&lt;p&gt;The next bit of the &amp;#8220;feedback sandwich&amp;#8221; is the trickiest. It&amp;#8217;s always tempting to put the word &amp;#8220;but&amp;#8221; or &amp;#8220;however&amp;#8221; in here! The word &amp;#8220;but&amp;#8221; has the impact of &lt;a href="http://www.inspiritive.com.au/article_andreas_buts.htm"&gt;negating the first part of the sentence&lt;/a&gt;. I&amp;#8217;ve heard this example a lot:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mum:&lt;/strong&gt; Well, he&amp;#8217;s ugly, but he&amp;#8217;s rich.&lt;br /&gt;
&lt;strong&gt;Daughter:&lt;/strong&gt; Yes, Mum. He&amp;#8217;s rich, but he&amp;#8217;s ugly.&lt;/p&gt;
&lt;p&gt;See what I mean?&lt;/p&gt;
&lt;p&gt;Even the act of thinking &amp;#8220;but&amp;#8221; tends to lead me to phrase it unconsciously. So I&amp;#8217;ve been trying to replace it with the word &amp;#8220;and&amp;#8221;. Like &amp;#8220;should&amp;#8221; in BDD, this leads my brain to go a different way. Instead of thinking of how to phrase the negative advice in a way which is palatable, I find myself phrasing things very differently.&lt;/p&gt;
&lt;div style="margin-left: 30px; margin-right: 30px;"&gt;&amp;#8220;I learn a lot when I&amp;#8217;m pair-programming with you and I&amp;#8217;d like to learn more.&amp;#8221;&lt;br /&gt;
&amp;#8220;I love the way you&amp;#8217;ve solved this problem, and I&amp;#8217;d like to build on that.&amp;#8221;&lt;br /&gt;
&amp;#8220;I love the colour scheme and the icon, and I think there may be some ways of making them stand out.&amp;#8221;&lt;/div&gt;
&lt;p&gt;This has led me to new ways of providing feedback. I can even talk to managers now!&lt;/p&gt;
&lt;div style="margin-left: 30px; margin-right: 30px;"&gt;&amp;#8220;Thank you very much for letting us try out this Agile stuff! It&amp;#8217;s great; I&amp;#8217;m having fun. I really like the lightweight documentation, and I&amp;#8217;d like to try and work out how to align that aspect of it with the reports you asked me for. Can you help me?&amp;#8221;&lt;/div&gt;
&lt;p&gt;I don&amp;#8217;t always need to criticise the behaviour that&amp;#8217;s causing me problems in order to suggest changing it. Thinking about the last part of the feedback sandwich, and using that to work out what goes after the &amp;#8220;and&amp;#8230;&amp;#8221;, helps me work out what to say.&lt;/p&gt;
&lt;h3&gt;&amp;#8230;I want this.&lt;/h3&gt;
&lt;p&gt;There&amp;#8217;s some place that I want to get to; some goal that I want to achieve. NLP&amp;#8217;s &lt;a href="http://www.nlp-now.co.uk/wfo.htm"&gt;well-formed outcomes&lt;/a&gt; can help here, or if you&amp;#8217;re a software developer, think about the &lt;a href="http://testingdiary.blogspot.com/2009/05/we-aint-got-no-smart-requirements.html"&gt;SMART&lt;/a&gt; technique for writing tests. How will you know that you&amp;#8217;ve got to the place that you want to be in? What will you see? What will you hear? What will you be doing - or not doing - differently?&lt;/p&gt;
&lt;div style="margin-left: 30px; margin-right: 30px;"&gt;&amp;#8220;I learn a lot when I&amp;#8217;m pair-programming with you and I&amp;#8217;d like to learn more. Would it be OK if I typed sometimes? I think I learn faster when I&amp;#8217;m actually doing the typing myself.&amp;#8221;&amp;lt;/p&amp;gt;
&lt;p&gt;&amp;#8220;I love the colour scheme and the icon, and I think there may be some ways of making them stand out. Perhaps if we had something textured, or cut into a different shape, that would catch people&amp;#8217;s attention.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;I love the way you&amp;#8217;ve solved this problem, and I&amp;#8217;d like to build on that. Maybe we could assign responsibility for this bit of the code to another class. I think that would make this class simpler, and then we could write some tests to describe its behaviour so that other people could use it too.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Thank you very much for letting us try out this Agile stuff! It&amp;#8217;s great; I&amp;#8217;m having fun. I really like the lightweight documentation, and I&amp;#8217;d like to try and work out how to align that aspect of it with the reports you asked me for. Can you help me? I&amp;#8217;m looking for a way to try and use the data that&amp;#8217;s up on the walls and the project board to make this easier.&amp;#8221;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Even when there&amp;#8217;s some particular unpalatable behaviour that really does need to stop, this can help.&lt;/p&gt;
&lt;div style="margin-left: 30px; margin-right: 30px;"&gt;&amp;#8220;I learn a lot when I&amp;#8217;m pair-programming with you and I&amp;#8217;d like to learn more. I&amp;#8217;m finding it tricky because when I&amp;#8217;m typing, you sometimes tell me what to type before I&amp;#8217;ve had a chance to think through the problem myself. If I could have a bit more time to think things through I think I&amp;#8217;d understand the domain more quickly, and if I&amp;#8217;ve got it right then my code should make sense to you. Please let me know if it doesn&amp;#8217;t.&amp;#8221;&lt;/div&gt;
&lt;p&gt;Even when it&amp;#8217;s &lt;em&gt;really&lt;/em&gt; unpalatable behaviour.&lt;/p&gt;
&lt;div style="margin-left: 30px; margin-right: 30px;"&gt;&amp;#8220;I love that you have so much energy. It really comes out when I&amp;#8217;m sitting next to you pair-programming, and you throw your arms in the air and wave them, and it makes me feel really energized too. Unfortunately when you do that, there&amp;#8217;s an unpleasant smell&amp;#8230; is there anything that can be done to change that? I really like some of the new Lynx fragrances, and my friend rates Right Guard; something like that would smell nice.&amp;#8221;&lt;/div&gt;
&lt;h3&gt;Provide options&lt;/h3&gt;
&lt;p&gt;I like the feedback sandwich because it sits very well with GROW, in which we move to our &lt;strong&gt;Goal &lt;/strong&gt;from our &lt;strong&gt;Reality&lt;/strong&gt;, looking at &lt;strong&gt;Options &lt;/strong&gt;and selecting a &lt;strong&gt;Way Forward&lt;/strong&gt;. Reality is the current behaviour that we value (not the problem!) and the Goal is where we want to get to.&lt;/p&gt;
&lt;p&gt;In the examples of feedback I&amp;#8217;ve given above, I&amp;#8217;ve provided multiple options, or left an opening for them. Even when there&amp;#8217;s only one option that can realistically be taken - nobody&amp;#8217;s going to say &amp;#8220;no&amp;#8221; when I ask for more time to type code without having a back-seat driver telling me what to do - I&amp;#8217;ve phrased it in a way which makes the other option available. Using words like &amp;#8220;maybe&amp;#8221;, or asking questions like &amp;#8220;What do you think? Can you help me?&amp;#8221; can invite other options, things that we haven&amp;#8217;t thought of.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s safety in these options. By providing them, and allowing the coachee to make the choice, we&amp;#8217;re saying, &amp;#8220;You have the power here. You get to make the choices.&amp;#8221; All I&amp;#8217;m doing is sharing a place that I want to get to with you, and leaving it up to you to decide how to get there. You can ask me for help if you want, and even give me feedback if there&amp;#8217;s something that I can do that might make a difference.&lt;/p&gt;
&lt;p&gt;I was reading &lt;a href="http://www.informit.com/articles/article.aspx?p=1334908"&gt;this article&lt;/a&gt; which starts with an assertion, &amp;#8220;old commented-out code is an abomination&amp;#8221;. That makes me wince, because an abomination is something &lt;a href="http://en.wiktionary.org/wiki/abomination"&gt;hateful, wicked or shamefully vile&lt;/a&gt;, and what I see is someone learning! That&amp;#8217;s not vile at all; it&amp;#8217;s a wonderful thing, and I heartily encourage it. Instead of insisting that the code is deleted, I might suggest trying it out, and seeing which one works best. I might even talk about the benefits of deleting the code. Creating it as an option, instead of &amp;#8220;the only right way&amp;#8221;, will allow Alphonse to feel safe trying out other things, too.&lt;/p&gt;
&lt;p&gt;(Incidentally, the way that the feedback is given in the scenario with Alphonse isn&amp;#8217;t very safe. Giving feedback in private is usually better than giving it in public.)&lt;/p&gt;
&lt;p&gt;Big thanks to Chris Matts and Real Options for helping me see the similarities between GROW and the sandwich model, and fitting Options into it. I&amp;#8217;ve found it&amp;#8217;s worth paying to create Options, and I might sacrifice some related feedback I want to give, or my idea of &amp;#8220;the right way to solve it&amp;#8221;, in order to do so. This has been very effective, and I find it a very natural way of giving feedback now. &lt;/p&gt;
&lt;p&gt;Why don&amp;#8217;t you give it a try?&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/05/28/feedback-sandwiches-and-real-options/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/05/28/feedback-sandwiches-and-real-options/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>feedback</category>
  <category>nlp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/58980.html</guid>
  <pubDate>Mon, 25 May 2009 12:23:26 GMT</pubDate>
  <title>ACG mind maps</title>
  <link>http://sirenian.livejournal.com/58980.html</link>
  <description>&lt;p&gt;I got a bit experimental with my mind maps at the &lt;a href="http://www.agilecoachesgathering.org"&gt;Agile Coaches&amp;#8217; Gathering&lt;/a&gt;. I think it was a combination of the amazing and inspirational people, the fantastic choice of venue and the glorious weather that got me feeling so creative. Some people have asked me to put them up on the wiki, so &lt;a href="http://www.agilecoachesgathering.org/wiki/index.php/Mind_Maps"&gt;here they are&lt;/a&gt;.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/05/25/acg-mind-maps/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/05/25/acg-mind-maps/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>conference</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/58872.html</guid>
  <pubDate>Sun, 24 May 2009 08:02:11 GMT</pubDate>
  <title>Ups and downs</title>
  <link>http://sirenian.livejournal.com/58872.html</link>
  <description>&lt;p&gt;This blog&amp;#8217;s been up and down the last couple of days while we uploaded my new site, &lt;a href="http://lunivore.com"&gt;lunivore.com&lt;/a&gt;. It&amp;#8217;s not finished yet - there are a couple of empty pages, the Game of Life implementation still has a couple of bugs, there&amp;#8217;s still more material to go up and I&amp;#8217;m not completely convinced that my CSS is the best. However, in the interests of Agility and getting it into production as soon as possible, it&amp;#8217;s up there.&lt;/p&gt;
&lt;p&gt;Lunivore Limited is the company through which I&amp;#8217;m offering my services, and &lt;a href="http://lunivore.com"&gt;lunivore.com&lt;/a&gt; is the website which describes those services: software, coaching, training, writing.&lt;/p&gt;
&lt;p&gt;Many thanks to &lt;a href="http://pairwith.us/"&gt;Andy Palmer&lt;/a&gt; for his Apache expertise and struggling with cpanel&amp;#8217;s weirdness! If either site goes down, it&amp;#8217;s cpanel doing something strange that we haven&amp;#8217;t pinned down yet; I&amp;#8217;m home from the wonderful &lt;a href="http://www.agilecoachesgathering.org/"&gt;#acguk&lt;/a&gt; and will be on it.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/05/24/ups-and-downs/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/05/24/ups-and-downs/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>uncategorized</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/58462.html</guid>
  <pubDate>Fri, 22 May 2009 11:47:57 GMT</pubDate>
  <title>Cargo Cults and Agile Values</title>
  <link>http://sirenian.livejournal.com/58462.html</link>
  <description>&lt;h3&gt;What&amp;#8217;s a Cargo Cult?&lt;/h3&gt;
&lt;p&gt;Once upon a time, during World War II, there was an island on which planes landed. The islanders loved the planes landing, because they brought goods that the islanders couldn&amp;#8217;t normally get. The soldiers shared the goods with the islanders, and the islanders considered themselves wealthy, lucky, and blessed by the gods.&lt;/p&gt;
&lt;p&gt;When the planes stopped landing, the islanders missed the cargo that the planes had brought, and decided they&amp;#8217;d try to bring them back.&lt;/p&gt;
&lt;p&gt;They did the same things that they&amp;#8217;d seen the soldiers do to make the planes land. They created signal fires, waved at the sky, wore coconut-headphones on their ears and made replica planes from wood and straw. The cult which surrounded this sympathetic magic came to be known as a &lt;a href="http://en.wikipedia.org/wiki/Cargo_cult"&gt;cargo cult&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;What&amp;#8217;s Cargo-Cult Agile?&lt;/h3&gt;
&lt;p&gt;As the &lt;a href="http://en.wikipedia.org/"&gt;Wikipedia&lt;/a&gt; author says, the islanders mistook a &lt;em&gt;necessary&lt;/em&gt; condition for the planes arriving as being a &lt;em&gt;sufficient&lt;/em&gt; condition for the planes arriving.&lt;/p&gt;
&lt;p&gt;Teams and individuals sometimes make this same mistake with Agile. They believe that by following the practices of XP, Scrum or some other methodology, they&amp;#8217;ll be successful in creating a culture which allows them to succeed.&lt;/p&gt;
&lt;p&gt;Unfortunately, the islanders hadn&amp;#8217;t realised that the soldiers created the airstrips because there were planes that wanted to land. The planes caused the airstrips - not the other way round! Without the planes, there would have been no desire for control towers or signal fires, for radios or waving arms, or for headphones, coconut or otherwise. And although these artifacts made it &lt;em&gt;easier&lt;/em&gt; for the planes to land, the soldiers could have experienced some success with just a bare strip of earth and a little caution.&lt;/p&gt;
&lt;h3&gt;Agile values&lt;/h3&gt;
&lt;p&gt;In World War II, the leaders who wanted to win the war realised that planes were necessary. The air-strips helped them to use the planes effectively.&lt;/p&gt;
&lt;p&gt;In Agile, the Agile practices that we know have emerged from teams that wanted to deliver valuable, working software, and who had discovered certain personal values that were effective in delivery. The practices they used allowed them to leverage those personal values effectively, but really, a bare strip of dirt - or any kind of process that reminded them what they were trying to achieve - would have enabled them to experience some kind of success.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve found lots of different names for the values that allow teams to be successful - collaboration, trust, responsibility, innovation, camaraderie, rapport, honesty, transparency, helpfulness, forthrightness, motivation, responsiveness, agility, idealism, pragmatism, curiosity&amp;#8230; the list goes on. They&amp;#8217;re all wonderful ways of expressing those personal values, and I&amp;#8217;ve seen or heard of teams succeeding with these values, &lt;em&gt;regardless of which methodology they use&lt;/em&gt;. Partly this is because the values they&amp;#8217;ve adopted allow them to try things out, to feel safe in questioning the processes they follow, to recognise better ways, and to be pragmatic in balancing the adoption of new ways of doing things with the responsibility for delivery.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve also found that the following five values encompass pretty much everything that I&amp;#8217;ve written in the list above, either alone or in combination:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;respect&lt;/strong&gt; - the belief that other people are valuable, able to teach you something and amaze you, able to succeed given experience and support, interested in others&amp;#8217; well-being and success, and motivated by the desire to make the world a better place; and that any behaviour to the contrary is caused by external pressures or ordinary, forgivable human frailty&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;courage&lt;/strong&gt; - willingness to try new things which might not work, to accept personal risk for professional gain, to make oneself vulnerable in order to learn, and to lead others to do the same&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;communication&lt;/strong&gt; - the art of making oneself clearly understood, understanding others and feeding back any lack of understanding so that it can be corrected, listening and imagining, being aware of the impact of communications (verbal and otherwise), and finding other ways to communicate when required.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;simplicity&lt;/strong&gt; - the ability and desire to reduce complexity, mitigate or isolate it where it&amp;#8217;s inevitable, and avoid introducing it; to start, where it&amp;#8217;s possible to start, without worrying about how or where it will end.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;feedback&lt;/strong&gt; - knowing that our perception of our world and the ways in which we model it may be inaccurate, actively seeking out those inaccuracies (which may require courage!), trusting any existing mechanisms which can inform us of those inaccuracies, and listening to them when they do.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are the five values of Extreme Programming, as outlined by Kent Beck (the poor definitions are my own).&lt;/p&gt;
&lt;p&gt;As a coach, I&amp;#8217;ve run competitive workshops in which these values formed the basis of the point-scoring. I&amp;#8217;ve seen companies, especially &lt;a href="http://screwfix.com"&gt;Screwfix&lt;/a&gt;, adopt Agile using these values as a backbone, and seen them successfully release projects with previously unimagined scope and resource constraints. I&amp;#8217;ve seen Scrum adoptions that were failing take on these values and begin working out the kinks, and XP adoptions that were rigidly bound by their processes, but whose employees lived by these values, become more fluid and successful as they aligned themselves accordingly.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve also seen methodologies adopted without these values, leading to rebellion and the quick return to known, established practices that don&amp;#8217;t leverage them. I&amp;#8217;ve seen mailing lists on Agile topics become cliques - at least, I don&amp;#8217;t feel I can post in them because of the lack of respect shown by some participants to others. And Kent Beck himself had to add that value - Respect - because it turned out not to be as obvious as he would have liked.&lt;/p&gt;
&lt;h3&gt;Measuring values&lt;/h3&gt;
&lt;p&gt;I&amp;#8217;ve used the Dreyfus Model of Skills Aquisition frequently to measure how well the adoption of particular practices is progressing. I&amp;#8217;ve found it useful to map the levels to these values as well, where:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Novice: still shows anti-patterns, behaviours which are not aligned with the values&lt;/li&gt;
&lt;li&gt;Beginner: behaves like a normal human being, and would be pleasant to work with&lt;/li&gt;
&lt;li&gt;Practitioner / Competent: is a model for these values, has few &amp;#8220;off-days&amp;#8221; and is forgiving of others on theirs&lt;/li&gt;
&lt;li&gt;Knowledgeable: maintains these values intuitively, not only as part of their work-life, and can lead others in adopting them; has become a better person as a result of adopting these values&lt;/li&gt;
&lt;li&gt;Expert: maintains these values in the face of adversity and in environments where these values create vulnerability; can articulate the benefits of holding these values both personally and professionally; can teach others and provide constructive feedback to help them adopt the values and leverage them more effectively.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That &amp;#8220;Practitioner / Competent&amp;#8221; level, 3, is in my experience the average that a team needs to achieve in each of these values in order to successfully adopt any Agile or Lean methodology. They also appear to lead to more enriched, fulfilling lives at work.&lt;/p&gt;
&lt;h3&gt;Landing planes&lt;/h3&gt;
&lt;p&gt;The great thing about these values is that it&amp;#8217;s hard to introduce &lt;a href="http://en.wikipedia.org/wiki/Perverse_incentive"&gt;perverse incentives&lt;/a&gt; when using them as a metric. One participant in a workshop asked, &amp;#8220;What if we just pretend?&amp;#8221; Well, you can&amp;#8217;t pretend to communicate better without actually communicating better. You can&amp;#8217;t pretend to make things simpler without reducing complexity. You can say that you don&amp;#8217;t believe in these values, or that you don&amp;#8217;t think they&amp;#8217;re helpful - but in my experience, teams who&amp;#8217;ve tried them have discovered that they&amp;#8217;re so much more fun than &lt;em&gt;not&lt;/em&gt; maintaining them, they haven&amp;#8217;t looked back. Even pretending to value these values leads to good habits, and the reaction of co-workers has often been positive enough to cause them to be subconsciously ingrained.&lt;/p&gt;
&lt;p&gt;So, give it a try, and if you&amp;#8217;re thinking of adopting Agile or Lean, land those planes first. The practices will follow, and make a lot more sense.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/05/22/cargo-cults-and-agile-values/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/05/22/cargo-cults-and-agile-values/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>dreyfus</category>
  <category>values</category>
  <category>feedback</category>
  <category>breaking models</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/58174.html</guid>
  <pubDate>Wed, 29 Apr 2009 10:44:57 GMT</pubDate>
  <title>I am not a Pr0n Star: avoiding unavoidable associations</title>
  <link>http://sirenian.livejournal.com/58174.html</link>
  <description>&lt;p&gt;I just read Matt Amionetti&amp;#8217;s &lt;a href="http://merbist.com/2009/04/28/on-engendering-strong-reactions/"&gt;thoughtfully worded response&lt;/a&gt; to the reaction he&amp;#8217;s got from his presentation, &amp;#8220;CouchDB: Perform like a Pr0n star&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Indeed, reading the response, it seems almost inconceivable that anyone could possibly be offended by his presentation. Matt warned people beforehand that there would be potentially offensive images, I believe in his stated intentions, and I heed his call that we should be contributing something useful to the discussion.&lt;/p&gt;
&lt;p&gt;So, I&amp;#8217;d like to give you, the reader, a little bit of insight into the human brain, how it makes connections and comparisons, and help you to understand your power over other people and their perceptions.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;d like to start by telling you another story.&lt;/p&gt;
&lt;h3&gt;The Tale of the T-Shirt&lt;/h3&gt;
&lt;p&gt;On one dress-down Friday, a colleague came in wearing a beach T-shirt, featuring a topless woman coming out of the surf. It was just a black and white image, and the focus was on the scene as a whole, but nonetheless some of us felt that it was inappropriate. So I asked him not to wear it again.&lt;/p&gt;
&lt;p&gt;&amp;#8220;Why?&amp;#8221; our colleague said. &amp;#8220;I didn&amp;#8217;t think it would offend anyone.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;It&amp;#8217;s not really that it&amp;#8217;s offensive,&amp;#8221; I said, &amp;#8220;but think about this. I&amp;#8217;m pair-programming with you, sitting next to you at a table. Someone else comes along to talk to both of us. They see your T-shirt, with that image, and then they scan across from that image to me. Can you see the comparison they&amp;#8217;re making in their mind? Even subconsciously? That&amp;#8217;s why I would prefer you not to wear that T-shirt - so that people don&amp;#8217;t think about topless women while they&amp;#8217;re talking to me, and while I&amp;#8217;m trying to work. At worst, the comparison is offensive. At best, the t-shirt is distracting.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Our colleague took the feedback very well, and agreed not to wear the t-shirt again.&lt;/p&gt;
&lt;h3&gt;How the brain makes associations&lt;/h3&gt;
&lt;p&gt;The human brain consists of a bunch of neurons, between which connections and pathways are built. Those pathways form associations. There are associations of which we&amp;#8217;re conscious, associations of which we&amp;#8217;re not conscious, and a blurred space in between.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s a conscious association. If I want to remind myself to pick up my dry-cleaning after work, I can hide my handbag. Sound strange? Well, as soon as I go to pick up my handbag, and it&amp;#8217;s not where I left it, I&amp;#8217;ll remember why I hid it. I&amp;#8217;ve built myself a conscious association between the absence of the handbag, and the task I had to remember.&lt;/p&gt;
&lt;p&gt;For a subconscious association, watch yourself thinking of all the things you remember about Germany, when I say the word &amp;#8220;Germany&amp;#8221;, or &amp;#8220;Elephant&amp;#8221;. The vast majority of our associations are not in, and often not available to, our conscious mind. They add to our personality, drive the learning we get from our experiences, and there are simply too many of them for us to be aware of them all.&lt;/p&gt;
&lt;p&gt;For an example of the blurred space between, I offer my fiancé&amp;#8217;s habit of driving directly home from the station, even though we agreed we&amp;#8217;d stop at the Chinese takeaway on the way home. He associates the act of driving down a particular road with a particular route, and consciously manipulates the car to follow his subconscious association.&lt;/p&gt;
&lt;h3&gt;So what does this have to do with pr0n stars?&lt;/h3&gt;
&lt;p&gt;Human beings learn associations by - amongst other things - proximity; either in time, or in place. That is; they will build associations more easily if two or more things are experienced close together.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;ve watched Matt&amp;#8217;s slideshow, and you find yourself using CouchDB on a project in the future, will you be thinking of his slideshow? It was very memorable. I think I will find it hard in the future to disassociate that slideshow from the featured product. That&amp;#8217;s a conscious association I&amp;#8217;ve built. I&amp;#8217;m aware of it.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s a subconscious association going on in that show, too; another proximity which is harder to spot. We&amp;#8217;ve just experienced words of technology - key phrases like &lt;em style="font-style: italic;"&gt;scalability&lt;/em&gt;, &lt;em style="font-style: italic;"&gt;REST&lt;/em&gt;, &lt;em style="font-style: italic;"&gt;public &lt;/em&gt;&lt;em style="font-style: italic;"&gt;interfaces&lt;/em&gt; - with images of women whom we&amp;#8217;re told are available for visual sexual gratification. There are a few men in some of the images; they appear to me to be in positions of power and influence. The images of women, on the other hand, tend to be submissive. So we&amp;#8217;re learning, subconsciously, that women associated with technology are also associated with sexual gratification and submissiveness. (The only strong women in the slideshow are associated with conflict, which we try to avoid.)&lt;/p&gt;
&lt;p&gt;If you doubt this is true, look through &lt;a href="http://www.slideshare.net/mattetti/couchdb-perform-like-a-pr0n-star"&gt;the presentation&lt;/a&gt; (and bear in mind that it might be considered Not Safe For Work). At some point, Matt introduces a picture of a typical development team. To which team member are your eyes drawn, and why?&lt;/p&gt;
&lt;p&gt;At the very least, we start making comparisons. No wonder she doesn&amp;#8217;t look happy.&lt;/p&gt;
&lt;h3&gt;The power of people with influence&lt;/h3&gt;
&lt;p&gt;Earlier this year, I finished reading &lt;a href="http://www.amazon.co.uk/Influence-Practice-Robert-B-Cialdini/dp/0205663788/"&gt;Robert Cialdini&amp;#8217;s &amp;#8220;Influence&amp;#8221;&lt;/a&gt;. It&amp;#8217;s a very readable, memorable book. It explains some of the ways in which associations are made. In particular, he describes these mechanisms for influencing other people (his titles, my poor definitions):&lt;br /&gt;
 &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Social proof - if other people do it, we should do it too&lt;/li&gt;
&lt;li&gt;Authority - if someone in a leadership position tells us to do it, we should do it&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Examples which Cialdini uses to demonstrate these concepts include the &lt;a href="http://en.wikipedia.org/wiki/Jonestown"&gt;mass suicide at Jonestown&lt;/a&gt;, and the &lt;a href="http://en.wikipedia.org/wiki/Milgram_experiment"&gt;Milgram experiment&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, if a community is building associations, or you&amp;#8217;re recognised as or portraying yourself as an authority telling people to build associations, those associations will be stronger than normal. People will be more likely to act on those associations. In the same way that my fiancé takes the turning for home, &amp;#8220;routes&amp;#8221; will be set which the brain naturally follows, and acts upon. And it will seem perfectly reasonable, or justifiable, to do so - at the time.&lt;/p&gt;
&lt;h3&gt;So what can you do now?&lt;/h3&gt;
&lt;p&gt;If you were sitting in Matt&amp;#8217;s presentation, or have experienced similar presentations or associations in the past:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;you might consciously choose to wear a topless women on your t-shirt, because your brain subconsciously confirms that it&amp;#8217;s acceptable.&lt;/li&gt;
&lt;li&gt;You might expect women to be more submissive; to accept delegated tasks more easily, or question process less, or accept lower pay.&lt;/li&gt;
&lt;li&gt;You might find it uncomfortable to have a female manager or team lead.&lt;/li&gt;
&lt;li&gt;You might cause the women around you start dressing in less feminine ways, to distance themselves from any association.&lt;/li&gt;
&lt;li&gt;You might erroneously think you have a chance of scoring with your female colleague (notwithstanding cases of genuine mutual attraction).&lt;/li&gt;
&lt;li&gt;You might not expect the woman on your team to be able to teach you anything new.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And, if you&amp;#8217;re Matt, or one of the many commenters whose opinions I&amp;#8217;ve read, you might not completely understand the backlash. Hopefully this post helps.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re not suffering these or similar biases, trust my experience that others are, or have done, and start thinking about how you might have been influenced. The associations aren&amp;#8217;t helpful for me, and I doubt they&amp;#8217;re helpful for the people who have them. Recognising the influence of others will help you to consciously choose different paths.&lt;/p&gt;
&lt;p&gt;Hopefully if you&amp;#8217;ve found the presentation through this blog, you&amp;#8217;ve now read through this post and are now better guarded against these associations. (That&amp;#8217;s why I didn&amp;#8217;t put the link at the top).&lt;/p&gt;
&lt;p&gt;You can also strengthen more useful associations. Go find the women in your team and talk to them about their technical abilities; the things that brought them to IT; times when they&amp;#8217;ve felt empowered and assertive. Find strong female role-models - I recommend &lt;a href="http://www.estherderby.com/"&gt;Esther Derby&lt;/a&gt;, &lt;a href="http://www.desimcadam.com/"&gt;Desi McAdam&lt;/a&gt;, &lt;a href="http://sarahtaraporewalla.com/thoughts/"&gt;Sarah Taraporewalla&lt;/a&gt;, &lt;a href="http://www.jrothman.com/"&gt;Johanna Rothman&lt;/a&gt;, &lt;a href="http://www.thoughtworks.co.uk/who-we-are/leadership-profiles/cyndi-mitchell.html"&gt;Cyndi Mitchell&lt;/a&gt;, &lt;a href="http://www.agilexp.com/rachel.php"&gt;Rachel Davies&lt;/a&gt;, &lt;a href="http://www.martinitconsulting.com/agile/home.html"&gt;Angela Martin&lt;/a&gt;, and many others too numerous to list here. If you&amp;#8217;re looking for something more entertaining to get into your subconscious, try &lt;a href="http://www.imdb.com/title/tt0078748/"&gt;Ellen Ripley&lt;/a&gt;, &lt;a href="http://www.imdb.com/title/tt0118276/"&gt;Buffy Summers&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Promethea"&gt;Alan Moore&amp;#8217;s &amp;#8220;Promethea&amp;#8221;&lt;/a&gt; or &lt;a href="http://www.amazon.co.uk/Boudica-Dreaming-Eagle-1/dp/0553814060/"&gt;Manda Scott&amp;#8217;s &amp;#8220;Boudica&amp;#8221; series&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And, if you&amp;#8217;re thinking of presenting something similar in the future, be aware of the &lt;a href="http://en.wikipedia.org/wiki/Uncle_Ben#.22With_great_power_comes_great_responsibility.22"&gt;power&lt;/a&gt; that you have.&lt;/p&gt;
&lt;h3&gt;On engendering subconscious reactions&lt;/h3&gt;
&lt;p&gt;Matt entitled his response, &amp;#8220;&lt;a title="Permanent Link toOn Engendering Strong Reactions " rel="bookmark" href="http://merbist.com/2009/04/28/on-engendering-strong-reactions/"&gt;On Engendering Strong Reactions&lt;/a&gt;&amp;#8220;. I&amp;#8217;m worried about the subconscious reactions; about the effect that it has on the people who see that presentation and the way in which they react to me, and to my other female colleagues, afterwards. Matt said, &amp;#8220;I would have hoped that people who were likely to be offended would have simply chosen not to attend my talk or read my slides on the internet&amp;#8221;.  That doesn&amp;#8217;t stop the associations being built, and I can&amp;#8217;t necessarily avoid working with people who have built those associations.&lt;/p&gt;
&lt;p&gt;So I&amp;#8217;m not offended by the presentation - I can understand why some women might be - but I am concerned by it. Hopefully this provides some positive insight into why. Matt - I hope you find it useful and enlightening; please let me know.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/04/29/i-am-not-a-pr0n-star-avoiding-unavoidable-associations/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/04/29/i-am-not-a-pr0n-star-avoiding-unavoidable-associations/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>feedback</category>
  <category>breaking models</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/57918.html</guid>
  <pubDate>Tue, 28 Apr 2009 10:27:28 GMT</pubDate>
  <title>Why you should write tests last</title>
  <link>http://sirenian.livejournal.com/57918.html</link>
  <description>&lt;p&gt;Prompted by &lt;a href="http://monkeyisland.pl/2009/02/08/be-careful-with-fundamentalism/"&gt;Szczepan&amp;#8217;s post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have written tests after code when&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the code is already there, but I / others don&amp;#8217;t know what it does or how to use it, and we need to&lt;/li&gt;
&lt;li&gt;I wrote a spike which turned out to be pretty good code, and I wanted to describe what it does and how to use it&lt;/li&gt;
&lt;li&gt;I realised I needed to add some simple yet important behaviour while making a different test pass, and forgetting to add the code would possibly introduce serious bugs, so I added it as I went along and now I&amp;#8217;m going back to show what it does and how to use it&lt;/li&gt;
&lt;li&gt;I was learning how to write the tests first, and wanted to know what they would look like.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/04/28/why-you-should-write-tests-last/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/04/28/why-you-should-write-tests-last/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>bdd</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/57786.html</guid>
  <pubDate>Fri, 17 Apr 2009 10:15:47 GMT</pubDate>
  <title>Goodbye, ThoughtWorks - Hello, Worlds</title>
  <link>http://sirenian.livejournal.com/57786.html</link>
  <description>&lt;p&gt;Today is my last day with ThoughtWorks.&lt;/p&gt;
&lt;p&gt;It feels strange to be leaving a job I love with the most amazing company in the world, at a time when I should rightly be thankful for having a job in the first place. So, let me explain why I&amp;#8217;m going.&lt;/p&gt;
&lt;p&gt;Remember &lt;a href="http://lizkeogh.com/2008/10/15/grow-systems-thinking-and-writing-a-novel/"&gt;this post&lt;/a&gt;, back in November? I decided to actually do some work on the novel which has been hanging around my head for some years. Remember all the follow-up posts in which I told you how I was getting on?&lt;/p&gt;
&lt;p&gt;No, neither do I.&lt;/p&gt;
&lt;p&gt;The truth is that my day-to-day work - coaching, development, and learning about how brilliant, technical people think - has been taking up huge amounts of my life, time and creativity. I have no regrets about the energy I&amp;#8217;ve put into it; watching teams and individuals learn and grow, knowing that I&amp;#8217;ve been part of that, gives me pride and hope for the world. Learning how to help them better, and having them teach me, is fun and uplifting. It&amp;#8217;s also incredibly draining on my creative energy. Looking back, I&amp;#8217;ve hardly written any haiku in the last six months, and I&amp;#8217;ve had no poetry published in two years. Nor have I made much progress with the novel.&lt;/p&gt;
&lt;p&gt;So I&amp;#8217;m going to leave ThoughtWorks and strike out part-time as an independent consultant. (I&amp;#8217;m ideally looking for about three days a week leading or helping with Agile transformations, and will be flexible.)&lt;/p&gt;
&lt;p&gt;The rest of my time will be going into ongoing training and development - giving my brain the space it needs to learn properly, to create the workshops and training courses which will be most effective - and, of course, writing my book. Maybe more than one of them.&lt;/p&gt;
&lt;p&gt;So, from one world to others. I&amp;#8217;ll be spending the next month or so in the diverse company of Grey the cat, Susan, Susan&amp;#8217;s chair-dragon, Pigeon, Koley, Aquila, the Lunivore and the dryad of Islington Green.&lt;/p&gt;
&lt;p&gt;They&amp;#8217;re wonderful to be with, but I&amp;#8217;ll still miss you.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/04/17/goodbye-thoughtworks-hello-worlds/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/04/17/goodbye-thoughtworks-hello-worlds/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>writing</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/57347.html</guid>
  <pubDate>Thu, 16 Apr 2009 17:24:19 GMT</pubDate>
  <title>Given / When / Then granularity</title>
  <link>http://sirenian.livejournal.com/57347.html</link>
  <description>&lt;p&gt;When we first wrote &lt;a href="http://jbehave.org"&gt;JBehave&lt;/a&gt; 1.0 we quickly recognised that there was power in the scenarios; in the conversations that they could help to drive, and in the reusability of the steps.&lt;/p&gt;
&lt;p&gt;I loved the ease with which you could combine smaller steps to make bigger ones, use scenarios as the contexts of further scenarios, and take the necessarily procedural automated tests and turn them into sets of reusable objects.&lt;/p&gt;
&lt;p&gt;Now BDD is more widely used, and people out there are using JBehave 2 and RSpec, and I hear complaints. Amongst them, this is one of the more common:&lt;/p&gt;
&lt;p&gt;&amp;#8220;Every time I change this screen, I have to go through fifteen files and add another step.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Since JBehave uses plain text scenarios you can&amp;#8217;t rely on the common refactoring tools, and that can make it a bit more painful than just messing with code. So, I thought I&amp;#8217;d have a go at explaining how I avoid this issue; by sharing some of the ways in which I divide or combine contexts, events and outcomes into reusable components that help me avoid duplication in my scenarios.&lt;/p&gt;
&lt;h3&gt;Given a context&lt;/h3&gt;
&lt;p&gt;A context is a state which was set up by irrelevant forces, and which is used within the scenario to alter the outcome resulting from the events.&lt;/p&gt;
&lt;p&gt;If the manner or time in which the context was set up matters, then that, too, is part of the context; unless it&amp;#8217;s part of the behaviour you&amp;#8217;re looking for, in which case it&amp;#8217;s an event. The only reason for separating the contexts in which a scenario occurs from the events which are performed in the scenario is because it doesn&amp;#8217;t matter how they were created. This means that &lt;a href="http://lizkeogh.com/2008/11/18/four-ways-of-handling-givens/"&gt;Givens have more flexibility&lt;/a&gt; in implementation than Whens.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A context should matter.&lt;/strong&gt; If you can remove the context from the scenario without changing the outcomes, it isn&amp;#8217;t part of the Givens.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A context should be independent of other contexts.&lt;/strong&gt; So, I prefer &lt;em&gt;Given a wet newspaper&lt;/em&gt; to &lt;em&gt;Given a newspaper / Given that the newspaper is wet&lt;/em&gt;. The first is less likely to require refactoring than the second.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A context should create an abandonable artifact.&lt;/strong&gt; By this I mean that the forces which created the artifact - data in the database, files on the disk, a particular page at a given URL - can safely forget about the context they&amp;#8217;ve created. &lt;em&gt;Given an article about Iraq&lt;/em&gt; is a good context. &lt;em&gt;Given I am logged in&lt;/em&gt; is not so good, even though we frequently use it as an example. Sorry. If it helps, it&amp;#8217;s a step that rarely needs maintenance. &lt;em&gt;Given we&amp;#8217;ve filled in the comment box and are ready to submit it&lt;/em&gt; is likely to cause issues, because of all the other tiny steps that you have to use to get there.&lt;/p&gt;
&lt;h3&gt;When an event happens&lt;/h3&gt;
&lt;p&gt;An event exercises the feature whose behaviour you&amp;#8217;re interested in when describing or running the scenario.&lt;/p&gt;
&lt;p&gt;If you don&amp;#8217;t care whether it works as long as it leaves things in a clean state, it&amp;#8217;s a context. If you don&amp;#8217;t actually need to do anything to cause an outcome - you&amp;#8217;re simply checking that given some state, some other state is also present - you don&amp;#8217;t need to write an event; just skip straight from Given to Then.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An event should create a valuable outcome.&lt;/strong&gt;The granularity of the ideal event is very similar to that of the ideal context. As a user, I don&amp;#8217;t want to go to the screen with the book, click the purchase button, navigate to the basket, enter the credit card number and click &amp;#8220;submit&amp;#8221;. I just want to buy a book. By specifying the steps which a user purchases a book inside the granularity of this larger step, we capture the value of that step. Since people rarely do things that they (or their sponsor, paymaster, loved one, etc.) don&amp;#8217;t find valuable, this can usually be reused as one large step.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An event may be dependent on context or on another event.&lt;/strong&gt; So, when I buy a book, and when I cancel my order within 15 days, then I should not be charged for the book.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An event should cause or contribute to an outcome.&lt;/strong&gt; The outcome is something measurable. It could be that the outcome you&amp;#8217;re looking for is an absence of something, for instance if a user&amp;#8217;s preferences have been changed, and you no longer want to see all those Facebook groups. If it doesn&amp;#8217;t cause an outcome, it&amp;#8217;s a fairly irrelevant event.&lt;/p&gt;
&lt;h3&gt;Then an outcome occurs&lt;/h3&gt;
&lt;p&gt;An outcome describes the benefit that your system or application provides when the events are performed in the given context.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An outcome should have teeth.&lt;/strong&gt; If a particular error message doesn&amp;#8217;t have the exact wording expected, the world will not come to an end. If my credit card gets billed for the books but I don&amp;#8217;t get them when I expect, it might.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An Outcome should be Specific, Measurable, Achievable, Relevant and Timeboxed.&lt;/strong&gt; Ask a QA if you don&amp;#8217;t know what this means. QAs are wise and can break anything.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An Outcome should represent the valuable purpose of the events.&lt;/strong&gt; Instead of checking that a series of menus exist when you navigate to a particular screen, write a scenario that uses those menus and check that the benefits they provide are accessible through them.&lt;/p&gt;
&lt;h3&gt;Stories and regression tests&lt;/h3&gt;
&lt;p&gt;It can take quite a while to run scenarios. I sometimes like to &lt;a href="http://lizkeogh.com/2007/10/25/bdd-regression-testing-and-some-feature-requests/"&gt;turn mine into regression tests&lt;/a&gt; by combining them. I like to add contexts, events and outcomes to existing scenarios to better describe the benefits of using any particular feature in any particular context. This may mean that scenarios are related to more than one story. This will help keep them maintainable, and isn&amp;#8217;t a bad thing.&lt;/p&gt;
&lt;p&gt;I have never found the need to add a context to a scenario half-way through that scenario, even if it&amp;#8217;s been created from several others.&lt;/p&gt;
&lt;p&gt;I do frequently use one scenario as the context for other scenarios.&lt;/p&gt;
&lt;h3&gt;Unteaching the business&lt;/h3&gt;
&lt;p&gt;Sometimes, we accidentally train our business to talk to us about the solutions they&amp;#8217;d like, occasionally in the language of software development. In that case, they&amp;#8217;ll quite happily discuss the particular steps they need to take in the GUI to achieve the desired outcome, and may even have an idea of the underlying database tables and discuss what ought to be in those tables after the events.&lt;/p&gt;
&lt;p&gt;If this happens, try to draw the conversation back to how the data will be used; why it&amp;#8217;s valuable to produce that artifact in the first place. You never know; you may find you need to do less work than you thought you did.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/04/16/given-when-then-granularity/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/04/16/given-when-then-granularity/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>bdd</category>
  <category>jbehave</category>
  <category>stories</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/57143.html</guid>
  <pubDate>Tue, 14 Apr 2009 08:54:27 GMT</pubDate>
  <title>What does &amp;#8220;Not Agile&amp;#8221; look like?</title>
  <link>http://sirenian.livejournal.com/57143.html</link>
  <description>&lt;p&gt;Last week, the &lt;a href="http://www.xpdeveloper.net/xpdwiki/Wiki.jsp?page=XtC"&gt;XtC&lt;/a&gt; London group met up with the &lt;a href="http://www.spaconference.org/spa2009/index.php"&gt;SPA2009&lt;/a&gt; attendees. Joseph Perline ran a panel session with Tim Mackinnon, Rachel Davies and others in which they discussed the weakening of the Agile brand.&lt;/p&gt;
&lt;p&gt;One of the most interesting comments was Tim&amp;#8217;s assertion that Agile &amp;#8220;fails the purchase test&amp;#8221;. That is; if someone won&amp;#8217;t buy the opposite of what you&amp;#8217;re selling, then the brand of what you&amp;#8217;re selling has no value. In Agile terms, if no team will claim to be &amp;#8220;not Agile&amp;#8221; then the word &amp;#8220;Agile&amp;#8221; itself no longer has any value.&lt;/p&gt;
&lt;p&gt;How many teams nowadays will actively claim to still be running Waterfall, for any flavour of Waterfall? Of course not. We&amp;#8217;re all &amp;#8220;Agile&amp;#8221;, aren&amp;#8217;t we?&lt;/p&gt;
&lt;p&gt;At an &lt;a href="http://www.agile2008.org/"&gt;Agile 2008&lt;/a&gt; keynote, Uncle Bob asked everyone who was on an Agile project to raise their hands, then put them down if they failed any of certain criteria: no unit tests, no acceptance tests, iterations of more than two weeks, no showcases to the business, etc. By the end, hardly anyone had their hands up.&lt;/p&gt;
&lt;p&gt;So, given that those of us who are on Agile projects are often less than perfectly Agile, how do you decide whether you&amp;#8217;re actually in that space, or are merely one of the teams weakening the brand?&lt;/p&gt;
&lt;p&gt;Do you know what &amp;#8220;not Agile&amp;#8221; looks like? And are you sure it doesn&amp;#8217;t look a bit like you?&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/04/14/what-does-not-agile-look-like/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/04/14/what-does-not-agile-look-like/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>breaking models</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/56802.html</guid>
  <pubDate>Wed, 18 Mar 2009 07:23:57 GMT</pubDate>
  <title>Oops!</title>
  <link>http://sirenian.livejournal.com/56802.html</link>
  <description>&lt;p&gt;I was warned that there would come a point when the few spam posts I was getting would suddenly multiply to the point where I couldn&amp;#8217;t keep up with them, but I didn&amp;#8217;t listen. That point just came today.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve deleted over 100 spam posts this morning, and installed a filter. If you made a comment that hasn&amp;#8217;t appeared, or has mysteriously disappeared, I apologise - please feel free to repost. It should hopefully make it through the noise this time!&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/03/18/oops/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/03/18/oops/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>uncategorized</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/56363.html</guid>
  <pubDate>Fri, 20 Feb 2009 13:09:55 GMT</pubDate>
  <title>You&amp;#8217;ve heard of BDD, DDD and TDD</title>
  <link>http://sirenian.livejournal.com/56363.html</link>
  <description>&lt;p&gt;Damien Guard introduces &lt;a href="http://damieng.com/blog/2009/02/18/the-secret-driven-developmentdesign-acronyms"&gt;the other *DDs.&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I particularly like &amp;#8220;Psychic Driven Development&amp;#8221; and &amp;#8220;Golf Driven Design&amp;#8221;. Thanks, Damien.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/02/20/youve-heard-of-bdd-ddd-and-tdd/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/02/20/youve-heard-of-bdd-ddd-and-tdd/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>bdd</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/56208.html</guid>
  <pubDate>Fri, 06 Feb 2009 16:29:57 GMT</pubDate>
  <title>The pair chair</title>
  <link>http://sirenian.livejournal.com/56208.html</link>
  <description>&lt;p&gt;Finally, an &lt;a href="http://www.cenqua.com/pairon/?epicfail"&gt;approach to pairing&lt;/a&gt; which maximises colocation. It&amp;#8217;s guaranteed to bring people closer to my thoughts. I can&amp;#8217;t wait for the new batch to arrive.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/02/06/the-pair-chair/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/02/06/the-pair-chair/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>uncategorized</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/55843.html</guid>
  <pubDate>Tue, 27 Jan 2009 13:08:48 GMT</pubDate>
  <title>Empowerment</title>
  <link>http://sirenian.livejournal.com/55843.html</link>
  <description>&lt;p&gt;&lt;a href="http://www.think-box.co.uk/blog/"&gt;Simon Baker&lt;/a&gt; has written a &lt;a href="http://www.think-box.co.uk/blog/2009/01/thought-on-empowerment.html"&gt;superb post&lt;/a&gt;, capturing the elusive nature of empowerment.&lt;/p&gt;
&lt;p&gt;He mentions &amp;#8220;an environment that tolerates mistakes to cultivate learning&amp;#8221;. For me, this is an essential part of innovation; of the Lean metaphor that suggests a Software Development team is more like a Product Development team (designing new cars) than a Production Line (churning out the same thing repeatedly).&lt;/p&gt;
&lt;p&gt;In a Production Line, we try to minimise variance (think &lt;a href="http://en.wikipedia.org/wiki/Jidoka"&gt;Jidoka&lt;/a&gt; and Continuous Integration and Deployment).&lt;/p&gt;
&lt;p&gt;In a Product Development team, we try to maximise learning opportunities, which means experimenting (think &lt;a href="http://www.amazon.com/Waltzing-Bears-Managing-Software-Projects/dp/0932633609"&gt;risk&lt;/a&gt;, innovation and doing things no one&amp;#8217;s done before). &lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;“There is no such thing as a failed experiment, only experiments with unexpected outcomes.”&lt;br /&gt;
  &amp;#8212; &lt;a href="http://en.wikipedia.org/wiki/Buckminster_Fuller"&gt;Richard Buckminster Fuller&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Are mistakes in Software Development really mistakes? Or just experiments from which we learn something new? And if they keep happening&amp;#8230; what didn&amp;#8217;t we learn?&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/01/27/empowerment/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/01/27/empowerment/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>lean</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/55765.html</guid>
  <pubDate>Thu, 22 Jan 2009 20:27:12 GMT</pubDate>
  <title>Six thinking hats</title>
  <link>http://sirenian.livejournal.com/55765.html</link>
  <description>&lt;p&gt;I&amp;#8217;ve been wanting to try out Edward de Bono&amp;#8217;s &lt;a href="http://en.wikipedia.org/wiki/De_Bono_Hats"&gt;Six Thinking Hats&lt;/a&gt; for a while now, and finally got the opportunity in a workshop last week.&lt;/p&gt;
&lt;p&gt;I was working with a team who had a vague understanding of the roles we ought to be playing, and we wanted to clarify them. We only had a short time for the meeting, so we used the hats to help us. In an unstructured meeting, everyone will have a particular bias. Some people are very positive and look for the good in everything. Others are risk-averse. Others like to concentrate on the facts, or see the big picture. By focusing on each aspect of these in turn, we were able to give voice to everyone&amp;#8217;s preferred bias.&lt;/p&gt;
&lt;p&gt;As the facilitator, I took the &lt;strong&gt;blue hat&lt;/strong&gt; - the &lt;strong&gt;big picture&lt;/strong&gt; - and used it to introduce the agenda for the meeting, outline our objectives, and summarise what we&amp;#8217;d learnt at each stage. Each stage was simply a brainstorm with post-it notes, which we stuck on different areas of the wall around the room.&lt;/p&gt;
&lt;p&gt;The team started with the &lt;strong&gt;yellow hat&lt;/strong&gt;, looking at the &lt;strong&gt;positive&lt;/strong&gt; aspects of the problem - what our proposed solution would achieve, and what resources and people we had available or hoped to use to solve the problem.&lt;/p&gt;
&lt;p&gt;Then we used the &lt;strong&gt;black hat&lt;/strong&gt; to work out what &lt;strong&gt;risks&lt;/strong&gt; might jeopardise our solution. I used the concept of a futurespective here, too, as a number of the participants confessed to having a positive bias. &amp;#8220;It&amp;#8217;s three years from now, and we failed. Why? What happened?&amp;#8221;&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;white hat&lt;/strong&gt; - focused on &lt;strong&gt;facts&lt;/strong&gt; - helped us look at what we knew about the problem and the solution, and what was still puzzling.&lt;/p&gt;
&lt;p&gt;At each stage we spotted themes. I now took the blue hat again and repeated these briefly for everyone present.&lt;/p&gt;
&lt;p&gt;We used the &lt;strong&gt;green hat creative&lt;/strong&gt;ly to work out what our roles should be, given the yellow, black and white hats.&lt;/p&gt;
&lt;p&gt;As a result, we realised that up until the workshop, we had been very focused on technical detail, and not as much on the people-oriented aspects of the problem. I kept the &lt;strong&gt;red hat&lt;/strong&gt; with its &lt;strong&gt;emotional&lt;/strong&gt; focus in reserve in case anyone seemed unhappy, but everyone was smiling when they left, and my team-mates declared the workshop a success!&lt;/p&gt;
&lt;p&gt;I borrowed the programme for the hats from &lt;a href="http://en.wikipedia.org/wiki/De_Bono_Hats"&gt;Wikipedia&lt;/a&gt;, which has a great summary. We ran the meeting across virtual conferencing in three countries, using big, coloured pictures of hats to remind everyone of the focus, and to provide a visual anchor and memory aid. &lt;a href="http://dannorth.net"&gt;Dan&lt;/a&gt; mind-mapped the results; this also works very well with the pre-defined themes.&lt;/p&gt;
&lt;p&gt;Next time I think real (or paper) hats may be in order&amp;#8230;&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/01/22/six-thinking-hats/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/01/22/six-thinking-hats/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>metathinking</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/55491.html</guid>
  <pubDate>Fri, 16 Jan 2009 16:53:31 GMT</pubDate>
  <title>Who&amp;#8217;s the best person to fix this?</title>
  <link>http://sirenian.livejournal.com/55491.html</link>
  <description>&lt;p&gt;I &lt;a href="http://lizkeogh.com/2006/01/06/thought-for-the-day/"&gt;hate blame cultures&lt;/a&gt;. If you hate them too, then you don&amp;#8217;t need me to tell you why. If you don&amp;#8217;t, you probably haven&amp;#8217;t worked in one yet.&lt;/p&gt;
&lt;p&gt;At one client, they have a strong dislike for blame cultures. Unfortunately, most of the development team have worked in one at some point or another, and it&amp;#8217;s hard to get out of certain habits.&lt;/p&gt;
&lt;p&gt;&amp;#8220;Ah, it&amp;#8217;s all right,&amp;#8221; one developer said, looking at a bug. &amp;#8220;It&amp;#8217;s not our fault.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;I&amp;#8217;ve been learning a bit of NLP,&amp;#8221; I said, &amp;#8220;and it suggests that the words we use can sometimes affect the way we think. I know that you&amp;#8217;re not really thinking about blame when you use those words. Even so, can we avoid them? Could you maybe ask the question, &lt;i&gt;Who&amp;#8217;s the best person to fix this?&lt;/i&gt; instead of &lt;i&gt;Whose fault is it?&lt;/i&gt;&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;All right. I&amp;#8217;m still not the best person to fix this, though.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Well, who is?&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;I think George broke the build. I mean, George is the best person to fix it.&amp;#8221; The developer called across, &amp;#8220;George, can you look at the build a sec and see if you could fix it, please?&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Oops!&amp;#8221; said George. &amp;#8220;I&amp;#8217;m on it.&amp;#8221;&lt;/p&gt;
&lt;p&gt;So he fixed the build, and the team started working. A while later, one of the QAs called me over. &amp;#8220;Liz, I&amp;#8217;m looking at this bug&amp;#8230; did your team cause it?&amp;#8221;&lt;/p&gt;
&lt;p&gt;I shook my head. &amp;#8220;It looks like the database might be down.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Oh,&amp;#8221; the QA said sadly. &amp;#8220;I can&amp;#8217;t blame you, then.&amp;#8221;&lt;/p&gt;
&lt;p&gt;I winced. &amp;#8220;Why do you need to know whose fault it was?&amp;#8221; I asked.&lt;/p&gt;
&lt;p&gt;&amp;#8220;So I know who to assign it to.&amp;#8221;&lt;/p&gt;
&lt;p&gt;So I explained about the new words we were trying to use instead of &amp;#8220;blame&amp;#8221; and &amp;#8220;fault&amp;#8221;.&lt;/p&gt;
&lt;p&gt;&amp;#8220;Oh!&amp;#8221; she brightened up. &amp;#8220;Well, are you able to help me fix it, then?&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Maybe one of my team can help. Hold on!&amp;#8221; So I asked around. &amp;#8220;Who&amp;#8217;s the best person to kick Mary&amp;#8217;s database? It looks as if it&amp;#8217;s fallen over.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;I can do that!&amp;#8221; Fred announced.&lt;/p&gt;
&lt;p&gt;It occurred to me at that point that, if we were still asking, &amp;#8220;Whose fault is this?&amp;#8221; then Fred would be reluctant to help out, because it would insinuate that it was somehow his fault. By avoiding the words and asking, &amp;#8220;Who&amp;#8217;s the best person to fix this?&amp;#8221; anyone can volunteer.&lt;/p&gt;
&lt;p&gt;Suddenly, by providing an alternative to &amp;#8220;fault&amp;#8221; and &amp;#8220;blame&amp;#8221;, we&amp;#8217;ve made it OK for people to volunteer to contribute. That can only be a good thing.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/01/16/whos-the-best-person-to-fix-this/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/01/16/whos-the-best-person-to-fix-this/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>nlp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/55107.html</guid>
  <pubDate>Wed, 14 Jan 2009 14:02:38 GMT</pubDate>
  <title>Standing-up dragging on?</title>
  <link>http://sirenian.livejournal.com/55107.html</link>
  <description>&lt;p&gt;There&amp;#8217;s a standard format for stand-ups that goes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What did you do yesterday?&lt;/li&gt;
&lt;li&gt;What are you going to do today?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As well as this, it helps to keep the focus on things that are interesting to the team.&lt;/p&gt;
&lt;p&gt;Sometimes this can lead to stand-ups becoming little more than status meetings, or updates for a team leader&amp;#8217;s benefit. So here&amp;#8217;s something that I&amp;#8217;ve been doing both for myself, and with teams, that seems to liven things up a bit.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What did you &lt;i&gt;learn&lt;/i&gt; yesterday?&lt;/li&gt;
&lt;li&gt;What do you &lt;i&gt;hope to learn&lt;/i&gt; today?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Participants who&amp;#8217;ve used this as well as or instead of the usual format have talked about contacts they&amp;#8217;ve made in other teams, difficulties they&amp;#8217;re having with particular technologies, puzzles they&amp;#8217;re trying to solve, domain knowledge they&amp;#8217;ve picked up or are looking for, etc.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/01/14/standing-up-dragging-on/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/01/14/standing-up-dragging-on/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>uncategorized</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/54881.html</guid>
  <pubDate>Mon, 12 Jan 2009 13:32:58 GMT</pubDate>
  <title>Love for Pigs and Chickens</title>
  <link>http://sirenian.livejournal.com/54881.html</link>
  <description>&lt;p&gt;A phrase frequently used in the Scrum teams I&amp;#8217;ve been involved in - as well as a few of the XP teams - is &amp;#8220;Pigs and Chickens&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Googling the origin, I found out &lt;a href="http://jeffsutherland.com/scrum/2004/05/scrum-pigs-and-chickens.html"&gt;where it came from&lt;/a&gt;. Like many terms and practices in Agile Software Development, it&amp;#8217;s &lt;a href="http://www.amazon.com/review/R18PP98QWKL6RU"&gt;surrounded&lt;/a&gt; &lt;a href="http://blogs.sun.com/mamafufu/entry/scrum_pigs_and_chickens"&gt;by&lt;/a&gt; &lt;a href="http://www.codinghorror.com/blog/archives/000704.html"&gt;controversy.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have come to love the phrase, mostly because it causes people who are unfamiliar with Agile and Scrum practices to ask, &amp;#8220;What are pigs and chickens?&amp;#8221;&lt;/p&gt;
&lt;p&gt;When the Agile team members smile and happily explain the joke, the people asking the questions often remember that they have other questions they wanted to ask, too. Then they find out that most Agile teams are full of real human beings who love to talk about what they&amp;#8217;re doing and share good practices. This in turn invites more conversation, which spreads the goodness.&lt;/p&gt;
&lt;p&gt;That leads to requests like, &amp;#8220;Liz, I&amp;#8217;d love to see what the team are doing with &amp;lt;xyz&amp;gt;. Can I turn up at your meeting, please, just as a chicken?&amp;#8221;&lt;/p&gt;
&lt;p&gt;Anything which &lt;a href="http://www.ademiller.com/blogs/tech/2007/10/scrum-bestuary-the-seagull/"&gt;facilitates better communication&lt;/a&gt; - even by being an obscure hook that invites curiosity - has got to be good.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2009/01/12/love-for-pigs-and-chickens/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2009/01/12/love-for-pigs-and-chickens/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>uncategorized</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/53969.html</guid>
  <pubDate>Thu, 11 Dec 2008 00:28:17 GMT</pubDate>
  <title>C# mocks in action</title>
  <link>http://sirenian.livejournal.com/53969.html</link>
  <description>&lt;p&gt;Mike and Gabriel both posted comments to show how the Cowhand example in my &lt;a href="http://lizkeogh.com/2008/12/10/given-when-then-and-examples-for-classes/"&gt;last post&lt;/a&gt; might look and evolve with different mocking frameworks. They&amp;#8217;ve used &lt;a href="http://www.codeplex.com/fluentspec"&gt;FluentSpec&lt;/a&gt; and &lt;a href="http://ayende.com/projects/rhino-mocks/"&gt;Rhino Mocks&lt;/a&gt; respectively.&lt;/p&gt;
&lt;p&gt;Thanks, Mike and Gabriel! It was a pleasure to find these snippets waiting.&lt;/p&gt;
&lt;p&gt;Also, Olof suggested that I include something a little less farm-related, so I&amp;#8217;ve added another example with &lt;a href="http://code.google.com/p/mockito/"&gt;Mockito&lt;/a&gt;*, too. Thanks, Olof!&lt;/p&gt;
&lt;p&gt;*Mockito&amp;#8217;s syntax is now even better than this, but this is the syntax I&amp;#8217;m used to.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2008/12/10/c-mocks-in-action/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2008/12/10/c-mocks-in-action/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>uncategorized</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/53181.html</guid>
  <pubDate>Tue, 02 Dec 2008 15:37:15 GMT</pubDate>
  <title>The problem with Scrum</title>
  <link>http://sirenian.livejournal.com/53181.html</link>
  <description>&lt;p&gt;Spurred by &lt;a href="http://www.agilemanagement.net/Articles/Weblog/TrashingScrumorReflecting.html"&gt;Dave Anderson&amp;#8217;s blog&lt;/a&gt; pointing at &lt;a href="http://agilethinking.net/blog/2008/10/23/getting-trashed-by-the-lean-machine/"&gt;Tobias Meyer&amp;#8217;s blog&lt;/a&gt;&amp;#8230;&lt;/p&gt;
&lt;p&gt;I once told this story to a group of people I was training as coaches.&lt;/p&gt;
&lt;h2&gt;The problem with Waterfall&lt;/h2&gt;
&lt;p&gt;Once upon a time some people noticed that their software projects were failing to deliver what the business needed. &amp;#8220;We should be clearer about what we need,&amp;#8221; someone said, &amp;#8220;and check that those needs are interpreted correctly all the way down until we reach the code.&amp;#8221;&lt;/p&gt;
&lt;p&gt;And when things still went occasionally awry, they said, &amp;#8220;You&amp;#8217;re not doing it hard enough! Get more detailed requirements before you start work! Spend more time getting the design right! Don&amp;#8217;t start coding until you&amp;#8217;re sure!&amp;#8221;&lt;/p&gt;
&lt;p&gt;And when things still went awry, they said, &amp;#8220;Do it &lt;em&gt;even more&lt;/em&gt;!&amp;#8221;&lt;/p&gt;
&lt;p&gt;And that&amp;#8217;s how we got Waterfall.&lt;/p&gt;
&lt;h2&gt;The problem with Scrum&lt;/h2&gt;
&lt;p&gt;Once upon a time some people noticed that their software projects were failing to deliver what the business needed. &amp;#8220;We should assign someone to be the product owner, who can express what&amp;#8217;s needed,&amp;#8221; someone said. &amp;#8220;We should have a stand up every day, a planning meeting at the beginning of each sprint and a retrospective at the end. And burndown charts.&amp;#8221;&lt;/p&gt;
&lt;p&gt;And when things still went occasionally awry, they said, &amp;#8220;We should put someone into the teams who knows how to do this better, and who can make sure that everyone is following the rules properly. And we should give them certificates!&amp;#8221;&lt;/p&gt;
&lt;p&gt;And when things still went awry, they said, &amp;#8220;Do it &lt;em&gt;even more&lt;/em&gt;!&amp;#8221;&lt;/p&gt;
&lt;p&gt;And that&amp;#8217;s how we got Scrum.&lt;/p&gt;
&lt;h2&gt;The problem with XP&lt;/h2&gt;
&lt;p&gt;Once upon a time some people noticed that their software projects were failing to deliver what the business needed. &amp;#8220;We should assume that we&amp;#8217;re wrong to start with,&amp;#8221; someone said. &amp;#8220;We should keep the cost of change low. We should do acceptance and unit testing, integrate continuously, maintain collaborative ownership of the code, and be courageous, respectful and communicative, keep things simple and get regular feedback about how wrong we are.&amp;#8221;&lt;/p&gt;
&lt;p&gt;And when things still went occasionally awry, they said, &amp;#8220;We should automate more acceptance tests, and reduce build times, and automate deployment, and if anyone doesn&amp;#8217;t like it we&amp;#8217;ll make them pair program! Turn the dials up to 10!&amp;#8221;&lt;/p&gt;
&lt;p&gt;And when things still went awry, they said, &amp;#8220;Do it &lt;em&gt;even more&lt;/em&gt;!&amp;#8221;&lt;/p&gt;
&lt;p&gt;And that&amp;#8217;s how we got XP.&lt;/p&gt;
&lt;h2&gt;Some good things about Scrum, XP and other Agile methodologies&lt;/h2&gt;
&lt;p&gt;According to the Dreyfus Model, novices - those learning practices for the first time - really value a step-by-step approach. They don&amp;#8217;t necessarily know which steps are important. Patricia Benner, in her book &amp;#8220;From Novice to Expert&amp;#8221;, describes how novice nurses will follow every item on their checklist, for each item.&lt;/p&gt;
&lt;p&gt;This is a great way to start learning. However, with experience and practice comes an intuitive knowledge of what&amp;#8217;s important, what&amp;#8217;s not, and what you can do to get a similar value from your practices. For instance, a competent nurse will spend her first ten minutes on the ward checking that nobody&amp;#8217;s dying, before worrying about the bedpans.&lt;/p&gt;
&lt;p&gt;Once we become experienced in a methodology, we start to put the focus on the things we find important, and find alternatives for things which are hard. I&amp;#8217;ve worked on XP projects which had no automated acceptance tests, but great QAs. I&amp;#8217;ve seen people refuse to pair-program, but happy to review each others&amp;#8217; code. Things do sometimes fall over in these projects - that&amp;#8217;s just life! It isn&amp;#8217;t necessarily because the practices aren&amp;#8217;t being followed. Sometimes it&amp;#8217;s part of a learning experience, and something to be celebrated, because it means people are trying things out and willing to be surprised.&lt;/p&gt;
&lt;p&gt;The problem comes when we see things fall over, and try to prevent them by adhering rigidly to our steps, no matter what. They&amp;#8217;re there for &lt;em&gt;novices&lt;/em&gt;. They&amp;#8217;re not intended to work for everyone all of the time, or even for most people, most of the time. They&amp;#8217;re just a good starting point. As soon as we depart from those steps we&amp;#8217;re in uncharted territory, and should expect to find things out. In my experience some of these findings are painful; most of them are delightful.&lt;/p&gt;
&lt;p&gt;So, next time you find yourself arguing about what makes a good methodology, and which methodology is best, you could try asking, &amp;#8220;Who for?&amp;#8221; It might get rid of some of those arguments.&lt;/p&gt;
&lt;h2&gt;Why Lean is different, and the same&lt;/h2&gt;
&lt;p&gt;Lean&amp;#8217;s a meta-methodology. It&amp;#8217;s a methodology that you can apply to other methodologies after your step-by-step practices have become stifling. Techniques such as Value Stream Mapping, as well as principles like minimising waste and root cause analysis, can be applied to any project, no matter which methodology it started with.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve done this, quite successfully and in combination with a bunch of other tools. I don&amp;#8217;t have much experience with Lean, and was still quite surprised at how much I learnt just from reading some books and talking to some people who&amp;#8217;ve worked in Lean manufacturing and Kanban software teams. I particularly liked the Poppendieck&amp;#8217;s books. Scrum also has merits, and I understand the desire to keep the mailing list suitable for novices - maybe it&amp;#8217;s time for another mailing list. XP is still the core methodology I prefer to start with - thanks Kent Beck. I also found sensible practices in common sense, patience and valuing other people&amp;#8217;s opinions.&lt;/p&gt;
&lt;p&gt;Lean is a step-by-step approach for me at the moment. I have no doubt that if I try to apply this blindly to every Agile coaching gig that comes my way, I&amp;#8217;ll find the limits of Lean just as I&amp;#8217;ve found the limits of Scrum and XP.&lt;/p&gt;
&lt;h2&gt;The problem with Waterfall, Scrum, XP and Lean?&lt;/h2&gt;
&lt;p&gt;Probably isn&amp;#8217;t with Waterfall, Lean, Scrum or XP. Except for Waterfall.&lt;/p&gt;
&lt;p&gt;It probably isn&amp;#8217;t even with the people, either. We&amp;#8217;re human, and we&amp;#8217;re all at different levels and stages of learning. Different practices are appropriate for different people, in different situations. Why not try a few, and see which ones work best?&lt;/p&gt;
&lt;p&gt;Then next time you hear someone evangelising some particular practice over another, you can smile, and nod, because you know where they are in their journey, and perhaps you even know where you are in yours.&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2008/12/02/the-problem-with-scrum/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2008/12/02/the-problem-with-scrum/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>dreyfus</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink="true">http://sirenian.livejournal.com/52485.html</guid>
  <pubDate>Mon, 01 Dec 2008 16:25:58 GMT</pubDate>
  <title>Dan and I talk about BDD at Oopsla 2007</title>
  <link>http://sirenian.livejournal.com/52485.html</link>
  <description>&lt;p&gt;Back last year, Vlad Gitlevich kindly made a video of Dan and I talking about BDD.&lt;/p&gt;
&lt;p&gt;We concentrated almost exclusively on the principles rather than the technology, which means the video is still very relevant. Particularly we talked about how BDD plays with DDD, outside-in, stories and scenarios and using them in conversation with the business, and our own experiences.&lt;/p&gt;
&lt;p&gt;See it &lt;a href="http://domaindrivendesign.org/events/oopsla2007/dan_north/"&gt;here&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Thanks, Vlad!&lt;/p&gt;
&lt;p style="border: 1px solid black; padding: 3px;"&gt;&lt;strong&gt;Originally published at &lt;a href="http://lizkeogh.com/2008/12/01/dan-and-i-talk-about-bdd-at-oopsla-2007/"&gt;lizkeogh.com&lt;/a&gt;. Please leave any &lt;a href="http://lizkeogh.com/2008/12/01/dan-and-i-talk-about-bdd-at-oopsla-2007/#comments"&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>bdd</category>
  <category>stories</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
</channel>
</rss>
