<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Joakim Karlsson</title>
	
	<link>http://jkarlsson.com/blog</link>
	<description>Agile Introvert</description>
	<lastBuildDate>Tue, 16 Feb 2010 16:54:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AgileIntrovert" /><feedburner:info uri="agileintrovert" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Igloo – Constraint Based Unit Testing in C++</title>
		<link>http://feedproxy.google.com/~r/AgileIntrovert/~3/tbtJgDUsAWI/</link>
		<comments>http://jkarlsson.com/blog/2010/02/16/igloo-constraint-based-unit-testing-in-c/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 16:54:48 +0000</pubDate>
		<dc:creator>Joakim</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Igloo]]></category>

		<guid isPermaLink="false">http://jkarlsson.com/blog/?p=150</guid>
		<description><![CDATA[Lately, I&#8217;ve been busy working on Igloo, which is a new unit testing framework for C++. It takes a lot of inspiration from NUnit. Both in the way you register test fixtures and test methods, and in the way that you write write your assertions.
After coming back to developing in C++ after working in .NET [...]]]></description>
			<content:encoded><![CDATA[<p>Lately, I&#8217;ve been busy working on <a href="http://igloo-testing.org" target="_blank">Igloo</a>, which is a new unit testing framework for C++. It takes a lot of inspiration from <a href="http://nunit.org" target="_blank">NUnit</a>. Both in the way you register test fixtures and test methods, and in the way that you write write your assertions.</p>
<p>After coming back to developing in C++ after working in .NET and Ruby for a while, I found myself really struggling with creating good, readable unit tests. In other environments I could write tests together with the product owner. Together, we could create and discuss tests that expressed what we wanted our code to do without getting buried in the details. The tests I wrote in C++ were quite unreadable for a non-C++ developer. This was largely due to the way the system we worked on was designed, but part of why we were struggling was the syntax of the unit testing frameworks in C++.</p>
<p>Igloo is an attempt to get back to the feeling of doing TDD in those other environments.</p>
<p>The following is a complete test application, written in Igloo:</p>
<pre>#include &lt;igloo/igloo.h&gt;
using namespace igloo;  

TestFixture(Assertions)
{
  TestMethod(ShouldHandleIntegerAssertions)
  {
    Assert::That(5, !Equals(4));
  }

  TestMethod(ShouldHandleStrings)
  {
    Assert::That("joakim", Is().Not().EqualTo("harry"));
  }
};

int main()
{
  return TestRunner::RunAllTests();
}</pre>
<p>There is still a lot of things that can be added to Igloo to make it more usable. If you have any feedback on what those things might be, I&#8217;d love to know.</p>
<img src="http://feeds.feedburner.com/~r/AgileIntrovert/~4/tbtJgDUsAWI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jkarlsson.com/blog/2010/02/16/igloo-constraint-based-unit-testing-in-c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://jkarlsson.com/blog/2010/02/16/igloo-constraint-based-unit-testing-in-c/</feedburner:origLink></item>
		<item>
		<title>The Locality of Code Changes</title>
		<link>http://feedproxy.google.com/~r/AgileIntrovert/~3/l0onxrB4akw/</link>
		<comments>http://jkarlsson.com/blog/2009/06/24/the-locality-of-code-changes/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 17:59:58 +0000</pubDate>
		<dc:creator>Joakim</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jkarlsson.com/blog/?p=111</guid>
		<description><![CDATA[The probability that you will change a piece of code in the near future increases when you make changes to that code or to code in its vicinity.
Recently, we were about to make changes to parts of a system that hadn&#8217;t been changed in about ten years. When we discussed how to approach the change, [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>The probability that you will change a piece of code in the near future increases when you make changes to that code or to code in its vicinity.</p></blockquote>
<p>Recently, we were about to make changes to parts of a system that hadn&#8217;t been changed in about ten years. When we discussed how to approach the change, the argument that we probably wouldn&#8217;t change that code again in the foreseeable future came up. So why should we bother to refactor it and make sure it was testable? The cost for refactoring that code was deemed extremely high, and was an investment that would not pay off any time soon.</p>
<p>We opted for the quick fix, and made as minor changes to the code as possible. The reasons for not touching the code more than necessary seemed overwhelming.</p>
<p>Well, the following weeks we found ourselves making changes to that code over and over again. While testing that part of the code, we found that we needed a few more changes after all. One change led to another, and it was like we&#8217;d brought that code back to life, and now had to take care of it. Since we did not invest much in code quality at any stage as &#8220;this is the last change in ten years &#8211; promise&#8221;, the cost for each change was very high.</p>
<p>I don&#8217;t think this is an uncommon phenomenon. My theory is that once you make a change to a file, the probability that you&#8217;ll revisit that file increases. Whenever you make changes to a piece of code you start testing it. When you start testing it you might find things that needs to be fixed. When your customers see your new functionality they might come up with new suggestions. All this leads to new changes to the code and the process starts all over again.</p>
<h3>Finding Some Data</h3>
<p>To test this theory out, I created <a href="http://github.com/joakimkarlsson/changefreq" target="_blank">a small ruby application</a> that reads a subversion log. For each path in the log, it records the dates that path has been changed. It then records the time between each consecutive change to each file and counts the number of times the different intervals are found. This is put into a histogram with each bar representing a week. If the time between two consecutive changes to a file is two and a half week, the bin in the histogram that represents two week intervals is increased by one. Files that only occurs once in the log are discarded as they have only been added to the repository, but never been worked on (this might be an oversight on my part, but I don&#8217;t think so).</p>
<p>Armed with the histogram, we can plot the probability density of the time interval between changes to a file.</p>
<p>When I ran this against our subversion repository as well as two open source repositories (<a href="http://gcc.gnu.org/" target="_blank">gcc</a> and <a href="http://www.python.org/" target="_blank">python</a>), the resulting histograms showed similar characteristics (the histogram below shows the results for gcc).  The bar on the far left shows the amount of changes that occurred to files within a week. The bar on the far right represents the sum of all changes with over a year between them. This bar represents an interval well over a week, so it should probably be represented lower and wider bar.</p>
<div id="attachment_120" class="wp-caption aligncenter" style="width: 593px"><img class="size-full wp-image-120" title="gcc-histogram" src="http://jkarlsson.com/blog/wp-content/uploads/gcc-histogram.png" alt="Histogram for gcc svn log" width="583" height="501" /><p class="wp-caption-text">Histogram for gcc svn log</p></div>
<p>The data from these repositories shows a 50% chance that a file will be revisited within a 4-5 week period, and around a 30 % chance that the file will be revisited within the same week.</p>
<h3>Implications</h3>
<p>So, if we&#8217;re correct in our assumption that each change to a file increases the chance of us revisiting it, might that affect how we go about and make those changes?</p>
<p>I think that one thing this shows us is that the probability that an investment in code quality made now will pay off in the near future is quite high. Invest a bit each time you change something and chances are that you&#8217;ll reap the benefits of that investment within a few weeks.</p>
<p>I think it also shows that you might get away with smaller refactorings at each time you change code than you might think. As you&#8217;ll probably work on the same code in the near future, you can opt to spread that investment in code quality over a couple of times rather than doing it all at once. Hence you can strike a balance between making code better and moving forward.</p>
<p><span style="font-weight: normal; ">In our particular case with the ten year old corpse brought back to life, the rationale for the quick fixes was that since we won&#8217;t touch this code often, it does not matter that much if each change costs a bit more than usual. Besides, it would mean a lot of work to make code better and we saw little benefit from that work in the near future. </span></p>
<p><span style="font-weight: normal; ">What in fact happened was that we ended up with quite a few changes to the code that were each quite hard because no investment was made to make subsequent changes easier. The accumulated cost was quite high. Had we from the beginning worked under the assumption that we would revisit this code regularly, things might have gone differently.</span></p>
<p>We hopefully learned our lesson.</p>
<img src="http://feeds.feedburner.com/~r/AgileIntrovert/~4/l0onxrB4akw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jkarlsson.com/blog/2009/06/24/the-locality-of-code-changes/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		<feedburner:origLink>http://jkarlsson.com/blog/2009/06/24/the-locality-of-code-changes/</feedburner:origLink></item>
		<item>
		<title>Begin with the End in Mind</title>
		<link>http://feedproxy.google.com/~r/AgileIntrovert/~3/-VYAHxhiB94/</link>
		<comments>http://jkarlsson.com/blog/2009/06/07/begin-with-the-end-in-mind/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 13:20:15 +0000</pubDate>
		<dc:creator>Joakim</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jkarlsson.com/blog/?p=105</guid>
		<description><![CDATA[To have a software development process that focuses on continually delivering value, we need to take a look at the process from the perspective of a feature/user story. What happens to an idea as it first pops up in someones head and then gradually transforms into something that can be used to solve real, concrete [...]]]></description>
			<content:encoded><![CDATA[<p>To have a software development process that focuses on continually delivering value, we need to take a look at the process from the perspective of a feature/user story. What happens to an idea as it first pops up in someones head and then gradually transforms into something that can be used to solve real, concrete problems? What steps does it go through? How long does it lay around and wait without anyone working on it? How much time does it on average take for a single idea to flow through the system?</p>
<p>With this perspective it comes more natural to look at how the process of delivering value works as a whole. That way we might avoid the trap of just looking at part of the process and ignoring the rest.</p>
<p>We did an exercise last week where we attempted to draw a map of what kind of work needs to be done in order to deliver an idea to our customers. We started by drawing a large light bulb to the far left of a whiteboard. &#8220;Ok, here is an idea in someones head. What shall he or she do with it?&#8221;</p>
<p>This sparked a lot of great discussions about responsibilities in the organization and how we decide which features makes it into a release and which don&#8217;t. Good discussions, but we had a hard time focusing them. When the time was up, our idea hadn&#8217;t made it far on its travel on the whiteboard.</p>
<p>When we picked up the session the next day, we did it a bit differently. Instead of starting the discussions at the beginning of the process, we started at the end. We started out by drawing a happy customer that had just received a new cool feature to the far right on a whiteboard. Then we asked ourselves -</p>
<p>&#8220;What had to happen just before the customer received this piece of functionality?&#8221;</p>
<p>&#8220;Well, we need to put the functionality up on our server for automatically updating the software.&#8221;</p>
<p>&#8220;What do we need to do to accomplish that?&#8221;</p>
<p>&#8220;Well, we&#8230;&#8221;</p>
<p>And so on.</p>
<p>The discussions seemed to become more focused as we began with the end in mind and walking backwards one step at the time. It was kind of a pull system for our discussions, pulling new topics to be discussed as the meeting progressed. We made enough progress in that second session to begin creating our first version of our kanban board.</p>
<p>Yay!</p>
<img src="http://feeds.feedburner.com/~r/AgileIntrovert/~4/-VYAHxhiB94" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jkarlsson.com/blog/2009/06/07/begin-with-the-end-in-mind/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://jkarlsson.com/blog/2009/06/07/begin-with-the-end-in-mind/</feedburner:origLink></item>
		<item>
		<title>New New Beginnings</title>
		<link>http://feedproxy.google.com/~r/AgileIntrovert/~3/I9sU0GQGeec/</link>
		<comments>http://jkarlsson.com/blog/2009/04/22/new-new-beginnings/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 13:47:24 +0000</pubDate>
		<dc:creator>Joakim</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jkarlsson.com/blog/?p=100</guid>
		<description><![CDATA[Today &#8211; Marcus, Andrés, Chris, and myself decided to close down Blueplane. We&#8217;ve had a great run. We&#8217;ve had the opportunity to work with a lot of smart people, and we&#8217;ve learned a lot in the process.
Thanks to all of you who invited us in to your organizations to create better ways of working, and [...]]]></description>
			<content:encoded><![CDATA[<p>Today &#8211; Marcus, <a href="http://www.taylor.se/blog/2009/04/22/this-is-it/" target="_blank">Andrés</a>, <a href="http://www.hedgate.net/articles/2009/04/22/new-beginnings/" target="_blank">Chris</a>, and myself decided to close down <a href="http://www.blueplane.se/" target="_blank">Blueplane</a>. We&#8217;ve had a great run. We&#8217;ve had the opportunity to work with a lot of smart people, and we&#8217;ve learned a lot in the process.</p>
<p>Thanks to all of you who invited us in to your organizations to create better ways of working, and to all of you who joined our seminars and made them a challenging and fun experience.</p>
<p>Right now, I don&#8217;t know what I will do next but when I do I&#8217;ll let you know.</p>
<p>Now, all of Blueplane is off to drown our sorrows with a couple of beers.</p>
<p>Cheers!</p>
<img src="http://feeds.feedburner.com/~r/AgileIntrovert/~4/I9sU0GQGeec" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jkarlsson.com/blog/2009/04/22/new-new-beginnings/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://jkarlsson.com/blog/2009/04/22/new-new-beginnings/</feedburner:origLink></item>
		<item>
		<title>Goal-Oriented Daily Stand-Ups</title>
		<link>http://feedproxy.google.com/~r/AgileIntrovert/~3/DpbIbu5sAmg/</link>
		<comments>http://jkarlsson.com/blog/2009/02/19/goal-oriented-daily-stand-ups/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 13:40:46 +0000</pubDate>
		<dc:creator>Joakim</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://jkarlsson.com/blog/?p=94</guid>
		<description><![CDATA[The most widely used format for the daily scrum, or daily stand-up, is having everyone answer three questions:

What did you do yesterday?
What will you do today?
What is blocking progress?

For a description of the rationale behind using these questions, see this article by Jeff Sutherland.
In addition to these questions, I like to add the following:

What is [...]]]></description>
			<content:encoded><![CDATA[<p>The most widely used format for the daily scrum, or daily stand-up, is having everyone answer three questions:</p>
<ol>
<li>What did you do yesterday?</li>
<li>What will you do today?</li>
<li>What is blocking progress?</li>
</ol>
<p>For a description of the rationale behind using these questions, see <a href="http://jeffsutherland.com/scrum/2006/06/why-three-questions-in-daily-scrum.html" target="_blank">this article by Jeff Sutherland</a>.</p>
<p>In addition to these questions, I like to add the following:</p>
<ol>
<li>What is the <em><strong>goal</strong></em> we <em><strong>as a team</strong></em> have for today?</li>
<li>How did we <em><strong>as a team</strong></em> do on our <strong><em>goal</em></strong> for yesterday?</li>
<li>What, if anything, hindered <em><strong>us as a team</strong></em> from reaching that <em><strong>goal</strong></em>?</li>
</ol>
<p>First, these questions look at what we as a team wants to accomplish. This helps us focus the individual tasks towards a common goal for that day.</p>
<p>Second, these questions sets up goals as opposed to just focusing on what tasks to work on. This gives the tasks we work on a more meaningful context. When we strive for goals, and reach those goals together, we share a sense of accomplishment. That helps in building a team.</p>
<p>Third, as we look at impediments that hinders us collectively, every team member gets a better understanding of what our major impediments are, and how it affects our progress.</p>
<img src="http://feeds.feedburner.com/~r/AgileIntrovert/~4/DpbIbu5sAmg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jkarlsson.com/blog/2009/02/19/goal-oriented-daily-stand-ups/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://jkarlsson.com/blog/2009/02/19/goal-oriented-daily-stand-ups/</feedburner:origLink></item>
		<item>
		<title>There Can Be Only One?</title>
		<link>http://feedproxy.google.com/~r/AgileIntrovert/~3/M-sM-S6wzA0/</link>
		<comments>http://jkarlsson.com/blog/2009/02/17/there-can-be-only-one/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 19:20:01 +0000</pubDate>
		<dc:creator>Joakim</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://jkarlsson.com/blog/?p=75</guid>
		<description><![CDATA[It&#8217;s not easy being a product owner. For a lot of you out there it&#8217;s a lonely job. It&#8217;s also a job that brings with it a lot of responsibility. You are responsible for the vision and the profitability of the product.
That&#8217;s not something to be taken lightly.
A recent discussion on the Scrum Development List [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s not easy being a product owner. For a lot of you out there it&#8217;s a lonely job. It&#8217;s also a job that brings with it a lot of responsibility. You are responsible for the vision and the profitability of the product.</p>
<p>That&#8217;s not something to be taken lightly.</p>
<p>A recent discussion on the <a href="http://groups.yahoo.com/group/scrumdevelopment/message/36389" target="_blank">Scrum Development List</a> on whether it was advisable to have more than one product owner on a project or not, got me thinking. The prevalent view seems to be that there should only be one product owner. What is required of that person?</p>
<h3>Vision</h3>
<p>As a PO, you are responsible for the product vision and for making sure that it&#8217;s communicated to all project stakeholders.</p>
<h3>Balance</h3>
<p>A big part of it is about balance. You have to balance the demands from the other stakeholders:</p>
<ul>
<li>Different customers have different ideas about what absolutely has to be in the product &#8211; now!</li>
<li>The team requests to work on esoteric parts of the system that won&#8217;t result in any visible new functionality, otherwise all development will come to a complete stop any day now</li>
<li>Your own organization holds you accountable for releasing something that generates revenue &#8211; ASAP!</li>
</ul>
<h3>Answers</h3>
<p>You&#8217;re also supposed to be able to answer questions ranging from minute details about how the users want their data displayed, and whether the credit card payment functionality has higher priority than switching to version 5.2 of the OR-mapper (whatever that is), to answering the more general question from management &#8220;So, how&#8217;s that project of yours coming along?&#8221;.</p>
<p>So, either you put on your superhero costume, cape and all, and do it all yourself, or you better start finding ways to collaborate with the people around you.</p>
<h3>There Can Be Only One?</h3>
<p>When an organization is at the beginning of introducing agile software development, it might be a good idea to have one product owner. Chances are that the constraint of the organization is the team&#8217;s ability to use the agile engineering practices.</p>
<p>But as the team gets more experience, it will eventually cease to be the constraint. It is highly likely that the new constraint is the single product owner.</p>
<p>That&#8217;s when you need to review the responsibilities of your PO. Which are the core ones? Can some of the non-core responsibilities be delegated to someone else?</p>
<p>Perhaps you&#8217;ll find that your PO has more responsibilities than can be handled by one person.</p>
<p><em>For another perspective on the product owner role, you might wanna check out Rich Mironov&#8217;s article, <a href="http://www.enthiosys.com/insights-tools/pm-prod-owner/" target="_blank">Revenue Products need Product Managers, not Product Owners</a></em></p>
<img src="http://feeds.feedburner.com/~r/AgileIntrovert/~4/M-sM-S6wzA0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jkarlsson.com/blog/2009/02/17/there-can-be-only-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jkarlsson.com/blog/2009/02/17/there-can-be-only-one/</feedburner:origLink></item>
		<item>
		<title>Agile Planning at Øredev 2008</title>
		<link>http://feedproxy.google.com/~r/AgileIntrovert/~3/QV9b7fW_B7Q/</link>
		<comments>http://jkarlsson.com/blog/2009/01/09/agile-planning-at-%c3%b8redev-2008/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 15:24:35 +0000</pubDate>
		<dc:creator>Joakim</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://www.jkarlsson.com/blog/2009/01/09/agile-planning-at-%c3%b8redev-2008/</guid>
		<description><![CDATA[My talk about agile planning at Øredev 2008 is now available here.
]]></description>
			<content:encoded><![CDATA[<p>My talk about agile planning at <a href="http://www.oredev.org/">Øredev</a> 2008 is now available <a href="http://www.viddler.com/explore/oredev/videos/6/">here</a>.</p>
<img src="http://feeds.feedburner.com/~r/AgileIntrovert/~4/QV9b7fW_B7Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jkarlsson.com/blog/2009/01/09/agile-planning-at-%c3%b8redev-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jkarlsson.com/blog/2009/01/09/agile-planning-at-%c3%b8redev-2008/</feedburner:origLink></item>
		<item>
		<title>Why Estimate When You Can Sort?</title>
		<link>http://feedproxy.google.com/~r/AgileIntrovert/~3/rbuTtysqTiw/</link>
		<comments>http://jkarlsson.com/blog/2008/11/08/why-estimate-when-you-can-sort/#comments</comments>
		<pubDate>Sat, 08 Nov 2008 20:22:07 +0000</pubDate>
		<dc:creator>Joakim</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://www.jkarlsson.com/blog/2008/11/08/why-estimate-when-you-can-sort/</guid>
		<description><![CDATA[Chris and I have been helping a team introduce agile software development for a while now. When we are running a planning meeting, we have usually used planning poker for estimation. But we seem to be using planning poker less and less.
I like planning poker. It has a lot of advantages. In particular it helps [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.hedgate.net/">Chris</a> and I have been helping a team introduce agile software development for a while now. When we are running a planning meeting, we have usually used planning poker for estimation. But we seem to be using planning poker less and less.</p>
<p>I like planning poker. It has a lot of advantages. In particular it helps with giving everyone on the team a voice. If you make sure to have everyone show their estimate before you begin discussing the details, you&#8217;ll stand a better chance of getting estimates that are not biased by the opinions of the stronger and louder team members. Brilliant!</p>
<p>There are some shortcomings to planning poker if you don&#8217;t have a good facilitator though.</p>
<p>It is easy to lose track of the relative nature of estimates. As you are addressing each story one by one it is quite easy for teams to forget to compare it to the other stories. This leads to uneccessary discussions about details that really aren&#8217;t relevant at this point.</p>
<p>As an alternative to using planning poker, you might want to try a sorting exercise. Instead of trying to attach an estimate to a story directly, we first have the team sort index cards. The smallest/easiest/least complex on the far left, and the largest/hardest/most complext on the far right. Don&#8217;t think in terms of points, ideal days, gummy bears, or whatever estimation unit you&#8217;re using. Just sort!</p>
<p>When that part of the exercise is complete, you have all the story cards lined up. Next, have the team think of the possible story points as buckets. We usually use 1, 2, 3, 5, and 8. The mission is to decide what cards belong in what bucket.</p>
<p>Begin with the leftmost card and ask &#8220;Is this a 1?&#8221; Have all team members do a thumb up or thumb down. If all agree, continue with the next card and repeat until you get a thumbs down. Have the team quickly negotiate which cards make in to the first bucket and which don&#8217;t. Continue the same procedures with the next estimation bucket, and repeat until you got an estimate for all cards.</p>
<p>Oh, and in order to keep bias from the more vocal team members to a minimum &#8211; have the team perform the sorting in silence.</p>
<p>For more information about this, check out <a href="http://kanemar.com/2008/04/21/scrum-trainers-gathering-44-affinity-estimating/">this post by Kane Mar</a>.</p>
<img src="http://feeds.feedburner.com/~r/AgileIntrovert/~4/rbuTtysqTiw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jkarlsson.com/blog/2008/11/08/why-estimate-when-you-can-sort/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://jkarlsson.com/blog/2008/11/08/why-estimate-when-you-can-sort/</feedburner:origLink></item>
		<item>
		<title>Daily Stand-Ups</title>
		<link>http://feedproxy.google.com/~r/AgileIntrovert/~3/vG6q7Ff-d4k/</link>
		<comments>http://jkarlsson.com/blog/2008/06/26/daily-stand-ups/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 17:12:56 +0000</pubDate>
		<dc:creator>Joakim</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://www.jkarlsson.com/blog/2008/06/26/daily-stand-ups/</guid>
		<description><![CDATA[
If you’re doing any kind of agile software development, you’re probably having some form of daily stand-up. In my experience most of the daily stand-ups out there are, quite frankly, pretty uninspiring things. A lot of meetings are spent mechanically reporting status to a project manager or discussing details of interest to only a few.
Like [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jkarlsson.com/blog/wp-content/uploads/2008/06/gears3.jpg" alt="Gears" /><br />
If you’re doing any kind of agile software development, you’re probably having some form of daily stand-up. In my experience most of the daily stand-ups out there are, quite frankly, pretty uninspiring things. A lot of meetings are spent mechanically reporting status to a project manager or discussing details of interest to only a few.</p>
<p>Like all practices, you need to constantly keep in mind the underlying principles and values behind the daily stand-up to keep it from deteriorating. Here are a few things to consider so that you don’t end up with just another meeting that people attend just because they have to.</p>
<h2>Keep the Goal in Mind</h2>
<p>The purpose of the daily stand-up is to give the team a good sense of how it’s doing on the commitment it made for the current iteration. Is someone stuck somewhere? Are things taking longer than we expected? Do we need to drop things to be able to deliver a coherent product increment?</p>
<p>This implies an obvious prerequisite – you need to have a goal for the iteration and a commitment to reach it. That goal is set at the iteration planning meeting. A commitment to reach it is created by giving the team responsibility to decide how many user stories they can implement, no one else.</p>
<h2>It’s for the Team</h2>
<p>It’s the team’s job to keep track of how they’re doing on their commitment. A daily stand-up that is run by a few persons where a major part of the team members shows up to passively attend is of limited use. Meetings that consists of one way communication from the project manager to the team, or from the team to the project manager, do not help create an environment where the team actively owns and cares for it’s project.</p>
<p>In a working stand-up, the team members address each other, reminding themselves of what’s currently on the agenda, and everyone is participating to the best of their ability.</p>
<p>If you are in a lead position in the team, either formally or informally, consider taking a step back and see what happens.</p>
<h2>Discuss Elsewhere</h2>
<p>The daily stand-up is not for solving problems. It’s about sharing information. If someone thinks he or she has input on a problem reported by another team member, the stand-up is the time to make the others aware of that and schedule a discussion afterwards. Anyone who has input may join.</p>
<p>If you allow too much discussion during the stand-up, there’s a risk that these take up most of the meeting. Chances are that some has nothing to add and resort to passively await the end. We don’t want to waste the time of the team members, so keep discussions to a minimum.</p>
<p>One tool that might help you get a more organized stand-up is to use a token. This a small physical item that is passed between the team members during the meeting. The person currently holding the token is the one that’s currently allowed to speak.</p>
<h2>Come Prepared</h2>
<p>Daily stand-ups are intended to be short and effective. If people don’t come prepared, time will be wasted when members try to remember what happened since last time. Make sure that you think through what you want to bring up on the next meeting. What you have accomplished and how much work is left. Having done that you can focus on what is being said by the other team members and get something out of the stand-up. If you focus on what to say when the token comes your way, you will miss what the others have to say.</p>
<h2>Accomplishments, Not Activities</h2>
<p>Focus on sharing what you accomplished since the last stand-up rather than reporting what you have been working on. For one thing, talking about accomplishments made provides a more positive attitude than just providing information on what parts of the system was worked on.</p>
<p>When the rest of the team hear about these micro-increments it has a tendency to trigger new activities. “Now that we can do X, I might actually begin doing those performance tests that I have been putting off for far too long.”</p>
<h2>Make Commitments</h2>
<p>Have team members bring up what they plan to have accomplished at the next stand-up. This way everyone makes a commitment to the rest of the team. The team can then compare the commitments they’ve made since last time to what was actually accomplished. That way they’re at a better position to find if there’s any problems or opportunities that needs to be addressed.</p>
<p>If members mechanically bring up what they worked on since last time instead, the team risks missing if there is anything that could potentially hinder their progress.</p>
<h2>Bring up Impediments</h2>
<p>In my experience, developers can take a lot without complaining. I’ve seen developers sigh and pull their hair while making changes to 60 files just to add a seemingly trivial thing to the code base. Still, at the next stand-up, they don’t report any problems.</p>
<p>If we don’t bring up problems, we will never be in a position to fix them. Hidden problems will affect quality, velocity, and our chances to reach our commitments in general. So we need to breed a culture where it’s expected of everyone to constructively bring up impediments before they get out of hand.</p>
<h2>Conclusion</h2>
<p>Daily stand-ups is a great tool for keeping a team in sync. When the stand-up works well everybody leaves it with a good sense of what they’re focus for the day is, what the others are working on, and how that connects to the team’s goal. Everybody should leave that meeting invigorated and ready to get going.</p>
<p>In the complex environment that is software development, you will always need to make adjustments to your plan. The daily stand-up is one of the best tools for this.</p>
<p>So, remember why you are there!</p>
<img src="http://feeds.feedburner.com/~r/AgileIntrovert/~4/vG6q7Ff-d4k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jkarlsson.com/blog/2008/06/26/daily-stand-ups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jkarlsson.com/blog/2008/06/26/daily-stand-ups/</feedburner:origLink></item>
		<item>
		<title>New Beginnings</title>
		<link>http://feedproxy.google.com/~r/AgileIntrovert/~3/Xt5FJVC9hoE/</link>
		<comments>http://jkarlsson.com/blog/2008/04/08/new-beginnings/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 12:38:12 +0000</pubDate>
		<dc:creator>Joakim</dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.jkarlsson.com/blog/2008/04/08/new-beginnings/</guid>
		<description><![CDATA[It&#8217;s official. I am now part of Blueplane. Blueplane is a consulting firm that specializes in helping organizations become more efficient by applying what we&#8217;ve learnt about agile software development over the years. We help teams by coaching them on how to use sound engineering practices, find better ways to run projects, and start communicating [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s official. I am now part of <a href="http://www.blueplane.se">Blueplane</a>. Blueplane is a consulting firm that specializes in helping organizations become more efficient by applying what we&#8217;ve learnt about agile software development over the years. We help teams by coaching them on how to use sound engineering practices, find better ways to run projects, and start communicating more efficiently.</p>
<p>I&#8217;m in this together with <a href="http://www.taylor.se/blog/">Andrés Taylor</a>, <a href="http://www.hedgate.net/">Chris Hedgate</a>, and <a href="http://www.mawi.org/">Marcus Widerberg</a>. I know I will learn a lot from those guys. They&#8217;re very sharp, they have loads of experience, and they&#8217;re just plain fun to be around.</p>
<p>If you&#8217;re situated in southern Sweden, don&#8217;t hesitate to contact us if you think your organization could use a vitamin injection.</p>
<p><img src="http://jkarlsson.com/blog/wp-content/uploads/2008/04/bpcard320x200.jpg" alt="Blueplane Business Card" /></p>
<img src="http://feeds.feedburner.com/~r/AgileIntrovert/~4/Xt5FJVC9hoE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://jkarlsson.com/blog/2008/04/08/new-beginnings/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://jkarlsson.com/blog/2008/04/08/new-beginnings/</feedburner:origLink></item>
	</channel>
</rss>
