<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Paul Moser &#187; XP Day</title>
	<atom:link href="http://blog.paulmoser.co.uk/index.php/category/software/agile/xp-day/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.paulmoser.co.uk</link>
	<description>So much to learn but so little time</description>
	<lastBuildDate>Thu, 17 Sep 2009 21:28:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>XP Day 2006 &#8211; Are we nearly there yet?</title>
		<link>http://blog.paulmoser.co.uk/index.php/2006/12/29/xp-day-2006-are-we-nearly-there-yet/</link>
		<comments>http://blog.paulmoser.co.uk/index.php/2006/12/29/xp-day-2006-are-we-nearly-there-yet/#comments</comments>
		<pubDate>Fri, 29 Dec 2006 20:51:20 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[XP Day]]></category>

		<guid isPermaLink="false">http://blog.paulmoser.co.uk/index.php/2006/12/29/xp-day-2006-are-we-nearly-there-yet/</guid>
		<description><![CDATA[Are we nearly there yet?
Ivan Moore
This started with the presenter giving his experiences with tracking on agile projects and then became an open discussion with those present sharing their thoughts and experiences.
A couple of points that struck me:

you can track done story points on a graph, if the graph flatlines for a few days it [...]]]></description>
			<content:encoded><![CDATA[<p>Are we nearly there yet?</p>
<p><a href="http://ivan.truemesh.com/">Ivan Moore</a></p>
<p>This started with the presenter giving his experiences with tracking on agile projects and then became an open discussion with those present sharing their thoughts and experiences.</p>
<p>A couple of points that struck me:</p>
<ul>
<li>you can track done story points on a graph, if the graph flatlines for a few days it maybe an indication that the stories are too big &#8211; the team I&#8217;m in have recently (prior to XP Day) started tracking done story points in addition to tracking remaining estimated hours, I was dubious about what we would get from this but it&#8217;ll now be interesting to see what we get</li>
<li>mark cards as done and not done (or a finer resolution, under development, ready for test, tested etc), e.g. using little coloured stickers, but don&#8217;t overwrite or replace one mark with another. If you see cards appearing with the same mark on them multiple times indicating they are bouncing back and forwards between states, e.g. not done and done, it&#8217;s a good indication there&#8217;s a problem somewhere.</li>
</ul>
<p>One thing that did strike me was how comfortable everyone was in the room with doing different things at different times and in different situations &#8211; more than once someone started with &#8220;sometimes I&#8217;ve &#8230;&#8221; and the inexact nature of plans. I know I shouldn&#8217;t be surprised by this &#8211; responding to change over following a plan, continuous feedback and adjustment are all part of Agile &#8211;  but it was reassuring to see,  working in a company that&#8217;s trying to become Agile but with a long way to go where fixed scope and timescales still predominate where most still believe in the infallibility of &#8216;the plan&#8217;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.paulmoser.co.uk/index.php/2006/12/29/xp-day-2006-are-we-nearly-there-yet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XP Day 2006 &#8211; Are your tests really driving your development?</title>
		<link>http://blog.paulmoser.co.uk/index.php/2006/12/29/xp-day-2006-are-your-tests-really-driving-your-development/</link>
		<comments>http://blog.paulmoser.co.uk/index.php/2006/12/29/xp-day-2006-are-your-tests-really-driving-your-development/#comments</comments>
		<pubDate>Fri, 29 Dec 2006 20:49:02 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Behaviour-Driven Development]]></category>
		<category><![CDATA[Unit Testing]]></category>
		<category><![CDATA[XP Day]]></category>

		<guid isPermaLink="false">http://blog.paulmoser.co.uk/index.php/2006/12/29/xp-day-2006-are-your-tests-really-driving-your-development/</guid>
		<description><![CDATA[Are your tests really driving your development?
Nat Pryce and Steve Freeman
I won&#8217;t  write much about this because should this be presented again and you attend knowing too much about it, it will, I think, spoil it a bit &#8211; but if you do get a chance to see this do, Nat and Steve very [...]]]></description>
			<content:encoded><![CDATA[<p>Are your tests really driving your development?</p>
<p><a title="Nat Pryce" href="http://nat.truemesh.com/">Nat Pryce</a> and <a title="Steve Freeman" href="http://stevef.truemesh.com/">Steve Freeman</a></p>
<p>I won&#8217;t  write much about this because should this be presented again and you attend knowing too much about it, it will, I think, spoil it a bit &#8211; but if you do get a chance to see this do, Nat and Steve very effectively make their point.<br />
So, hopefully, without giving things away&#8230;</p>
<p>Do your tests really communicate their intent?</p>
<ul>
<li>don&#8217;t use magic numbers in your tests just as you wouldn&#8217;t in your production code</li>
<li>consider creating value types where you might typically use primitive types &#8211; a parameter to a method of type PhoneNumber rather than just a simple String conveys far more information, even if the PhoneNumber class is just a very simple wrapper around a String</li>
<li>a comment here and there can make a big difference</li>
<li>where a method under test is returning a numerical result based on values passed to the method, express the expected result in terms of the values passed to the method, e.g. <code>assertEquals(2+2, billingService.caclculateCharge(2,2))</code> rather than <code>assertEquals(4, billingService.caclculateCharge(2,2))</code></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.paulmoser.co.uk/index.php/2006/12/29/xp-day-2006-are-your-tests-really-driving-your-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XP Day 2006 &#8211; Awesome Acceptance Testing</title>
		<link>http://blog.paulmoser.co.uk/index.php/2006/12/29/xp-day-2006-awesome-acceptance-testing/</link>
		<comments>http://blog.paulmoser.co.uk/index.php/2006/12/29/xp-day-2006-awesome-acceptance-testing/#comments</comments>
		<pubDate>Fri, 29 Dec 2006 20:41:52 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Behaviour-Driven Development]]></category>
		<category><![CDATA[XP Day]]></category>

		<guid isPermaLink="false">http://blog.paulmoser.co.uk/index.php/2006/12/29/xp-day-2006-awesome-acceptance-testing/</guid>
		<description><![CDATA[Awesome Acceptance Testing
Dan North, Joe Walnes
There&#8217;s nothing wrong with having asserts in your tests that are unrelated to what you are actually trying to test but instead check the sanity of your test so that when they fail it&#8217;s easier to workout why.
As an example:
You have a test that logs into the system, goes to [...]]]></description>
			<content:encoded><![CDATA[<p>Awesome Acceptance Testing</p>
<p><a title="Dan North" href="http://dannorth.net">Dan North</a>, <a href="http://joe.truemesh.com/blog/">Joe Walnes</a></p>
<p>There&#8217;s nothing wrong with having asserts in your tests that are unrelated to what you are actually trying to test but instead check the sanity of your test so that when they fail it&#8217;s easier to workout why.</p>
<p>As an example:</p>
<p>You have a test that logs into the system, goes to a search page, fills it in and checks the results. One day this test suddenly starts to fail, it turns out that the password for the user the test is login in as has expired, if after the login step you checked that the title of the page was &#8220;Welcome&#8221; proving that you had logged in successfully it would be very easy to spot that the test failed as a result of failing to log in rather than something being wrong with the search functionality.</p>
<p>How fast do your acceptance tests run? Joe&#8217;s rule of thumb is about 100 ATs/minute.</p>
<p>How do you go about setting up test data &#8211; do you do inserts directly into the database using SQL or do your tests click about in the GUI creating data for use later in the test? Why not use the code for the domain model you&#8217;ve written to set up the data &#8211; so you&#8217;ve written your own blogging system, rather than poking around in the database to create a blog entry with a comment for the test or getting the test to click around in the GUI to create the blog entry and comment why not just instantiate a new Blog domain object and Comment object and persist them to the database using your BlogDAO object. Of course to be able to do this your AT must be implemented in the same language as your domain language but I think thats quite a strong argument for doing so (or of course now if your system is implemented in Java you can write your tests in Ruby but still access you domain code via the magic of JRuby ).</p>
<p>How readable are your ATs? Could someone who doesn&#8217;t know, for example, Java read them? With the grouping of steps into carefully named methods you can end up with something very readable.</p>
<p>Implicit assumptions:</p>
<p>You complete a story, later you think of a new scenario, do you reopen the old story? If this situation comes up it suggests that your initial story had an implicit assumption so rename your original story to include that assumption explicit and create a new story for the other case. e.g. you write a story for withdrawing money from an ATM &#8211; WithdrawMoneyFromATM. You then think &#8220;What happens if the network connection from the ATM to the bank is flaky?&#8221;. The original story had the implicit assumption that the ATM was working correctly so rename it WithdrawMoneyFromWorkingATM  making it explicit that it&#8217;s for a working ATM and add a second story WithdrawMoneyFromFlakyATM.<br />
Given &#8211; When &#8211; Then &#8211; <a href="http://behaviour-driven.org/">Behaviour Driven Development</a></p>
<p>Dan explained the ideas behind Behaviour-Driven Development and the idea of splitting a test down into a precondition &#8211; the given &#8211; an event &#8211; the when &#8211; and the expected result &#8211; the then. I quite like this idea, if done properly it makes the test very readable. Some code was presented  from <a href="http://jbehave.codehaus.org/">jBehave,</a> a BDD tool for Java, illustrating the idea.  The code (if I understood right) represented the latest thinking of those working on JBehave and was being carried out in private, what is present on the jBehave site is out of date.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.paulmoser.co.uk/index.php/2006/12/29/xp-day-2006-awesome-acceptance-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XP Day 2006 &#8211; Refactoring databases for fun, profit and sanity</title>
		<link>http://blog.paulmoser.co.uk/index.php/2006/12/11/xp-day-2006-refactoring-databases-for-fun-profit-and-sanity/</link>
		<comments>http://blog.paulmoser.co.uk/index.php/2006/12/11/xp-day-2006-refactoring-databases-for-fun-profit-and-sanity/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 23:51:08 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[XP Day]]></category>

		<guid isPermaLink="false">http://blog.paulmoser.co.uk/index.php/2006/12/11/xp-day-2006-refactoring-databases-for-fun-profit-and-sanity/</guid>
		<description><![CDATA[Refactoring databases for fun, profit and sanity
Sam Newman and Graham Tackley
DBDeploy &#8211; a new open source tool from ThoughtWorks &#8211; whilst in its current form itâ€™s new but variations of it have been used in numerous projects for a while.
It currently supports 4 databases &#8211; Oracle, SQLServer, Hypersonic, Sybase, more coming soon including MySQL and [...]]]></description>
			<content:encoded><![CDATA[<p>Refactoring databases for fun, profit and sanity<br />
Sam Newman and Graham Tackley</p>
<p><a title="DBDeploy" href="http://dbdeploy.com">DBDeploy</a> &#8211; a new open source tool from ThoughtWorks &#8211; whilst in its current form itâ€™s new but variations of it have been used in numerous projects for a while.</p>
<p>It currently supports 4 databases &#8211; Oracle, SQLServer, Hypersonic, Sybase, more coming soon including MySQL and ProgresSQL.</p>
<p>Incremental changes are specified, as ANSI standard SQL, in files named with numerical prefixes. DBDeploy checks which have already been applied and generates an output file containing the changes as database vendor specific SQL that have not yet been applied. This output file can then be applied, after being examined by a DBA if necessary, to the database.<br />
DBDeploy also supports downgrades. Think carefully before using this capability (and this advice applies to any similar tool) &#8211; do you really need to be able to rollback a change. The time you really need a script to undo changes is when the easy option of doing an export before the upgrade and reimporting it if something goes wrong is not possible due to the large volume of data involved would mean it takes too long.</p>
<p>If you use the downgrade functionality donâ€™t forget you need to test peforming downgrades as well as upgrades.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.paulmoser.co.uk/index.php/2006/12/11/xp-day-2006-refactoring-databases-for-fun-profit-and-sanity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XP Day 2006 &#8211; London</title>
		<link>http://blog.paulmoser.co.uk/index.php/2006/12/03/xp-day-2006-london/</link>
		<comments>http://blog.paulmoser.co.uk/index.php/2006/12/03/xp-day-2006-london/#comments</comments>
		<pubDate>Sun, 03 Dec 2006 23:10:56 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[XP Day]]></category>

		<guid isPermaLink="false">http://blog.paulmoser.co.uk/index.php/2006/12/03/xp-day-2006-london/</guid>
		<description><![CDATA[This is the first XP Day, or indeed any Agile conference, that Iâ€™ve been too. Whilst there were some basic introductory sessions to Agile I think itâ€™s more geared towards those who are already involved and want to improve what they are doing and also feedback to the community their experiences. What I heard reassured [...]]]></description>
			<content:encoded><![CDATA[<p>This is the first XP Day, or indeed any Agile conference, that Iâ€™ve been too. Whilst there were some basic introductory sessions to Agile I think itâ€™s more geared towards those who are already involved and want to improve what they are doing and also feedback to the community their experiences. What I heard reassured me that I donâ€™t have some warped view of what Agile is and that others experience similar problems in getting Agile adopted in big companies.</p>
<p>There were numerous interesting sessions and, with the exception of a couple that required an additional fee, you were free to choose which ones you attended. There were 4 streams run in parallel, the real problem was deciding which of the sessions not to attend. Fortunately I was there with a couple of colleagues so even though I didnâ€™t manage to attend all that I was interested in I did get to hear about them second hand.</p>
<p>More to follow in other posts on the individual sessions.<br />
One general thought that did strike me about the sessions was that most had two presenters, and by that I donâ€™t mean one stood up and talked a bit then sat down and the other then did their bit but rather one person said something, the other would elaborate, give a counter view or just start on the next point and this alternating would carry on through the presentation. This wasnâ€™t the first time Iâ€™d seen a presentation done in this way, that one done by Martin Fowler and Dan North which I think Iâ€™d have to class as the best presentation Iâ€™ve seen. Iâ€™m not sure why it seems to work so well, is it because you feel in some way, even if it is passive, part of a conversation rather than just someone being talked at, is it as simple as a little variety helps keep ones attention or is it because of the dynamic between the presenters? Maybe when Iâ€™ve seen it done badly itâ€™ll be apparent what makes it work.</p>
<p>Based on this years Iâ€™ll certainly try to attend next years and would recommend it to anyone else involved in Agile, just donâ€™t book your place before I get mine!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.paulmoser.co.uk/index.php/2006/12/03/xp-day-2006-london/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
