<?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>The Turning Point</title>
	
	<link>http://blog.franktrindade.com</link>
	<description>Agile, software and some nonsense</description>
	<lastBuildDate>Tue, 20 Mar 2012 21:00:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/franktrindade" /><feedburner:info uri="franktrindade" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>franktrindade</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Test Driving Spikes</title>
		<link>http://feedproxy.google.com/~r/franktrindade/~3/dbRX3IXAw7g/</link>
		<comments>http://blog.franktrindade.com/2012/03/21/test-driving-spikes/#comments</comments>
		<pubDate>Tue, 20 Mar 2012 21:00:02 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Estimation]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[discovery]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[spikes]]></category>
		<category><![CDATA[tdd]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=897</guid>
		<description><![CDATA[If you have ever been in an Agile project, or something that looks like it, you should have heard about the concept of spikes. For those who haven&#8217;t, spikes are the agile response to reducing technical risk in a project. In case you are not sure how to build something or fear that some piece [...]]]></description>
			<content:encoded><![CDATA[<p>If you have ever been in an Agile project, or something that looks like it, you should have heard about the concept of <a href="http://stackoverflow.com/questions/1870738/when-to-perform-spikes-in-agile">spikes</a>.</p>
<p>For those who haven&#8217;t, spikes are the agile response to reducing technical risk in a project. In case you are not sure how to build something or fear that some piece of functionality might take much more than expected, and you have to gain more confidence about it, it&#8217;s time to run a spike. Usually timeboxed, spikes are technical investigations with the objective of clarifying a certain aspect of the project.</p>
<p>In my current team, we are developing a few tools that are quite specific to our context and were not sure on how to solve a few issues, so we have been quite frequently playing spike cards.</p>
<p>This is all not new and I&#8217;m sure most of you have done that before. If you did the way I used to do, you would write a spike card, something as &#8220;<em>investigate technology X for problem Y</em>&#8220;, would spend 2 days doing it and would have a response for it in your head once you were finished.</p>
<p>In our current context, team members were rotating quite quickly, so we were worried that any knowledge we would get from spikes could have been lost if it was just&#8230;let&#8217;s say.. in our heads.</p>
<p>Not wanting jut to write the findings up, as we first thought about doing, we decided to tackle the problem with the golden hammer of agile development: tests!</p>
<p>So, instead of writing tests to decide how we should write our code, we started writing tests to state the assumptions we had about the things we were investigating, being able to verify them (or not) and have an executable documentation to show to other people.</p>
<p>For example, here is some code we wrote to investigate how ActiveRecord would work in different situations:</p>
<pre style="padding-left: 30px;">it 'should execute specific migration' do
  CreateProducts.migrate(:up)
  table_exists?("products", @db_name).should be_true
  table_exists?("items", @db_name).should be_false
 end</pre>
<pre style="padding-left: 30px;">it 'should execute migrations to a specific version' do
  ActiveRecord::Migrator.migrate(ActiveRecord::Migrator.migrations_paths, 02) { |migration| true }
  table_exists?("products", @db_name).should be_true
  table_exists?("items", @db_name).should be_true
  table_exists?("customers", @db_name).should be_false
 end</pre>
<pre style="padding-left: 30px;">it 'should not execute following migrations if one of them fails' do
  begin
    ActiveRecord::Migrator.migrate(ActiveRecord::Migrator.migrations_paths, nil) { |migration| true }
  rescue StandardError =&gt; e
      puts "Error: #{e.inspect}"
  end</pre>
<pre style="padding-left: 30px;">  table_exists?("invalid", @db_name).should be_true
  m = ActiveRecord::Migrator.new(:up, ActiveRecord::Migrator.migrations_paths, nil)
  m.current_version.should == 3</pre>
<pre style="padding-left: 30px;">  table_exists?("products", @db_name).should be_true
  table_exists?("items", @db_name).should be_true
  table_exists?("customers", @db_name).should be_true</pre>
<pre style="padding-left: 30px;">  table_exists?("another_table", @db_name).should be_false</pre>
<pre style="padding-left: 30px;"> end</pre>
<p>We have used this technique just a few times and I won&#8217;t guarantee it will always be the best option, but so far the result for us is having code that can be executed, demonstrated and easily extended by others, making it easier to transfer knowledge between our team.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/franktrindade?a=dbRX3IXAw7g:Dt8R25-Imv4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/franktrindade?a=dbRX3IXAw7g:Dt8R25-Imv4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2012/03/21/test-driving-spikes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.franktrindade.com/2012/03/21/test-driving-spikes/</feedburner:origLink></item>
		<item>
		<title>Infrastructure Testing with Toft</title>
		<link>http://feedproxy.google.com/~r/franktrindade/~3/4Nzu8vNBd2A/</link>
		<comments>http://blog.franktrindade.com/2012/03/14/infrastructure-testing-with-toft/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 21:00:04 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[chef]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[toft]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=871</guid>
		<description><![CDATA[Recently I&#8217;ve started working often with Puppet, using it to provision environments for the project I&#8217;m working on. One of the things I&#8217;ve quickly realised when using it was how long the feedback loop between committing code and actually verifying that the manifest was working appropriately. In my situation, it would be something like this: Work on puppet manifests, making a [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve started working often with <a href="http://puppetlabs.com/">Puppet</a>, using it to provision environments for the project I&#8217;m working on. One of the things I&#8217;ve quickly realised when using it was how long the feedback loop between committing code and actually verifying that the manifest was working appropriately. In my situation, it would be something like this:</p>
<ol>
<li>Work on puppet manifests, making a few changes</li>
<li>Commit code to repository</li>
<li>Wait for build to finish, which just verified for correct syntax</li>
<li>Wait for latest version to be published on the puppet master</li>
<li>Wait for next sync between master and client</li>
<li>Check that configuration was applied correctly on the client</li>
</ol>
<p>As you can see, not very simple. If you also consider that I am not very experienced with puppet, you can imagine how I ended up having to retry things in this very long loop, which can end up with anyone&#8217;s patience.</p>
<p><strong>Testing Infrastructure Code</strong></p>
<p>Coming from a development background and being used to having very fast feedback about code that I write made me go into a search for testing tools that could ease my pain.</p>
<p>Unfortunately most of the tools I&#8217;ve found where not ideal since they focused on unit testing code, as <a href="https://github.com/rodjek/rspec-puppet">rspec-puppet</a>. Not sure what others think of it, but in the case of puppet manifests and chef recipes, unit testing doesn&#8217;t make much sense to me, since there is no code to be executed, and tests end up looking like some version of reverse programming, where you just assert what you wanted to write, but it doesn&#8217;t guarantee that the code actually works.</p>
<p><strong>Introducing Toft</strong></p>
<p>Luckily, one of the options I&#8217;ve found was <a href="http://github.com/exceedhl/toft">Toft</a>, which is a library aimed writing integration tests for infrastructure code using Linux containers. The main idea is that you write cucumber features verifying what you expect the target machine to have (packages, files, folders, etc..) and Toft starts a linux container, applies your configuration and runs your tests against it.</p>
<p style="text-align: center;"><a href="http://blog.franktrindade.com/2012/03/14/infrastructure-testing-with-toft/toft2/" rel="attachment wp-att-882"><img class="aligncenter  wp-image-882" title="toft2" src="http://blog.franktrindade.com/wp-content/uploads/2012/03/toft2-1024x502.png" alt="" width="459" height="225" /></a></p>
<p>It also can be run from a vagrant box, so you can have your tests running on your mac, which is quite handy.</p>
<p>Features can be created using normal Cucumber steps, and mostly rely on ssh&#8217;ing into the target machine and verifying what&#8217;s going on in it, so are quite easy to extend and adapt to your needs. Here is an example of a feature verifying if a specific package has been installed.</p>
<blockquote>
<p style="padding-left: 30px;">Scenario: Check that package was installed on centos box<br />
Given I have a clean running node n1<br />
When I run puppet manifest &#8220;manifests/test_install.pp&#8221; on node &#8220;n1&#8243;<br />
Then Node &#8220;n1&#8243; should have package &#8220;zip&#8221; installed in the centos box</p>
</blockquote>
<p>We&#8217;ve started using it in our team when writing new manifests and have also setup a ci build with it, which is quite useful to guarantee our manifests still work over time.</p>
<p>Toft is still in its beginning but I believe it has quite a lot of potential. If you are using chef or puppet you should definitely check it out at:</p>
<p><a href="https://github.com/exceedhl/toft">http://github.com/exceedhl/toft</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/franktrindade?a=4Nzu8vNBd2A:XaH_PMFel4o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/franktrindade?a=4Nzu8vNBd2A:XaH_PMFel4o:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2012/03/14/infrastructure-testing-with-toft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.franktrindade.com/2012/03/14/infrastructure-testing-with-toft/</feedburner:origLink></item>
		<item>
		<title>Why (Most) Companies Don’t Learn</title>
		<link>http://feedproxy.google.com/~r/franktrindade/~3/baBMIkKedeY/</link>
		<comments>http://blog.franktrindade.com/2012/02/28/why-most-companies-dont-learn/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 02:00:12 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[learning_organisation]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=845</guid>
		<description><![CDATA[I&#8217;ve been thinking about and researching the topic of organisational learning for some time now. Last year, I presented on the topic at LESS 2011, but realized it was time to take some time and write about it. So this is the first post of a series to explore the topic, which I&#8217;m also hoping [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking about and researching the topic of organisational learning for some time now. Last year, I presented on the topic at <a href="http://less2011.leanssc.org/">LESS 2011</a>, but realized it was time to take some time and write about it. So this is the first post of a series to explore the topic, which I&#8217;m also hoping will help me clarify my view on the subject.</p>
<p><strong>Organisational</strong><strong> learning. Should anyone care ?</strong></p>
<p>My hope is that this goes without saying, but I guess that the first question to be asked is why should anyone care about learning? Some businesses make money staying still, while the world keeps moving. Full stop.</p>
<p>While this could be true for established business in the past, it&#8217;s something that is not so clear anymore. Gary Hamel makes a good point in his <a href="http://www.youtube.com/watch?v=aodjgkv65MM">&#8220;Reinventing the Technology of Human Accomplishment&#8221; presentation</a>: <em>Change is changing, and it&#8217;s much faster now than it has ever been.</em></p>
<p>The world is changing, and faster than ever, so (every) company has to adapt, not only once but constantly.</p>
<p><strong>Why is it so hard ?</strong></p>
<p>A company has to learn. If this was an easy task, it wouldn&#8217;t be so rare, but creating a learning organisation is one of those things that gets harder the more you try and control it. If you want to form a learning organisation, a few questions you might think of are:</p>
<ul>
<li><em>What does my company need to learn ?</em></li>
<li><em>If I had to setup the body of knowledge necessary to run my organisation, what would it be ?</em></li>
</ul>
<p>While these could have been easy questions to answer 50 years ago, nowadays, in this ever changing (specially IT) world, whatever you write as being essential today might not be useful at all in one year&#8217;s time.</p>
<p><strong>And the big issue is that most companies are not setup to deal with this problem.</strong> Instead of an evolving structure, modern organisations still have a very hierarchical structure based on top down control, with the vision of a CEO (put any other senior role here) that drives the strategy while most of the company just follows.</p>
<p>They have Project Management Offices that dictate how to deal with projects, architecture teams that say what can and cannot be done and common policies that dictate behaviour for everyone. <a href="http://www.youtube.com/watch?v=bRak-FJsLpA">Bjarte Bogsnes</a>  has a good tale about how companie&#8217;s policies try to establish control over the employees:</p>
<blockquote><p>&#8220;A friend of mine works at SAS. Even if he is trusted to fly planes around the world, if he wants to change his shirt more often than what the policy states, he needs a written authorization&#8221;</p></blockquote>
<p>So the common alternative to evolution in this kind of structure are the well known &#8220;Change Programs&#8221;. They try to implement a top-down approach to change, that can be explained in two simple steps:</p>
<ol>
<li><em>Senior people decide how to move forward</em></li>
<li><em>They teach the rest of the company how to do it</em></li>
</ol>
<p>While step 1 is always a success, step 2 is usually more troublesome that people would like to think. And it&#8217;s not hard to understand why, since the whole idea of a change program is quite an unfair proposition to the affected employees, which could be described like this:</p>
<blockquote><p><strong>&#8220;You have to embrace change, but only the change we want&#8221;</strong></p></blockquote>
<p>As expected, people resist. Peter Senge has a quote that explains this situation quite well &#8211; <em>&#8220;People don&#8217;t resist change, they resist being changed&#8221;</em> &#8211; It&#8217;s natural that most employees will doubt and resist something that they haven&#8217;t been asked about. I would, and I&#8217;m quite confident that most people would too.</p>
<p>And as a result, money is spent, time and most importantly people are consumed through the process, and not much is learned in the end.</p>
<p>So is there an alternative to this situation ? Do you agree with this view ? Let me know what you think</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/franktrindade?a=baBMIkKedeY:5LTg-Vh8rDo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/franktrindade?a=baBMIkKedeY:5LTg-Vh8rDo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2012/02/28/why-most-companies-dont-learn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.franktrindade.com/2012/02/28/why-most-companies-dont-learn/</feedburner:origLink></item>
		<item>
		<title>Knowledge Sharing on Steroids</title>
		<link>http://feedproxy.google.com/~r/franktrindade/~3/2hvc_oIwX_s/</link>
		<comments>http://blog.franktrindade.com/2012/02/23/knowledge-sharing-on-steroids/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 21:00:57 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[distributed_teams]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[pairing]]></category>
		<category><![CDATA[thoughtworks]]></category>
		<category><![CDATA[twu]]></category>
		<category><![CDATA[workscaping]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=838</guid>
		<description><![CDATA[One of the challenges I&#8217;ve had to face a few times in my career was how to ramp-up a software development team, specially in what relates to knowledge sharing. Why is it hard? I still remember watching an old presentation from Dan North where he kept hiting on the same point, which was that there is [...]]]></description>
			<content:encoded><![CDATA[<p>One of the challenges I&#8217;ve had to face a few times in my career was how to ramp-up a software development team, specially in what relates to knowledge sharing.</p>
<p><strong>Why is it hard?</strong></p>
<p>I still remember watching an old presentation from <a href="http://dannorth.net/">Dan North</a> where he kept hiting on the same point, which was that there is <em><strong>always</strong></em> a story behind any decision made on a project. And that is the main problem I see when joining a new team: there is always story, and you probably don&#8217;t know it.</p>
<p>Working in a new codebase for me feels much like moving to a house in a new neighborhood. It takes some time until you know where all the shops are, what&#8217;s the best way to get anywhere and where can you buy stuff in the middle of the night. In a software project you don&#8217;t know exactly where things are in the codebase, it takes time to understand the rationale behind the design and you are afraid of making big changes, even when they should be made!</p>
<p>So when ramping up a team with a considerable amount of new developers, there is a risk they won&#8217;t be able to be effective for quite some time, or that in the urge to be effective they will end up changing what doesn&#8217;t need to be changed, being counter productive after all.</p>
<p><strong>So here we go again</strong></p>
<p>This challenge came up again in my last project, where we were starting to work in our second release and wanted to include a team of developers in China in what would turn into our new distributed team.</p>
<p>Gladly enough we were able to spend 2 weeks together as a colocated team in Xi&#8217;an, but still we needed to use this 10 working days to ramp up 5 new developers who had little or no experience in the codebase we had been working on.</p>
<p>This time we decided to try something out of the ordinary with some inspiration coming from my period at <a href="http://blog.franktrindade.com/2011/06/13/thoughtworks-university-xxi/">Thoughtworks University</a>  (what <a href="http://www.learninggeneralist.com/">Sumeet</a> would call <a href="http://www.learninggeneralist.com/search/label/workscaping">workscaping</a>), in what could be described as a mixed of promiscuous pairing and very frequent showcases.</p>
<p><strong>What does that mean ?</strong></p>
<p>The idea was:</p>
<ul>
<li>We rotate pairs every 2 hours</li>
<li>After each 2 hour block the team would stop and every pair would do a 5 min presentation on what they had done</li>
<li>We have a 30 min slot available at the end of the day for having a more in-depth discussion about topics that the new developers had doubts about.</li>
</ul>
<p>Some of the benefits we expected to achieve were:</p>
<ul>
<li>Everyone would work together quite a few times, improving the relationship between team members</li>
<li>The new developers would have an opportunity to touch different parts of the codebase quite soon, hearing the stories from the old ones about what was there and why</li>
<li>By presenting it back to the team, everyone would have a chance to raise questions and understand a little bit more about a specific topic</li>
<li>The constant sharing of information would enable newcomers to get more questions answered and deliver functionality quicker, which always helps with confidence</li>
</ul>
<p>So the day would start with a normal standup, and after 2 hours the team would swarm and go around the room, hearing what had been happening. Pairs would then rotate and start again. Repeat that 4 times and the day is over.</p>
<p><strong>How did it go ?</strong></p>
<p>Overall the result was quite good in my opinion. Most of the results we expected to obtain actually happened, specially the communication within the team, which was great after a few days.</p>
<p>After one week of doing it most people started feeling the need of working more hours without interruption, so we changed our pace to 2 rounds of 4 hours and then eventually rotating pairs once a day, where we ended up stabilizing. Despite being earlier than expected, it felt like a natural point where people had enough knowledge to deliver and wanted to focus on that, which can probably be considered as a success.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/franktrindade?a=2hvc_oIwX_s:YOFv-Rajyvk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/franktrindade?a=2hvc_oIwX_s:YOFv-Rajyvk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2012/02/23/knowledge-sharing-on-steroids/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.franktrindade.com/2012/02/23/knowledge-sharing-on-steroids/</feedburner:origLink></item>
		<item>
		<title>Another Take at Distributed Retrospectives</title>
		<link>http://feedproxy.google.com/~r/franktrindade/~3/8keVLzOpSA8/</link>
		<comments>http://blog.franktrindade.com/2012/02/15/another-take-at-distributed-retrospectives/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 21:00:26 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[distributed_teams]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[retrospectives]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=827</guid>
		<description><![CDATA[Some time ago I&#8217;ve wrote here about a small distributed retrospective that we have done in one of my last projects. While it was effective at the time, I&#8217;ve recently been in a distributed project for longer, and had the opportunity to learn another lesson from Herry. In our project together we had a team [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago I&#8217;ve wrote here about a <a href="http://blog.franktrindade.com/2011/10/04/running-a-small-distributed-retrospective/">small distributed retrospective</a> that we have done in one of my last projects. While it was effective at the time, I&#8217;ve recently been in a distributed project for longer, and had the opportunity to learn another lesson from <a href="https://twitter.com/#!/hwiputra">Herry</a>.</p>
<p>In our project together we had a team divided between Melbourne and Xi&#8217;an and have been running retrospectives every two weeks. To avoid the common problems of distributed retrospectives, our team was using a simple format that worked (and is still working) quite well.</p>
<ul>
<li>We began by having a 5 minutes chat with the whole team present and setting the goals for the meeting</li>
<li>The teams would then go into a 15 minutes offline mode, where they would raise and vote for the topics they wanted to discuss separately</li>
<li>After the initial voting, we would normally pick the 2 most voted topics on each side and discuss them all together.</li>
</ul>
<p>While it seems quite simple, the separation for the voting and initial exchange of ideas makes the the retro feel much more focused and better than other distributed retrospectives I have previously attended, and definitely a format I will keep using for distributed situations.</p>
<p>&nbsp;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/franktrindade?a=8keVLzOpSA8:5A82wLQPtZ4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/franktrindade?a=8keVLzOpSA8:5A82wLQPtZ4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2012/02/15/another-take-at-distributed-retrospectives/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.franktrindade.com/2012/02/15/another-take-at-distributed-retrospectives/</feedburner:origLink></item>
		<item>
		<title>Measuring Cycle Time, the Easy Way</title>
		<link>http://feedproxy.google.com/~r/franktrindade/~3/-okpptOoI4M/</link>
		<comments>http://blog.franktrindade.com/2012/02/09/measuring-cycle-time-the-easy-way/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 21:00:14 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[cycle_time]]></category>
		<category><![CDATA[measurement]]></category>
		<category><![CDATA[wip]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=810</guid>
		<description><![CDATA[If you have heard about Lean and Kanban software development, one thing you might be doing is measuring the cycle time for the cards in our project, meaning the time between when a card is started until it&#8217;s finally done. I&#8217;ve been doing it for a while, and have tried a couple of ways to [...]]]></description>
			<content:encoded><![CDATA[<p>If you have heard about Lean and Kanban software development, one thing you might be doing is measuring the <a href="http://en.wikipedia.org/wiki/Cycle_time_variation">cycle time</a> for the cards in our project, meaning the time between when a card is started until it&#8217;s finally done.</p>
<p>I&#8217;ve been doing it for a while, and have tried a couple of ways to actually get the data so far, going from having a spreadsheet where I would keep all the dates when cards transitioned (very detailed and very complex to maintain) to the usual noting down those dates in the card itself (less complicated but still troublesome, since people would forget to write on the card when they moved it).</p>
<p>Since I&#8217;ve started my last project, <a href="https://twitter.com/#!/hwiputra">Herry</a> introduced me to a new way, which as most good ideas, is so simple and good that I wonder how I had never thought about it.</p>
<p>The way we have been doing now is using stickers to keep the count of the number of days a card has been on the board. Whenever it starts to get played, we apply one _put your favourite colours here_ sticker to it for every day it is in play until it&#8217;s done. We currently just have two states in our board (doing and accepting) so we have two different colours to track the days in each specific stage.</p>
<p><a href="http://blog.franktrindade.com/2012/02/09/measuring-cycle-time-the-easy-way/photo-4/" rel="attachment wp-att-815"><img class="aligncenter size-medium wp-image-815" title="photo (4)" src="http://blog.franktrindade.com/wp-content/uploads/2012/02/photo-4-300x263.jpg" alt="" width="300" height="263" /></a></p>
<p>The reason I find it much simpler is because you don&#8217;t have the problem of getting dates wrong anymore, or have to remember to note things on cards when they move. The only action needed is to apply a sticker to every card being played after the standup.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/franktrindade?a=-okpptOoI4M:KYkKKSJEU4Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/franktrindade?a=-okpptOoI4M:KYkKKSJEU4Q:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2012/02/09/measuring-cycle-time-the-easy-way/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://blog.franktrindade.com/2012/02/09/measuring-cycle-time-the-easy-way/</feedburner:origLink></item>
		<item>
		<title>Feedback at LESS 2011</title>
		<link>http://feedproxy.google.com/~r/franktrindade/~3/wbM14mffSzY/</link>
		<comments>http://blog.franktrindade.com/2012/02/01/feedback-at-less-2011/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 21:30:58 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[less2011]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=765</guid>
		<description><![CDATA[I&#8217;ve been to quite a few conferences in the past few years and one thing that is always a contention point is how to gather feedback from presentations. Solutions that I&#8217;ve seen go from feedback forms and putting votes in a ballot to high tech iPhone apps where you can register your impressions. At LESS [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been to quite a few conferences in the past few years and one thing that is always a contention point is how to gather feedback from presentations. Solutions that I&#8217;ve seen go from feedback forms and putting votes in a ballot to high tech iPhone apps where you can register your impressions.</p>
<p>At <a href="http://less2011.leanssc.org/">LESS 2011</a>, the organizers ditched the standard forms and went with simple post-its for feedback.</p>
<p>Instead of answering multiple questions, all you had to do is to grab a post it (available in all chairs) and stick it on the right place on the door when leaving (picture below). If you had anything more to say, you could write it in the actual post it, which were then delivered as they were written to the presenters.</p>
<p style="text-align: center;"><a href="http://blog.franktrindade.com/2012/02/01/feedback-at-less-2011/img_0032-2/" rel="attachment wp-att-767"><img class="size-medium wp-image-767 aligncenter" style="margin-top: 10px; margin-bottom: 10px; display: block;" title="IMG_0032" src="http://blog.franktrindade.com/wp-content/uploads/2012/01/IMG_00321-225x300.jpg" alt="" width="225" height="300" /></a></p>
<p style="text-align: center;"><a href="http://blog.franktrindade.com/2012/02/01/feedback-at-less-2011/photo-3/" rel="attachment wp-att-801"><img class="size-medium wp-image-801 aligncenter" style="display: block; margin-top: 10px; margin-bottom: 10px;" title="photo (3)" src="http://blog.franktrindade.com/wp-content/uploads/2012/02/photo-3-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>   That&#8217;s it! Simple and effective.</p>
<p>&nbsp;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/franktrindade?a=wbM14mffSzY:pumKUTlwQKo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/franktrindade?a=wbM14mffSzY:pumKUTlwQKo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2012/02/01/feedback-at-less-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.franktrindade.com/2012/02/01/feedback-at-less-2011/</feedburner:origLink></item>
		<item>
		<title>Graphical Recording, the Cheap Way</title>
		<link>http://feedproxy.google.com/~r/franktrindade/~3/rZNSoSdiJrQ/</link>
		<comments>http://blog.franktrindade.com/2012/01/25/graphical-recording-the-cheap-way/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 21:30:46 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Learning]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[graphical_recording]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[less2011]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=747</guid>
		<description><![CDATA[A couple of months ago I did a graphical facilitation training with fellow Thoughtworkers in Sydney. The training itself was excellent and gave us a much better understanding on how to use graphics to facilitate a meeting/workshop. Unfortunately I haven&#8217;t been in many situations that would allow me to use those skills lately, but wanting to [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of months ago I did a graphical facilitation training with fellow Thoughtworkers in Sydney. The training itself was excellent and gave us a much better understanding on how to use graphics to facilitate a meeting/workshop. Unfortunately I haven&#8217;t been in many situations that would allow me to use those skills lately, but wanting to somehow exercise them, I&#8217;ve decided to use graphical recording on my notebook to try to follow the presentations I attended at <a href="http://less2011.leanssc.org/">LESS 2011</a>.</p>
<p>Here are some examples of the results. I&#8217;m sure I could get better at it but the fact that I&#8217;m able to look a t it 2 months later and still remember what was presented says to me I&#8217;m on the right track.</p>
<p><a href="http://blog.franktrindade.com/2012/01/25/graphical-recording-the-cheap-way/img_0629/" rel="attachment wp-att-748"><img class="alignleft size-medium wp-image-748" style="margin-left: 10px; margin-right: 10px;" title="IMG_0629" src="http://blog.franktrindade.com/wp-content/uploads/2012/01/IMG_0629-300x225.jpg" alt="" width="210" height="158" /></a><a href="http://blog.franktrindade.com/2012/01/25/graphical-recording-the-cheap-way/img_0630/" rel="attachment wp-att-749"><img class="alignleft size-medium wp-image-749" title="IMG_0630" src="http://blog.franktrindade.com/wp-content/uploads/2012/01/IMG_0630-300x225.jpg" alt="" width="210" height="158" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Apart from that, the act of recording and try to create an explanation of what is being said makes me pay much more attention on the content. And it also helps me perceive when Im actually not understanding what is being said (or it is actually too hard to understand..), which happened a couple of times during the conference, as you can see from this example.</p>
<p><a href="http://blog.franktrindade.com/2012/01/25/graphical-recording-the-cheap-way/img_0631-2/" rel="attachment wp-att-751"><img class="alignleft size-medium wp-image-751" style="margin-left: 10px; margin-right: 10px;" title="IMG_0631" src="http://blog.franktrindade.com/wp-content/uploads/2012/01/IMG_06311-300x225.jpg" alt="" width="210" height="158" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/franktrindade?a=rZNSoSdiJrQ:_a_blyt49aY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/franktrindade?a=rZNSoSdiJrQ:_a_blyt49aY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2012/01/25/graphical-recording-the-cheap-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.franktrindade.com/2012/01/25/graphical-recording-the-cheap-way/</feedburner:origLink></item>
		<item>
		<title>Beyond Budgeting at LESS 2011</title>
		<link>http://feedproxy.google.com/~r/franktrindade/~3/DEzDEiCBfOA/</link>
		<comments>http://blog.franktrindade.com/2012/01/20/beyond-budgeting-at-less-2011/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 21:00:16 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[beyond_budgeting]]></category>
		<category><![CDATA[leadership]]></category>
		<category><![CDATA[less2011]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=730</guid>
		<description><![CDATA[One of the things that attracted my interest to LESS 2011 was the Beyond Budgeting track. Having read the book a couple of years ago, it is definitely a topic that catches my interest. And it was even better that the first keynote was presented by Bjarte Bogsnes, talking about how beyond budgeting is used at [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things that attracted my interest to <a href="http://less2011.leanssc.org/">LESS 2011</a> was the Beyond Budgeting track. Having read the <a href="http://www.amazon.com/Beyond-Budgeting-Managers-Annual-Performance/dp/1578518660">book</a> a couple of years ago, it is definitely a topic that catches my interest. And it was even better that the first keynote was presented by <a href="http://no.linkedin.com/pub/bjarte-bogsnes/10/579/415">Bjarte Bogsnes</a>, talking about how beyond budgeting is used at <a href="http://en.wikipedia.org/wiki/Statoil">StatOil</a></p>
<p>As any presentation write-up, this is just my understanding about what was presented, so please don&#8217;t hold the presenter on to what I&#8217;m writing here :)</p>
<h2>Why ?</h2>
<p>The first question Bjarte addressed was why the need for something different. And I believe this sentence explains it all</p>
<blockquote><p>January-December is artificial for business and just works for accounting. But this is not accounting</p></blockquote>
<p>He followed by explaining that StatOil is always trying to get the best performance they can (who isn&#8217;t!), and coupling everything they do to an accounting mechanism (the budget) doesn&#8217;t make sense for them. He illustrated it with a comparison between the use of traffic lights and roundabouts. While the first is easier to use and provides more control, the latter actually provides better results because it relies more in the current situation than on statistical analysis.</p>
<blockquote><p>We need to find more self regulating ways to manage a business, and beyond budgeting is one of them.</p></blockquote>
<p>Bjarte used Douglas McGregor&#8217;s <a href="http://en.wikipedia.org/wiki/Theory_X_and_theory_Y">Theories X and Y</a> to explain how we traditional management doesn&#8217;t usually trust people and relies on a stable environment to succeed, but in a dynamic environment in which most companies are inserted today, we need to start trusting our employees much more, and that is where beyond budgeting stands.</p>
<p>He had a nice example to show the lack of trust some companies impose, about a friend who is a SAS pilot, and even when he is trusted to fly planes full of people around, if he wants to change his shirt more often than it&#8217;s stated in the company&#8217;s policy, he needs a written authorization for it.</p>
<h2>How does it work ?</h2>
<p>According to Bjartes, the problem with budget is that it&#8217;s a single tool used for three separate purposes: <strong>Setting targets, creating forecats and allocating resources</strong>. Since these results are usually different from each other (targets are what we want, forecasts are what we expect to get), we won&#8217;t get an optimal result from using it.</p>
<p>In StatOil they have developed an alternative format of planning called Ambition to Action. These are a few principles that are used when cdefining it:</p>
<blockquote>
<ul>
<li>Good performance is being better than those we compare ourselves with</li>
<ul>
<li>It could be external companies or even ourselves, which means we are learning.</li>
</ul>
<li>Do the right thing</li>
<ul>
<li>Every new joiner receives a StatOil book (a thin one!) with some of the principles that guide the company, so they can all use their business judgement and make decisions when needed.</li>
</ul>
<li>Resources are made available and allocated on a case by case basis</li>
<ul>
<li>Bjartes compared having an yearly budget to having a bank that opens for only a month throughout the year. How can anyone make timely decisions with that ?</li>
</ul>
<li>Business is forward looking and action oriented</li>
<li>Performance measurement is holistic, and composed by 50% results and 50% behaviour</li>
</ul>
</blockquote>
<p>These principles are used to define what to do in the company, in a process that goes like this:</p>
<blockquote><p>1. Strategic Objectives -&gt; 2. KPI&#8217;s -&gt; 3. Action &amp; Forecast -&gt; 4.Individual goals</p></blockquote>
<p>So the company is going to set strategic objectives which are then converted in KPI&#8217;s. These are used to define the things that need to be done (Ambition to action), which reflect on how performance is measured for everyone in the company.</p>
<p>Some interesting thoughts he shared when explaining the process were:</p>
<blockquote>
<ul>
<li>The perfect KPI doesn&#8217;t exist, since not everything that counts can be counted.</li>
<li>StatOil creates around 1100 Ambition to action plans, and these are not a reporting tool, but more a guidance on how you as an employee should manage him/herself. Apart from that, everything is open, so everyone can see everyone&#8217;s else goals.</li>
<li>Performance measurement is usually based on teams and, as said before, divided between results and behaviour. Assuming that the environment very often changes, how someone behaved in that occasion is as important as the results he/she delivered.</li>
</ul>
</blockquote>
<p>The last point that was made during the presentation is how StatOil is moving from a calendar-driven model to a business-driven one. There are no more annual versions of Ambition to Action being created, and they can be changed at any time. The performance review is still happening annually, but Bjartes mentioned they are currently revisiting it now.</p>
<p>Overall it was a great introduction to Beyond Budgeting and how it is applied at StatOil. If you are interested, there is more information <a href="http://www.bbrt.org/beyond-budgeting/beybud.html">here</a> and <a href="http://www.youtube.com/watch?v=bRak-FJsLpA">here</a>.</p>
<blockquote><p>Bjartes is speaking in the <a href="http://live.thoughtworks.com/australia">Thoughtworks Live Australia</a> event. If you have a chance to go, don&#8217;t miss it.</p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/franktrindade?a=DEzDEiCBfOA:UZBo5fnSfZE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/franktrindade?a=DEzDEiCBfOA:UZBo5fnSfZE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2012/01/20/beyond-budgeting-at-less-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.franktrindade.com/2012/01/20/beyond-budgeting-at-less-2011/</feedburner:origLink></item>
		<item>
		<title>Running a Small Distributed Retrospective</title>
		<link>http://feedproxy.google.com/~r/franktrindade/~3/6dWHmCsXZVQ/</link>
		<comments>http://blog.franktrindade.com/2011/10/04/running-a-small-distributed-retrospective/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 11:21:22 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[retrospectives]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=717</guid>
		<description><![CDATA[As many projects out there, my current one has participants in a few different cities and countries. We usually have most of the people co-located, but a few weeks ago we needed to run a retrospective with people in Sydney and in Melbourne, so I thought it would be worth sharing the experience. Our team [...]]]></description>
			<content:encoded><![CDATA[<p>As many projects out there, my current one has participants in a few different cities and countries. We usually have most of the people co-located, but a few weeks ago we needed to run a retrospective with people in Sydney and in Melbourne, so I thought it would be worth sharing the experience.</p>
<p>Our team is quite small (around 9 people) and Im sure a lot of what we have done would be impossible to do in a larger team (I guess the next question would be why do you have a larger team.. :P), however just wanted to share the tools used and how it was all done.</p>
<p>Since we use skype for video communication, sharing a whiteboard would be impossible. The simplest solution found was <a href="http://www.typewith.me">TypeWith.me</a>, an online collaboration tool that we projected on the wall.</p>
<p>We started by having everyone spending some time writing their ideas/observations on post its, but then instead of attaching them to the wall, we went around the table and everyone dictated their concerns, that were scribed in on <a href="http://www.typewith.me">TypeWith.me</a>. After sharing ideas we went around again and everyone voted on ideas, which were noted on the online document again. Some reshuffling was done on them based on votes, and the we continued with the standard retro time-boxed discussions.</p>
<p>In general, I believe the retro had a good outcome. We didn&#8217;t lose too much time with the communication overhead and having the topics projected on the wall made it clear enough to both sides what was being discussed. Not trying to claim this was revolutionary in any sense, but if you are interested in running a small distributed retro, this might solve your problem.</p>
<p>&nbsp;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/franktrindade?a=6dWHmCsXZVQ:K99l2MRMCQ0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/franktrindade?a=6dWHmCsXZVQ:K99l2MRMCQ0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/franktrindade?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2011/10/04/running-a-small-distributed-retrospective/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.franktrindade.com/2011/10/04/running-a-small-distributed-retrospective/</feedburner:origLink></item>
	</channel>
</rss>

