<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. https://www.livejournal.com/bots/  -->
<rss version='2.0'  xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>Traversing the Ocean of Knowledge</title>
  <link>https://sirenian.livejournal.com/</link>
  <description>Traversing the Ocean of Knowledge - LiveJournal.com</description>
  <lastBuildDate>Tue, 26 Mar 2013 16:18:31 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>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/81019.html</guid>
  <pubDate>Tue, 26 Mar 2013 16:18:31 GMT</pubDate>
  <title>The Five Whos</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/81019.html</link>
  <description>&lt;p&gt;Many of the companies I visit start with much the same problem: the development team aren&amp;#8217;t collaborating effectively either internally or with the business, so they would like to adopt Agile, or better forms of Agile.&lt;/p&gt;
&lt;p&gt;Usually these are pretty awesome companies producing quality software, and it can take a while to work out what the real problem is, and why they want to collaborate more effectively in the first place (other than a vague feeling that &amp;#8220;it&amp;#8217;s good&amp;#8221;).&lt;/p&gt;
&lt;p&gt;Asking around for more context, I usually find that while much of the software written is fantastic, a lot of it gets thrown away towards the end of the project, or is surplus to what&amp;#8217;s truly needed for the release, and what the clients would &lt;em&gt;really&lt;/em&gt; like is for that to happen much less, and releases to happen more often &amp;#8211; the promise of Agile, delivered.&lt;/p&gt;
&lt;p&gt;Asking further, it often transpires that the projects have either been created without a clear vision in mind, or that the vision has not been communicated clearly, or that the needs of peripheral stakeholders are only being taken into account in a very woolly fashion, perhaps with a single story card saying &amp;#8220;Monitoring&amp;#8221;.&lt;/p&gt;
&lt;p&gt;If you ask the development team, &amp;#8220;Why are you doing that?&amp;#8221; five times, they will perfectly happily give the answer &amp;#8211; as long as it&amp;#8217;s a requirement that&amp;#8217;s core to the project, at least. They may even, sometimes, be right.&lt;/p&gt;
&lt;p&gt;Ask about something like security or performance, though, or try to find out who has the final say on whether something&amp;#8217;s ready for production, and in larger companies the development team often don&amp;#8217;t know. They &lt;i&gt;think&lt;/i&gt; they know why, and that&amp;#8217;s usually more dangerous than being aware that we don&amp;#8217;t know. I can often tell because their stories either start with, &lt;a href=&quot;http://lizkeogh.com/2010/02/02/theyre-not-user-stories/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&amp;#8220;As a user&amp;#8230;&amp;#8221;&lt;/a&gt;, or miss that line completely, or it&amp;#8217;s only ever one Product Owner who gets to come to the showcase.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve just written a blog post for the Lean Systems Society called &lt;a href=&quot;http://leansystemssociety.org/value-streams-are-made-of-people/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&amp;#8220;Value Streams are Made of People&amp;#8221;&lt;/a&gt;, which is related to this. Here&amp;#8217;s a paraphrased &lt;a href=&quot;http://www.urbandictionary.com/define.php?term=tl%3Bdr&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;tl;dr&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Before we ask &lt;em&gt;why&lt;/em&gt;, ask &lt;em&gt;who&lt;/em&gt;. Who will be the first person who cares outside of the development team if we don&amp;#8217;t do this? Who do they have to tell, or if they were to (hypothetically) hide it, who would be the next person to notice? Who cares after that? And who&amp;#8217;s the person whose job, or company or &amp;#8211; heaven forfend &amp;#8211; &lt;em&gt;life&lt;/em&gt; is on the line as a result?&lt;/p&gt;
&lt;p&gt;If we don&amp;#8217;t know who cares, how can we know who to ask to find out &lt;em&gt;why&lt;/em&gt;?&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2013/03/26/the-five-whos/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2013/03/26/the-five-whos/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>business value</category>
  <category>stakeholders</category>
  <category>stories</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/80834.html</guid>
  <pubDate>Tue, 12 Mar 2013 16:19:54 GMT</pubDate>
  <title>BDD for Life &amp;#8211; revisited at GOTO Chicago</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/80834.html</link>
  <description>&lt;p&gt;A couple of years back, I ran a talk on how to apply some of BDD&amp;#8217;s techniques to your whole life, and to life coaching.&lt;/p&gt;
&lt;p&gt;I am very excited to announce that this year, at &lt;a href=&quot;http://gotocon.com/chicago-2013/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;GOTO Chicago&lt;/a&gt; (April 23rd &amp;#8211; 24th), I will be revisiting that talk, but this time I&amp;#8217;ll be looking at some of the more crazy stuff we&amp;#8217;ve introduced into BDD&amp;#8217;s toolbox over the last few years, too.&lt;/p&gt;
&lt;p&gt;There will be &lt;em&gt;even more&lt;/em&gt; focus on &lt;a href=&quot;http://www.infoq.com/articles/real-options-enhance-agility&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Real Options&lt;/a&gt; and &lt;a href=&quot;http://dannorth.net/2010/08/30/introducing-deliberate-discovery/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Deliberate Discovery&lt;/a&gt; &amp;#8211; but I&amp;#8217;ll be using &lt;a href=&quot;http://lizkeogh.com/2012/03/11/cynefin-for-devs/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Cynefin &lt;/a&gt;to show where, and how, you can usefully apply them in your life. I&amp;#8217;ll be talking about Dan North&amp;#8217;s &lt;a href=&quot;http://dannorth.net/courses/faster-software-delivery/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&amp;#8220;Three Ages&amp;#8221; delivery pattern&lt;/a&gt;, and showing how that applies to our everyday activities. I&amp;#8217;ll still be looking at well-formed outcomes as a test, but I&amp;#8217;ll also show how we can never quite achieve the things we want the most, and every outcome we think of is just an example of what might happen. I&amp;#8217;ll show how to fail, quickly and safely, using &lt;a href=&quot;http://www.infoq.com/articles/feature-injection-success&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Feature Injection&lt;/a&gt;; how to get your life under test, TDD-style, before you refactor it; how and when to use &lt;em&gt;real-life&lt;/em&gt; libraries and open-source to cut down the amount of work you have to do; and how to create your own for other people to use.&lt;/p&gt;
&lt;p&gt;Want to come? Just use the code &amp;#8220;keog150&amp;#8243; &lt;a href=&quot;https://secure.trifork.com/chicago-2013/registration/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;when registering here&lt;/a&gt;, and you can get $150 off your entrance price. Looking forward to seeing you there!&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2013/03/12/bdd-for-life-revisited-at-goto-chicago/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2013/03/12/bdd-for-life-revisited-at-goto-chicago/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>bdd</category>
  <category>conference</category>
  <category>life</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/80472.html</guid>
  <pubDate>Fri, 15 Feb 2013 16:04:38 GMT</pubDate>
  <title>Two exercises, one puzzle</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/80472.html</link>
  <description>&lt;p&gt;Today Benjamin Mitchell played a small exercise I really liked during his Kanban talk.&lt;/p&gt;
&lt;p&gt;Benjamin gave each of two people 5 A4 envelopes and 5 pieces of paper. The two people were given instructions to either write a letter sequentially, or to do it in batches.&lt;/p&gt;
&lt;p&gt;The sequential person had to put the paper in the envelope, write their address on the front then mark an &amp;#8220;X&amp;#8221; for a stamp. They had to do this 5 times.&lt;/p&gt;
&lt;p&gt;The batch person had to do each of those steps in turn; filling in 5 envelopes, writing 5 addresses and &amp;#8220;putting on&amp;#8221; 5 stamps.&lt;/p&gt;
&lt;p&gt;Now, I remember another exercise which teaches us that multi-tasking is bad. If we&amp;#8217;re asked to write all the letters of the alphabet as capitals, then write them all as small letters, then write the numbers from 1 to 26, we do this much more easily by doing the whole of one job than we do by switching between them. It&amp;#8217;s very hard to write, &amp;#8220;A, a, 1, B, b, 2&amp;#8243; &amp;#8211; much harder than it is to just write &amp;#8220;ABCDEF&amp;#8230;&amp;#8221; etc. It gets even nastier if we write roman numerals too!&lt;/p&gt;
&lt;p&gt;For that reason, I predicted that the batch job would finish more quickly. It&amp;#8217;s not like software development, where we do different things. It should be even simpler than writing a sequence. It&amp;#8217;s the same thing, five times.&lt;/p&gt;
&lt;p&gt;Yet the person working sequentially &amp;#8211; doing each letter in turn &amp;#8211; finished a long time before the other person. The addresses looked about the same length, and the sequential worker had written his far more neatly, too! Benjamin&amp;#8217;s reaction told us that this was pretty standard for the exercise &amp;#8211; he expected this.&lt;/p&gt;
&lt;p&gt;Why? What was it about this exercise that meant the person writing each letter in turn went so much faster than the one filling the letters, then writing the addresses, then the stamps?&lt;/p&gt;
&lt;p&gt;I have a couple of ideas, but I&amp;#8217;m curious to see what the community thinks! I&amp;#8217;ll write the most interesting answers in an edit here&amp;#8230; as well as the most outrageous ones. Let me know in comments, and if you try it yourself I&amp;#8217;d love to know the results.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; I said I&amp;#8217;d write the most interesting answers here, but too many of them are interesting. I do particularly like &lt;a href=&quot;http://gusvanhorn.blogspot.co.uk/2011/09/how-to-think-about-batches.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;this breakdown&lt;/a&gt; of the game, via Graham Lee. &lt;/p&gt;
&lt;p&gt;Don Reinertsen&amp;#8217;s explanation of transaction costs is also helpful:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;I am a big proponent of reducing batch size, but the viability of small batches ultimately depends on transaction costs. If you ran the game with the envelopes, the letters, the writing desk, and the stamps each in separate corners of the room, or in different buildings, you would undoubtedly get a very different outcome. Reducing transaction costs enables the payoff brought by small batches.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Thank you all for your illuminating answers!&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2013/02/15/two-exercises-one-puzzle/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2013/02/15/two-exercises-one-puzzle/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>kanban</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/80205.html</guid>
  <pubDate>Fri, 21 Dec 2012 00:01:58 GMT</pubDate>
  <title>The Eighth Day</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/80205.html</link>
  <description>&lt;p&gt;Scholars immersed in books&lt;br /&gt;
Rise blearily, wiping their eyes,&lt;br /&gt;
And gather in knots of threes and fours&lt;br /&gt;
In the angles of the square.&lt;br /&gt;
They avoid each other&amp;#8217;s anxious looks;&lt;br /&gt;
The crowds who gathered to hear the wise&lt;br /&gt;
Are turned away from the college doors&lt;br /&gt;
To seek answers elsewhere.&lt;/p&gt;
&lt;p&gt;Staunch pigeons flinch from the open sky,&lt;br /&gt;
As though they knew that a day was more&lt;br /&gt;
Than light’s rebirth with every morn;&lt;br /&gt;
For how can a day be measured when&lt;br /&gt;
A wealth of suns see time go by&lt;br /&gt;
And seas which ate up all their shore&lt;br /&gt;
Once spanned the world from dawn to dawn&lt;br /&gt;
Before the age of men?&lt;/p&gt;
&lt;p&gt;A street-sweeper smashes his father&amp;#8217;s watch.&lt;br /&gt;
He doesn&amp;#8217;t want to hear it tick&lt;br /&gt;
When every second is one second less.&lt;br /&gt;
The dying smile as though justified,&lt;br /&gt;
The foolish count their money and clutch&lt;br /&gt;
At jewels, and build their houses of brick,&lt;br /&gt;
And lovers, trembling, whisper, &amp;#8220;Yes&amp;#8221;,&lt;br /&gt;
With the rictus grin of the terrified.&lt;/p&gt;
&lt;p&gt;Shopkeepers let the looters in&lt;br /&gt;
And laugh as they take the TV sets,&lt;br /&gt;
The fridges, iPods and video games,&lt;br /&gt;
And over the tannoy some shining wit&lt;br /&gt;
Plays &amp;#8220;Abide with me&amp;#8221; as the evening draws in.&lt;br /&gt;
A group of soldiers make heartless bets;&lt;br /&gt;
One of them calls out his children&amp;#8217;s names,&lt;br /&gt;
And in the windows, the candles are lit.&lt;/p&gt;
&lt;p&gt;Only babies sleep that night;&lt;br /&gt;
Oblivious, older children play.&lt;br /&gt;
The adults wonder how long it will last&lt;br /&gt;
And cry as the twilight fades to black.&lt;br /&gt;
They cosset the moon, and the candlelight,&lt;br /&gt;
The preacher falls silent, and dares not pray -&lt;br /&gt;
The seventh day is fading fast&lt;br /&gt;
And God is coming back.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;Happy Apocalypse Day, and a very Merry Christmas!&lt;/em&gt;&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/12/21/the-eighth-day/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/12/21/the-eighth-day/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&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'>https://sirenian.livejournal.com/79662.html</guid>
  <pubDate>Wed, 05 Dec 2012 09:04:37 GMT</pubDate>
  <title>How to run Safety Checks</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/79662.html</link>
  <description>&lt;p&gt;Before I run a retrospective, I often run a safety check.&lt;/p&gt;
&lt;p&gt;The purpose of the safety check is to see how safe people feel sharing their opinions or problems in the room. I&amp;#8217;ve been doing this for some years now, and have made many terrible, horrible mistakes! So I thought I would share my learning and help others avoid the same fate.&lt;/p&gt;
&lt;h3&gt;The format&lt;/h3&gt;
&lt;p&gt;I usually get people to write a number from 1 to 5 on a piece of paper, where 5 is &amp;#8220;I feel safe to share anything&amp;#8221; and 1 is &amp;#8220;I am not comfortable sharing my real opinions so I&amp;#8217;m going to smile and nod and pretend to be happy.&amp;#8221;&lt;/p&gt;
&lt;p&gt;If a team is mostly 3&amp;#8217;s or above, I think it&amp;#8217;s worth doing the retro. If it isn&amp;#8217;t, the retro will be pointless. I&amp;#8217;ve sometimes asked management if we can run the retro without them, if comparative safety checks suggest that&amp;#8217;s a better idea (please, managers, try and find someone &lt;em&gt;else &lt;/em&gt;to run your team&amp;#8217;s retrospective!)&lt;/p&gt;
&lt;p&gt;I was even once safety-checked out of a retrospective I was meant to run as a coach &amp;#8211; the company were making redundancies, and the teams thought our input might have contributed. I got some very useful feedback on my coaching after letting someone else run the retro with me out of the room!&lt;/p&gt;
&lt;p&gt;Another format is &amp;#8220;E, S, V, P&amp;#8221;:&lt;/p&gt;
&lt;p&gt;- Explorers want to discover everything they can&lt;br /&gt;
- Shoppers have some things they&amp;#8217;d like to pick up&lt;br /&gt;
- Vacationers are just happy to be away from their desks&lt;br /&gt;
- Prisoners come only because they&amp;#8217;re forced to.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve started replacing that last one, &lt;em&gt;Prisoner&lt;/em&gt;, with &lt;em&gt;Worker&lt;/em&gt;, since nobody is actually forced to come or made a victim by doing so.&lt;/p&gt;
&lt;h3&gt;The safety check should be anonymous&lt;/h3&gt;
&lt;p&gt;I once ran a safety check with a great team who knew each other really well. The PM said, &amp;#8220;Fine,&amp;#8221; and threw a 5 into the middle of the table. The rest of the team followed suit. &amp;#8220;We all get on very well and feel very safe,&amp;#8221; one person pointed out.&lt;/p&gt;
&lt;p&gt;I asked if they minded practising doing it properly, on the grounds that we had the offshore devs joining us a week later. I made sure they had the same pens, the same post-its, so that nobody could see who had voted for what.&lt;/p&gt;
&lt;p&gt;The first piece of paper we unfolded said &amp;#8220;4&amp;#8243;. &amp;#8220;Who wrote that?&amp;#8221; the PM asked.&lt;/p&gt;
&lt;p&gt;Now the team does it completely anonymously.&lt;/p&gt;
&lt;h3&gt;Safety checks should not be shared&lt;/h3&gt;
&lt;p&gt;A couple of years ago, I stopped sharing the safety check. These days I tell teams, &amp;#8220;Only I will see these numbers. They will go in the bin when I am finished; nobody will know. I won&amp;#8217;t even share the average. I will just tell you if there are some people feeling unsafe, so that we can think of ways to make things safer, and I&amp;#8217;ll tell you if it&amp;#8217;s worth running the retrospective.&amp;#8221;&lt;/p&gt;
&lt;p&gt;The teams I do this with seem to consistently vote lower than those who see the numbers. I take this as a sign that they feel more comfortable being honest.&lt;/p&gt;
&lt;p&gt;Sometimes I may do other things to increase safety &amp;#8211; for instance, getting someone else that the team trusts to gather up the numbers before I look at them, or asking the coach of another team if they&amp;#8217;ll help run it, so that my agenda isn&amp;#8217;t on the table either.&lt;/p&gt;
&lt;h3&gt;Project Managers and retrospectives&lt;/h3&gt;
&lt;p&gt;It&amp;#8217;s easy to bias conversation so that your agenda gets discussed. All you have to do, as a facilitator, is encourage discussion which goes your way and encourage interruption when it doesn&amp;#8217;t. And you know what? You&amp;#8217;ll be doing this anyway; you can&amp;#8217;t help it. It&amp;#8217;s human nature.&lt;/p&gt;
&lt;p&gt;This is why I prefer PMs &lt;em&gt;not &lt;/em&gt;to run their own retrospectives. Even the best, most open-minded PMs can&amp;#8217;t help but overlay their own agenda on it, and the worst control the retros to the extent that nobody feels safe to speak. Find someone from another team to help out instead, and go help out with theirs.&lt;/p&gt;
&lt;h3&gt;A special note about Art Attack&lt;/h3&gt;
&lt;p&gt;Of all the retrospective formats I&amp;#8217;ve used, Art Attack &amp;#8211; getting people to draw what&amp;#8217;s in their heads, then talk about it &amp;#8211; is the format most likely to cause controversy. Teams will often hide the elephant in the room when they talk about it, but seem quite willing to draw it! Again, I&amp;#8217;ve had some very frank and helpful feedback myself from running Art Attack retrospectives.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re thinking of running this format with a new team, consider running a safety check first!&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/12/05/how-to-run-safety-checks/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/12/05/how-to-run-safety-checks/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>learning</category>
  <category>values</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/79463.html</guid>
  <pubDate>Thu, 08 Nov 2012 14:03:57 GMT</pubDate>
  <title>BDD Training &amp;#8211; a bit differently</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/79463.html</link>
  <description>&lt;p&gt;Did you know that there are types of requirements which are so uncertain that talking through them will just end in arguing about them? Or that some requirements are so well understood they&amp;#8217;re simply boring? That some requirements are more likely to change than others? Would you like to be able to tell the difference, ask relevant questions and know when you&amp;#8217;ve got enough understanding to start coding?&lt;/p&gt;
&lt;p&gt;Would you like to be able to use your stakeholders&amp;#8217; time more effectively, and have them be truly engaged in conversations? How about using those conversations as a risk management tool? What if the conversations gave you more clarity on the big picture &amp;#8211; the vision of the project, the stakeholders involved and their goals, and the capabilities being delivered?&lt;/p&gt;
&lt;p&gt;What if you could use these ideas to help keep automated scenarios and tests minimal and maintainable, phrased in a language the business use?&lt;/p&gt;
&lt;p&gt;Would you like to use these techniques beyond software &amp;#8211; in everyday life, as a coaching tool, or to help find smaller personal goals that will give you more options for reaching the larger life-changing ones?&lt;/p&gt;
&lt;p&gt;Behaviour-Driven Development uses examples of how a system should behave to explore the intended value and behaviour of that system, with a heavy focus on discovering uncertainty, uncovering risk and avoiding misunderstandings and premature commitments.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re a developer wanting to learn Cucumber, I highly recommend Matt Wynne&amp;#8217;s &lt;a href=&quot;http://bddkickstart.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;BDD Kickstart&lt;/a&gt;. If you come to my sessions, you might not see any code at all. Instead, I focus on helping people have effective conversations and a mindset that makes a difference across the entire team. As part of my BDD tutorials you&amp;#8217;ll get an introduction to Cynefin and complexity thinking, Deliberate Discovery, Real Options, Feature Injection, and &amp;#8211; of course &amp;#8211; Behaviour-Driven Development. The tutorials are highly interactive, full of experiential exercises, and consistently highly rated by attendees, with unique workshops and conversations that you won&amp;#8217;t get anywhere else.&lt;/p&gt;
&lt;p&gt;If you like to have powerful conversations and help to create software that makes a difference, watch this space and &lt;a href=&quot;http://twitter.com/lunivore&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;my Twitter feed&lt;/a&gt; for upcoming tutorials near you, or get in touch if you&amp;#8217;d like them run internally (whole teams welcome!). 2 and 3-day Agile, Lean and BDD courses are also available.&lt;/p&gt;
&lt;p&gt;My next 1-day tutorial will be at &lt;a href=&quot;http://www.agileisland.is/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Agile Island 2012, Reykjavik&lt;/a&gt;, on the 28th of November. There&amp;#8217;s still time to sign up now!&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/11/08/bdd-training-a-bit-differently/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/11/08/bdd-training-a-bit-differently/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&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'>https://sirenian.livejournal.com/79331.html</guid>
  <pubDate>Wed, 31 Oct 2012 13:18:43 GMT</pubDate>
  <title>Learning English</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/79331.html</link>
  <description>&lt;p&gt;Since much of my focus is on getting people to talk and communicate effectively, I thought I would share a couple of sites that might be of use to people wanting to learn the language we tend to communicate in &amp;#8211; English.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://english.stackexchange.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;English StackExchange&lt;/a&gt; is &amp;#8220;a free, community driven Q&amp;#038;A for linguists, etymologists, and serious English language enthusiasts&amp;#8221; &amp;#8211; experienced writers and speakers who are wondering about more advanced topics. Favourite questions include, &lt;a href=&quot;http://english.stackexchange.com/q/24750/7397&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&amp;#8220;How do you quote a passage that has used &amp;#8216;[sic]&amp;#8216; mistakenly?&amp;#8221;&lt;/a&gt;, and &lt;a href=&quot;http://english.stackexchange.com/q/9780/7397&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&amp;#8220;Did English ever have a formal version of &amp;#8216;you&amp;#8217;?&amp;#8221;&lt;/a&gt; (It turns out to be &lt;em&gt;you&lt;/em&gt;, with &lt;em&gt;thou&lt;/em&gt; being informal &amp;#8211; who knew?)&lt;/p&gt;
&lt;p&gt;However, the community has little patience for people who ask questions about correct use of grammar and vocabulary, and heaven help you if you don&amp;#8217;t actually use those in your questions! A new site has now been proposed, and backed by some of the experts over at the advanced site: &lt;a href=&quot;http://area51.stackexchange.com/proposals/41665/english-language-learners?referrer=pvMW8Qf05Ys8GxFV_g6lKw2&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;English Language Learners StackExchange&lt;/a&gt;. It needs a few more people to enter its beta, so if you feel like you could use some help with your &lt;a href=&quot;http://en.wikipedia.org/wiki/English_As_She_Is_Spoke&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;English as she is spoke&lt;/a&gt;, or you think you know enough to help out others, why not head on over and make the commitment to ask or answer 10 questions?&lt;/p&gt;
&lt;p&gt;While I&amp;#8217;m here: &lt;em&gt;it&amp;#8217;s&lt;/em&gt; means &lt;em&gt;it is&lt;/em&gt;, &lt;em&gt;its&lt;/em&gt; means &lt;em&gt;belonging to it&lt;/em&gt;. Please be kind to your apostrophes.&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/10/31/learning-english/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/10/31/learning-english/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&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'>https://sirenian.livejournal.com/78863.html</guid>
  <pubDate>Tue, 02 Oct 2012 13:16:08 GMT</pubDate>
  <title>The Joy of Arrogance</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/78863.html</link>
  <description>&lt;p&gt;I&amp;#8217;m awesome, and arrogant.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m awesome, and arrogant, and I know it, and this makes me joyful. I wanted to share that joy with you, and explain why I think arrogance is so important, and humility overrated.&lt;/p&gt;
&lt;p&gt;For a start, humility suffers from a Catch-22 condition: if you have it, you can&amp;#8217;t know you have it, because if you know you have it you don&amp;#8217;t. Only arrogant people believe themselves to be humble (but not all arrogant people, since some of us know we are).&lt;/p&gt;
&lt;p&gt;Secondly, we&amp;#8217;re all arrogant. Arrogant people are unable to learn, thinking that they already know the answer. This is a natural part of the human condition &amp;#8211; it&amp;#8217;s called confirmation bias &amp;#8211; and we all suffer from it. The world simply has too much data in it to be able to take it all in, so we abstract from what we observe, come to conclusions as a result, form beliefs based on those conclusions, and filter our observations based on our beliefs. This is perfectly normal behaviour.&lt;/p&gt;
&lt;p&gt;There are some people who believe that because they are aware of confirmation bias, they don&amp;#8217;t suffer from it any more. &lt;a href=&quot;http://dannorth.net&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Dan North&lt;/a&gt; calls this &lt;em&gt;bias bias&lt;/em&gt;. People who are seeking humility are trying to escape from confirmation bias. It would be a fantastic goal, if it wasn&amp;#8217;t essentially impossible. The quest for humility is itself a form of bias bias.&lt;/p&gt;
&lt;p&gt;Tobias Mayer wrote in &lt;a href=&quot;http://businesscraftsmanship.tumblr.com/post/30945685799/humility-a-controversial-value&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;his recent blog post on humility&lt;/a&gt;, &amp;#8220;Humility allows for quiet, internal reflection; it is a tool for rightsizing oneself, and thus opens up greater possibilities for thoughtful, considerate, and open interaction with others.&amp;#8221; And yet, this quality isn&amp;#8217;t something that just magically appears out of thin air. The only way to discover that we have opinions which we hold too strongly is to share those opinions, and sharing an opinion that we hold strongly but don&amp;#8217;t recognise as being biased by our beliefs&amp;#8230; well, we will share it as if it&amp;#8217;s a fact, and come across as arrogant. Fact.&lt;/p&gt;
&lt;p&gt;If we reflect internally, what changes? Where do the new opinions come from?&lt;/p&gt;
&lt;p&gt;They come from other people who are sharing their opinions. If &lt;a href=&quot;http://leadershipfreak.wordpress.com/2012/09/30/the-8-strengths-of-humility/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;humility listens and arrogance talks&lt;/a&gt;, then we need arrogance in order for humility to be of any use whatsoever.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s a rather lovely phrase: &lt;a href=&quot;http://www.psychologytoday.com/blog/work-matters/201002/strong-opinions-weakly-held-wisdom-the-courage-act-your-knowledge-and-the-h&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&amp;#8220;Strong opinions, weakly held.&amp;#8221;&lt;/a&gt; That blog post that I&amp;#8217;ve just linked to talks about &amp;#8220;Wisdom as the courage to act on your knowledge AND the humility to doubt what you know.&amp;#8221; Have you ever tried to doubt what you &lt;em&gt;know&lt;/em&gt;? Not just suspect, but actually know? Again, we&amp;#8217;re asking for the impossible.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s what I&amp;#8217;m going to do. Instead of doubting what &lt;em&gt;I&lt;/em&gt; know, I&amp;#8217;m going to focus on finding out what &lt;em&gt;you&lt;/em&gt; know. I&amp;#8217;m going to do that by sharing my strongest beliefs &amp;#8211; as I have in this blog, as have all the bloggers on humility. I will ask questions only about those things about which I am uncertain. I will do this because there&amp;#8217;s a good chance that I&amp;#8217;m right, and because my essential human nature makes it impossible for me to do anything else. If I do ask questions, I will gain certainty, and then I will share my wonderful new knowledge with you, because it will be true and I will be right. If I&amp;#8217;m wrong, you will no doubt set me straight, because you believe you&amp;#8217;re right too. I probably won&amp;#8217;t believe you at first, because I&amp;#8217;ll be busy filtering whatever you say to fit my model, so you might have to persist and perhaps remind me that I am human and therefore arrogant. Your duty to me, as a fellow human being, is to be arrogant enough, and forgiving enough of my arrogance, to do that.&lt;/p&gt;
&lt;p&gt;Because I&amp;#8217;m awesome, and arrogant, and so are you.&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/10/02/the-joy-of-arrogance/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/10/02/the-joy-of-arrogance/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&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'>https://sirenian.livejournal.com/78633.html</guid>
  <pubDate>Fri, 21 Sep 2012 13:01:11 GMT</pubDate>
  <title>The Deliberate Discovery Workshop</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/78633.html</link>
  <description>&lt;p&gt;This is a pretty simple workshop which I ran at Agile 2011 and have run as part of my BDD tutorial since. It usually gets people thinking differently, so I thought I&amp;#8217;d share it with you too. Some teams have taken this away to use as another retrospective format, and I&amp;#8217;m always fascinated by the stories that come out! It can often lead nicely into an explanation of Cynefin, and also introduces Real Options (it turns out that Deliberate Discovery and Real Options are two sides of the same coin).&lt;/p&gt;
&lt;p&gt;I tend to give the instructions out one column at a time, to avoid people overthinking and trying to aim for some outcome at the end. I also walk round the room and ask if anyone&amp;#8217;s having difficulty coming up with ideas, particularly with respect to the commitment. Identifying the moment of commitment &amp;#8211; or recognising that someone else is making the commitment for you &amp;#8211; is the heart of the workshop. Big thanks to &lt;a href=&quot;https://twitter.com/dominicad&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Dominica&lt;/a&gt; for trying this out and helping with reflection on what works.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Instructions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In groups of 3 to 4 people, get a big piece of paper and divide it into 4 columns.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1: Tell a story&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Each person tells a story about a discovery; either a problem they encountered, or something they found out that they wish they&amp;#8217;d known earlier. Give the story a title. Dan North likes &amp;#8220;the one where (this happened)&amp;#8221;. Put the title on a post-it or just write it into the first column.&lt;/p&gt;
&lt;p&gt;If working with a large group, get 1 person from each small group to share their story.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2: Identify the commitment&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;What decision had already been made that meant it was a problem? Did you make a promise or have one made on your behalf? What was the point at which the decision became hard to reverse? When did an investment get made that was hard to recover? Put this in column 2.&lt;/p&gt;
&lt;p&gt;If working with a large group, it might be worth picking out one of the examples to work through so they get the idea.&lt;/p&gt;
&lt;p&gt;Examples might include decisions around scope and deadlines, external communications, spending money, or writing the wrong code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3: Deliberate Discovery&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Were there any ways you could have discovered information earlier that would have led to a different decision? Who could you have talked to? Where was the information located, and could you have gone there? This goes in column 3.&lt;/p&gt;
&lt;p&gt;Examples might include talking to customers, sitting with users, trying to release early.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4: Real Options&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Were there any ways of paying to keep options open, perhaps making the commitment later, when more information was present? Was the commitment simply made too early?&lt;/p&gt;
&lt;p&gt;Examples might include good rollback procedures, using technology that&amp;#8217;s easy to change, agreeing a range of dates instead of a deadline.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wrap Up&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If working in a large group, get each smal group to share their insights and anything interesting they discovered.&lt;/p&gt;
&lt;p&gt;How likely is it that something similar will happen again?&lt;/p&gt;
&lt;p&gt;If very likely, would adding the discovery process you identified help you avoid this problem? (This matches the &amp;#8220;complicated&amp;#8221; Cynefin domain, so cause and effect can usually be correlated and making the discovery early will often prevent the problem occurring.)&lt;/p&gt;
&lt;p&gt;If it&amp;#8217;s unlikely to happen again, would adding the options process also provide options in any other cases? (This matches the &amp;#8220;complex&amp;#8221; Cynefin domain, and processes which create options allow decisions to become safe-to-fail experiments or probes instead.)&lt;/p&gt;
&lt;p&gt;Whatever the insights, this can then be used as a way of changing the process &amp;#8211; and everyone loves to tell stories about problems they encountered!&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/09/21/the-deliberate-discovery-workshop/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/09/21/the-deliberate-discovery-workshop/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>real options</category>
  <category>complexity</category>
  <category>cynefin</category>
  <category>deliberate discovery</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/78483.html</guid>
  <pubDate>Sat, 07 Jul 2012 10:04:29 GMT</pubDate>
  <title>Examples in the large</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/78483.html</link>
  <description>&lt;p&gt;A couple of posts ago, I wrote about &lt;a href=&quot;http://lizkeogh.com/2012/06/01/bdd-in-the-large/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Feature Injection&lt;/a&gt;. Here&amp;#8217;s a quick summary of how I do it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vision:&lt;/strong&gt; A primary or core stakeholder has a vision which will save money, make money or protect revenue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Goals:&lt;/strong&gt; As well as his own goal, the goals of other stakeholders will have to be met too, in order for the vision to go live.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capabilities:&lt;/strong&gt; To deliver the goal, we provide the users and the system with the capabilities to do something.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Features: &lt;/strong&gt;Most capabilities could be achieved with people, paper and pen, but we like to help by providing software. A feature is a widget, or a part of an application, or a page on a website, which supports the capability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stories:&lt;/strong&gt; Features are quite large, so we break them into vertical slices on which we can get feedback.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scenarios:&lt;/strong&gt; A scenario is an example of a user using the system. We can use scenarios to explore the requirements, discover things we haven&amp;#8217;t thought about and break up our features and our scope.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code:&lt;/strong&gt; Finally, we get to see the vision become reality!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also wrote about &lt;a href=&quot;http://lizkeogh.com/2011/09/22/conversational-patterns-in-bdd/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;two patterns I use in conversation with scenarios&lt;/a&gt;: context questioning, and outcome questioning.&lt;/p&gt;
&lt;p&gt;Given a context, when an event happens, then an outcome should occur.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is there any other context which produces a different outcome for the same event?&lt;/li&gt;
&lt;li&gt;Is this the only outcome that&amp;#8217;s important, or does something else need to happen too?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Normally when we think of scenarios, we think of a user using the system. However, we can use these two patterns at scale, as well.&lt;/p&gt;
&lt;p&gt;Given a stakeholder, when we deliver this software, then we should meet his goals. Is there any essential stakeholder whose goals we haven&amp;#8217;t met? Is there any other goal we need to meet at the same time?&lt;/p&gt;
&lt;p&gt;As an example, think of writing software for air traffic control. Obviously the pilots are stakeholders. What about the regulatory authorities? What are their goals? Will the airlines be able to stop us going live? Are there legal concerns?&lt;/p&gt;
&lt;p&gt;Given a feature, when we deliver this software, then the user should have the capability to do something.&lt;/p&gt;
&lt;p&gt;As an example, consider a trading system. Does the feature for booking a trade provide the whole capability? What about auditing? Approvals? This is also a great way to discover other missing stakeholders!&lt;/p&gt;
&lt;p&gt;Given a vision, when we deliver this software, then we should protect our revenue.&lt;/p&gt;
&lt;p&gt;Will this really stop our customers from going somewhere else? Is there some context in the market which we&amp;#8217;re missing? If we deliver this software, are there any other possible outcomes or repercussions? Perhaps Facebook or RBS could have used this pattern&amp;#8230;&lt;/p&gt;
&lt;p&gt;By questioning what should happen, and asking, &amp;#8220;Should it?&amp;#8221;, we can use the same familiar patterns at scale to discover even more potential scope, explore our ignorance and reach a common understanding or find places where there isn&amp;#8217;t one.&lt;/p&gt;
&lt;p&gt;Wouldn&amp;#8217;t it be nice if we could write tests for those examples at scale, too?&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/07/07/examples-in-the-large/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/07/07/examples-in-the-large/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&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'>https://sirenian.livejournal.com/78122.html</guid>
  <pubDate>Sun, 24 Jun 2012 15:37:24 GMT</pubDate>
  <title>Beyond Test Driven Development</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/78122.html</link>
  <description>&lt;p&gt;&lt;em&gt;Clarification: this isn&amp;#8217;t a post about BDD vs. TDD, it&amp;#8217;s a post about Spike and Stabilize. Tagging those now.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;For love of TDD&lt;/h3&gt;
&lt;p&gt;Dan North and I have been talking about some different ways of writing software that matters. We&amp;#8217;ve been talking about not doing TDD, and not automating BDD scenarios.&lt;/p&gt;
&lt;p&gt;A lot of people have reacted to these suggestions with something approaching visceral horror, as if we&amp;#8217;ve committed outright heresey, which I guess we have. TDD is such a game-changing practice that those who&amp;#8217;ve discovered it recently may not be able to even imagine a world without it, since that would mean going backwards. So I want to explain a little bit about my take on TDD, just to make it really clear, and then introduce some different ideas.&lt;/p&gt;
&lt;p&gt;TDD is amazing.&lt;/p&gt;
&lt;p&gt;TDD is a truly important practice that every developer who writes code for a living ought to know about and attempt to master. TDD is how I learnt to write maintainable code; design classes with appropriate and single responsibilities; understand what it was that I was really trying to achieve.&lt;/p&gt;
&lt;p&gt;The people who came up with TDD are deserving of every respect, which I haven&amp;#8217;t always given them. I decided to &lt;em&gt;start&lt;/em&gt; with that this time just to make it clear. TDD is a flippin&amp;#8217; awesome practice. When we talk about &amp;#8220;BDD isn&amp;#8217;t just TDD&amp;#8221;, it definitely evolved from it. If TDD hadn&amp;#8217;t existed, BDD and ATDD wouldn&amp;#8217;t have either. So a big, massive thank you to all those people who helped create and espouse the values of TDD.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you haven&amp;#8217;t experienced really great TDD, stop reading. This post is not for you.&lt;/strong&gt; Go read &lt;a href=&quot;https://sites.google.com/site/unclebobconsultingllc/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Bob Martin&lt;/a&gt;&amp;#8217;s many articles and posts, or &lt;a href=&quot;http://www.amazon.com/Test-Driven-Development-By-Example/dp/0321146530/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Kent Beck&amp;#8217;s book&lt;/a&gt;, or find your local code retreat instead. You will get more out of that time than reading this article.&lt;/p&gt;
&lt;h3&gt;Beyond TDD&lt;/h3&gt;
&lt;p&gt;Dan North and I have been talking about moving beyond TDD for a while. Here&amp;#8217;s a confession: I don&amp;#8217;t always write my tests first. I often &lt;a href=&quot;http://skillsmatter.com/podcast/agile-testing/bdd-when-outcomes-dont-come-out&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;don&amp;#8217;t automate scenarios up-front&lt;/a&gt; either. And I consider it &lt;em&gt;right for me not to do so&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;Dan recently blogged on &lt;a href=&quot;http://dannorth.net/2012/06/09/published-the-art-of-misdirection/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;the opportunity costs of our various practices&lt;/a&gt;, and used TDD as an example of a practice that carries such a cost. It &lt;em&gt;can&lt;/em&gt; take longer to produce software with TDD than without. I know this because I&amp;#8217;ve tried it both ways, as has Dan. We do something that Dan calls &amp;#8220;Spike and Stabilize&amp;#8221; &amp;#8211; trying one or several things quickly to get feedback, then stabilizing the end result after we&amp;#8217;ve managed to eliminate some of the uncertainty around what we&amp;#8217;re doing. I can&amp;#8217;t tell the difference between the end result when I TDD something to when I spike and stabilize, except that the second one lets me get feedback from my stakeholders faster, and is easier to change in response to that feedback.&lt;/p&gt;
&lt;p&gt;For me, that means starting with a UI and knocking out something approximate, frequently with hard-coded data. If the UI is the place of uncertainty, I&amp;#8217;ll show it to the stakeholder immediately, or try it a couple of ways. Sometimes it might be a performance concern, in which case the UI will be something that exercises the performance. Sometimes I might need some simple behaviour behind the UI, which I also just &amp;#8220;hack out&amp;#8221;.&lt;/p&gt;
&lt;p&gt;I keep all the code I&amp;#8217;m writing clear, readable and easy to change. I can do this because I can write examples of how my class is going to work (a.k.a. unit tests) &lt;em&gt;in my head&lt;/em&gt;. That&amp;#8217;s come from hours of doing TDD, at work, at home, at code retreats, after work, during lunch hours. If you want to be really, really great at coding, I think you do need to have the 10,000 hours of practice that Malcolm Gladwell talks about. I&amp;#8217;m pretty good rather than really good (and particularly, I have shallow rather than deep knowledge) but I get TDD enough to move beyond it. I&amp;#8217;m emphasising this not to show off my knowledge, but to stop anyone who&amp;#8217;s still learning TDD from thinking, &amp;#8220;Oh, this is great! I can just do what Liz does.&amp;#8221; Get good at TDD first.&lt;/p&gt;
&lt;p&gt;Dan works with amazing people who are way better than I am. He&amp;#8217;s damned good too. Developers like Dan and his team don&amp;#8217;t need TDD in order to create good designs, separate responsibilities or simple code that does just enough to do the job. They&amp;#8217;re really good at TDD, and have moved beyond it.&lt;/p&gt;
&lt;p&gt;For most people, TDD is a mechanism for discovery and learning. For some of us, if we can write an example in our heads, our biggest areas of learning probably lie elsewhere. Since ignorance is the constraint in our system, and we&amp;#8217;re not ignorant about much that TDD can teach us, skipping TDD allows us to go faster. This isn&amp;#8217;t true of everything. Occasionally the feedback is on some complex piece of business logic. Every time I&amp;#8217;ve tried to do &lt;em&gt;that&lt;/em&gt; without TDD it&amp;#8217;s stung me, so I&amp;#8217;m getting better at working out when to do it, and when it&amp;#8217;s OK to skip it. If in doubt, I do TDD. I recommend this as a general principle. Otherwise, I try to eliminate the ignorance I have. Here are the rules I&amp;#8217;ve learnt which help me to spike things out and stabilize them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If in doubt, do TDD.&lt;/li&gt;
&lt;li&gt;If it&amp;#8217;s complex enough or has enough learning in it that pairing is useful, do TDD.&lt;/li&gt;
&lt;li&gt;When spiking, hard-code the context rather than adding behaviour wherever possible. Hard-coded data doesn&amp;#8217;t require TDDing.&lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t pick the right libraries or technology. Pick the technology that&amp;#8217;s easy to change. And don&amp;#8217;t write tests around other people&amp;#8217;s libraries &amp;#8211; isolate them through interfaces or adapters instead.&lt;/li&gt;
&lt;li&gt;Once the uncertainty you&amp;#8217;re dealing with is no longer the area of greatest ignorance, stabilize by adding tests. You&amp;#8217;ll be able to tell at this stage if you should have TDD&amp;#8217;d first based on how much rework you have to do to make the tests readable.&lt;/li&gt;
&lt;li&gt;Adding tests afterwards is &lt;em&gt;especially important&lt;/em&gt; if you&amp;#8217;re working in a team with mixed skills or silo&amp;#8217;d roles, or other teams in the same code-base, as your team-mates and colleagues will need them to provide documentation.&lt;/li&gt;
&lt;li&gt;Adding tests afterwards is &lt;em&gt;especially important&lt;/em&gt; if you&amp;#8217;re the kind of person who forgets what it was you were working on after a couple of months (i.e.: just about everyone).&lt;/li&gt;
&lt;li&gt;Adding tests afterwards requires &lt;em&gt;even more discipline&lt;/em&gt; than adding them before-hand. If you find you&amp;#8217;re under pressure to skip that step, do TDD instead.&lt;/li&gt;
&lt;li&gt;No amount of automated testing is a substitute for trying out the code you&amp;#8217;ve just written manually.&lt;/li&gt;
&lt;li&gt;If your user is another system, hack something out to allow you to pretend to be that other system, then stabilize &lt;em&gt;that&lt;/em&gt;. You&amp;#8217;ll need it later.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By doing TDD &amp;#8211; writing our tests first, or before we&amp;#8217;ve got feedback on what it is we&amp;#8217;d like to achieve &amp;#8211; we are creating a premature commitment. The principles of &lt;a href=&quot;http://www.infoq.com/articles/real-options-enhance-agility&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Real Options&lt;/a&gt; say, &amp;#8220;Never commit early unless you know why&amp;#8221;. If you&amp;#8217;re working with uncertainty, and if you can avoid adding investment before getting feedback &amp;#8211; for &lt;em&gt;any&lt;/em&gt; practice &amp;#8211; then you will actually go quicker and be able to respond to discovery faster. You will be more agile.&lt;/p&gt;
&lt;p&gt;However, if you don&amp;#8217;t yet know how to write software that&amp;#8217;s easy to change and maintain, every piece of code you write is a more concrete commitment than it will be if you learn to do TDD, since TDD helps you to adopt these practices, as well as providing nice documentation and living examples of how to use your code, how it behaves and why it&amp;#8217;s valuable. If you haven&amp;#8217;t yet experienced amazing TDD and you try doing things this way, you&amp;#8217;ll probably find that you end up with a lot of rework when you come to stabilize the spike (and if you don&amp;#8217;t stabilize the spike, you&amp;#8217;ll eat up cost in maintenance later).&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s interesting to me that this is actually how a lot of people learn to do TDD &amp;#8211; by adding tests afterwards, until they gain enough confidence to add tests first. It really does remind me of this quote from Bruce Lee:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Before I studied the art, a punch to me was just like a punch, a kick just like a kick. After I learned the art, a punch was no longer a punch, a kick no longer a kick. Now that I&amp;#8217;ve understood the art, a punch is just like a punch, a kick just like a kick. The height of cultivation is really nothing special. It is merely simplicity; the ability to express the utmost with the minimum.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/06/24/beyond-test-driven-development/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/06/24/beyond-test-driven-development/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>spike and stabilize</category>
  <category>uncertainty</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/77979.html</guid>
  <pubDate>Fri, 01 Jun 2012 12:08:34 GMT</pubDate>
  <title>BDD in the large</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/77979.html</link>
  <description>&lt;p&gt;One of the biggest problems I encounter with BDD is that it was started by developers, for developers, so that we could get a better grip on what it was we were developing.&lt;/p&gt;
&lt;p&gt;As we began to understand the complexities of what we were developing, conversations with business stakeholders started to become more fluid. We started to understand what it was like to &lt;a href=&quot;http://lizkeogh.com/2010/02/02/theyre-not-user-stories/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;handle multiple stakeholders&lt;/a&gt;; to have uncertainty around requirements where stakeholders &lt;a href=&quot;http://skillsmatter.com/podcast/agile-testing/bdd-when-outcomes-dont-come-out&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;weren&amp;#8217;t really sure about the outcomes they wanted&lt;/a&gt;; to pay to delay decisions about implementation until later.&lt;/p&gt;
&lt;p&gt;There are three practices / principles / bodies of knowledge and experience which I use and teach as part of BDD, and I don&amp;#8217;t think BDD works well without them. Good BDDers have taught these practices anyway, sometimes without giving them a name, so I wanted to call them out explicitly so you know that they&amp;#8217;re there and can use their names to go find out more.&lt;/p&gt;
&lt;p&gt;This is the stuff that happens in conversation, before developers get anywhere near a keyboard.&lt;/p&gt;
&lt;h3&gt;Feature Injection&lt;/h3&gt;
&lt;p&gt;A large number of Agile projects have backlogs of user stories. Some of these backlogs can be quite large. One team had over a year&amp;#8217;s worth of stories, covering four walls of a room. Scrum and other Agile practitioners talk about &amp;#8220;grooming the backlog&amp;#8221;; reacting to their growing understanding of the real problem by removing some stories and adding more in. Even Agile teams can be sidetracked by &amp;#8220;quick&amp;#8221; two-week-long analysis phases, or two-hour planning sessions, or additional functionality that still fits within their deadline when they could have shipped three weeks ago.&lt;/p&gt;
&lt;p&gt;What if you didn&amp;#8217;t have to do this?&lt;/p&gt;
&lt;p&gt;Lean proponents talk about&lt;em&gt; minimum viable products&lt;/em&gt; or &lt;em&gt;increments&lt;/em&gt;, in which we determine the smallest thing that could make a difference to the problem, then do the minimum necessary to ship. Feature Injection, introduced to me by Chris Matts, is a fantastic technique for discovering that minimum. Here&amp;#8217;s how it works.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Every project worth pursuing has a &lt;strong&gt;vision &lt;/strong&gt;- either something new, or something that you&amp;#8217;ve seen someone else do and you want to do it too. The vision is designed to increase revenue, decrease costs or protect revenue &amp;#8211; for instance, keeping customers from going to a competitor (note that there&amp;#8217;s no ROI for a vision like that!)&lt;/li&gt;
&lt;li&gt;There may be other stakeholders whose &lt;strong&gt;goals &lt;/strong&gt;need to be met in order to allow the vision to go live. Frequently these stakeholders have traditionally gatekeeping roles &amp;#8211; UAT, Architecture, Legal, Security. By recognizing these stakeholders early, we get a chance to turn them into educators instead.&lt;/li&gt;
&lt;li&gt;To meet the stakeholder&amp;#8217;s goals, we create &lt;strong&gt;capabilities&lt;/strong&gt;. For instance, employees might need the capability to book a holiday. Notice that they could quite easily do that with paper! To make our differentiating vision compelling, we may need a certain amount of commoditised functionality &amp;#8211; things that people will expect in that kind of application. When David Anderson talks about differentiators he uses the mobile phone market. An example of a differentiator is the first ever camera in a phone. We&amp;#8217;ll also need to be able to make calls, receive calls, look up numbers, etc.&lt;/li&gt;
&lt;li&gt;To deliver the capabilities, we design &lt;strong&gt;features&lt;/strong&gt;. We may decide that some features are too complex, and create manual workarounds instead. The features represent the way in which users will use the capabilities we&amp;#8217;re giving them &amp;#8211; through a browser, a windows client, a mobile phone, etc. Now we&amp;#8217;re starting to move into the areas of UI design, preferably with a UI designer, and developers and testers can really get involved if they weren&amp;#8217;t already! Even if the development team wasn&amp;#8217;t involved in the conversations before this point, I recommend they should be aware of the outcomes and able to map their features back into the capabilities, stakeholder goals and initial vision. Even better, the team might only have the capabilities on their backlog &amp;#8211; breaking them down into features as and when they reach the next capability (see Deliberate Discovery for prioritisation).&lt;/li&gt;
&lt;li&gt;To really explore the features, we talk through &lt;strong&gt;scenarios&lt;/strong&gt;; examples of the outcomes a system should produce when a user uses it in different contexts. We can use the scenarios to decide what we want to get feedback on, and thus divide the features into &lt;strong&gt;stories&lt;/strong&gt;. The main purpose of dividing things into stories is to be able to get feedback quickly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Scenarios are the BDD artifacts people are most familiar with, but look how much happens before we even get this far! And that&amp;#8217;s without budget negotiations, portfolio management, company strategy, recruitment and all the other gubbins needed to get a development team up and running&amp;#8230;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;After that, we can move into the traditional development space &amp;#8211; TDD (or unit-level BDD if you prefer), &lt;strong&gt;code&lt;/strong&gt;, integration and, we hope, production.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Deliberate Discovery&lt;/h3&gt;
&lt;p&gt;In Agile projects, we normally prioritise stories by their value. But wait a moment! If we&amp;#8217;re doing Feature Injection, our vision is for the smallest valuable thing we could ship (otherwise, that smaller thing would be our minimum viable product). So we can&amp;#8217;t really say that one feature is more valuable than another, because we need them all (and if we don&amp;#8217;t, that&amp;#8217;s our minimum viable product!).&lt;/p&gt;
&lt;p&gt;What we can say, though, is that we know more about some of the features than others. Commoditised features, particularly, will have been done before, and we can probably estimate them and make predictions about them, as long as we have enough expertise in the domain. Anything that&amp;#8217;s new, or that&amp;#8217;s new to the team, we&amp;#8217;ll know less about. We can bet that there are some things in there that we&amp;#8217;ll discover as we code, some of which will come back to bite us. These are the kind of things which can really derail a project.&lt;/p&gt;
&lt;p&gt;In the spirit of failing fast, we&amp;#8217;d really like to have our projects derailed early, while we can still change our minds and perhaps think of something else to do instead. Deliberate discovery is the act of assuming ignorance, then going to look for it and optimizing to address it first. There will always be things we don&amp;#8217;t know we don&amp;#8217;t know &amp;#8211; but since those things will usually show up in the functionality we&amp;#8217;ve not delivered before, why don&amp;#8217;t we do the new stuff first?&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re into Theory of Constraints, you know that in a production line environment, you tailor your system to the constraining machine, putting it first where possible. But software development is more like product development; it&amp;#8217;s creative knowledge work, rather than doing the same thing over and over again. &lt;a href=&quot;http://dannorth.net/2010/08/30/introducing-deliberate-discovery/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Ignorance is the constraint&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is how we prioritise &amp;#8211; by the features and capabilities about which we&amp;#8217;re most ignorant. It helps us to address the risk early. Since the risky stuff is usually what keeps our stakeholders awake at night, this is a great way of establishing trust, too.&lt;/p&gt;
&lt;h3&gt;Real Options&lt;/h3&gt;
&lt;p&gt;As well as the things we don&amp;#8217;t know, there will also be things we don&amp;#8217;t know that we don&amp;#8217;t know. No amount of analysis will ever allow us to discover everything! So we have to keep ourselves ready to change.&lt;/p&gt;
&lt;p&gt;Unfortunately, we human beings don&amp;#8217;t work well with uncertainty, and have a tendency to try and eliminate it. One of the ways we do that is to break down problems into their components. That works very well for predictable stuff that we&amp;#8217;ve done before, but not for new things which we don&amp;#8217;t understand so well. Doing this for new functionality only leads to the uncertainty being hidden away!&lt;/p&gt;
&lt;p&gt;So what can we do to keep our options open, so that our ignorant ignorance doesn&amp;#8217;t bite us?&lt;/p&gt;
&lt;p&gt;Chris Matts took the concept of trading options &amp;#8211; the right, but not the obligation to buy copper at $1000 a tonne in October, for instance &amp;#8211; and worked out which aspects of options still apply to Real Life. Here are his principles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Options have value.&lt;/li&gt;
&lt;li&gt;Options expire.&lt;/li&gt;
&lt;li&gt;Never commit early unless you know why.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With Deliberate Discovery, we&amp;#8217;re getting what information we can before we make a larger commitment, so Deliberate Discovery plays into this very nicely. There&amp;#8217;s another thing we can do, though. We can &lt;em&gt;pay to keep our options open&lt;/em&gt;. This is what we do when we take time out to design our code well or refactor it so that it&amp;#8217;s understandable. We&amp;#8217;re creating options for the future.&lt;/p&gt;
&lt;p&gt;When we talk through our scenarios and we see our P.O. frowning or saying, &amp;#8220;Um&amp;#8230;&amp;#8221; then we know there&amp;#8217;s uncertainty there. It might be worth spiking out a feature cheaply, to see if it does the job, before pinning that feature down with automation (or even, dare I say, unit tests). Discovering that uncertainty and ignorance is at the heart of BDD &amp;#8211; not finding the examples, but &lt;a href=&quot;http://lizkeogh.com/2012/02/20/its-about-the-examples-you-cant-find-not-the-ones-you-can/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;finding the examples we can&amp;#8217;t find&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Another practice Chris taught me off the back of this is, &amp;#8220;Don&amp;#8217;t pick the right technology. Pick the technology that&amp;#8217;s easy to change.&amp;#8221; Whenever we have a choice and not enough information to help us make the decision, picking a decision that&amp;#8217;s cheap to change later usually turns out to be a good way forward, as we can change when we have more information (or keep it if it turns out to be good enough!)&lt;/p&gt;
&lt;h3&gt;BDD is just TDD?&lt;/h3&gt;
&lt;p&gt;Sure,&lt;a href=&quot;http://dannorth.net/2012/05/31/bdd-is-like-tdd-if/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt; if you&amp;#8217;re a developer&lt;/a&gt;, and you only get to see the stuff that happens in development. Even then, it may be worth talking through not just the scenarios, but the larger-scale picture; discovering uncertainty and ignorance, paying to keep options open, and working towards a clear and compelling vision to deliver software that&amp;#8217;s not only well-tested and functional, but which really, truly matters.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;In this post, I&amp;#8217;ve focused on the differences between BDD and TDD, most of which have been spawned by the language of BDD which allows for more appreciation of uncertainty than the language of TDD. For the similarities, and more about the history of how BDD was originally derived from TDD, see &lt;a href=&quot;http://lizkeogh.com/2011/06/27/atdd-vs-bdd-and-a-potted-history-of-some-related-stuff/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;this article&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/06/01/bdd-in-the-large/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/06/01/bdd-in-the-large/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>business value</category>
  <category>bdd</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/77694.html</guid>
  <pubDate>Wed, 30 May 2012 14:29:22 GMT</pubDate>
  <title>Showcasing the language of BDD</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/77694.html</link>
  <description>&lt;p&gt;Since there are a few debates going on (again!) about whether BDD is just TDD done well, I thought it might be interesting to showcase some examples where BDD language made a difference to people&amp;#8217;s understanding.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;From &lt;a href=&quot;http://stackoverflow.com/a/5613251/363592&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;StackOverflow, TDD &amp;#8211; Should Private/Protected methods be under unit test?&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Original Poster wrote:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;In TDD development, the first thing you typically do is to create your interface and then begin writing your unit tests against that interface. As you progress through the TDD process you would end-up creating a class that implements the interface and then at some point your unit test would pass.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I wrote: Please let me rephrase this in BDD language:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;When describing why a class is valuable and how it behaves, the first thing you typically do is to create an example of how to use the class, often via its interface*. As you add desired behavior you end up creating a class which provides that value, and then at some point your example works.&lt;/p&gt;
&lt;p&gt;*May be an actual Interface or simply the accessible API of the class, eg: Ruby doesn&amp;#8217;t have interfaces.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;This is why you don&amp;#8217;t test private methods &amp;#8211; because a test is an example of how to use the class, and you can&amp;#8217;t actually use them.&lt;/p&gt;
&lt;p&gt;Response: Brilliant post. Clarifies a lot.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;From &lt;a href=&quot;http://stackoverflow.com/q/3635655/363592&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;StackOverflow, should i only be testing public interfaces in BDD (in general, and specifically in ruby) &lt;/a&gt;(sic):&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I wrote:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Instead of writing a test, you&amp;#8217;re going to write an example of how you can use your class (and you can&amp;#8217;t use it except through public methods). You&amp;#8217;re going to show why your class is valuable to other classes. You&amp;#8217;re defining the scope of your class&amp;#8217;s responsibilities, while showing (through mocks) what responsibilities are delegated elsewhere.&lt;/p&gt;
&lt;p&gt;At the same time, you can question whether the responsibilities are appropriate, and tune the methods on your class to be as intuitively usable as possible. You&amp;#8217;re looking for code which is easy to understand and use, rather than code which is easy to write.&lt;/p&gt;
&lt;p&gt;If you can think in terms of examples and providing value through behaviour, you&amp;#8217;ll create code that&amp;#8217;s easy to use, with examples and descriptions that other people can follow. You&amp;#8217;ll make your code safe and easy to change. If you think about testing, you&amp;#8217;ll pin it down so that nobody can break it. You&amp;#8217;ll make it hard to change.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Response: good answer! very concise!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;From comments on &lt;a href=&quot;http://lizkeogh.com/2009/11/06/translating-tdd-to-bdd/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;my blog post, &amp;#8220;Translating TDD to BDD&amp;#8221;:&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ben asked: Given this terminology, can you reword these sentences to eliminate the TDD terminology, but in such a way that someone who doesn’t know what BDD is can understand it?&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Writing the tests first ensures that the code we write to make them pass is actually testable. Otherwise, we may wind up with classes and methods that, although fairly well designed, are not easily tested&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I replied:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Writing examples of how to use the code, before we write the code that makes those examples work, ensures that the code we write is easy to use and understand. Otherwise, we may wind up with code that, although adhering to SOLID principles, has been written to be easy to write rather than easy to use or maintain.&lt;/p&gt;
&lt;p&gt;(Of course, if you’re doing true outside-in then you already have one example of how to use a piece of code, from its consuming class. I reworded this from ‘well-designed’ to ‘adhering to SOLID principles’, since they’re necessary for good design but IMHO not sufficient.)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Ben responded: Liz, that’s beautiful. I especially like how you phrased your points about use and maintenance. Takes the focus off “testing” and puts it on something that’s more directly tied to value.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Taking it up a level, again from &lt;a href=&quot;http://stackoverflow.com/a/4248991/363592&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;StackOverflow, Are BDD tests acceptance tests?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;BDD &amp;#8220;tests&amp;#8221; exist at multiple different levels of granularity, all the way up to the initial project vision. Most people know about the scenarios. A few people remember that BDD started off with the word &amp;#8220;should&amp;#8221; as a replacement for JUnit&amp;#8217;s &amp;#8220;test&amp;#8221; &amp;#8211; as a replacement for TDD. The reason I put &amp;#8220;tests&amp;#8221; in quotes is because BDD isn&amp;#8217;t really about testing; it&amp;#8217;s focused on finding the places where there&amp;#8217;s a lack or mismatch of understanding.&lt;/p&gt;
&lt;p&gt;Because of that focus, the conversations are much more important than the BDD tools.&lt;/p&gt;
&lt;p&gt;Acceptance testing doesn&amp;#8217;t actually mandate the conversations, and usually works from the assumption that the tests you&amp;#8217;re writing are the right tests. In BDD we assume that we don&amp;#8217;t know what we&amp;#8217;re doing (and probably don&amp;#8217;t know that we don&amp;#8217;t know). This is why we use things like &amp;#8220;Given, When, Then&amp;#8221; &amp;#8211; so that we can have conversations around the scenarios and / or unit-level examples.&lt;/p&gt;
&lt;p&gt;We don&amp;#8217;t call them &amp;#8220;acceptance tests&amp;#8221; because you can&amp;#8217;t ask a business person &amp;#8220;Please help me with my acceptance test&amp;#8221;. Try &amp;#8220;I&amp;#8217;d like to talk to you about the scenario where&amp;#8230;&amp;#8221; instead. Or, &amp;#8220;Can you give me an example?&amp;#8221; Either of these are good. Calling them &amp;#8220;Acceptance tests&amp;#8221; starts making people think that you&amp;#8217;re actually doing testing, which would imply that you know what you&amp;#8217;re doing and just want to make sure you&amp;#8217;ve done it. At that point, conversations tend to focus on how quickly you can get the wrong thing out, instead of about the fact you&amp;#8217;re getting out the wrong thing.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Response: 20 upvotes and a &amp;#8220;nice answer&amp;#8221; badge!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;These are just a few instances of using BDD&amp;#8217;s language instead of TDD&amp;#8217;s. I&amp;#8217;ve found it even more powerful in spoken language, and more powerful still when talking to business-focused stakeholders about examples of how we might use a system to deliver the value they want. I taught BDD to my dad once, showing him how to write examples in Java in order to ensure that his code would be usable and maintainable. After we&amp;#8217;d written a couple of classes, I said, &amp;#8220;Of course, this also gives you a nice set of regression tests.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Oh, yes!&amp;#8221; he said, &amp;#8220;So it does. I hadn&amp;#8217;t thought of that.&amp;#8221;&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/05/30/showcasing-the-language-of-bdd/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/05/30/showcasing-the-language-of-bdd/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&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'>https://sirenian.livejournal.com/77136.html</guid>
  <pubDate>Wed, 09 May 2012 11:23:32 GMT</pubDate>
  <title>Upcoming engagements</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/77136.html</link>
  <description>&lt;p&gt;There are a few exciting speaking and training engagements coming up, many of them UK based!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;First off, two tutorials:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m running my first &lt;a href=&quot;http://skillsmatter.com/podcast/open-source-dot-net/tutorial-to-be-confirmed&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Deliberate Discovery, Cynefin and Real Options tutorial&lt;/a&gt; at Skills Matter on 29th May. These three ways of thinking and modelling software development and the world in general have really helped me, and I&amp;#8217;d like to pass the techniques on. Highly workshop-driven and not at all technical.&lt;/p&gt;
&lt;p&gt;At the end of September I&amp;#8217;ll be running my 1-day BDD tutorial as part of &lt;a href=&quot;http://www.agilecambridge.net/ac2012/index.php&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Agile Cambridge&lt;/a&gt;. This is the &lt;em&gt;only BDD tutorial&lt;/em&gt; I&amp;#8217;ll be running this year, so if you&amp;#8217;re interested, get in there now! &lt;a href=&quot;http://dannorth.net&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Dan North&lt;/a&gt; (my mentor in all things BDD and Agile) and &lt;a href=&quot;http://cognitive-edge.com/blog/author/19/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;David Snowden&lt;/a&gt; (Complexity Thinking and Cynefin guru) are keynote speakers, so it promises to be an excellent conference!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I&amp;#8217;ll also be speaking and running workshops through the year:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://www.next-generation-testing.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Next Generation Testing Conference&lt;/a&gt; organised by Unicom is on the 23rd. I&amp;#8217;ll be on the panel talking about Agile, and particularly ranting about our obsession with granularity and our need for certainty even where it doesn&amp;#8217;t really exist.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m going to be talking about Real Options at &lt;a href=&quot;http://www.meetup.com/DevTank/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Dev Tank in London on the 29th&lt;/a&gt;, after the Progressive .NET Tutorials. It shouldn&amp;#8217;t be a long talk, so lots of opportunity to catch up with your fellow devs over a beer. More details to follow &amp;#8211; watch the space!&lt;/p&gt;
&lt;p&gt;On June 7th, I&amp;#8217;ll be giving an overview of BDD, how to do it well and why it works at &lt;a href=&quot;http://agile-east-anglia-bdd.eventbrite.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Agile East Anglia&lt;/a&gt;. If you&amp;#8217;ve been out of the loop on BDD, this is a great chance to get into it, and I&amp;#8217;ll be answering any questions you have too. I think there may be just one ticket left&amp;#8230;&lt;/p&gt;
&lt;p&gt;In August I&amp;#8217;ll be at &lt;a href=&quot;http://agile2012.agilealliance.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Agile 2012&lt;/a&gt; in Dallas, running &amp;#8220;Turning and turning in the Widening Gyre&amp;#8221;, a workshop on complexity and deliberate discovery, and &amp;#8220;BDD: Look, no Frameworks!&amp;#8221; on how to do BDD using custom DSLs instead of BDD tools, while keeping steps maintainable and readable.&lt;/p&gt;
&lt;p&gt;On 21st &amp;#8211; 22nd September I&amp;#8217;m honoured to be one of the keynote speakers at &lt;a href=&quot;http://www.leanagilescotland.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Lean Agile Scotland&lt;/a&gt;. Topic still to be decided, but it&amp;#8217;s going to be related to people and the inside of our heads; one of my favourite minefields.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m also speaking at &lt;a href=&quot;http://gotocon.com/aarhus-2012/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;GOTO&lt;/a&gt; this year (October 1st to 3rd, Aarhus, Denmark). In my talk, &amp;#8220;To be honest&amp;#8230;&amp;#8221; I&amp;#8217;ll be looking at why honesty is so important and yet so hard to do.&lt;/p&gt;
&lt;p&gt;In the meantime, I have some days free for in-house training or coaching. Please get in touch now, before the rest of the year gets this busy too!&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/05/09/upcoming-engagements/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/05/09/upcoming-engagements/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>conference</category>
  <category>coaching</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/77006.html</guid>
  <pubDate>Sat, 31 Mar 2012 13:31:32 GMT</pubDate>
  <title>Commitment &amp;#8211; a novel about managing project risk</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/77006.html</link>
  <description>&lt;p&gt;If you&amp;#8217;ve heard me speak at any conferences or read my blog over the last few years, you&amp;#8217;ll know that I&amp;#8217;m really, &lt;em&gt;really&lt;/em&gt; into Real Options.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m half-tempted to get &amp;#8220;Options have value. Options expire,&amp;#8221; added to my tattoo. The principles which Chris Matts and Olav Maassen champion have become such guiding forces in my life that many of the decisions I make are only done in order to increase the number of options available to me. Once the whole innate phobia of uncertainty is out of the way, it&amp;#8217;s a fantastic way to live life in freedom and with fun.&lt;/p&gt;
&lt;p&gt;Real Options are also a phenomenal model for managing risk on software project &amp;#8211; and not the only brilliant idea that Chris and Olav have!&lt;/p&gt;
&lt;p&gt;So imagine my absolute joy when I saw &lt;a href=&quot;http://www.sponsume.com/project/commitment-novel-managing-project-risk&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;this in the works&lt;/a&gt; &amp;#8211; a graphical novel, fun and easy to read and understand, dealing with all kinds of ideas around risk management. The skiing story at the end of the first chapter (downloadable from the link) is the same one that Chris shared with me to help me understand his ideas.&lt;/p&gt;
&lt;p&gt;Chris and Olav describe it as &amp;#8220;a business graphic novel on managing risk. The book is a culmination of their collaboration on the real options model over the last six years. It provides examples of how to manage a project using the real options model and outlines a simple technique for making better (informed) decisions. It also covers more advanced topics such as information arrival process, game theory, feature injection, paradox of choice and how to deal with uncertainty. While geared towards project managers, the book benefits anyone making decisions in their job or daily life. Chris and Olav focus on making risk management easily understandable as everybody does this every day without being aware of it. &amp;#8221;&lt;/p&gt;
&lt;p&gt;I am very confident that this book is going to be ground-breaking. I am so confident that I&amp;#8217;ve already laid out £500 of hard-earned cash for a chance to star in the book (sorry, that option has expired). I don&amp;#8217;t regard this as charity. This is me doing something small to pay Chris and Olav back for their guidance and help over the last few years, and it&amp;#8217;s money they&amp;#8217;ve helped me earn anyway. Estimated publishing date is Winter 2012&amp;#8230; assuming they manage to raise the funds to kick it off.&lt;/p&gt;
&lt;p&gt;If you would like to help these two fantastic people get this novel out of the door and benefit from the same help they&amp;#8217;ve given me, please &lt;a href=&quot;http://www.sponsume.com/project/commitment-novel-managing-project-risk&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;go to the Sponsume site&lt;/a&gt; before April 14th and pick an option. You never know &amp;#8211; you could be the proud owner of a limited edition of a book that turns out to be as ground-breaking as &lt;a href=&quot;http://www.amazon.com/The-Goal-Process-Ongoing-Improvement/dp/0884271781/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&amp;#8220;The Goal&amp;#8221;&lt;/a&gt;*.&lt;/p&gt;
&lt;div style=&quot;font-size:x-small&quot;&gt;*What do you mean, you haven&amp;#8217;t read it? Go. Buy it. Now! It&amp;#8217;s already out and will give you something to read in the meantime while you&amp;#8217;re waiting for &amp;#8220;Commitment&amp;#8221;.&lt;/div&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/03/31/commitment-a-novel-about-managing-project-risk/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/03/31/commitment-a-novel-about-managing-project-risk/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>business value</category>
  <category>stories</category>
  <category>life</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/76467.html</guid>
  <pubDate>Mon, 05 Mar 2012 21:19:31 GMT</pubDate>
  <title>The Myth of &amp;#8220;What&amp;#8221; and &amp;#8220;How&amp;#8221;</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/76467.html</link>
  <description>&lt;p&gt;I often hear things like, &amp;#8220;Tell the team what to build, but don&amp;#8217;t tell them how to build it.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Or, &amp;#8220;A feature is what you&amp;#8217;re building. A story is how you&amp;#8217;re going to build it.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Or, &amp;#8220;When you&amp;#8217;re doing TDD, don&amp;#8217;t worry about the internals of the class. The API is what it does. The internals are how it does it.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s the thing. When we write code, that&amp;#8217;s how we&amp;#8217;re creating a story or a feature. It&amp;#8217;s also how we&amp;#8217;re implementing the architecture. It&amp;#8217;s how we&amp;#8217;re managing security and providing an audit trail and doing a bunch of other stuff.&lt;/p&gt;
&lt;p&gt;And that&amp;#8217;s how we&amp;#8217;re selling more goods. And how we&amp;#8217;re keeping things maintainable for the future. And how we&amp;#8217;re preventing data theft. And how we&amp;#8217;re correcting our mistakes.&lt;/p&gt;
&lt;p&gt;And that&amp;#8217;s how we&amp;#8217;re staying in business. And how we&amp;#8217;ll be able to react in the future. And how we&amp;#8217;re able to sleep at night. And how we learn.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The code is how we deliver a story.&lt;/li&gt;
&lt;li&gt;The story is how we deliver a feature.&lt;/li&gt;
&lt;li&gt;The feature is how we give the users the capability to do something.&lt;/li&gt;
&lt;li&gt;The users&amp;#8217; capabilities are how they deliver a business goal.&lt;/li&gt;
&lt;li&gt;The business goals are how stakeholders implement a vision.&lt;/li&gt;
&lt;li&gt;The vision is an idea of how to make money, save money or protect revenue.&lt;/li&gt;
&lt;li&gt;And we could keep going if we wanted to&amp;#8230;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Every goal, no matter how big or small, is the &lt;em&gt;how&lt;/em&gt; for someone&amp;#8217;s &lt;em&gt;what&lt;/em&gt;. (The &lt;em&gt;how&lt;/em&gt; and the &lt;em&gt;what&lt;/em&gt; may come from the same person, but the interesting stuff happens when they&amp;#8217;re different people. Or behave like they are.)&lt;/p&gt;
&lt;p&gt;If only life worked by being able to divide a bigger &lt;em&gt;what&lt;/em&gt; up into smaller pieces and manage them appropriately, then it would all be fine! Unfortunately the code has to work &lt;em&gt;with other code&lt;/em&gt; to deliver its value. The features have to work &lt;em&gt;with other features&lt;/em&gt;. The system has to work with other systems, users have to work with other users and the goals of one stakeholder have to align with the goals of another.&lt;/p&gt;
&lt;p&gt;This is why we have root cause analysis and the &amp;#8220;5 Whys&amp;#8221; &amp;#8211; because when we can see the higher-level goals and deeper-rooted problems, we can understand better how our own actions fit into them, and what they deliver &amp;#8211; for better or worse. This is also true for other domains than software.&lt;/p&gt;
&lt;p&gt;It doesn&amp;#8217;t really matter much whether we call them features, stories or tasks, as long we appreciate that they&amp;#8217;re &lt;em&gt;how&lt;/em&gt; we&amp;#8217;re delivering to those higher-level &lt;em&gt;whats&lt;/em&gt;, and we have a pretty good understanding of the &lt;em&gt;whats&lt;/em&gt; and how to test that we&amp;#8217;ve achieved them, even (especially!) if the &lt;em&gt;what&lt;/em&gt; is a learning or exploratory goal.&lt;/p&gt;
&lt;p&gt;Of course, we&amp;#8217;ll get the &lt;em&gt;how&lt;/em&gt; wrong occasionally and fail to deliver the &lt;em&gt;what&lt;/em&gt;. But that&amp;#8217;s what feedback, in its many forms, is for.&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/03/05/the-myth-of-what-and-how/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/03/05/the-myth-of-what-and-how/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>business value</category>
  <category>bdd</category>
  <category>testing</category>
  <category>stories</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/76190.html</guid>
  <pubDate>Sun, 26 Feb 2012 13:22:25 GMT</pubDate>
  <title>BDD Tutorial Slides are up</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/76190.html</link>
  <description>&lt;p&gt;I&amp;#8217;ve been meaning to do this for a while. I have &lt;a href=&quot;http://www.slideshare.net/lunivore/behavior-driven-development-11754474&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;released my BDD Tutorial slides on SlideShare&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are notes underneath each slide which are a cut-down version of the kind of things I talk about. I&amp;#8217;ve even left the exercises in, with a description of what I do in each.&lt;/p&gt;
&lt;p&gt;I am releasing these under my usual favourite licence &amp;#8211; &lt;a href=&quot;http://creativecommons.org/licenses/by-sa/3.0/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Creative Commons share-alike&lt;/a&gt;. That means that as long as you attribute me, and are similarly generous with any derived work you make, you can use the slides commercially and base your own work on them.&lt;/p&gt;
&lt;p&gt;Yes, that means that if you want to, and you feel qualified to do so, you can use the slides, run the course and get paid for it. If you don&amp;#8217;t feel qualified, feel free to experiment. Just please give a nod my way when you do!&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/02/26/bdd-tutorial-slides-are-up/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/02/26/bdd-tutorial-slides-are-up/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&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'>https://sirenian.livejournal.com/75559.html</guid>
  <pubDate>Sun, 19 Feb 2012 00:36:21 GMT</pubDate>
  <title>CALMalpha &amp;#8211; the second request</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/75559.html</link>
  <description>&lt;p&gt;CALMalpha was meant to be a mash-up between the Lean, Agile and Cynefin / Complexity Theory practitioners.&lt;/p&gt;
&lt;p&gt;The outcome of the unconference wasn&amp;#8217;t really stated. When you understand that a complex domain is one in which the cause of an outcome can&amp;#8217;t be perceived except in retrospect, this might make more sense. The only thing we were trying to do was see if there was a way of using complexity theory to help inform our practices, and if there were some practices from Agile and Lean that complexity theorists might find interesting &amp;#8211; a mash-up!&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s one problem with this.&lt;/p&gt;
&lt;p&gt;Currently, the best-known leadership of Complexity Theory revolves around the company &lt;a href=&quot;http://www.cognitive-edge.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Cognitive Edge&lt;/a&gt;. These guys have &lt;a href=&quot;http://www.cognitive-edge.com/method.php&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;some amazing methods&lt;/a&gt; for making sense of domains, spotting complex problems and providing data which calls out &amp;#8220;weak signals&amp;#8221; that might otherwise be lost. I paid good money and took time off work for the course last year, and it was worth every penny. For the non-initiated and tl;dr, imagine five new types of retrospective, a method for reducing planning meetings to five minutes, and six different ways of making the output from them heard, and you&amp;#8217;ll get a vague idea of the impact and scope. Oh, and they&amp;#8217;ve got software for running the retro across &lt;em&gt;countries&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Except&amp;#8230;&lt;/p&gt;
&lt;p&gt;I can&amp;#8217;t currently use the methods they taught me, not as a professional coach. The methods are open-sourced, but released under &lt;a href=&quot;http://www.cognitive-edge.com/wiki/index.php/Main_Page#IP&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;a non-commercial, non-derivative Creative Commons license&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cognitive Edge, your Wiki says (emphasis mine):&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The Cognitive Edge wiki exists to provide a collaborative space for &lt;em&gt;accredited members&lt;/em&gt; of the Cognitive Edge Network. All accredited practitioners should feel welcome to contribute to the ideas and concepts in these pages.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The licence prevents me from using your methods as a professional coach:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;You may not use this work for commercial purposes.&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The licence also prevents non-accredited people, which is most of our communities and a lot of CALMalpha attendees, from creating their own ideas:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://creativecommons.org/licenses/by-nc-nd/2.0/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;You may not alter, transform, or build upon this work.&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;While &lt;em&gt;I&lt;/em&gt; might be able to build on your work, I&amp;#8217;m unwilling to do so as long as my efforts fall under this licence. I also can&amp;#8217;t pass on anything to the people I work with for their contribution.&lt;/p&gt;
&lt;p&gt;Can you see how this doesn&amp;#8217;t mesh with the idea of a &amp;#8220;mash-up&amp;#8221;, and goes completely against your ideas around multiplying perspectives?&lt;/p&gt;
&lt;p&gt;So here&amp;#8217;s my request.&lt;/p&gt;
&lt;h3&gt;Cognitive Edge, please, please open your licence up for commercial and derivative work.&lt;/h3&gt;
&lt;p&gt;The stuff you do is amazing. If you were working solely for the money, you wouldn&amp;#8217;t have come up with these ideas. I can only assume that you, like us, are trying to make the world a better place. We will continue to attribute the methods to you and talk about how amazing they are. Those of us who&amp;#8217;ve seen it will continue to point people towards your SenseMaker software (which is ground-breaking, world-changing, worth paying for the 1-day demo, and deserves the more rigorous patent applied to it &amp;#8211; I look forward to the day when it&amp;#8217;s a bit cheaper!)&lt;/p&gt;
&lt;p&gt;As it stands, we can&amp;#8217;t do anything useful with your methods. Worse, because you&amp;#8217;re working in a space full of narratives and I&amp;#8217;m working in a space full of very similar examples, I have to be very careful that my work &amp;#8211; released on my blog under CC, non-commercial, non-derivative &amp;#8211; is actually based on other sources (mostly &lt;a href=&quot;http://dannorth.net&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Dan North&lt;/a&gt; and &lt;a href=&quot;http://theitriskmanager.wordpress.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Chris Matts&lt;/a&gt;) and not on yours.&lt;/p&gt;
&lt;p&gt;Please. Be generous. Reach out to your contributors, ask them, and release what you can.&lt;/p&gt;
&lt;p&gt;Sometimes it&amp;#8217;s worth doing something you can&amp;#8217;t go back from.&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2012/02/19/calmalpha-the-second-request/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2012/02/19/calmalpha-the-second-request/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>conference</category>
  <category>learning</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/74964.html</guid>
  <pubDate>Fri, 23 Dec 2011 10:47:35 GMT</pubDate>
  <title>You&amp;#8217;re doing it wrong</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/74964.html</link>
  <description>&lt;p&gt;The first time I did it wrong, it was because I didn&amp;#8217;t know any better.&lt;/p&gt;
&lt;p&gt;The second time I did it wrong, it was because I forgot about the first time.&lt;/p&gt;
&lt;p&gt;The third time I did it wrong, it was because I was really tired.&lt;/p&gt;
&lt;p&gt;The fourth time I did it wrong, it was because someone else told me to.&lt;/p&gt;
&lt;p&gt;The fifth time I did it wrong, it was because &lt;em&gt;nobody lets anyone do things right around here&lt;/em&gt;.&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2011/12/23/youre-doing-it-wrong/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2011/12/23/youre-doing-it-wrong/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&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'>https://sirenian.livejournal.com/74344.html</guid>
  <pubDate>Thu, 22 Sep 2011 14:32:57 GMT</pubDate>
  <title>Conversational patterns in BDD</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/74344.html</link>
  <description>&lt;p&gt;BDD isn&amp;#8217;t about the tools. It&amp;#8217;s about the conversations you have, exploring examples (or scenarios) of an application&amp;#8217;s behaviour, to see if everyone has the right understanding.&lt;/p&gt;
&lt;p&gt;Of course, &lt;a href=&quot;http://dannorth.net/2010/08/30/introducing-deliberate-discovery/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;we don&amp;#8217;t know what we don&amp;#8217;t know&lt;/a&gt;, so feedback is still important. We&amp;#8217;ve got a good chance of discovering what &lt;em&gt;someone else&lt;/em&gt; knows, and has perhaps forgotten to tell us, if we start questioning the ways in which our understanding might be wrong.&lt;/p&gt;
&lt;p&gt;These are two patterns which I commonly use. You&amp;#8217;ll notice that they follow from the typical BDD scenario template:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&lt;strong&gt;Given&lt;/strong&gt; a context&lt;br /&gt;
&lt;strong&gt;When&lt;/strong&gt; an event happens&lt;br /&gt;
&lt;strong&gt;Then&lt;/strong&gt; an outcome should occur.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3&gt;Context Questioning&lt;/h3&gt;
&lt;p&gt;We can ask, &amp;#8220;Is there any other context which, when this event happens, will produce a different outcome?&amp;#8221;&lt;/p&gt;
&lt;p&gt;It might be an additional context, or a context which occurs instead of the one(s) we&amp;#8217;re considering. We can ask this question, or we can think of contexts ourselves and ask about those. For instance:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Given a client manager, Fred, has two clients, George and Henry&lt;br /&gt;
When Fred uses the application&lt;br /&gt;
Then Fred should only be able to see George and Henry&amp;#8217;s accounts.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I ask, &amp;#8220;Given I have no client managers, what happens then?&amp;#8221; (I&amp;#8217;m thinking of handling empty lists, because I&amp;#8217;m a developer.)&lt;/p&gt;
&lt;p&gt;The head of Client Management says, &amp;#8220;What? Who cares? Why are you even using the application? Get on the phone and get some clients already!&amp;#8221; (He&amp;#8217;s thinking of his failing business.)&lt;/p&gt;
&lt;p&gt;You can sometimes learn a lot about a business domain this way, even if the behaviour of the application isn&amp;#8217;t going to change immediately!&lt;/p&gt;
&lt;h3&gt;Outcome Questioning&lt;/h3&gt;
&lt;p&gt;This is similar to Context Questioning, but instead, we ask,&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;#8220;Given this context, when this event happens, is there another outcome that&amp;#8217;s important? Something we missed, perhaps?&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Another way I like to ask this is, &amp;#8220;If pixies were doing this instead of software, would it be enough? Or do they need to do something else, too?&amp;#8221;&lt;/p&gt;
&lt;p&gt;For instance:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Given the legacy system has a problem&lt;br /&gt;
When a trader stores a trade&lt;br /&gt;
Then the trader should be told about the problem.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I ask, &amp;#8220;Is that all that should happen? I&amp;#8217;d be pretty upset if I were a trader and this happened a lot.&amp;#8221;&lt;/p&gt;
&lt;p&gt;My business analyst (by which I mean, someone who can analyse the business) says, &amp;#8220;Well, we&amp;#8217;ll still have the details in the system, so you&amp;#8217;ll be able to do it again later. Oh, yes! We need to store the trade in our system still, too, but make sure it doesn&amp;#8217;t have a legacy system ID so that we can tell it didn&amp;#8217;t go through.&amp;#8221;&lt;/p&gt;
&lt;h3&gt;And that&amp;#8217;s it.&lt;/h3&gt;
&lt;p&gt;There are lots of other ways to have conversations around behaviour. They&amp;#8217;ll usually be trying to find missing contexts and outcomes &amp;#8211; places where a new piece of behaviour happens. These also tend to be the things which business users, familiar with their domains to the point where they don&amp;#8217;t think about it, forget to talk about. Developers are pretty good at spotting this, because they&amp;#8217;re usually thinking through how they&amp;#8217;re going to implement the problem, and wondering what goes on the other side of the &amp;#8220;if&amp;#8230; else&amp;#8230;&amp;#8221; statement (even if we&amp;#8217;re not meant to be implementing yet, we already are in our heads). Testers are also very good, because they&amp;#8217;re used to the kind of things people get wrong when they produce software.&lt;/p&gt;
&lt;p&gt;This is why getting all three people &amp;#8211; a tester, a developer and a business analyst &amp;#8211; is so useful when we&amp;#8217;re discussing scenarios. It&amp;#8217;s also why it&amp;#8217;s so important to have the conversations &amp;#8211; because&lt;em&gt; if you&amp;#8217;re not having conversations, you&amp;#8217;re not doing BDD&lt;/em&gt;.&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2011/09/22/conversational-patterns-in-bdd/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2011/09/22/conversational-patterns-in-bdd/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>bdd</category>
  <category>breaking models</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/74024.html</guid>
  <pubDate>Tue, 23 Aug 2011 20:57:42 GMT</pubDate>
  <title>Splitting stories into tasks &amp;#8211; when, why and how (or not)</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/74024.html</link>
  <description>&lt;p&gt;Before I write anything about this, I&amp;#8217;d like to clarify what I mean by a &lt;em&gt;task&lt;/em&gt; and a &lt;em&gt;story&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;A &lt;em&gt;feature&lt;/em&gt; is something tangible that works and which we could potentially deliver, if it was enough to provide business benefit. Usually a bit of a screen or page, together with all the logic and validation associated with it, is a feature. A feature is the highest-level thing which a developer could work on without doing significant bits of analysis. It&amp;#8217;s a part of an idea made at least concrete enough to imagine.&lt;/p&gt;
&lt;p&gt;A &lt;em&gt;story&lt;/em&gt; is a part of a feature on which we can get feedback from relevant stakeholders. For instance, we might code the UI, then the validation and messages, then an aspect or two of the behaviour behind the UI. Each of these would be a possible story. The only real reason for splitting features into stories is to get faster feedback and a better idea of progress.&lt;/p&gt;
&lt;p&gt;A &lt;em&gt;task&lt;/em&gt; is a part of a story which doesn&amp;#8217;t allow us to get feedback from relevant stakeholders. If you can get feedback, it&amp;#8217;s probably a story rather than a task, because it affects the UI in some way, or at least gives something that can be visibly verified and critiqued and which stakeholders care about. There are lots of UIs and lots of stakeholders and users, so &amp;#8220;put logging in to help maintenance debug the situation where the elephant appears on the screen&amp;#8221; might be a perfectly good story. Anything that&amp;#8217;s just a part of a story is a task.&lt;/p&gt;
&lt;p&gt;A task can&amp;#8217;t really be tested either, even by a developer. You have no idea if a database has the right tables or data until you connect it to something. You have no idea if an interface to another system will work until it&amp;#8217;s actually talking to that system. You might unit-test it, or run some queries, but it&amp;#8217;s a level below the feedback and user testing available for features and stories. (There are higher levels of testing too, in which we can look for user capabilities and business outcomes, stakeholder goals, profit / loss, etc. &amp;#8211; so you can&amp;#8217;t really tell if *anything* works until you put it into production &amp;#8211; but that&amp;#8217;s a blog post for another day).&lt;/p&gt;
&lt;h3&gt;Why do some teams split stories into tasks?&lt;/h3&gt;
&lt;p&gt;A lot of Scrum teams particularly do this, because it&amp;#8217;s traditionally taught as part of the Certified Scrum Master course. Hopefully good CSTs, and their CSMs, are teaching the benefits along with the practices.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It can lead to more accurate estimates.&lt;/strong&gt; Splitting stories into tasks can help developers to think about the amount of work involved in a story, and find any pieces they missed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It can help with collaboration. &lt;/strong&gt;By splitting a story into tasks, developers can each take that task &amp;#8211; usually a different horizontal slice &amp;#8211; and work with minimal merge conflicts and just a bit of adjustment to get their piece working with other people&amp;#8217;s. Splitting a story into tasks is useful for swarming, and a lot of swarming teams do this instinctively, even if they haven&amp;#8217;t written the tasks down.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It can help senior developers mentor junior developers&lt;/strong&gt; and verify that they&amp;#8217;re taking a good approach towards a story. Some mistakes are worth avoiding.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;They can be used as a measure of progress&lt;/strong&gt; to someone tracking the team, like a PM or Scrum Master.&lt;/p&gt;
&lt;h3&gt;Why don&amp;#8217;t other teams do this?&lt;/h3&gt;
&lt;p&gt;Some teams prefer to focus on delivering something on which they can get feedback, and find the tasks distracting.&lt;/p&gt;
&lt;p&gt;There are also other ways of getting accurate estimates. Talking through scenarios can help with this. A lot of teams don&amp;#8217;t use estimates anyway, preferring to stick to SLAs or their own instinctive understanding of how much work they can get done and whether they&amp;#8217;re going to release on time. Anther purpose of estimation is usually so that the business stakeholders can have trust and confidence in the team, and there are different ways of getting the trust of stakeholders, too.&lt;/p&gt;
&lt;h3&gt;What bad things might happen if we split our stories into tasks?&lt;/h3&gt;
&lt;p&gt;Splitting stories into tasks might indeed distract from delivering something on which the team can get feedback. When a developer sees a list of tasks in front of him, he tends to work through those tasks methodically. He might not notice that, for instance, the team isn&amp;#8217;t going to deliver *any* stories this week.&lt;/p&gt;
&lt;p&gt;Using tasks to estimate team progress can also be misleading. If all the developers end up working on their own stories, the PM might see lots of tasks being done. If none of those stories are ready for the showcase, though, the team won&amp;#8217;t be able to get feedback from their stakeholders &amp;#8211; and might end up building the wrong things altogether! Also, the Pareto Principle suggests that 20% of the causes are responsible for 80% of the effects &amp;#8211; or that the last 20% of the story might take 80% of the time. Often developers will start with the easy bits and leave the hard things until last.&lt;/p&gt;
&lt;p&gt;People seeing the tasks can use them to micro-manage the team, asking who&amp;#8217;s working on which task, or even assigning particular tasks ahead of time! But anyone with a manager or Scrum Master who does this has bigger problems than the task-splitting, I think.&lt;/p&gt;
&lt;h3&gt;Why do you absolutely hate people splitting tasks then putting hourly estimates on them?&lt;/h3&gt;
&lt;p&gt;First and foremost, this harks back to the old myth that &lt;em&gt;time&lt;/em&gt; = &lt;em&gt;work done&lt;/em&gt;. Even if developers are only held to be productive 50 or 60% of their &amp;#8220;ideal&amp;#8221; working day, the focus is still on the number of hours spent, rather than useful software being produced. It&amp;#8217;s perfectly possible to spend hours on something that doesn&amp;#8217;t work. A team which signs off all its tasks is subtly encouraged to say that they&amp;#8217;re &amp;#8220;done&amp;#8221; without checking that the software they&amp;#8217;re producing is useful.&lt;/p&gt;
&lt;p&gt;What about the developer who plays with something else while turning over a problem in the back of his mind, then delivers an ingenious solution in 2 hours? Or the developer who wants to try out another way of solving the problem which might involve a steep learning curve, but which would benefit the project in the long run? By pinning these developers down to their hourly estimates, insisting on a certain timescale of productivity, we encourage them to tread the path they had in mind when they made the estimate, even if a different idea occurs to them at the time. Since human beings get a kick out of being right &amp;#8211; suffering horribly from confirmation bias and the preference for validation &amp;#8211; just the act of estimating the hours will pin them down subconsciously. They may not even think about the problem or have the new idea! Hourly estimates can stifle innovation, and the less wriggle room there is, the more innovation will be stifled.&lt;/p&gt;
&lt;p&gt;Finally, it encourages micro-management. A project manager who sees a developer working on some tasks that should have taken 8 hours, but have taken all week, might wonder why that developer is taking so long. However, uncomfortable enquiries will only cause the developer to pad their estimates next time &amp;#8211; and work expands to fill the time available, so the team will eventually slow down.&lt;/p&gt;
&lt;h3&gt;Should we do it or not?&lt;/h3&gt;
&lt;p&gt;If you think splitting stories into tasks might be helpful, try it. If it doesn&amp;#8217;t help, stop. However, please resist the urge to put hourly estimates on them &amp;#8211; or to ask that your team does so.&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2011/08/23/splitting-stories-into-tasks-when-why-and-how-or-not/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2011/08/23/splitting-stories-into-tasks-when-why-and-how-or-not/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>scrum</category>
  <category>feedback</category>
  <category>stories</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/73569.html</guid>
  <pubDate>Thu, 11 Aug 2011 17:00:09 GMT</pubDate>
  <title>Done with Chickens and Pigs</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/73569.html</link>
  <description>&lt;p&gt;If you&amp;#8217;re not familiar with the concept of Chickens and Pigs, it&amp;#8217;s based on an old joke in which a chicken and a pig set up a restaurant. The chicken wants to call it &amp;#8220;Ham&amp;#8217;n&apos;Eggs&amp;#8221;. The pig says, &amp;#8220;No thanks. I&amp;#8217;d be committed, but you&amp;#8217;d only be involved.&amp;#8221;&lt;/p&gt;
&lt;p&gt;The story is used in Scrum and other methodologies to suggest that only &amp;#8220;pigs&amp;#8221; &amp;#8211; the people whose bacon is on the line &amp;#8211; should have the right to speak in stand-ups. This deliberately excludes management.&lt;/p&gt;
&lt;p&gt;Yesterday, Dean Leffingwell spoke on the subject at Agile 2011. He pointed out that the practice calls out the chickens as the &amp;#8220;bad guys&amp;#8221;. &amp;#8220;Wrong!&amp;#8221; he says. &amp;#8220;These are the people who run the company.&amp;#8221; Quite aside from some cultural implications of calling people &amp;#8220;pigs&amp;#8221; &amp;#8211; it doesn&amp;#8217;t go down well in countries which consider pigs to be unclean, for instance &amp;#8211; excluding management from stand-ups can be disrespectful at best, and damaging at worst.&lt;/p&gt;
&lt;p&gt;I finally decided to be done with the Chicken and Pigs analogy and practice after a roleplay organised by Derek Wade, in which the manager had something very important to share &amp;#8211; something that would have reduced the stress the team was experiencing, as well as the workload, the weekend&amp;#8217;s overtime, and the risk to delivery that was approaching our fictitious team.&lt;/p&gt;
&lt;p&gt;The manager started to speak. &amp;#8220;I&amp;#8230;&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;You&amp;#8217;re a chicken,&amp;#8221; the Scrum Master announced. &amp;#8220;Next!&amp;#8221;&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s not.&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2011/08/11/done-with-chickens-and-pigs/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2011/08/11/done-with-chickens-and-pigs/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>conference</category>
  <category>scrum</category>
  <category>coaching</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/73260.html</guid>
  <pubDate>Mon, 01 Aug 2011 17:52:06 GMT</pubDate>
  <title>The Gordon Pask Award</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/73260.html</link>
  <description>&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m told that it&amp;#8217;s too late to get the Pask sorted out for this year &amp;#8211; we&amp;#8217;re Agile, but not that Agile! Please keep nominees in mind, though. Many members of the committee are talking and are keen to keep the award in some form, so chances are it will be back next year. Watch this space.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;It&amp;#8217;s that time of year again that the Pask committee meets at the Agile 20XX conference to vote on the nominations which have been made.&lt;/p&gt;
&lt;p&gt;The committee is mostly made up of people who&amp;#8217;ve already won the award in previous years. We won because of our ideas, because we&amp;#8217;re good at spreading them, because we made a difference, because we were under the radar&amp;#8230; but not because of our organizational ability! So please forgive this very late post.&lt;/p&gt;
&lt;p&gt;We are &lt;em&gt;still&lt;/em&gt; collecting nominations (email pask-nominations AT agilealliance DOT org) and will be voting at some point during the week.&lt;/p&gt;
&lt;p&gt;A number of people have suggested that the Pask Award doesn&amp;#8217;t matter. I thought I&amp;#8217;d share some of the things which have happened to me since winning the award last year, so that you can understand exactly what it is that&amp;#8217;s being given away.&lt;/p&gt;
&lt;h3&gt;The Pask Award&lt;/h3&gt;
&lt;p&gt;It&amp;#8217;s always wonderful to be recognised for your work. The award also comes with quite a hefty bit of money &amp;#8211; enough to pay for a couple of international conferences, and then some. There&amp;#8217;s no trophy, but you get to tell people that you won the award. Your parents will be dead chuffed. You can stand on stage and recognise all the people and communities who&amp;#8217;ve helped you. And that&amp;#8217;s just the award itself.&lt;/p&gt;
&lt;h3&gt;The Side Effects&lt;/h3&gt;
&lt;p&gt;The number of people following me on Twitter doubled overnight, from 500 to 1000. Then it kept climbing. I am now followed by over 1,600 people. That&amp;#8217;s enabled me to spread a lot of other people&amp;#8217;s messages, too.&lt;/p&gt;
&lt;p&gt;Because people have started to know my name, I&amp;#8217;ve started getting more offers of work. I&amp;#8217;ve had requests for help from the USA, from all over Europe, from India. (Some of them have even offered to pay me!) I&amp;#8217;ve been able to raise my rates a bit, and I&amp;#8217;m getting all kinds of interesting opportunities which I didn&amp;#8217;t have before.&lt;/p&gt;
&lt;p&gt;Then, there&amp;#8217;s the conference invites. Lots, and lots, and lots of invites to speak around the world. I&amp;#8217;m sorry to those people that I&amp;#8217;ve had to turn down &amp;#8211; I am simply getting so many invites this year that I can&amp;#8217;t do all of them, especially if they&amp;#8217;re at the same time as others.&lt;/p&gt;
&lt;p&gt;Because of the conference invites, I&amp;#8217;m getting to speak more, and spread the ideas from my communities, which leads to more Twitter followers and more exposure and more conference invites&amp;#8230; I suspect the escalation from this has started to reach a natural limit, but again, I apologise if I haven&amp;#8217;t quite been able to keep up. It really has been a little bit insane.&lt;/p&gt;
&lt;h3&gt;The Further Side-Effects&lt;/h3&gt;
&lt;p&gt;Because of the invites, I&amp;#8217;ve become a better speaker. This means I can now spread the ideas more effectively. They weren&amp;#8217;t all my ideas in the first place &amp;#8211; many of them came from communities in London and around the world &amp;#8211; so now people recognise that I can share ideas effectively. This means more people are now giving me lots of ideas to share! So I&amp;#8217;m learning an enormous amount, too. I feel insanely privileged to have such excellent friends and colleagues.&lt;/p&gt;
&lt;h3&gt;In short&amp;#8230;&lt;/h3&gt;
&lt;p&gt;My life currently rocks beyond my ability to tell it. I&amp;#8217;ve been able to help other people&amp;#8217;s lives to rock too. A lot of this is due to the award. Many thanks to those who nominated and voted for me, and to the Agile Alliance for continuing to make a difference.&lt;/p&gt;
&lt;h3&gt;The Gift&lt;/h3&gt;
&lt;p&gt;If you would like someone to receive a similar gift to the one that I&amp;#8217;ve been given in this last year, enabling them to spread their knowledge and ideas to other communities that they wouldn&amp;#8217;t normally reach, please nominate at pask-nominations AT agilealliance DOT org. &lt;a href=&quot;http://www.paskaward.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;You can see the kind of things we&amp;#8217;ve been nominated for in the past&lt;/a&gt;. Mostly we&amp;#8217;re looking for people who aren&amp;#8217;t particularly famous or well known; who haven&amp;#8217;t written books or run keynotes, who sit &amp;#8220;below the radar&amp;#8221;, and could benefit from more exposure &amp;#8211; and who will benefit their communities in turn, passing on the opportunities and making the best use of the fame that comes with it.&lt;/p&gt;
&lt;p&gt;Do you know of anyone who&amp;#8217;s helped their communities? Who&amp;#8217;s driven Agile forward in difficult or unusual circumstances? Who&amp;#8217;s created an idea, or a community, or a tool, that&amp;#8217;s truly revolutionary?&lt;/p&gt;
&lt;p&gt;If so, don&amp;#8217;t wait &amp;#8211; post that email now.&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2011/08/01/the-gordon-pask-award-2/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2011/08/01/the-gordon-pask-award-2/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>conference</category>
  <category>life</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/72814.html</guid>
  <pubDate>Mon, 27 Jun 2011 20:03:28 GMT</pubDate>
  <title>ATDD vs. BDD, and a potted history of some related stuff</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/72814.html</link>
  <description>&lt;p&gt;Another question that people often ask around or to me is, &amp;#8220;What&amp;#8217;s the difference between Acceptance Test Driven Development and Behavior Driven Development?&amp;#8221;&lt;/p&gt;
&lt;p&gt;To explain, I&amp;#8217;ll go back to the time when I first learnt BDD.&lt;/p&gt;
&lt;h3&gt;BDD started at a unit or class level&lt;/h3&gt;
&lt;p&gt;Dan North &lt;a href=&quot;http://dannorth.net/introducing-bdd/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;started doing BDD at a unit or class level&lt;/a&gt;, as a replacement for TDD &amp;#8211; a mechanism for describing the behaviour of code and providing examples, without using the word &amp;#8220;test&amp;#8221;, because it turned out that this clarified a lot of the confusion (and I still find it much easier to teach TDD if I avoid the word &amp;#8220;test&amp;#8221;, whatever I subsequently call it).&lt;/p&gt;
&lt;p&gt;It was only when Chris Matts said, &amp;#8220;That looks quite a lot like analysis,&amp;#8221; that Dan began taking it out to describe the behaviour of whole systems of code.&lt;/p&gt;
&lt;h3&gt;ATDD practices at the time weren&amp;#8217;t all that solid&lt;/h3&gt;
&lt;p&gt;When I came across BDD (late 2004), I was working on a project which had been driven quite heavily with ATDD &amp;#8211; at least to start with.&lt;/p&gt;
&lt;p&gt;This project had 160 acceptance tests. They all consisted of lists of text boxes, button clicks, locating more text boxes and repeating until a particular outcome was reached. They were lengthy. They were rigorous. Unfortunately, at some point someone had introduced a dialog box into the flow, disrupting about 30% of these tests. There were another 10% also failing, possibly for similar reasons.&lt;/p&gt;
&lt;p&gt;It took a couple of days for two of us to work through them, fixing the tests. We got most of them working, but not enough for anyone to actually care about them. The acceptance tests were making things hard to change.&lt;/p&gt;
&lt;h3&gt;BDD changed the landscape&lt;/h3&gt;
&lt;p&gt;Dan has since said that JBehave was &amp;#8220;just a thought experiment&amp;#8221;, and he didn&amp;#8217;t really expect anyone to use it. (That&amp;#8217;s good, because it JBehave 1.0 was pretty unusable, at least at a scenario level). It worked as a thought experiment, though, and lots of people started doing ATDD in a very different way &amp;#8211; creating examples of how their system worked, and using those examples to explore the scope of their systems as well as the responsibility of their classes. Lots of people started working &lt;em&gt;outside-in&lt;/em&gt;, from the UIs through which users experienced the system&amp;#8217;s behaviour, to the controllers, the domain models, the utility classes, services, repositories, etc., until they finally had working software that tended to matter more to the stakeholders of the project than software had before.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.davidchelimsky.net/2007/10/21/story-runner-in-plain-english/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Dave Chelimsky&amp;#8217;s movement over to plain text&lt;/a&gt; really helped this movement to take off. When people think of &amp;#8220;BDD&amp;#8221; they often think of the frameworks which have copied this (&lt;a href=&quot;http://cukes.info/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Cucumber&lt;/a&gt; and &lt;a href=&quot;http://jbehave.org&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;JBehave 2.0&lt;/a&gt; amongst them), even though &lt;a href=&quot;http://lizkeogh.com/2011/03/04/step-away-from-the-tools/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;this isn&amp;#8217;t the complete story&lt;/a&gt;. They have certainly encouraged developers &amp;#8211; famous for their introverted natures &amp;#8211; to boldly go into the analysis space.&lt;/p&gt;
&lt;h3&gt;BDD enabled conversation&lt;/h3&gt;
&lt;p&gt;Whether through frameworks, DSLs or just conversation, the biggest difference between BDD and ATDD was the way in which BDD enabled a common language between users and business stakeholders, because it &lt;a href=&quot;http://domaindrivendesign.org/library/north_keogh_gitlevich_2007&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;supports Domain Driven Design&amp;#8217;s &amp;#8220;ubiquitous language&amp;#8221;&lt;/a&gt; (forgive the rabbit-in-the-headlights look, it was my first ever video!), and provides its own ubiquitous language for software development &amp;#8211; the language of examples and behaviour, rather than tests and acceptance criteria.&lt;/p&gt;
&lt;p&gt;The second difference was the reusability of steps. This is something which a lot of BDDers are still struggling with, so we&amp;#8217;ve still got a way to go here. (More on steps and business / system capabilities some other time).&lt;/p&gt;
&lt;h3&gt;BDD doesn&amp;#8217;t just stop at scenarios, it goes all the way to the project vision&lt;/h3&gt;
&lt;p&gt;Finally, Chris Matts introduced &lt;a href=&quot;http://www.infoq.com/articles/pulling-power&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Feature Injection&lt;/a&gt;, which takes BDD&amp;#8217;s patterns all the way into the analysis space.&lt;/p&gt;
&lt;p&gt;(I consider Feature Injection and BDD to be children of &lt;a href=&quot;http://dannorth.net/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Deliberate Discovery&lt;/a&gt; (even though they preceded it), which is itself a child of &lt;a href=&quot;http://www.infoq.com/articles/real-options-enhance-agility&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Real Options&lt;/a&gt;. I summarise Deliberate Discovery as the act of wilfully addressing ignorance. Both Deliberate Discovery and Real Options have implications and uses beyond software development, and I heartily recommend coaches and managers to go read up on them. In fact, everyone who lives a life of any kind of uncertainty should go and read up on them. And if your life is staid and comfortable, maybe it will help you to step into those challenging spaces. Go do it anyway.)&lt;/p&gt;
&lt;h3&gt;Or at least, this used to be the difference&amp;#8230;&lt;/h3&gt;
&lt;p&gt;So that&amp;#8217;s the past. What about now?&lt;/p&gt;
&lt;p&gt;Well, most people who do ATDD nowadays use the Given-When-Then template which Chris introduced (shout-out to &lt;a href=&quot;http://gojko.net/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Gojko Adzic&lt;/a&gt; for his work in this space). They use domain language in conversation with the business. They&amp;#8217;re interested in discussing what software would actually make a difference, then capturing that and sometimes automating it, with a focus on working out the software which would matter.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m guided by &lt;a href=&quot;http://groups.google.com/group/behaviordrivendevelopment/msg/ee750a218b514946&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Dan&amp;#8217;s words to the BDD Google Group&lt;/a&gt;, which apply both to TDD and ATDD:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;I think you can over-think these things.&lt;br /&gt;
I&amp;#8217;d like to avoid &amp;#8220;BDD is better than TDD because&amp;#8230;&amp;#8221; or even &amp;#8220;BDD is&lt;br /&gt;
different from TDD (as originally envisioned) because&amp;#8230;&amp;#8221; &lt;/p&gt;
&lt;p&gt;TDD is amazing. Its initial conception was to solve exactly what I&amp;#8217;ve been&lt;br /&gt;
trying to do with BDD. Originally it was described as variable scope (i.e.&lt;br /&gt;
covering both the space of modern day TDD-in-the-small and what the ATDD/SBE&lt;br /&gt;
folks are doing in the functional testing space). It&amp;#8217;s not the *only* way to&lt;br /&gt;
come up with good design, and neither is BDD. They&amp;#8217;re just both useful to&lt;br /&gt;
have in your back pocket as you go around trying to write decent software to&lt;br /&gt;
solve useful problems. &lt;/p&gt;&lt;/blockquote&gt;
&lt;h3&gt;They&amp;#8217;re called different things&lt;/h3&gt;
&lt;p&gt;The difference is that one is called Behaviour Driven Development &amp;#8211; and some people find that wording useful &amp;#8211; and one (or two) is called (Acceptance) Test Driven Development &amp;#8211; and some people find that wording useful in a different way.&lt;/p&gt;
&lt;h3&gt;And that&amp;#8217;s it.&lt;/h3&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2011/06/27/atdd-vs-bdd-and-a-potted-history-of-some-related-stuff/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2011/06/27/atdd-vs-bdd-and-a-potted-history-of-some-related-stuff/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;comments&lt;/a&gt; there.&lt;/strong&gt;&lt;/p&gt;</description>
  <category>business value</category>
  <category>bdd</category>
  <category>testing</category>
  <category>stories</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
  </item>
  <item>
  <guid isPermaLink='true'>https://sirenian.livejournal.com/72591.html</guid>
  <pubDate>Mon, 20 Jun 2011 08:49:58 GMT</pubDate>
  <title>Acceptance Criteria vs. Scenarios</title>
  <author>sirenian</author>
  <link>https://sirenian.livejournal.com/72591.html</link>
  <description>&lt;p&gt;Some common confusion I&amp;#8217;ve come across recently involves the difference between a Scenario and Acceptance Criteria.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll start by defining these two things as I understand them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A scenario is an example of the system&amp;#8217;s behavior from one or more users&amp;#8217; perspectives.&lt;/li&gt;
&lt;li&gt;Acceptance criteria are a set of rules which cover aspects of a system&amp;#8217;s behavior, and from which scenarios can be derived.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&amp;#8217;s a scenario from the pet shop I use in my BDD tutorials.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
Given a rabbit called Fluffy who is 1 1/2 months old&lt;br /&gt;
When we try to sell Fluffy&lt;br /&gt;
Then we should be told Fluffy is too young.&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This is an &lt;em&gt;example&lt;/em&gt; of the kind of thing a pet shop employee might encounter in the till software. It&amp;#8217;s quite specific, containing actual data, and illustrates our domain nicely. We can tell quite a lot from this: that pets have names, that there are rules around the sale of pets, the units in which we measure the age of young pets, etc.&lt;/p&gt;
&lt;p&gt;We can&amp;#8217;t tell, though, what age we &lt;em&gt;would&lt;/em&gt; be allowed to sell the pets. Is it fixed? For all pets? Let&amp;#8217;s look at something else:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
Given a baby animal is younger than its recommended selling age&lt;br /&gt;
When we try to sell it&lt;br /&gt;
Then we should be told it&apos;s too young.&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Despite the Given, When and Then, this is &lt;em&gt;not&lt;/em&gt; a scenario. It&amp;#8217;s acceptance criteria &amp;#8211; a full specification of this aspect of behavior &amp;#8211; phrased in scenario form. A lot of the time, I see people write criteria like this, then become confused when they can&amp;#8217;t treat it like a real scenario &amp;#8211; discussing it in detail, deriving further edge cases, automating it, etc.&lt;/p&gt;
&lt;p&gt;Talking through scenarios is, for me, the most important aspect of BDD. That&amp;#8217;s how we discover whether we have a shared understanding or not; by using specific examples to illustrate our understanding or discover our ignorance.&lt;/p&gt;
&lt;p&gt;When we&amp;#8217;re discussing the scenarios, it isn&amp;#8217;t always necessary to write scenarios for all the acceptance criteria. As long as the acceptance criteria are clear enough to derive the relevant scenarios easily, I recommend leaving it as acceptance criteria until the point where it needs to be automated. You can tell if the scenarios can be derived in just a few seconds of conversation. You don&amp;#8217;t need to write down &lt;em&gt;everything&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s also possible to phrase acceptance criteria in other ways:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
We should be prevented from selling animals younger than the recommended age.&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now you can talk through the scenarios, and see potential other criteria which you missed:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
Customers should be encouraged to return when the animal is old enough to sell.&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;As you&amp;#8217;re talking through the scenarios, the information we need for automation will emerge, and a better understanding of the domain spreads amongst the people involved in those discussions (usually a dev, BD and tester):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
Given rabbits can&apos;t be sold before they&apos;re 2 months old&lt;br /&gt;
Given Fluffy the rabbit is 1 1/2 months old&lt;br /&gt;
When we try to sell Fluffy&lt;br /&gt;
Then we should be prompted to tell the customer, &quot;This pet is too young. Please come back in 15 days to collect your pet.&quot;&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;By talking about both acceptance criteria and scenarios, asking why, and using scenarios to illustrate the criteria, we find out more about our domain. We can also automate them later on, where they&amp;#8217;ll help to provide living documentation and act as regression tests.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s one other difference between a Scenario and Acceptance Criteria or even an Acceptance Test. You can ask your business stakeholders, &amp;#8220;Can you give me a scenario where that happens?&amp;#8221; or &amp;#8220;Can you give me an example?&amp;#8221; I&amp;#8217;ve found this often draws out more useful discussions than, &amp;#8220;Can you give me acceptance criteria for this?&amp;#8221; or &amp;#8220;Can you help me work out how to test this?&amp;#8221;&lt;/p&gt;
&lt;p&gt;The language of BDD, and particularly its vocabulary, provide a &lt;a href=&quot;http://dannorth.net/introducing-bdd/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;ubiquitous language&lt;/a&gt; for analysis and development.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Now&lt;/em&gt; we&amp;#8217;re talking.&lt;/p&gt;
&lt;p style=&quot;border: 1px solid black; padding: 3px;&quot;&gt;&lt;strong&gt;Originally published at &lt;a href=&quot;http://lizkeogh.com/2011/06/20/acceptance-criteria-vs-scenarios/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Liz Keogh&amp;#039;s blog&lt;/a&gt;. Please leave any &lt;a href=&quot;http://lizkeogh.com/2011/06/20/acceptance-criteria-vs-scenarios/#comments&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&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>
</channel>
</rss>
