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

<channel>
	<title>The Turning Point &#187; software</title>
	<atom:link href="http://blog.franktrindade.com/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.franktrindade.com</link>
	<description>Agile, software and some nonsense</description>
	<lastBuildDate>Tue, 31 Jan 2012 21:30:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Kaizen Lego Game @ Agile 2011</title>
		<link>http://blog.franktrindade.com/2011/10/02/kaizen-lego-game-agile-2011/</link>
		<comments>http://blog.franktrindade.com/2011/10/02/kaizen-lego-game-agile-2011/#comments</comments>
		<pubDate>Sun, 02 Oct 2011 02:02:30 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[agile2011]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[lego]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[thoughtworks]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=696</guid>
		<description><![CDATA[Everytime me and Danilo presented the Lean Lego Game, the common phrase we heard from the participants was  We want to make this process better! so for some time we had thought it creating a similar game focused only in continuous improvement, which would allow attendees to learn about improvement principles and practices while having [...]]]></description>
			<content:encoded><![CDATA[<p>Everytime me and <a href="http://www.dtsato.com">Danilo</a> presented the<a href="http://www.dtsato.com/blog/work/lean-lego-game/"> Lean Lego Game</a>, the common phrase we heard from the participants was</p>
<blockquote><p> We want to make this process better!</p></blockquote>
<p>so for some time we had thought it creating a similar game focused only in continuous improvement, which would allow attendees to learn about improvement principles and practices while having some fun with Lego bricks : )</p>
<p>&nbsp;</p>
<p>This idea has turned into reality in the format of the Kaizen Lego Game, which was presented for the first time at <a href="http://agile2011.agilealliance.org/">Agile 2011</a> in SaltLake City, earlier this year. Unfortunately Danilo couldn&#8217;t make it, but I was lucky enough to have <a href="http://www.thekua.com/atwork/">Pat Kua</a> as the substitute, helping me a lot with all the work involved in it.</p>
<p>&nbsp;</p>
<p>Keeping the same format as the original one, the idea behind this workshop was to create an immersive environment where we could introduce continuous improvement principles and practices while improving a small Lego production line. Amongst the topics we focused during the workshop were:</p>
<ul>
<li> Kaizen</li>
<li>Value Stream Mapping</li>
<li>Inventory</li>
<li>Waste</li>
<li>Standards &amp; Improvement</li>
<li>Cycle Time</li>
<li>5 Whys</li>
<li>Cumulative Flow Diagram (CFD)</li>
</ul>
<p>I was quite pleased with the result for the first time we presented it. The attendance was very good and we had great positive feedback (and also suggestions for improvements, which were great!).</p>
<div id="__ss_8831249" style="width: 425px;">
<p><strong style="display: block; margin: 12px 0 4px;"><a title="Kaizen Lego Game" href="http://www.slideshare.net/frankmt/kaizen-legogame" target="_blank">Kaizen Lego Game</a></strong> <object id="__sse8831249" width="425" height="355" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=kaizenlegogame-110811170836-phpapp02&amp;stripped_title=kaizen-legogame&amp;userName=frankmt" /><param name="allowscriptaccess" value="always" /><param name="allowfullscreen" value="true" /><embed id="__sse8831249" width="425" height="355" type="application/x-shockwave-flash" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=kaizenlegogame-110811170836-phpapp02&amp;stripped_title=kaizen-legogame&amp;userName=frankmt" allowFullScreen="true" allowScriptAccess="always" allowscriptaccess="always" allowfullscreen="true" /> </object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/frankmt" target="_blank">frankmt</a></div>
</div>
<h3>Want to run it yourself ?</h3>
<p>As with the Lean Lego Game, all the material to run the workshop is available through a <a href="http://creativecommons.org/licenses/by-nc/3.0/">Creative Commons Attribution-Non-Commercial</a> license. If you are interested, feel free to run and adapt it, as long as we get given the appropriate credit and that you don&#8217;t use it for commercial purposes. We also would appreciate receiving some feedback on how it worked out for you.</p>
<p>We have created a package containing all you need to try it out in your environment, including:</p>
<ul>
<li> Facilitator&#8217;s Guide: instructions on how to run the workshop</li>
<li>Print material: instructions for participants and worksheets using during the activity</li>
<li>Slides</li>
</ul>
<p>Just get in touch <a href="http://blog.franktrindade.com/contact/">via email</a> to request it!</p>
<p><a href="http://blog.franktrindade.com/kaizen-lego-game/88x31/" rel="attachment wp-att-678"><img class="alignleft size-full wp-image-678" style="display: block;" title="88x31" src="http://blog.franktrindade.com/wp-content/uploads/2011/08/88x31.png" alt="" width="88" height="31" /></a></p>
<p><a href="http://blog.franktrindade.com/kaizen-lego-game/">Kaizen Lego Game</a> by <a href="http://blog.franktrindade.com/">Francisco Trindade</a> &amp; <a href="http://www.dtsato.com">Danilo Sato</a> is licensed under a <a href="http://creativecommons.org/licenses/by-nc/3.0/" rel="license">Creative Commons Attribution-Non-Commercial 3.0 Unported License</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2011/10/02/kaizen-lego-game-agile-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Page Model with Cucumber and Capybara</title>
		<link>http://blog.franktrindade.com/2011/03/04/page-model-with-cucumber-and-capybara/</link>
		<comments>http://blog.franktrindade.com/2011/03/04/page-model-with-cucumber-and-capybara/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 20:59:31 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[capybara]]></category>
		<category><![CDATA[cucumber]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=516</guid>
		<description><![CDATA[I&#8217;ve spent some time today changing the Cucumber/Capybara tests in one of my pet projects to use a page model. Since I didn&#8217;t find much stuff on the interwebs about it, why not write it here ? The idea behind having a page model is to keep steps related to a specific page on your [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent some time today changing the Cucumber/Capybara tests in one of my pet projects to use a page model. Since I didn&#8217;t find much stuff on the interwebs about it, why not write it here ?</p>
<p>The idea behind having a page model is to keep steps related to a specific page on your app in the same place, so you can reduce the repetition of steps in different tests. Is definitely not a complicated practice, and setting Capybara for it is a simple step.</p>
<p>Setting the context, Im using Cucumber 0.10 with Capybara 0.4.1.2 and Rails 3.0.1. Have done the standard installation steps recommended by the <a href="https://github.com/aslakhellesoy/cucumber-rails">cucumber-rails github page</a>.</p>
<p>The only modification I&#8217;ve made with the created structure is adding a folder for the page objects, so the final structure is this:</p>
<p><a rel="attachment wp-att-519" href="http://blog.franktrindade.com/2011/03/04/page-model-with-cucumber-and-capybara/screen-shot-2011-03-05-at-2-00-31-am/"><img class="alignnone size-full wp-image-519" title="Screen shot 2011-03-05 at 2.00.31 AM" src="http://blog.franktrindade.com/wp-content/uploads/2011/03/Screen-shot-2011-03-05-at-2.00.31-AM.png" alt="" width="219" height="162" /></a></p>
<p>As you can see, inside the pages folder there is a home page file, which is responsible for every action/assertion related to the home page.</p>
<p>Nothing new with the cucumber features, which keep having it&#8217;s standard style</p>
<p><code>Feature: Manage tasks<br />
In order to manage my tasks,<br />
a user<br />
wants to create tasks in different categories</p>
<p>Scenario: Create a new task<br />
Given I am in the Do Me home page<br />
When I create an urgent and important task with description "my task"<br />
Then I should see "my task" in the "Urgent and Important" section<br />
</code></p>
<p>However, in order to create our page object, we need to inject the test driver on it, which in Capybara&#8217;s case, is the session object.</p>
<p><code>Given /^I am in the home page$/ do<br />
@home_page = HomePage.new(Capybara.current_session)<br />
@home_page.visit<br />
end</p>
<p>When /^I create an urgent and important task with description "([^"]*)"$/ do |task_description|<br />
@home_page.fill_task_description(task_description)<br />
@home_page.check_important<br />
@home_page.check_urgent<br />
@home_page.create_task<br />
end</code></p>
<p>And from there is just the trouble of creating the page class (or do like me, who shamelessly copied the style from <a href="http://watirmelon.com/2011/01/21/my-simple-cucumber-watir-page-object-pattern-framework/">here</a>).</p>
<p><code><br />
class HomePage<br />
</code</p>
<p><code><br />
URL = "/"</p>
<p>def initialize(session)<br />
@session = session<br />
end</p>
<p>def visit<br />
@session.visit URL<br />
end</p>
<p>def fill_task_description(description)<br />
@session.fill_in("Description", :with =&gt; description)<br />
end</p>
<p>def check_urgent<br />
check("Urgent")<br />
end</p>
<p>def check_important<br />
check("Important")<br />
end</p>
<p>def create_task<br />
@session.click_button("Create Task")<br />
end<br />
</code></p>
<p>And that&#8217;s pretty much it, now is just choosing your preferred driver and run the tests. As you can see, not much effort for a nice improvement.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2011/03/04/page-model-with-cucumber-and-capybara/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Can I just throw it over the wall ?</title>
		<link>http://blog.franktrindade.com/2011/02/15/can-i-just-throw-it-over-the-wall/</link>
		<comments>http://blog.franktrindade.com/2011/02/15/can-i-just-throw-it-over-the-wall/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 12:19:29 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[handover]]></category>
		<category><![CDATA[qa]]></category>
		<category><![CDATA[quality]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=445</guid>
		<description><![CDATA[One of the good things I&#8217;ve took from one of the recent projects I&#8217;ve been in was the way the handover of stories from Dev to QA was done. I mean, the handover topic is something that Im usually asked about, and I&#8217;ve never had a decent answer for it, since in my experience it [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">One of the good things I&#8217;ve took from one of the recent projects I&#8217;ve been in was the way the handover of stories from Dev to QA was done.</p>
<p style="text-align: justify;">I mean, the handover topic is something that Im usually asked about, and I&#8217;ve never had a decent answer for it, since in my experience it has always been something like this&#8230;</p>
<p><strong><em>Is this story ready to Qa ? Well, I think so,  it must be !</em></strong></p>
<p><img class="size-medium wp-image-450 alignright" style="margin-left: 10px; margin-right: 10px; border: 5px solid black;" title="Developer Checklist" src="http://blog.franktrindade.com/wp-content/uploads/2011/02/Screen-shot-2011-02-15-at-10.32.18-AM-258x300.png" alt="" width="258" height="300" /></p>
<p style="text-align: justify;">However, in the project mentioned above, at some point we had lot of bugs. Not really serious ones that would make us worry about the quality of the code we were writing, but a great number of small and annoying things that showed us we weren&#8217;t being really careful when developing a story.</p>
<p style="text-align: justify;">Most of the stories that we &#8220;delivered&#8221; (yeah, right&#8230;) came back with a considerable number of small fixes to be done. Needless to say, we were losing a lot of time reworking things that should have been caught before finishing it, and not getting much code across the line because of it.</p>
<p style="text-align: justify;">So we had some discussions about the problem and what we came up with was an amazing&#8230; <strong><em>checklist</em></strong>.</p>
<blockquote>
<p style="text-align: justify;">If we, as developers, were being sloppy when finishing the stories, why didn&#8217;t we have a list of what we had to do before considering it ready ?</p>
</blockquote>
<p>As you can see above, there is nothing incredible about it,  just the fact that it made us remember what to do, something that is a lot of times easier said than done. Looking at this simple list I can make sure I always test the story against all the browsers we support, as well as verifying that the acceptance criteria were really met.</p>
<p>Talking about acceptance criteria, another goodness that came with it and facilitated the whole process was having mind maps describing what QA&#8217;s were going to be testing in every story.</p>
<p>Having this information available and easy to understand was miles ahead from the traditional <em>&#8220;I&#8217;m going to find bugs in your story&#8221;</em> mentality that dominates some teams. As usual, cross-role collaboration was a huge win for productivity.</p>
<p><a rel="attachment wp-att-490" href="http://blog.franktrindade.com/2011/02/15/can-i-just-throw-it-over-the-wall/screen-shot-2011-02-15-at-11-16-41-pm/"><img class="alignnone size-full wp-image-490" style="border: 5px solid black;" title="mindmap" src="http://blog.franktrindade.com/wp-content/uploads/2011/02/Screen-shot-2011-02-15-at-11.16.41-PM.png" alt="mindmap" width="736" height="390" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Knowing what was going to be tested enabled developers to take a look at the story with different eyes, verifying if all cases were accounted for before actually handing it over. As expected, we delivered more.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2011/02/15/can-i-just-throw-it-over-the-wall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Which side to pick ?</title>
		<link>http://blog.franktrindade.com/2010/12/13/which-side-to-pick/</link>
		<comments>http://blog.franktrindade.com/2010/12/13/which-side-to-pick/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 12:11:27 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[toyota]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=427</guid>
		<description><![CDATA[What would you suggest should be done with a software development team where there is a significant difference in skill levels, let&#8217;s say up to 10x difference ? Jason Yip shared this question he proposed to Takeshi Kawabe, who answered as follows: Set the best performers as the standard. Pair people with the masters in [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>What would you suggest should be done with a software development team where there is a significant difference in skill levels, let&#8217;s say up to 10x difference ?</em></p></blockquote>
<p><a href="http://jchyip.blogspot.com/2010/12/my-presentation-from-yow-2010-in.html">Jason Yip</a> shared this question he proposed to <a href="http://jchyip.blogspot.com/2008/12/japan-lean-study-mission-day-4-toyota.html">Takeshi Kawabe</a>, who answered as follows:</p>
<blockquote><p><em><strong>Set the best performers as the standard. Pair people with the masters in a master-apprentice model. Find other suitable jobs for those without aptitude</strong>. Like professional baseball players, you need to practice every day to be a professional. <strong>Software development is a team activity an team are only strong as their weakest link.</strong></em></p></blockquote>
<p>Couldn&#8217;t agree more with it, but unfortunately is not the reality in most of the companies, that seem to be trying the opposite, setting an anti-productivity policy, which could be summarized as:</p>
<p><em>Set the worst performers as standard and create rules around everyone to avoid them making big mistakes. After that, just wait for the ones with aptitude to leave for a better place.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2010/12/13/which-side-to-pick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Planning</title>
		<link>http://blog.franktrindade.com/2010/05/04/simple-planning/</link>
		<comments>http://blog.franktrindade.com/2010/05/04/simple-planning/#comments</comments>
		<pubDate>Tue, 04 May 2010 09:00:52 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=374</guid>
		<description><![CDATA[What is necessary when you need to plan the next sprint/iteration ? The picture above is the result of a chat with Lasse in my current project, and it was enough to set the expectations for the two weeks of work we had to plan. Each post it is a story and time goes from [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://blog.franktrindade.com/wp-content/uploads/2010/04/Picture-1.png"><img class="size-full wp-image-375  aligncenter" title="Picture 1" src="http://blog.franktrindade.com/wp-content/uploads/2010/04/Picture-1.png" alt="" width="351" height="271" /></a></p>
<p style="text-align: left;">What is necessary when you need to plan the next sprint/iteration ?</p>
<p style="text-align: left;">The picture above is the result of a chat with <a href="http://lassewesth.blogspot.com/" target="_blank">Lasse</a> in my current project, and it was enough to set the expectations for the two weeks of work we had to plan.</p>
<p style="text-align: left;">Each post it is a story and time goes from left to right. Stories that are in the same vertical line can be played at the same time, and that big pile on the right means that those stories are dependent on each other, but can still be played simultaneously if developers are careful and communicate enough with each other.</p>
<p style="text-align: left;">This wasn&#8217;t anything planned, but it was simple enough for what we needed, and since we were working in a distributed team, taking a picture and sending it around was they way we had to share it with everyone. Worked just fine : )</p>
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2010/05/04/simple-planning/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>What&#8217;s the Tech Lead Doing Anyway ?</title>
		<link>http://blog.franktrindade.com/2009/08/11/whats-the-tech-lead-doing-anyway/</link>
		<comments>http://blog.franktrindade.com/2009/08/11/whats-the-tech-lead-doing-anyway/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 08:30:38 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[leadership]]></category>
		<category><![CDATA[tech lead]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=328</guid>
		<description><![CDATA[Some days ago when having a discussion at work about the responsibility of the tech lead in an agile team, I&#8217;ve realized that this is not a so simple subject as I thought it was. Therefore, good subject for a post : ) But before being dictatorial and just writing my opinion, I ran a [...]]]></description>
			<content:encoded><![CDATA[<p>Some days ago when having a discussion at work about the responsibility of the tech lead in an agile team, I&#8217;ve realized that this is not a so simple subject as I thought it was. Therefore, good subject for a post : )</p>
<p>But before being dictatorial and just writing my opinion, I ran a small twitter poll asking about this subject. Fortunately, most of the answers matched what I think in some level, so hopefully I will be able to cover it all here.</p>
<p>Before starting, a last note. I was reminded that the term tech lead might not be so used and known as I think it is, so if you don&#8217;t use this term at all, sorry : ). You can replace tech lead for architect, technical manager, master jedi, whatever you feel like&#8230;</p>
<p>Giving an introduction, the tech lead (TL)  term is defined here as a person who has the technical overview over a specific project. Some people disagree about the need for a tech lead at all, but that&#8217;s the topic for another post, and here we will assume that the tech lead exists and is a single person. Ok, that was the easy part.</p>
<p>Now the more subtle (and polemic) part comes here, so I will give my opinion on it (with the help from <a href="http://twitter.com/dtsato">@dtsato</a> and <a href="http://twitter.com/flessa">@flessa</a>).</p>
<p><em><strong>What a tech lead should be doing:</strong></em></p>
<p><strong>Have a technical overview over the whole project</strong> &#8211; As a developer doing everyday work, it is easy to lose the long term perspective about where the project is going and make decisions that will be better in the short term, but harm the project in the long way. It&#8217;s the job of the TL to keep that in the mind of the development team.</p>
<p><strong>Make sure the project has a common face</strong> &#8211; <a href="http://blog.franktrindade.com/2008/10/17/we-need-standards/">Standards are important IMO</a>, and making sure the project still makes sense as a whole, avoiding knowledge silos it&#8217;s the job of the TL. He shouldn&#8217;t have to enforce standards or ways to develop code, but facilitate the discussion within the team.</p>
<p><strong>Remove technical impediments</strong> &#8211; As the most experienced person in the project, its natural that sometimes the TL will be the person in the best position to remove technical blockages that the team might have.</p>
<p><strong>Bring people to a good technical level</strong> &#8211; If the team has different levels of experience, the TL should work to help people achieve a good work quality by sharing his knowledge and incentive others to do the same.</p>
<p><strong>Write code. Write a lot of code</strong> &#8211; The TL is not a superior being that gives directions from the top of a mountain. Don&#8217;t know about your opinion, but if I can&#8217;t rely on the TL to sit down and pair with me when I have a problem I can&#8217;t solve, it&#8217;s no good to me.</p>
<p>I think that is enough for now. Now, for <strong><em>what the tech lead should not be doing:</em></strong></p>
<p><strong>Be the person responsible for the code &#8211; </strong>Being the tech lead doesn&#8217;t mean being the owner of the code, or the team&#8217;s boss. It&#8217;s everyone&#8217;s job to create high quality software, and the TL should only expose problems to the team and lead them in the right direction (emphasis on <em>lead</em>, not <em>mandate</em>).</p>
<p><strong>Making all the difficult decisions alone </strong>- During a project, the team will be exposed to different technical decisions that will have to be made. Allowing the TL to take them alone just expose the team to more risk, since they won&#8217;t understand/care about what was decided. What we want to achieve is that Paulo exemplified <a href="http://agiletips.blogspot.com/2009/08/agile-pm-and-architect-dialog.html">here</a>.</p>
<p><strong>Impose his opinion</strong> &#8211; This is probably the most important point. Remember <a href="http://www.extremeprogramming.org/rules/collective.html">collective code ownership</a> ? It is still very important. No matter how brilliant a TL can be, if he can&#8217;t share his knowledge/decisions and specially the responsability with the rest of the team, things will go bad.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2009/08/11/whats-the-tech-lead-doing-anyway/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>What is Your Goal?</title>
		<link>http://blog.franktrindade.com/2009/04/21/what-is-your-goal/</link>
		<comments>http://blog.franktrindade.com/2009/04/21/what-is-your-goal/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 12:30:39 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[deming]]></category>
		<category><![CDATA[drucker]]></category>
		<category><![CDATA[goldratt]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[measures]]></category>
		<category><![CDATA[poppendieck]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=250</guid>
		<description><![CDATA[One of the best things about Agile is the introduction of software development as a system. Software stopped being treated as a sequence of separated steps to be seen as people with different competences working together to achieve one goal: deliver software. This is not new in any sense, and it was exemplified by Deming [...]]]></description>
			<content:encoded><![CDATA[<p>One of the best things about Agile is the introduction of software development as a system. Software stopped being treated as a sequence of separated steps to be seen as people with different competences working together to achieve one goal: deliver software.</p>
<p>This is not new in any sense, and it was exemplified by Deming on one of his <a href="http://www.amazon.co.uk/New-Economics-Industry-Government-Education/dp/0262541165/ref=pd_sim_b_3" target="_blank">books</a>:</p>
<blockquote><p>I could do a much better job (fewer mistakes) if I knew what the program is to be used for. The specifications don&#8217;t tell me what I need to know.</p></blockquote>
<p>Despite this advance, most software development teams fail in really understanding this concept, and still normally don&#8217;t see the power of using one unique measure to manage the project, not getting the idea that the effort of the system should be only measured once, in what is its goal.</p>
<p>You must be asking what is the problem of having different measures to verify the sanity of the project. And that is what Peter Drucker explains in his <a href="http://www.amazon.com/Post-Capitalist-Society-Peter-F-Drucker/dp/0887306616">Post-Capitalist Society</a> book:</p>
<blockquote><p>In knowledge work&#8230; the task is not given, it has to be determined. &#8216;What are the expected results from this work?&#8217; is the key question in making knowledge workers productive. And it is a question that demands risky decisions. <strong>There is usually no right answer; there are choices instead</strong>. And results have to be clearly specified, if productivity is to be achieved.</p></blockquote>
<p>What it means is that tasks cannot be fully specified anymore, the workers have to make decisions every time about how to proceed in certain situations, and they <em><strong>can just do it correctly if they have a clear vision of what is to be obtained, and what is the final goal of the work they are doing</strong></em>.</p>
<p>This concept is also illustrated in the draft version of Mary and Tom Poppendieck&#8217;s latest book (still in the draft version), when they are explaining the case of Southwest Airlines, which has as main advantage against the competition, the fact that its planes stay less time in the ground, thus generating more revenue.</p>
<blockquote><p>Southwest maintains a systems perspective; it doesn&#8217;t let individual department measurements or increased revenue opportunities distract it from the primary objective of maintaining profitability. Southwest makes it clear to every employee &#8211; from the agent closing the gate to the baggage handler transferring luggage &#8211; what is important from an overall perspective. <strong>Everyone at Southwest knows the mantra: &#8220;Airplanes don&#8217;t make money sitting on the ground.&#8221;</strong> So everyone works together to get each plane in the air as fast as possible.</p></blockquote>
<p>The important here is that we have <strong>one</strong> measure. One variable that everyone can rely on to make decisions during their work, and the ability to do it makes a whole difference in the overall performance of a team,  fact that often not considered in software development, where different measures distract people from the main goal.</p>
<p>As an example, a common situation I&#8217;ve seen in project is to track bugs within the iteration, and use it as a measure of code quality. <em>Well, the goal of a software team is to deliver software without bugs, but it doesn&#8217;t matter at all if in the process of creating software bugs are found and solved prior to the software being released</em>. If that is the way the team works best, so be it.</p>
<p>Another example is a case where a project had a problem with bugs creeping (this time, after iteration was finished and software delivered), and when discussing the fact we&#8217;ve realized that because of the pressure to deliver, we were delivering development complete, and not QA complete stories, so QA was actually done after the iteration finished, and yes, the team&#8217;s velocity was based on development complete points.</p>
<p>Well&#8230; if the goal you set to the team is to deliver dev complete stories, guess what you&#8217;re receiving in the end&#8230; dev complete stories!, it doesn&#8217;t matter how many times you repeat &#8220;<em>Let&#8217;s focus on delivering quality software</em>&#8220;. As Goldratt said, &#8220;<em><em>Tell me</em> how you <em>measure me</em> and I will <em>tell</em> you how I will behave</em>.&#8221;</p>
<p>So, <strong>what is your goal?</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2009/04/21/what-is-your-goal/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Porto Alegre Agile Weekend 2009</title>
		<link>http://blog.franktrindade.com/2009/04/06/porto-alegre-agile-weekend-2009/</link>
		<comments>http://blog.franktrindade.com/2009/04/06/porto-alegre-agile-weekend-2009/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 12:00:47 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Estimation]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[agile weekend]]></category>
		<category><![CDATA[brazil]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[porto alegre]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=256</guid>
		<description><![CDATA[For the Brazilian crowd (or anyone who wants to be part of it), between the 25th and 26th of April will take place in Porto Alegre (my home town : ) ), the 2009 Agile Weekend, which has my friend Daniel Wildt as part of the organizing team. This will be hopefully the first of [...]]]></description>
			<content:encoded><![CDATA[<p>For the Brazilian crowd (or anyone who wants to be part of it), between the 25th and 26th of April will take place in Porto Alegre (my home town : ) ), the 2009 Agile Weekend, which has my friend <a href="http://danielwildt.blogspot.com/" target="_blank">Daniel Wildt</a> as part of the organizing team.</p>
<p>This will be hopefully the first of many Agile conferences happening in South Brazil, and will serve to boost even more Agile adoption in the region.</p>
<p style="text-align: center;"><img class="size-full wp-image-257 aligncenter" title="portoalegreagileweekend2009_banner_468x60" src="http://blog.franktrindade.com/wp-content/uploads/2009/04/portoalegreagileweekend2009_banner_468x60.gif" alt="portoalegreagileweekend2009_banner_468x60" width="374" height="48" /></p>
<p>Needless to say, I really wanted to go, but London is not close enough to Brazil yet&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2009/04/06/porto-alegre-agile-weekend-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Distributed Source Control and Set-Based Design</title>
		<link>http://blog.franktrindade.com/2009/03/10/distributed-source-control-and-set-based-design/</link>
		<comments>http://blog.franktrindade.com/2009/03/10/distributed-source-control-and-set-based-design/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 08:30:22 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[set-based design]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=226</guid>
		<description><![CDATA[That distributed version control systems are the current flavour of the moment, everybody already knows, so I&#8217;m not here to talk about the N reasons why you should not use svn/cvs anymore. But what I hadn&#8217;t notice until recently is that git (or any other DVCS) actually allow you to do one very important thing [...]]]></description>
			<content:encoded><![CDATA[<p>That distributed version control systems are the current flavour of the moment, everybody already knows, so I&#8217;m not here to talk about the N reasons why you should not use svn/cvs anymore.</p>
<p>But what I hadn&#8217;t notice until recently is that git (or any other DVCS) actually allow you to do one very important thing in software development: set-based design</p>
<p>As Mary Poppendieck <a href="http://www.poppendieck.com/development.htm">pointed out</a>:</p>
<blockquote><p>Toyota and 3M use the same concept for product design.  They explore the entire solution space and find intersections that everyone finds acceptable, gradually adding detail and converging on a solution.  This approach is called <strong>set-based design</strong>, and contrasts sharply with point-based designs which start with a single solution that undergoes a series of optimizations.  In most cases, set-based design produces the best design in the shortest amount of time with the least amount of communication.  It’s strange that this principle, so obvious when you are scheduling meetings, seems counterintuitive in the development environment</p></blockquote>
<p>The eureka moment came to me in my latest project (in which i&#8217;m using svn), when I was thinking about exploring an alternative path to some code that was already implemented, but I thought it could be redone in a better way. How to do it with svn?</p>
<p>I could enter the obscure world of svn branches and merges, where I would have to fight hard to get my code back in one piece, but that didn&#8217;t sound inviting at all, and that&#8217;s why I haven&#8217;t actually implemented the second option, waiting to be more certain about it.</p>
<p>The interesting thing is that since I&#8217;ve been using git for the last year, I always took it for granted, and didn&#8217;t actually realize this benefit from DVC systems.</p>
<p>So, if you are thinking about why change from cvs/svn to a distributed system, add this point to your list.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2009/03/10/distributed-source-control-and-set-based-design/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Does it Really Work?</title>
		<link>http://blog.franktrindade.com/2009/03/05/does-it-really-work/</link>
		<comments>http://blog.franktrindade.com/2009/03/05/does-it-really-work/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 08:30:54 +0000</pubDate>
		<dc:creator>franktrindade</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://blog.franktrindade.com/?p=206</guid>
		<description><![CDATA[Last week during TW London Last Thursday event, I had the pleasure to see this presentation from Dave Robertson and John Johnston (or at least part of it), about how Agile and User Centered design are more a match, sharing goals and values, than different approaches to software development. If you have some time you [...]]]></description>
			<content:encoded><![CDATA[<p>Last week during TW London Last Thursday event, I had the pleasure to see <a href="http://www.infoq.com/presentations/Agile-UCD-Robertson-Johnston;jsessionid=B558A1920338BD28C73E3D2E5FD6B062" target="_self">this</a> presentation from Dave Robertson and John Johnston (or at least part of it), about how Agile and User Centered design are more a match, sharing goals and values, than different approaches to software development.</p>
<p>If you have some time you should really watch it, it is worth the time.</p>
<p>The overall presentation is really good, but the reason I&#8217;m posting here is one specific point that was mentioned, which I believe really hit the spot, and that&#8217;s when they say we should rethink the word <strong>work</strong> in the <em><strong>&#8220;the simplest thing that could possibly work&#8221;</strong> </em>sentence.</p>
<p>This point goes back to the <a href="http://blog.franktrindade.com/2008/11/25/agile-vs-usability/" target="_blank">Agile Vs Usability</a> discussion and it is very correct IMO, because it reiterates that development teams should not deliver any code just because it was quick to develop it and the client is happy (although he shouldn&#8217;t be at all) since it didn&#8217;t cost a fortune.</p>
<p>And what is interesting about this subject is how agile teams <em><strong>don&#8217;t usually accept low quality code standards</strong></em> (code without tests, lots of hacks, etc..), <em><strong>but easily accept low usability standards</strong></em>, not understanding that is also their responsibility to define what a good user experience is.</p>
<p>What I&#8217;m NOT trying to say is that the user should be left outside from the application design. He should definitely have his opinion (and a strong one), but should also receive advice in UX standards as much as he should in code quality, making sure that he understands what he loses when is trying to save money on each particular feature.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.franktrindade.com/2009/03/05/does-it-really-work/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

