<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>An Innovator&#039;s scribblings</title>
	<atom:link href="http://erlingwl.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://erlingwl.wordpress.com</link>
	<description>Erling Wegger Linde&#039;s blog</description>
	<lastBuildDate>Sun, 08 May 2011 13:29:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='erlingwl.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>An Innovator&#039;s scribblings</title>
		<link>http://erlingwl.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://erlingwl.wordpress.com/osd.xml" title="An Innovator&#039;s scribblings" />
	<atom:link rel='hub' href='http://erlingwl.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Systems Thinking</title>
		<link>http://erlingwl.wordpress.com/2010/11/03/systems-thinking/</link>
		<comments>http://erlingwl.wordpress.com/2010/11/03/systems-thinking/#comments</comments>
		<pubDate>Wed, 03 Nov 2010 00:18:59 +0000</pubDate>
		<dc:creator>erlingwl</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Group dynamics]]></category>
		<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Systems Thinking]]></category>

		<guid isPermaLink="false">http://erlingwl.wordpress.com/?p=223</guid>
		<description><![CDATA[It all started when I read The Fifth Discipline &#8211; The Art and Practice of The Learning Organization by Peter M. Senge. I was inspired to read it after my brilliant previous colleague Pat Kua did a workshop on Systems Thinking. (Dennis Stevens wrote a better summary about this book than I will ever be able [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=223&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It all started when I read <a href="http://www.amazon.co.uk/Fifth-Discipline-Practice-Learning-Organization/dp/0712656871" target="_blank">The Fifth Discipline &#8211; The Art and Practice of The Learning Organization</a> by Peter M. Senge. I was inspired to read it after my brilliant previous colleague <a href="http://www.thekua.com/atwork/" target="_blank">Pat Kua</a> did a workshop on Systems Thinking. (<a href="http://www.dennisstevens.com/2009/09/15/the-fifth-discipline-and-the-agile-enterprise/" target="_blank">Dennis Stevens wrote a better summary</a> about this book than I will ever be able to.)</p>
<p>I then continued by reading <a title="Freedom from Command &amp; Control by John Seddon" href="http://www.amazon.co.uk/gp/product/1563273276">Freedom from Command &amp; Control by John Seddon</a> as well as attended a presentation from John Seddon on the same topic. While Peter Senge&#8217;s book was a very interesting read &#8211; John Seddon&#8217;s was the easiest one to grasp and the one that really opened my eyes.</p>
<p>Seddon brilliantly shows how the wrong targets and measurements encourage the wrong behaviour and creates what he calls failure demand. Furthermore managers and governments sometimes specifies how people should execute their work &#8211; with the intention that these processes will then produce the best results. However, as you probably already know &#8211; it rarely does &#8211; and leads to poor results and demotivated people. Especially managing cost often leads to sub-optimizations which is not good for the end result. (I find some of this is a good match with the <a href="http://erlingwl.wordpress.com/2010/05/31/beyond-budgeting/">Beyond budgeting</a> movement.)</p>
<p>I would love to use some of Seddon&#8217;s own examples to convince you, but I would encourage you to read his book instead. I will try however, to give you a few examples of where I have recognized these patterns in IT projects myself:</p>
<p><strong>Managing cost:</strong><br />
Many IT projects seem to be managed on cost. This sometimes leads to testing only being applied at the end of a project (because that should mean less man hours needed for testing.) This obviously leads to bugs only being found at the end of the project. The later you find the bugs &#8211; the harder it is to fix them &#8211; and the more expensive you can argue it is to fix them. One of the reasons they are expensive to fix later would be that the developers might have forgotten everything about that area in the code base &#8211; the ones who wrote the code might even be gone. Also there is a huge risk that parts of the application might have to be redesigned etc.. So by managing cost &#8211; and trying to reduce the cost of one part of a process &#8211; the total cost of the project might end up higher than what it could have been had the testing started day one.. One should look at the project as a whole and not try to optimize parts of it independently. And while you are at it &#8211; does the project itself make sense at all &#8211; if you look at it from a Systems perspective?</p>
<p><strong>Targets and failure demand:</strong><br />
Measuring velocity is common in Agile projects these days. In Kanban you would often measure cycle time. The problem however, is that we rarely get to measure this end to end. I.e. from when the customer requests a feature until he actually starts using it. Let&#8217;s say you only measure cycle time from when a developer picks up a story until it is ready for System Test. The developer might have to make the story pass a few unit and acceptance tests, but bugs found later in the process might be raised as new bug stories. Hence in terms of the statistics it does not make sense for the developer to go that extra mile and build in the amount of quality needed for the story to pass System Testing. The developer keeps coding at a high speed &#8211; while new bugs are raised. From a Systems Thinking point of view &#8211; i.e. from the end customers point of view &#8211; this of course does not make sense. The bugs are essentially failure demand &#8211; and reducing the failure demand would probably allow the user to get to use his (bug-free) features earlier and cheaper. </p>
<p>To fix this, you should start by looking at the System that encouraged this behaviour in the first place. Namely remove the targets that created local optimizations. From a Systems Thinking perspective it is not the developer&#8217;s fault that he produced a lot of bugs &#8211; it was the targets he was measured on. So is it his manager&#8217;s fault then? Well, maybe, but how is she measured then?</p>
<p><strong>Compliance:</strong><br />
Starting out with Agile &#8211; you might try to follow the book &#8211; and hence end up doing for instance estimation. I.e. Scrum and XP says we should do estimation &#8211; if it doesn&#8217;t work for us &#8211; then we are probably doing something wrong so we should read some more about Scrum and see how we could do estimation better. </p>
<p>Wait a minute &#8211; if estimation doesn&#8217;t give you anything &#8211; then you shouldn&#8217;t do it! Blindly believing in processes or measuring people on compliance &#8211; is not the way to get the good results. The important thing is the end result &#8211; not how you got there.</p>
<p><strong>Eye opener</strong><br />
What I realized as many have before me, is that all these different tools, CI, pair programming, estimation, 7 types of waste, product owners etc. are all just tools. You should use them if they make sense in your context, but don&#8217;t use them just for the sake of it. It is not like Kanban is always better than Scrum. It is not like stand-ups is something you have to do. It is not like IT is the solution to every problem. It is not like people are stupid just because they do stupid things &#8211; they are to a certain extent a product of the system. Reflect on your end goal. Learn to see underlying structures. You will be amazed!</p>
<p><strong>Is this it then?</strong><br />
No it is not. I believe I have finally learned by know &#8211; that whenever I discover a better theory or a better tool &#8211; there is always something better waiting for me around the next corner. Take a look at <a href="http://www.slideshare.net/jurgenappelo/complexity-versus-lean">Jurgen Appelo&#8217;s stuff on Complex Systems</a> or the Chaordic Mindset in <a href="http://goo.gl/KMPj">Bob Marshall&#8217;s the Marshall Model of Organisational Evolution</a> for instance.</p>
<p><strong>Disclaimer</strong><br />
There is much more to Systems Thinking &#8211; and I have only barely started to understand it. Feedback is more than welcome!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erlingwl.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erlingwl.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erlingwl.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erlingwl.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erlingwl.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erlingwl.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erlingwl.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erlingwl.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erlingwl.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erlingwl.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erlingwl.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erlingwl.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erlingwl.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erlingwl.wordpress.com/223/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=223&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://erlingwl.wordpress.com/2010/11/03/systems-thinking/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/03633bd81040819534a3b204a39de043?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erlingwl</media:title>
		</media:content>
	</item>
		<item>
		<title>Going Forward!</title>
		<link>http://erlingwl.wordpress.com/2010/10/29/going-forward/</link>
		<comments>http://erlingwl.wordpress.com/2010/10/29/going-forward/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 12:48:25 +0000</pubDate>
		<dc:creator>erlingwl</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">https://erlingwl.wordpress.com/?p=229</guid>
		<description><![CDATA[Being a consultant has been great. I have learned a lot, both in terms of process and technology. However if a company is doing great and have no problems recruiting people, it does not make a lot of sense to hire a bunch of consultants. So although you can come across some great projects &#8211; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=229&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Being a consultant has been great. I have learned a lot, both in terms of process and technology. However if a company is doing great and have no problems recruiting people, it does not make a lot of sense to hire a bunch of consultants. So although you can come across some great projects &#8211; the chances are you will either end up trying to fix a broken process or work with legacy technology. </p>
<p>At <a href="http://www.forward.co.uk">Forward</a> I will be able to use the optimal technology (of choice!) and work in a very lean/agile environment. Going from concept to production in a matter of hours/days instead of months or years will be liberating! I also believe it will be eye-opening and push my standards even higher.</p>
<p>Being located in Camden, my commute will almost be reduced to a stroll down the street. Life in London just became even better!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erlingwl.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erlingwl.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erlingwl.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erlingwl.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erlingwl.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erlingwl.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erlingwl.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erlingwl.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erlingwl.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erlingwl.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erlingwl.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erlingwl.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erlingwl.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erlingwl.wordpress.com/229/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=229&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://erlingwl.wordpress.com/2010/10/29/going-forward/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/03633bd81040819534a3b204a39de043?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erlingwl</media:title>
		</media:content>
	</item>
		<item>
		<title>Distributed &#8220;Kanban&#8221;</title>
		<link>http://erlingwl.wordpress.com/2010/07/04/distributed-kanban/</link>
		<comments>http://erlingwl.wordpress.com/2010/07/04/distributed-kanban/#comments</comments>
		<pubDate>Sun, 04 Jul 2010 17:50:26 +0000</pubDate>
		<dc:creator>erlingwl</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Group dynamics]]></category>
		<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Lean]]></category>

		<guid isPermaLink="false">http://erlingwl.wordpress.com/?p=208</guid>
		<description><![CDATA[The distributed team I am working with currently has been trying out a little bit of Kanban.  We have assigned a WIP limit to the In Development / For Review column(s). That is, if the total number of stories in the In Development + For Review columns adds up to (or more than!) the WIP [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=208&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The distributed team I am working with currently has been trying out a little bit of Kanban.  We have assigned a WIP limit to the In Development / For Review column(s). That is, if the total number of stories in the In Development + For Review columns adds up to (or more than!) the WIP Limit, you should not pick up a new story, until at least one story has been reviewed and closed off and we are again below the WIP limit. (Ideally, going forward we should obviously add WIP limits to other parts of the process to, but we had to start somewhere.)</p>
<p>While there are lots of interesting things to say about this &#8211; such as that it has made us more disciplined and probably reduced lead time (working on the stats) and might make the team more predictable -  I will focus on the distributed side of things in this post.</p>
<p>Communication is a challenge on every distributed project I would say, and hence getting buy-in and understanding of the WIP limits at one location, does not necessarily mean that every location understands or starts respecting the WIP limits immediately. As every other change effort, one needs to use the full range of consulting skills / influence strategies.</p>
<p>What is a concrete challenge though is the time-zone differences. If one team finishes development and puts a story into For Review, then their typical next step would often be to pick up a new story. What so if the WIP limit will be breached? Should they wait until the resources that will do the technical and business reviews of the stories gets in (given they work in a different time-zone)? Or should they break the WIP limit?</p>
<p>The previous might force you to add a bit of a buffer to your WIP limit. And that might make sense. However, initially this is what happened to us: Location B puts story 1 into For Review and picks up story 2. Location A reviews story 1, but it needs more development or bug-fixing. Location B gets in the next day, does some fixes on story 1, and finish development on story 2. They even pick up story 3. Location A reviews story 1 and story 2, but they are both still not accepted. Hence Location B now has 3 stories in play.. This could go on for some time.</p>
<p>Let&#8217;s say the capacity of Location B is to work on one story at a time. Does it make sense to add in a buffer of 2++ extra then? I tend to disagree. So what we ended up communicating to Location B was to focus on quality before quantity. Do not rush to pick up new stories, but try to finish stories with significant quality.</p>
<p>What happened was two things:</p>
<p>1. Location A started reviewing stories much quicker. Focus was first on cleaning out the For Review queue &#8211; then do some development. (In order to give Location B quicker feedback, and prevent them from picking up too much new work before stories had been successfully reviewed).</p>
<p>2. Location B decided the brilliant thing of doing some local technical review first, before marking the story as For Review. This raised the quality, and took some of the work load off location A. It also meant that Location B are no longer rushing to picking up new work, but focusing on completing stories properly.</p>
<p>These two things allowed us to keep our WIP limit relatively tight. We do have a buffer for the stuff in For Review, but we try to keep it as small as possible.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erlingwl.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erlingwl.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erlingwl.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erlingwl.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erlingwl.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erlingwl.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erlingwl.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erlingwl.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erlingwl.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erlingwl.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erlingwl.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erlingwl.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erlingwl.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erlingwl.wordpress.com/208/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=208&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://erlingwl.wordpress.com/2010/07/04/distributed-kanban/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/03633bd81040819534a3b204a39de043?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erlingwl</media:title>
		</media:content>
	</item>
		<item>
		<title>Kanban &#8211; the book</title>
		<link>http://erlingwl.wordpress.com/2010/06/16/kanban-the-book/</link>
		<comments>http://erlingwl.wordpress.com/2010/06/16/kanban-the-book/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 19:40:04 +0000</pubDate>
		<dc:creator>erlingwl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://erlingwl.wordpress.com/?p=189</guid>
		<description><![CDATA[I have quite recently had the pleasure of reading David Anderson&#8217;s latest book on Kanban. I thought I had a pretty good understanding of Kanban before I started reading it. However, I still had some unanswered questions &#8211; some &#8211; which for a while might have reduced my confidence in persuading my peers to just [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=189&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have quite recently had the pleasure of reading <a href="http://www.amazon.co.uk/Kanban-David-J-Anderson/dp/0984521402" target="_blank">David Anderson&#8217;s latest book on Kanban</a>. I thought I had a pretty good understanding of Kanban before I started reading it. However, I still had some unanswered questions &#8211; some &#8211; which for a while might have reduced my confidence in persuading my peers to just try it. After reading the book I got most of my questions answered, and at the time of writing we are just starting to experiment with a little bit of Kanban on my current project. Happy days!</p>
<p>Whether you know nothing about Kanban or consider yourself fairly well educated on the topic I think the book is definitely worth reading. Instead of giving a full summary of the book, I thought I should give you some of the answers to the questions I got answered from reading the book (as I understood it, although I might also be a bit influenced by other sources):</p>
<ul>
<li><strong>How do you really get started?</strong> Take your current process, visualize it (on a board) and apply WIP limits. Try measuring lead time, and maybe create a cumulative flow diagram. For longer term success, you should get some buy-in / agreement from up- and downstream stakeholders though.</li>
<li><strong>What is some of the major selling points? </strong>Create a predictable performing team. Reduce lead time. Optimize throughput. Expose bottlenecks.</li>
<li><strong>How do you deal with blocked stories?</strong> Kanban should force the team to swarm on a blocked story, with the result of resolving it. It might need to be escalated, but then again a manager should see the importance of helping to resolve the issue.</li>
<li><strong>When do you release, plan, ..?</strong> Kanban allows you to decouple input cycles from output cycles. That is, you could release every Monday if you want, but perhaps only have meetings to fill up the input queue every two weeks. You could have a retrospective every third Friday if you want. Or you could even trigger these events on an as needed basis.</li>
<li><strong>How do you become predictable when stories might vary in size, priority ..?</strong> Classes of Service! For example: a &#8216;standard story&#8217; will be finished in 14 days on average. &#8216;Expedite stories&#8217; will be finished in 10 days on average, but you are only allowed to have one expedite story in play at any one time and so forth. David describes other interesting examples of Classes of Service as well, I highly recommend you to read this.</li>
</ul>
<p>I think I should stop here and leave someting for you to read as well <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erlingwl.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erlingwl.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erlingwl.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erlingwl.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erlingwl.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erlingwl.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erlingwl.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erlingwl.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erlingwl.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erlingwl.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erlingwl.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erlingwl.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erlingwl.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erlingwl.wordpress.com/189/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=189&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://erlingwl.wordpress.com/2010/06/16/kanban-the-book/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/03633bd81040819534a3b204a39de043?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erlingwl</media:title>
		</media:content>
	</item>
		<item>
		<title>Pair Programming Workshop at Agile Spain 2010</title>
		<link>http://erlingwl.wordpress.com/2010/06/14/pair-programming-workshop-at-agile-spain-2010/</link>
		<comments>http://erlingwl.wordpress.com/2010/06/14/pair-programming-workshop-at-agile-spain-2010/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 21:24:48 +0000</pubDate>
		<dc:creator>erlingwl</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://erlingwl.wordpress.com/?p=173</guid>
		<description><![CDATA[I had the pleasure of facilitating a workshop at Agile Spain last week. Apparently this was the first Agile Spain ever. I must say the people at the conference were very enthusiastic and eager to learn more about Agile. I met lots of interesting people, and really appreciated how welcoming everyone was. A special thanks [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=173&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I had the pleasure of facilitating a workshop at Agile Spain last week. Apparently this was the first Agile Spain ever. I must say the people at the conference were very enthusiastic and eager to learn more about Agile. I met lots of interesting people, and really appreciated how welcoming everyone was. A special thanks to those who translated eager Spanish discussions for me.</p>
<p>My workshop consisted of two parts. First my initial presentation called Pair Programming Strategies. My proposal to the conference was intended as a workshop around what we tend to do when our ideal pairing situation comes under pressure from various disturbing forces. <em>My understanding is that conference organizers will post the slides on Slideshare, meanwhile you can take a look at the PDF here: <a href="http://erlingwl.files.wordpress.com/2010/06/erling_wegger_linde_cas2010_v5.pdf">Pair Programming Strategies &#8211; Agile Spain 2010</a>.</em></p>
<p>The second part was an Open Space discussion. It turned out that less than half of the participants had tried pair programming, and only a few were doing it on a daily basis. However, the Open Space format was very adaptive to the participants&#8217; needs, and it seemed we ended up with a set of interesting topics. Here is a quick summary of the discussions, based on the notes I gathered from each group (thanks for writing this down!). (If you participated in the workshop and are reading this blog, please feel free to add some comments. I wish I had taped the summaries everyone gave at the end.)</p>
<p><strong>How do you start (pair programming)</strong></p>
<p>This group was curious about how you actually get started with pair programming. Here are some keywords from the discussion:</p>
<ul>
<li>Physical setup: Big screen / 2 screens. Movable keyboard / 2 keyboards.</li>
<li>Write down what you are working on.</li>
<li>Driver / copilot / supervisor. Switch roles.</li>
<li>Responsibility &#8211; Collective code ownership</li>
<li>It could be exhausting</li>
<li>Good merge with TDD. One writes the test, the other writes the code to pass it (Ping, pong)</li>
</ul>
<p><strong>Performance impact</strong></p>
<p>This group discussed whether pair programming is an effective way to work or not. Here are some keywords:</p>
<ul>
<li>Just for core functionality or also easy tasks?</li>
<li>What about deadlocks?</li>
<li>More focus</li>
<li>Knowledge transfer</li>
<li>Share responsibilities</li>
<li>Less or more stressful?</li>
<li>Tight schedules</li>
</ul>
<p>The study referred to <a href="http://en.wikipedia.org/wiki/Pair_programming">in this Wikipedia article</a> which observed &#8220;a 15% increase in time, but a 15% decrease in bugs&#8221;, was mentioned as an example of a quantitative measure on the effectiveness of pair programming.</p>
<p><strong>Distributed Pairing</strong></p>
<p>This group discussed how or whether it is possible to do distributed pair programming.</p>
<ul>
<li>Network latency is a problem</li>
<li>Very high bandwidth required</li>
<li>Communication services, such as video/audio must be working all the time</li>
<li>Desktop sharing tools</li>
<li>Different timezones</li>
<li>Is it possible to reproduce benefits of pairing remotely?</li>
<li>Try it first with people you have paired with co-located earlier</li>
<li>Multiple monitors</li>
</ul>
<p>If I remember correctly, the group concluded that you needed to create an environment that was as close to a co-located one as possible. Then you would hopefully achieve a flow that was approximately the same as in a co-located setting.</p>
<p><strong>Disagreement</strong></p>
<p>Eventually someone formed this last group, discussing disagreement. They discussed what to do with a deadlock. And suggested one should involve a third person.</p>
<p>I asked everyone to give me a quick feedback on their way out, the result was 17 &#8220;+&#8221;, 7 &#8220;+/-&#8221; and 0 &#8220;-&#8221;. Among suggestions for improvements was to find a room without tables, as well as make it more dynamic. I am quite pleased with the feedback, but will do my best to improve. If you have more feedback, please leave a comment or send me an email (erlingwl (at) gmail (dot) com).</p>
<p>A big thanks to everyone who participated. I had a great time in Madrid <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erlingwl.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erlingwl.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erlingwl.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erlingwl.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erlingwl.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erlingwl.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erlingwl.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erlingwl.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erlingwl.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erlingwl.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erlingwl.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erlingwl.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erlingwl.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erlingwl.wordpress.com/173/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=173&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://erlingwl.wordpress.com/2010/06/14/pair-programming-workshop-at-agile-spain-2010/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/03633bd81040819534a3b204a39de043?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erlingwl</media:title>
		</media:content>
	</item>
		<item>
		<title>Beyond Budgeting</title>
		<link>http://erlingwl.wordpress.com/2010/05/31/beyond-budgeting/</link>
		<comments>http://erlingwl.wordpress.com/2010/05/31/beyond-budgeting/#comments</comments>
		<pubDate>Mon, 31 May 2010 12:28:14 +0000</pubDate>
		<dc:creator>erlingwl</dc:creator>
				<category><![CDATA[Group dynamics]]></category>
		<category><![CDATA[Lean]]></category>

		<guid isPermaLink="false">http://erlingwl.wordpress.com/?p=164</guid>
		<description><![CDATA[Staying true to my Personal Kanban, I am obliged to blog about all books I read. Fortunately it will be a pleasure to blog about this book I have been reading lately. Beyond Budgeting is all about the negative impacts of budgets and how several organizations have flourished without them. Getting rid of budgets, that&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=164&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Staying true to my Personal Kanban, I am obliged to blog about all books I read. Fortunately it will be a pleasure to blog about this book I have been reading lately.</p>
<p><a href="http://www.amazon.co.uk/Beyond-Budgeting-Managers-Annual-Performance/dp/1578518660">Beyond Budgeting</a> is all about the negative impacts of budgets and how several organizations have flourished without them. Getting rid of budgets, that&#8217;s a drastic change, and clearly no serious organizations would ever dream of doing that, you might be thinking now. However, the best example from the book is probably the Swedish bank, Handelsbanken, which have been doing very well without budgets for more than 30 years. Furthermore, I have worked for <a href="http://www.miles.no/site/368/english.aspx">an organization without budgets</a> myself.</p>
<p>There are several drawbacks with budgets:</p>
<ul>
<li>Cost &#8211; They cost a lot, many organizations might spend up to 6 months every year on creating budgets for the following year. There might be far better ways to spend your accountants&#8217; time.</li>
<li>Politics and bureaucracy &#8211; Budgets can make people lose focus, and a lot of time might be spent playing political games and fighting bureaucracy.</li>
<li>Lost opportunities &#8211; Your budget targets might say you have to increase revenue by 10%. Well, that might force you to work hard, however, it might also distract you from grabbing an opportunity to increase revenue by 50%.</li>
</ul>
<p>Removing budgets would typically allow you to empower your frontline workers, make information more visible to everyone, defer decisions until a more responsible moment (no more planning 1 year ahead), reduce waste and utilize your accountants&#8217; competence in a much better way as well as grab more opportunities as they come along. This all is clearly music to lean and agile ears.</p>
<p>If you want to know more about how to move on beyond budgeting, I would highly recommend reading the book. It contains several case studies from different organizations that have replaced budgets successfully in more or less similar ways.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erlingwl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erlingwl.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erlingwl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erlingwl.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erlingwl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erlingwl.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erlingwl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erlingwl.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erlingwl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erlingwl.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erlingwl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erlingwl.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erlingwl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erlingwl.wordpress.com/164/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=164&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://erlingwl.wordpress.com/2010/05/31/beyond-budgeting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/03633bd81040819534a3b204a39de043?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erlingwl</media:title>
		</media:content>
	</item>
		<item>
		<title>Personal Kanban</title>
		<link>http://erlingwl.wordpress.com/2010/04/25/personal-kanban/</link>
		<comments>http://erlingwl.wordpress.com/2010/04/25/personal-kanban/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 12:30:30 +0000</pubDate>
		<dc:creator>erlingwl</dc:creator>
				<category><![CDATA[Kanban]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://erlingwl.wordpress.com/?p=151</guid>
		<description><![CDATA[A few weeks ago I attended http://skillsmatter.com/podcast/agile-scrum/john-stevenson-kanban-for-just-in-time-training by @JR0cket. He explained how he was using an online Kanban board to manage his own personal studying. Most interesting I found his done state definition; &#8220;Blogged&#8221;. The idea is that given a reasonable WIP limit, before you can start a new pet project or read a new [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=151&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago I attended <a href="http://skillsmatter.com/podcast/agile-scrum/john-stevenson-kanban-for-just-in-time-training">http://skillsmatter.com/podcast/agile-scrum/john-stevenson-kanban-for-just-in-time-training</a> by @JR0cket. He explained how he was using an online Kanban board to manage his own personal studying. Most interesting I found his done state definition; &#8220;Blogged&#8221;. The idea is that given a reasonable WIP limit, before you can start a new pet project or read a new book, you have to blog about the task you just finished. And that is exactly what I am doing now:</p>
<p>Using the iKan app on my iPhone, my Study Kanban board looks like this (WIP limits in brackets):</p>
<p>Backlog (4) -&gt; Studying (2) -&gt; Write blog post (2) -&gt; Blogged / Done.</p>
<p>Already, this has forced me to focus on just a few topics at a time. Hopefully I will be disciplined enough to try to always write a blog post before moving anything into the Done state. As John mentioned; you force yourself to study a bit harder when you know you have to write a blog post about it later.</p>
<p>If I remember correctly, John had at least two Kanban boards for more or less different processes. I have gone down that road myself as well, with the following additional &#8220;Personal Economy etc.&#8221; Kanban board:</p>
<p>Ready (5) -&gt; Doing (2) -&gt; Done</p>
<p>I am currently reflecting on the concept of having several Kanban boards. The WIP limits are not very effective if I can get around them just by adding a new board. However, the two processes are significantly different. I am pretty sure people don&#8217;t want me to blog about my Tax returns etc. Perhaps having a shared backlog or similar could be useful. </p>
<p>Imagine the following scenario: I want to add a new book to my study backlog, but because it is full I have to finish another task first. If I had a shared backlog between my study and personal stuff, this could force me to prioritize and get started with some boring chores and actually get them done. I guess the only thing stopping me from trying this is my current tool set. Once again it seems a physical board could be the simplest solution. To be continued..</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erlingwl.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erlingwl.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erlingwl.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erlingwl.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erlingwl.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erlingwl.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erlingwl.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erlingwl.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erlingwl.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erlingwl.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erlingwl.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erlingwl.wordpress.com/151/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erlingwl.wordpress.com/151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erlingwl.wordpress.com/151/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=151&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://erlingwl.wordpress.com/2010/04/25/personal-kanban/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/03633bd81040819534a3b204a39de043?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erlingwl</media:title>
		</media:content>
	</item>
		<item>
		<title>Testing Clojure</title>
		<link>http://erlingwl.wordpress.com/2010/03/07/testing-clojure/</link>
		<comments>http://erlingwl.wordpress.com/2010/03/07/testing-clojure/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 21:57:12 +0000</pubDate>
		<dc:creator>erlingwl</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://erlingwl.wordpress.com/?p=141</guid>
		<description><![CDATA[My latest pet project has been a little Clojure program that screen scrapes the TFL Oyster web site and calculates my (or yours) daily Oyster expenses. The project is hosted here: http://github.com/erlingwl/Oyster. It took me a while to get comfortable with Clojure and to actually become able to write some tests. I had very much [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=141&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My latest pet project has been a little Clojure program that screen scrapes the TFL Oyster web site and calculates my (or yours) daily Oyster expenses. The project is hosted here: <a href="http://github.com/erlingwl/Oyster">http://github.com/erlingwl/Oyster</a>.</p>
<p>It took me a while to get comfortable with Clojure and to actually become able to write some tests. I had very much the same experience as my colleague <a href="http://www.magpiebrain.com/2010/02/16/struggling-with-test-driven-clojure/">Sam Newman writes about</a>. </p>
<p>However, once I actually started doing proper TDD, I found my program evolved quite naturally. The problem might be that some unit tests are testing single functions, whilst others are testing more aggregate functions. My initial thought on this is that probably some of my unit tests are closer to what you might call acceptance tests. However, I am not sure how well this approach would scale, and as Sam mentions, one might have to stub out the sub functions in order to only test the specific function.. </p>
<p>If you take a look at the source code, you can see I used two different ways of testing my app <a href="http://github.com/erlingwl/Oyster/tree/master/tests">traditional unit testing using clojure.contrib.test-is</a> and <a href="http://github.com/erlingwl/Oyster/tree/master/features/">cuke4duke</a> which is cucumber for various languages on the JVM including Clojure. As there is not too many examples of how to test Clojure out there, hopefully someone might find it useful to take a closer look at what I have done so far. The cuke4duke scenarios are not very impressive in their current state though, as they were amongst the first things I wrote. A reasonable approach forward would be to convert some of the acceptance test like unit tests into scenarios.</p>
<p>Anyway, playing with Clojure has been fun, and it has given me valuable insight regarding the future of languages on the JVM, expect a blog post on this topic soon!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erlingwl.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erlingwl.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erlingwl.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erlingwl.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erlingwl.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erlingwl.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erlingwl.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erlingwl.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erlingwl.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erlingwl.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erlingwl.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erlingwl.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erlingwl.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erlingwl.wordpress.com/141/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=141&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://erlingwl.wordpress.com/2010/03/07/testing-clojure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/03633bd81040819534a3b204a39de043?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erlingwl</media:title>
		</media:content>
	</item>
		<item>
		<title>A Kanban Brown Bag Recipe</title>
		<link>http://erlingwl.wordpress.com/2009/12/03/a-kanban-brown-bag-recipe/</link>
		<comments>http://erlingwl.wordpress.com/2009/12/03/a-kanban-brown-bag-recipe/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 21:45:24 +0000</pubDate>
		<dc:creator>erlingwl</dc:creator>
				<category><![CDATA[Group dynamics]]></category>
		<category><![CDATA[Kanban]]></category>

		<guid isPermaLink="false">http://erlingwl.wordpress.com/?p=114</guid>
		<description><![CDATA[Kanban appeals to me, and I have had the privilege to hold a brown bag on it two times in the last weeks. The feedback and especially the discussions it started exceeded my expectations in a very positive way. Therefore, I thought it might be worth sharing my recipe for a Kanban brown bag. The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=114&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Kanban appeals to me, and I have had the privilege to hold a brown bag on it two times in the last weeks. The feedback and especially the discussions it started exceeded my expectations in a very positive way. Therefore, I thought it might be worth sharing my recipe for a Kanban brown bag.</p>
<p><strong><br />
The materials you need:</strong></p>
<ul>
<li><a href="http://www.limitedwipsociety.org/2009/11/16/kanban-example/">Henrik Kniberg&#8217;s Kanban kick-start example</a>. (Thank you very much for sharing this Henrik! It would have taken ages to prepare the brown bag without it)</li>
<li>A keyword cheat sheet</li>
<li>20 coins</li>
<li>5 stopwatches (or mobiles)</li>
<li>8 participants + yourself</li>
</ul>
<p><strong>Step 1: Presentation</strong><br />
Connect your computer to the projector and open Henrik&#8217;s kick-start example. Scribble down the following keywords on a flip chart as you explain how they are illustrated with Henrik&#8217;s example:</p>
<ul>
<li>Visibility &#8211; <em>The Kanban board. Visualize bottlenecks</em></li>
<li>Limit Work In Progress (WIP) &#8211; <em>Avoid task-switching. Focus on throughput rather than over-utilizing individuals</em></li>
<li>Pull &#8211; <em>You are not allowed to push work down the workflow, you pull work when you are ready and are below WIP limit</em></li>
<li>Flow <em>- A steady flow (all the way from analysis to production), not iterations</em></li>
<li>Cadence &#8211; <em>You measure and predict, instead of plan and promi</em>se</li>
</ul>
<p>Assuming you have a basic understanding of Kanban and agree with my selection of keywords, your audience should now have learned the basic concepts of Kanban. To make them fully grasp the value of limiting work in progress the next step is to play a simple game:</p>
<p><strong>Step 2: Play a game</strong><br />
I learned this game at <a href="http://xpday-london.editme.com/eXtremeTuesdayClub" target="_blank">XTC</a> (once again thanks to Henrik Kniberg who facilitated the game at XTC).</p>
<p>Basically you start with four players, and four &#8220;managers&#8221;, standing behind one player each with their stopwatches ready. The first player gets 20 coins. His job is to flip all 20 coins, then pass them on to the next player, which will then flip all 20, then pass them on etc.. Each manager measures the time, from when his player starts flipping the first coin, until he has flipped all 20. You as a facilitator, should measure the time from the first person flips the first coin, until the last person flips the last coin. The initial scoreboard would look like this:</p>
<table>
<tr>
<td><strong>Batch size</strong></td>
<td><strong>Player 1</strong></td>
<td><strong>Player 2</strong></td>
<td><strong>Player 3</strong></td>
<td><strong>Player 4</strong></td>
<td><strong>Total time</strong></td>
</tr>
<tr>
<td>20</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>5</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>1</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<p>The next round, the first person flips 5 coins, passes them on, flips the next 5 etc. Each manager measures the time from his player flips his first coin, until he passes the last coin on. The next person starts flipping the 5 coins as soon as he receives them, passes them on, then starts on the next 5 when available&#8230; You as a facilitator, measures the total time. The last round, the first player flips one single coin, passes it on, then flips the next..</p>
<p><strong>If you don&#8217;t want to know the typical outcome of the game, stop reading now!</strong></p>
<p>The outcome of the game will most likely look something like this:</p>
<table>
<tr>
<td><strong>Batch size</strong></td>
<td><strong>Player 1</strong></td>
<td><strong>Player 2</strong></td>
<td><strong>Player 3</strong></td>
<td><strong>Player 4</strong></td>
<td><strong>Total time</strong></td>
</tr>
<tr>
<td>20</td>
<td>9.8</td>
<td>11</td>
<td>13</td>
<td>14</td>
<td>56.4</td>
</tr>
<tr>
<td>5</td>
<td>16.7</td>
<td>17</td>
<td>21.5</td>
<td>19</td>
<td>32.6</td>
</tr>
<tr>
<td>1</td>
<td>14.9</td>
<td>21</td>
<td>23.1</td>
<td>22.3</td>
<td>26.3</td>
</tr>
</table>
<p>As you can see, the individual times is higher for the smaller batch sizes. However, the total time is much better for the smaller batch sizes.</p>
<table>
<tr>
<td><strong>Batch size</strong></td>
<td><strong>Methodology</strong></td>
</tr>
<tr>
<td>20</td>
<td>&#8220;Waterfall&#8221;</td>
</tr>
<tr>
<td>5</td>
<td>&#8220;Scrum&#8221;</td>
</tr>
<tr>
<td>1</td>
<td>&#8220;Kanban&#8221;</td>
</tr>
</table>
<p> I have indicated next to each total time which process the different batch sizes could relate to. Hence, tell your audience that if they want to improve their overall throughput, they should limit their WIP and give Kanban a try <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><em>Thanks again to everyone in the community who have shared their material and knowledge.</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erlingwl.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erlingwl.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erlingwl.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erlingwl.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erlingwl.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erlingwl.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erlingwl.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erlingwl.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erlingwl.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erlingwl.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erlingwl.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erlingwl.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erlingwl.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erlingwl.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=114&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://erlingwl.wordpress.com/2009/12/03/a-kanban-brown-bag-recipe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/03633bd81040819534a3b204a39de043?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erlingwl</media:title>
		</media:content>
	</item>
		<item>
		<title>My polyglot exploration</title>
		<link>http://erlingwl.wordpress.com/2009/11/10/my-polyglot-exploration/</link>
		<comments>http://erlingwl.wordpress.com/2009/11/10/my-polyglot-exploration/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 14:58:06 +0000</pubDate>
		<dc:creator>erlingwl</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://erlingwl.wordpress.com/?p=88</guid>
		<description><![CDATA[Having used Java as my main language lately, it was about time to play with some new languages. As there is a whole stack of languages that runs on the JVM now, it is hard to decide which language to play with &#8211; so I ended up playing with them all, or at least the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=88&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Having used Java as my main language lately, it was about time to play with some new languages. As there is a whole stack of languages that runs on the JVM now, it is hard to decide which language to play with &#8211; so I ended up playing with them all, or at least the following; JRuby, Jyhton, Groovy, Scala and Clojure.</p>
<p>Although they all run on the JVM, I wanted to find out how easy it actually is to combine them. My method was almost like this:</p>
<li>Install the programming language (thank you macports)</li>
<li>Find and install the correct plugin for Eclipse</li>
<li>Try execute some Java Library / code from the language</li>
<li>Try to execute something written in the language from Java</li>
<p>On some occasions I also tried to execute some of the other languages from the current language I was playing with.</p>
<p><em><br />
Disclaimer: I just want to share what I have learnt so far. There might be way better ways to do these things.</em></p>
<p><strong>Groovy</strong><br />
To install Groovy I just did <code>sudo port install groovy</code>, whatever platform you are on, it shouldn&#8217;t be too hard.</p>
<p>I also installed the <a href="http://groovy.codehaus.org/Eclipse+Plugin">Groovy Eclipse Plugin</a> and created a new Groovy Project.</p>
<p>Here is the Groovy code I wrote for calling Java</p>
<pre>
package groovyerlingwl;

import java.util.regex.Pattern

class CallingJava2 {

	def pt = Pattern.compile("^foo")
	def m = pt.matcher("foo")
}

def callingJava = new CallingJava2()
println  "" + callingJava.m.find()
</pre>
<p>To call some of my Groovy code from Java, I created a simple class:</p>
<pre>
package groovyerlingwl;

class GroovyPrinter {

	def printsomething() {
		println "hello from Groovy"
	}

}
</pre>
<p>..and exported it as a .jar file. Interestingly enough, the .jar file now contained a groovyerlingwl/GroovyPrinter.class. To run this from Java, I had to add groovy-1.6.5.jar and asm-2.2.3.jar to the classpath. I found mine in /opt/local/share/java/groovy/lib. And all the code you need is:</p>
<pre>
import groovyerlingwl.*;

public class CallingGroovy {

	public static void main(String[] args) {
		GroovyPrinter gp = new GroovyPrinter();
		gp.printsomething();
	}

}
</pre>
<p><strong>Scala</strong><br />
Very much like Groovy, Scala integrates simply with Java. After installing Scala, the <a href="http://www.scala-lang.org/node/94">Scala Eclipse Plugin</a> and created a new Scala Project; I used the following to call Java:</p>
<pre>
package erlingwlscala;

import java.util.regex.Pattern

object Test {

  def main(args: Array[String]) {
    val pt = Pattern.compile("^foo")
    val m = pt.matcher("foo")
    println(m.find)
  }

}
</pre>
<p>And then I made another simple class to call from Java:</p>
<pre>
package erlingwlscala

class TestPrinter {

  def print_something(){
     println("Hello, from scala")
  }

}
</pre>
<p>Again, I exported this to a .jar file. This also resulted in the .jar file containing a erlingwlscala/TestPrinter.class. </p>
<p>To run the class from Java, I added scala-library.jar to the classpath and ran the following Java code</p>
<pre>
import erlingwlscala.TestPrinter;

public class CallScala {

	public static void main(String[] args) {
		TestPrinter testPrinter = new TestPrinter();
		testPrinter.print_something();
	}

}
</pre>
<p><strong>JRuby</strong><br />
Again, I installed JRuby and the matching <a href="http://www.radrails.org/radrails/plugin">Eclipse Plugin</a>. I created a new Ruby Project. However, make sure you choose the JRuby interpreter when running the following code:</p>
<pre>
require 'java'

include_class 'java.util.regex.Pattern'

class CallingJava

  pt = Pattern.compile("^foo")
  m = pt.matcher("foo")
  puts m.find

end
</pre>
<p>Running JRuby from Java was not as easy as Groovy or Scala. However, using the <a href="http://java.sun.com/developer/technicalArticles/scripting/jruby/">JSR-223</a> it seems that you can run almost any scripting language from Java. So using the approach described in the <a href="http://java.sun.com/developer/technicalArticles/scripting/jruby/">article</a> you can do the following in Java: </p>
<pre>
import javax.script.*;

public class CallJRuby {

	public static void main(String[] args) throws Exception {
		ScriptEngineManager factory = new ScriptEngineManager();

		ScriptEngine engine = factory.getEngineByName("jruby");

		try {
			engine.eval("puts('Hello from JRuby')");
		} catch (ScriptException exception) {
			exception.printStackTrace();
		}
	}

}
</pre>
<p>NB! Remember to download <a href="https://scripting.dev.java.net/servlets/ProjectDocumentList">The JSR engines</a> and include the jruby-engine.jar on the classpath. You also need to include jruby.jar on the classpath.</p>
<p><strong>Clojure</strong></p>
<p>Again, installing the suiting <a href="http://code.google.com/p/counterclockwise/wiki/Documentation">Eclipse Plugin</a>. And creating a new Clojure plugin. I used the example from <a href="http://clojure.org/java_interop">Clojure.org</a> and borrowed the following code:</p>
<pre>
(doto (new java.util.HashMap) (.put "a" 1) (.put "b" 2))
</pre>
<p>To call Clojure from Java, I found <a href="http://java.dzone.com/tips/calling-clojure-java">this article.</a>. First make a simple clojure program</p>
<pre>
; printer.clj
(ns printer)

(defn print-string [arg]
	(println arg))
</pre>
<p>Add this to your resources folder in your Java project, include clojure.jar and clojure-contrib.jar on the classpath, and run the following code:</p>
<pre>
package erlingwl;

import clojure.lang.RT;

public class CallingClojure {

	public static void main(String[] args) {
		try {
			RT.loadResourceScript("printer.clj");
			RT.var("printer", "print-string").invoke("hello world");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
</pre>
<p><strong>Jython</strong></p>
<p>Once again, I installed Jython and downloaded the respective <a href="http://pydev.org/index.html">Eclipse Plugin</a>. To call Java I created a new Jython project and used the following code (got it from <a href="http://wiki.python.org/jython/UserGuide#accessing-java-from-jython">wiki.python.org</a>):</p>
<pre>
from java.util import *
r = Random()
print r.nextInt()
</pre>
<p><a href="http://wiki.python.org/jython/UserGuide#using-jsr-223">wiki.python.org</a> also describes how you can use JSR-223 to run Jyhton/Python from Java. I tried the following code:</p>
<pre>
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class CallJython {

	public static void main(String[] args) {
		ScriptEngine engine = new ScriptEngineManager().getEngineByName("python");
		try {
			engine.eval("print 'hey from python'");
		} catch (ScriptException e) {
			e.printStackTrace();
		}
	}
}
</pre>
<p>To get this to work, add jython.jar and the jython-engine.jar from <a href="https://scripting.dev.java.net/servlets/ProjectDocumentList">The JSR engines</a> to the classpath.</p>
<p><strong>Bonus</strong><br />
I mentioned I tried to combine some of the other languages too. </p>
<p><em>Clojure calling scala:</em></p>
<pre>(println (doto (new erlingwlscala.TestPrinter) (.print_something)))</pre>
<p>To do this, I added my scala application .jar to the classpath (see above where I call Scala from Java), and also I had to add the scala-library.jar.</p>
<p><em>JRuby calling clojure:</em><br />
Here I basically followed the same approach approach as when I called Clojure from Java (see above):</p>
<pre>
require 'clojure.jar'

include Java

import 'clojure.lang.RT'

class CallingClojure

  RT.loadResourceScript("resources/printer.clj")
  RT.var("printer", "print-string").invoke("hello world")

end
</pre>
<p><em>Calling Scala from JRuby:</em></p>
<p>My worst hack so far, I assume there are more elegant ways to do this:</p>
<pre>
include Java

SCALA_HOME =  '/opt/local/share/scala/lib/'
require SCALA_HOME + 'scala-library.jar'
require "scalaexport1.jar"

include_class 'erlingwlscala.TestPrinter'

class CallingScala

  printer = TestPrinter.new
  printer.print_something

end
</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erlingwl.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erlingwl.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erlingwl.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erlingwl.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erlingwl.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erlingwl.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erlingwl.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erlingwl.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erlingwl.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erlingwl.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erlingwl.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erlingwl.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erlingwl.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erlingwl.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erlingwl.wordpress.com&amp;blog=8029942&amp;post=88&amp;subd=erlingwl&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://erlingwl.wordpress.com/2009/11/10/my-polyglot-exploration/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/03633bd81040819534a3b204a39de043?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erlingwl</media:title>
		</media:content>
	</item>
	</channel>
</rss>
