<?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/"
	>

<channel>
	<title>Metodologias Ágeis de Desenvolvimento (Locaweb)</title>
	<atom:link href="http://agilblog.locaweb.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://agilblog.locaweb.com.br</link>
	<description></description>
	<pubDate>Mon, 22 Jun 2009 22:04:23 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Fixe o tempo e os custos e reduza o escopo</title>
		<link>http://agilblog.locaweb.com.br/2009/06/22/fixe-o-tempo-e-os-custos-e-reduza-o-escopo/</link>
		<comments>http://agilblog.locaweb.com.br/2009/06/22/fixe-o-tempo-e-os-custos-e-reduza-o-escopo/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 19:59:05 +0000</pubDate>
		<dc:creator>Joca</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<category><![CDATA[Planejamento]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=318</guid>
		<description><![CDATA[Recentemente Dov Bigio, Gerente de Produtos de Telecom da Locaweb, postou em seu blog sobre &#8220;O triângulo dos projetos&#8220;, que explica que dadas as variáveis de um projeto (qualidade, custo e prazo) pode-se fixar no máximo duas delas, e a terceira irá variar. Ou seja, se fixarmos prazo e custo, a qualidade poderá ser menor [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente Dov Bigio, Gerente de Produtos de Telecom da Locaweb, postou em seu blog sobre &#8220;<a href=http://gerentedeprodutos.blogspot.com/2009/06/o-triangulo-dos-projetos.html>O triângulo dos projetos</a>&#8220;, que explica que dadas as variáveis de um projeto (qualidade, custo e prazo) pode-se fixar no máximo duas delas, e a terceira irá variar. Ou seja, se fixarmos prazo e custo, a qualidade poderá ser menor do que a esperada. Ou se fixarmos a qualidade e o custo, o prazo poderá ser maior que o esperado. Nunca conseguiremos fixar as três variáveis de um projeto.</p>
<p>O pessoal da <a href=www.37signals.com>37signals</a> prefere manter a qualidade sempre fixa (num patamar alto) e substituiu a qualidade pelo escopo no triângulo dos projetos. Eles também recomendam que devemos sempre <a href=http://gettingreal.37signals.com/ch02_Fix_Time_and_Budget_Flex_Scope.php>fixar prazo e custo de um projeto e sempre flexibilizar o escopo</a>.</p>
<p>Vou explicar como isso faz sentido usando como exemplo um projeto recente que tivemos aqui na Locaweb, o projeto de reescrever o site. </p>
<p><center><br />
<a href="http://uxblog.locaweb.com.br/wp-content/uploads/2009/06/locaweb-antes.jpg"><img src="http://uxblog.locaweb.com.br/wp-content/uploads/2009/06/locaweb-antes-300x281.jpg" alt="locaweb-antes" title="locaweb-antes" width="300" height="281" class="aligncenter size-medium wp-image-835" /></a><br />
<br /><small>site da Locaweb antes do projeto de reescrever o site</small><br />
</center></p>
<p>Em novembro de 2008 decidimos que já havia passado da hora de termos um novo site que estivesse mais em linha com tudo o que temos estudado sobre experiência do usuário, design centrado no usuário, arquitetura da informação, design de interação e conceitos de web 2.0 com maior participação do visitante do site. Decidimos também o prazo, na primeira quinzena de março de 2009 esse site deveria estar no ar. E o custo também estava fechado: não íamos contratar ou pegar empresatado de outra equipe ninguém a mais para tocar esse projeto.</p>
<p>Tomada a decisão, começamos a desenhar o escopo do projeto. Dentre os vários requisitos do projeto tivemos:</p>
<ul>
<li> navegação simples e intuitiva</li>
<li> manter o código bem enxuto </li>
<li> aplicar SEO em todo o site</li>
<li> minimizar o uso de flash</li>
<li> design visual leve, para dar importância à informação contida nas páginas</li>
<li> rever a arquitetura de informação de todo o site, revendo todo o conteúdo</li>
</ul>
<p>Fizemos o planejamento para 6 sprints de duas semanas cada. Numa determinada altura percebemos que não ia dar para fazer tudo para lançar na primeira quinzena de março. Ficamos então pensando se íamos  aumentar o prazo ou se podíamos cortar algo do escopo desse projeto.</p>
<p>A entrega de uma projeto é muito importante, tanto para a equipe que trabalhou no projeto, que fica com a sensação de &#8220;dever cumprido&#8221;, quanto para o cliente do projeto, que irá usufruir dos benefícios de ter o projeto pronto. Com isso em mente, decidmos diminuir o escopo, descobrir alguma coisa que pudéssemos cortar do projeto a fim de entregá-lo no prazo. Dentre as opções de redução de escopo, escolhemos não rever a arquitetura de informação de todo o site, mas apenas das áreas mais importantes.</p>
<p>Com isso conseguimos entregar a tempo e os visitantes do site - principal &#8220;cliente&#8221; desse projeto - puderam usufruir de seu novo layout e de sua nova organização. </p>
<p><center><a href="http://uxblog.locaweb.com.br/wp-content/uploads/2009/06/locaweb-depois.png"><img src="http://uxblog.locaweb.com.br/wp-content/uploads/2009/06/locaweb-depois-300x200.png" alt="locaweb-depois" title="locaweb-depois" width="300" height="200" class="aligncenter size-medium wp-image-836" /></a><br />
<br /><small>site da Locaweb depois do projeto de reescrever o site</small><br />
</center></p>
<p>De uma certa forma, redução de escopo e redução de qualidade são parecidos, mas têm uma diferença fundamental. Podemos reduzir qualidade de duas formas:</p>
<ul>
<li> fazer tudo o que foi planejado, só que fazer mal feito, ou;</li>
<li> fazer menos do que foi planejado, só que bem feito.</li>
</ul>
<p>Já quando falamos em redução de escopo, não damos margem para interpretação: é sempre fazer menos do que foi planejado, mantendo o trabalho bem feito. E muitas vezes quando fazemos e entregamos menos, percebemos que o menos que entregamos já é suficiente e que o produto final de nosso projeto ficou melhor com menos do que o que foi originalmente planejado.</p>
<p>Então da próxima vez que você pensar em reduzir a qualidade de seu projeto para poder entregá-lo no prazo e dentro do orçamento, pense se não seria melhor reduzir o escopo. Você e seu cliente poderão sair ganhando com a redução de escopo!</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/06/22/fixe-o-tempo-e-os-custos-e-reduza-o-escopo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>O papel da gerência em times ágeis</title>
		<link>http://agilblog.locaweb.com.br/2009/06/10/o-papel-da-gerencia-em-times-ageis/</link>
		<comments>http://agilblog.locaweb.com.br/2009/06/10/o-papel-da-gerencia-em-times-ageis/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 13:03:12 +0000</pubDate>
		<dc:creator>Joca</dc:creator>
		
		<category><![CDATA[Eventos]]></category>

		<category><![CDATA[Geral]]></category>

		<category><![CDATA[QCON]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=315</guid>
		<description><![CDATA[Há quase um ano atrás eu comentei sobre a mudança do papel do gerente em um time que resolveu adotar metodologias ágeis. Na London QCon 2009 foi apresentada a palestra Managers in Scrum de Roman Pichler, um consultor inglês especializado em gestão ágil de produtos.
A apresentação completa pode ser vista em:
http://www.infoq.com/presentations/managers-in-scrum
Quem quiser ver só os [...]]]></description>
			<content:encoded><![CDATA[<p>Há quase um ano atrás eu comentei sobre a <a href="http://www.jocaonstuff.com/2008/04/what-changes-for-a-manager-in-a-team-moving-into-agile/">mudança do papel do gerente em um time que resolveu adotar metodologias ágeis</a>. Na <a href="http://www.qconlondon.com/">London QCon 2009</a> foi apresentada a palestra Managers in Scrum de <a href="http://www.romanpichler.com/">Roman Pichler</a>, um consultor inglês especializado em gestão ágil de produtos.</p>
<p>A apresentação completa pode ser vista em:</p>
<p><a href="http://www.infoq.com/presentations/managers-in-scrum">http://www.infoq.com/presentations/managers-in-scrum</a></p>
<p>Quem quiser ver só os slides, pode baixá-los <a href="http://www.jocaonstuff.com/novoblog/wp-content/uploads/2009/04/romanpichler_managersinscrum.pdf">aqui</a>.</p>
<p>Vou destacar 4 slides que resumem a apresentação. Primeiro um slide que mostra como funciona a gerência tradicional:</p>
<p><center><a href="http://www.jocaonstuff.com/novoblog/wp-content/uploads/2009/04/picture-16.png"><img src="http://www.jocaonstuff.com/wp-content/uploads/2009/04/picture-16-300x225.png" alt="" title="picture-16" width="300" height="225" class="alignnone size-medium wp-image-234" /></a></center></p>
<p>Em seguida um slide que ilustra como deve ser a gerência em um ambiente ágil:</p>
<p><center><a href="http://www.jocaonstuff.com/novoblog/wp-content/uploads/2009/04/picture-17.png"><img src="http://www.jocaonstuff.com/wp-content/uploads/2009/04/picture-17-300x225.png" alt="" title="picture-17" width="300" height="225" class="alignnone size-medium wp-image-235" /></a></center></p>
<p>Uma comparação entre o processo de padronização antes e depois do uso de metodologias ágeis e o papel do gerente nesse processo:</p>
<p><center><a href="http://www.jocaonstuff.com/novoblog/wp-content/uploads/2009/04/picture-18.png"><img src="http://www.jocaonstuff.com/wp-content/uploads/2009/04/picture-18-300x225.png" alt="" title="picture-18" width="300" height="225" class="alignnone size-medium wp-image-236" /></a></center></p>
<p>E, por último, um resumo:</p>
<p><center><a href="http://www.jocaonstuff.com/novoblog/wp-content/uploads/2009/04/picture-19.png"><img src="http://www.jocaonstuff.com/wp-content/uploads/2009/04/picture-19-300x225.png" alt="" title="picture-19" width="300" height="225" class="alignnone size-medium wp-image-237" /></a></center></p>
<p>Vale conferir essa apresentação.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/06/10/o-papel-da-gerencia-em-times-ageis/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Vídeo - Usando padrões para apresentar métodos ágeis</title>
		<link>http://agilblog.locaweb.com.br/2009/05/26/video-usando-padroes-para-apresentar-metodos-ageis/</link>
		<comments>http://agilblog.locaweb.com.br/2009/05/26/video-usando-padroes-para-apresentar-metodos-ageis/#comments</comments>
		<pubDate>Tue, 26 May 2009 18:53:50 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[Sem Categoria]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=312</guid>
		<description><![CDATA[Há algum tempo fiz um post sobre Padrões para Introduzir Novas Ideias. Recentemente montei um vídeo que mostra como esse padrões poderia ser aplicados de verdade para convencer as pessoas a adotarem métodos ágeis. Divirtam-se!

]]></description>
			<content:encoded><![CDATA[<p>Há algum tempo fiz um <a href="http://agilblog.locaweb.com.br/2008/11/04/como-convencer-a-adotarem-sua-ideia/">post sobre Padrões para Introduzir Novas Ideias</a>. Recentemente montei um vídeo que mostra como esse padrões poderia ser aplicados de verdade para convencer as pessoas a adotarem métodos ágeis. Divirtam-se!</p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4766693&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4766693&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/05/26/video-usando-padroes-para-apresentar-metodos-ageis/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Metodologias ágeis são processos, agilidade é cultura</title>
		<link>http://agilblog.locaweb.com.br/2009/04/25/metodologias-ageis-sao-processos-agilidade-e-cultura/</link>
		<comments>http://agilblog.locaweb.com.br/2009/04/25/metodologias-ageis-sao-processos-agilidade-e-cultura/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 00:33:35 +0000</pubDate>
		<dc:creator>Joca</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<category><![CDATA[Introdução]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=295</guid>
		<description><![CDATA[Recentemente li dois posts sobre a questão da cultura ágil e como alguns times usam apenas os processos embutidos nas metodologias ágeis sem absorver a cultura da agilidade:

 Agile development is more culture than process
 Creating The Culture For An Agile Environment

Pesquisando na Wikipedia, encontrei as definições abaixo:

 Cultura é um padrão integrado de conhecimento, [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente li dois posts sobre a questão da cultura ágil e como alguns times usam apenas os processos embutidos nas metodologias ágeis sem absorver a cultura da agilidade:</p>
<ul>
<li> <a href=http://agileproductdesign.com/blog/agile_is_culture_not_process.html>Agile development is more culture than process</a></li>
<li> <a href=http://www.infoq.com/news/2008/04/smith-creating-agile-environment>Creating The Culture For An Agile Environment</a></li>
</ul>
<p>Pesquisando na Wikipedia, encontrei as definições abaixo:</p>
<ul>
<li> <b><a href=http://en.wikipedia.org/wiki/Culture>Cultura</a></b> é um padrão integrado de conhecimento, crença ou comportamento humano que depende da capacidade de pensamento simbólico e de aprendizado social de um determinado grupo de pessoas. É também um conjunto de atitudes, valores, objetivos e práticas compartilhadas que caracterizam esse grupo de pessoas.</li>
<li> <b><a href=http://en.wikipedia.org/wiki/Business_process>Processo</a></b> é um cojunto de tarefas e atividades relacionadas que produzem um determinado produto ou serviço para um ou mais clientes de uma empresa. Pode ser visualizado com um fluxograma.</li>
</ul>
<p><b>Ou seja, o processo é o &#8220;como&#8221; enquanto a cultura é o &#8220;porquê&#8221;.</b></p>
<p>Sem dúvida o que mais importa é a cultura, já que sem o &#8220;porquê&#8221; é muito mais difícil seguir e manter o respectivo &#8220;como&#8221;.</p>
<p>As metodologias ágeis, ou seja, os processos de desenvolvimento de software que as metodologias ágeis definem, são consequência da cultura ágil. </p>
<p>A cultura ágil consegue existir sem as metodologias ágeis. Se falarmos apenas no <a href=http://agilemanifesto.org/>manifesto ágil</a> e em seus <a href=http://agilemanifesto.org/principles.html>princípios</a> para alguém que nunca ouviu falar nas metodologias ágeis, é muito provável que essa pessoa acabe criando os processos necessários para viabilizar a cultura ágil.</p>
<p><center><a href=http://agilblog.locaweb.com.br/wp-content/uploads/2009/04/picture-23.png><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/04/picture-23-300x138.png" alt="picture-23" title="picture-23" width="300" height="138" class="alignnone size-medium wp-image-296" /></a></center></p>
<p>Por outro lado, dado o processo ágil, por exemplo o Scrum, é difícil entender o &#8220;porquê&#8221; esse processo deve ser seguido. Dá até para perceber que esse processo melhora o dia-a-dia do desenvolvimento de software, mas sem saber o &#8220;porquê&#8221; de o seguir, as chances de que o processo se mantenha ou, mais importante, de que o processo melhore, são bem baixas.</p>
<p><center><a href=http://agilblog.locaweb.com.br/wp-content/uploads/2009/04/scrumlargelabelled.png><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/04/scrumlargelabelled-300x139.png" alt="scrumlargelabelled" title="scrumlargelabelled" width="300" height="139" class="alignnone size-medium wp-image-297" /></a></center></p>
<p><b>Daí a importância de entender a cultura ágil antes de implementar as metodologias ágeis.</b></p>
<p>Só que mudar cultura é tarefa de longo prazo, gradual e de difícil mensuração. E como toda tarefa de longo prazo, gradual e de difícil mensuração, é pouco atraente. As pessoas querem os resultados da mudança de cultura, mas não querem gastar o que é necessário para se chegar ao resultado. Daí a busca por receitas de bolo.</p>
<p>Implementar metodologias e mudar processos são tarefas de curto prazo, de impacto e de fácil mensuração (gráficos, pontos, etc.). Daí a preferência natural que temos pelas metodologias, pelas &#8220;receitas de bolo&#8221;.</p>
<p>É fundamental orientar a implementação das metodologias e as mudanças de processo para garantir que elas não se transformem em atos mecânicos e para que sejam gradualmente absorvidos como cultura da organização.</p>
<p>E orientar a implementação das metodologias e as mudanças de processo não é conhecer muito sobre o tema e fornecer respostas para perguntas do tipo &#8220;o que eu faço com os pontos dessa história que não acabamos nesse sprint?&#8221; ou &#8220;devo pontuar as histórias com pontos ou com horas?&#8221; ou &#8220;será que devo usar kanbam, lean, XP, Scrum, &#8230;?&#8221; ou &#8230;  </p>
<p>A orientação que deve ser dada está em ensinar a &#8220;pensar ágil&#8221;. As metodologias ágeis são um auxílio para nos ajudar a  pensar ágil mas muitas vezes, ao invés de nos ajudar a pensar ágil, nos faz não pensar. :-/</p>
<p>Só se muda uma cultura pensando, discutindo, argumentando, ouvindo, experimentando.</p>
<p>Seguir &#8220;receitas de bolo&#8221; sem pensar, discutir, argumentar, ouvir e escutar é receita certa para uma implementação mecanizada das metodologias e consquente fracasso.</p>
<p>Como dito no <a href=http://www.jocaonstuff.com/2009/02/nao-se-nasce-especialista/>Outliers e em um artigo bem bacana de Scientific American</a>, para ser um especialista em algo, devemos praticar de forma consciente, ou seja, sempre questionando e entendendo o que estamos  praticando e nunca executar a &#8220;prática cega&#8221;.</p>
<p>Por isso, em sua próxima reunião de revisão e planejamento de sprint, ou mesmo na sua reunião diária, lembre-se que antes da metodologia ágil deve vir a cultura ágil. Releia junto com o seu time o <a href=http://agilemanifesto.org/>manifesto ágil</a> e seus <a href=http://agilemanifesto.org/principles.html>princípios</a> e discutam:</p>
<ul>
<li> por que esses princípios são importantes para nosso time?</li>
<li> o que tem sido feito para seguir esses princípios?</li>
<li> onde não seguimos esses princípios e por que?</li>
</ul>
<p><b>Agilidade é cultura, as metodologias ágeis são os processos que ajudam a sedimentar essa cultura.</b></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/04/25/metodologias-ageis-sao-processos-agilidade-e-cultura/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Aprendendo a ser ágil</title>
		<link>http://agilblog.locaweb.com.br/2009/04/17/aprendendo-a-ser-agil/</link>
		<comments>http://agilblog.locaweb.com.br/2009/04/17/aprendendo-a-ser-agil/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 11:01:43 +0000</pubDate>
		<dc:creator>luciano.coelho</dc:creator>
		
		<category><![CDATA[Eventos]]></category>

		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=289</guid>
		<description><![CDATA[
Aconteceu entre os dias 06 e 09 de abril a Semana da Tecnologia da FATEC de Jundiaí, onde estou cursando Informática para Gestão de Negócios. No dia 09/04, a convite do Prof. Demerval (Teoria da Administração) , fiz uma apresentação sobre desenvolvimento ágil com Scrum e XP num dos mini cursos que faziam parte do [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-54 alignleft" style="margin: 6px;" title="Desenvolvimento ágil com Scrum e XP" src="http://www.lucianocoelho.net/wp-content/uploads/2009/04/dsc00805-300x225.jpg" alt="Desenvolvimento ágil com Scrum e XP" width="173" height="130" /></p>
<p>Aconteceu entre os dias 06 e 09 de abril a Semana da Tecnologia da <a href="http://www.fatecjd.edu.br/" target="_blank">FATEC de Jundiaí</a>, onde estou cursando Informática para Gestão de Negócios. No dia 09/04, a convite do Prof. Demerval (Teoria da Administração) , fiz uma apresentação sobre desenvolvimento ágil com Scrum e XP num dos mini cursos que faziam parte do evento.</p>
<p>A participação dos alunos foi muito legal e, o melhor de tudo, acredito ter conseguido despertar no pessoal o interesse pelo desenvolvimento ágil.</p>
<p>No mesmo dia, o Fernando, fez a apresentação com o tema &#8220;<a href="http://tecblog.locaweb.com.br/2009/04/14/apresentacao-de-tdd-na-fatec-jundiai/" target="_blank">Introdução a TDD</a>&#8220;. Na terça, 07/04, o Reinaldo, nosso gerente na área de comércio eletrônico da Locaweb, mostrou como é fácil criar uma loja ou um site de sucesso utilizando boas ferramentas disponíveis no mercado, com destaque para a <a href="http://www.lojapronta.net" target="_blank">Loja Pronta</a> e o <a href="http://www.pagamentocerto.com.br" target="_blank">Pagamento Certo</a>, com o tema &#8220;Não reinvente a roda, pegue uma pronta&#8221;.</p>
<p>Estamos procurando fazer nossa parte para disseminar o conhecimento e tentar tornar o mundo do desenvolvimento de software um lugar melhor <img src='http://agilblog.locaweb.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Os slides da apresentação de Desenvolvimento ágil com Scrum e XP para ver ou baixar:</p>
<div id="__ss_1283761" style="width: 425px; text-align: center;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Desenvolvimento Ágil com Scrum e XP" href="http://www.slideshare.net/lucianocoelho/scrum-xp?type=presentation">Desenvolvimento Ágil com Scrum e XP</a><object width="425" height="355" data="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scrumxp-090413213558-phpapp02&amp;rel=0&amp;stripped_title=scrum-xp" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scrumxp-090413213558-phpapp02&amp;rel=0&amp;stripped_title=scrum-xp" /><param name="allowfullscreen" value="true" /></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/04/17/aprendendo-a-ser-agil/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Kanban vs Scrum</title>
		<link>http://agilblog.locaweb.com.br/2009/04/09/kanban-vs-scrum/</link>
		<comments>http://agilblog.locaweb.com.br/2009/04/09/kanban-vs-scrum/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 18:34:37 +0000</pubDate>
		<dc:creator>Elson Barbosa</dc:creator>
		
		<category><![CDATA[Kanban]]></category>

		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=258</guid>
		<description><![CDATA[Henrik Kniberg, autor do essencial Scrum and XP from the Trenches, publicou um excelente artigo comparando Kanban vs Scrum. O link para o artigo completo (26 páginas em PDF) é esse: http://www.crisp.se/henrik.kniberg/Kanban-vs-Scrum.pdf
Ao final do artigo Kniberg faz um resumo das semelhanças e diferenças entre as duas metodologias. Algumas das principais diferenças que identificamos na nossa [...]]]></description>
			<content:encoded><![CDATA[<p>Henrik Kniberg, autor do essencial <a href="http://www.infoq.com/minibooks/scrum-xp-from-the-trenches">Scrum and XP from the Trenches</a>, publicou um excelente artigo comparando <a href="http://blog.crisp.se/henrikkniberg/2009/04/03/1238795520000.html">Kanban vs Scrum</a>. O link para o artigo completo (26 páginas em PDF) é esse: <a href="http://www.crisp.se/henrik.kniberg/Kanban-vs-Scrum.pdf">http://www.crisp.se/henrik.kniberg/Kanban-vs-Scrum.pdf</a></p>
<p>Ao final do artigo Kniberg faz um resumo das semelhanças e diferenças entre as duas metodologias. Algumas das principais diferenças que identificamos na nossa experiência de Kanban na Locaweb são:</p>
<table border="1px" cellpadding="5px" cellspacing="0" bordercolor="#DDDDDD">
<tr>
<th bgcolor="#CCCCCC">Scrum</th>
<th bgcolor="#CCCCCC">Kanban</th>
</tr>
<tr>
<td bgcolor="#FFFFCC">Timeboxed iterations prescribed</td>
<td bgcolor="#FFFFCC">Iterations optional. Can have separate cadences for planning, release, and process improvement. Can be event-driven instead of iterative.</td>
</tr>
<tr>
<td bgcolor="#EEEEEE">Team commits to a specific amount of work for this iteration.</td>
<td bgcolor="#EEEEEE">Commitment optional.</td>
</tr>
<tr>
<td bgcolor="#FFFFCC">Burndown chart prescribed</td>
<td bgcolor="#FFFFCC">No particular type of diagram is prescribed.</td>
</tr>
<tr>
<td bgcolor="#EEEEEE">WIP limited indirectly (via sprint plan)</td>
<td bgcolor="#EEEEEE">WIP limited directly (per workflow state)</td>
</tr>
<tr>
<td bgcolor="#FFFFCC">Cannot add items to ongoing iteration</td>
<td bgcolor="#FFFFCC">Can add new items whenever capacity is available</td>
</tr>
</table>
<p>O interessante do artigo é observar a sua imparcialidade. Em nenhum momento o autor pende para uma das duas metodologias, dizendo qual delas é a melhor. Na prática, a melhor alternativa ainda é adotar um bom <em>mashup</em> de metodologias - iterações de duas semanas com histórias sendo consumidas via Kanban através de práticas XP <img src='http://agilblog.locaweb.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/04/09/kanban-vs-scrum/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Assess Your Agility</title>
		<link>http://agilblog.locaweb.com.br/2009/04/03/assess-your-agility/</link>
		<comments>http://agilblog.locaweb.com.br/2009/04/03/assess-your-agility/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 16:12:23 +0000</pubDate>
		<dc:creator>Elson Barbosa</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=249</guid>
		<description><![CDATA[Algumas semanas atrás a InfoQ publicou um post divulgando uma pesquisa chamada Assess Your Agility, do site ABetterTeam.org. Fizemos essa pesquisa na Locaweb e chegamos a resultados bem interessantes. O resultado inclui algumas dicas de como agir para melhorar os itens com pontuação baixa (ex: Some practices that can help you get there: Ten-Minute Build; [...]]]></description>
			<content:encoded><![CDATA[<p>Algumas semanas atrás a <a href="http://www.infoq.com">InfoQ</a> publicou um post divulgando uma pesquisa chamada <a href="http://www.infoq.com/news/2009/02/sbastn-abetterteam-dot-org">Assess Your Agility</a>, do site <a href="http://www.abetterteam.org/">ABetterTeam.org</a>. Fizemos essa pesquisa na Locaweb e chegamos a resultados bem interessantes. O resultado inclui algumas dicas de como agir para melhorar os itens com pontuação baixa (ex: <em>Some practices that can help you get there: Ten-Minute Build; &#8216;Done Done&#8217;; Version Control; Pair Programming</em>).</p>
<p><img src="http://www.infoq.com/resource/news/2009/02/sbastn-abetterteam-dot-org/en/resources/results.jpg" alt="" /></p>
<p>Um detalhe interessante é que fazendo 100 pontos você ganha um &#8220;<em>You&#8217;re awesome! No further improvement needed</em>&#8220;, sendo que a pontuação máxima de cada item é 99 pontos (&#8221;<em>improvement possible</em>&#8220;). E isso em Agile faz todo o sentido <img src='http://agilblog.locaweb.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Link para a pesquisa: <a href="http://www.abetterteam.org/new">http://www.abetterteam.org/new</a></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/04/03/assess-your-agility/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DDD - Projeto Estratégico (a peça)</title>
		<link>http://agilblog.locaweb.com.br/2009/04/02/ddd-projeto-estrategico-a-peca/</link>
		<comments>http://agilblog.locaweb.com.br/2009/04/02/ddd-projeto-estrategico-a-peca/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 18:11:47 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[Sem Categoria]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=246</guid>
		<description><![CDATA[Fizemos uma peça de teatro que mostra alguns conceitos de DDD. Assistam o vídeo:
DDD - Domain Driven Design em Teatro from Locaweb on Vimeo.
]]></description>
			<content:encoded><![CDATA[<p>Fizemos uma peça de teatro que mostra alguns conceitos de DDD. Assistam o vídeo:</p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3972348&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=3972348&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><br /><a href="http://vimeo.com/3972348">DDD - Domain Driven Design em Teatro</a> from <a href="http://vimeo.com/locaweb">Locaweb</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/04/02/ddd-projeto-estrategico-a-peca/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Kanban System for Software Engineering</title>
		<link>http://agilblog.locaweb.com.br/2009/03/30/a-kanban-system-for-software-engineering/</link>
		<comments>http://agilblog.locaweb.com.br/2009/03/30/a-kanban-system-for-software-engineering/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 22:21:32 +0000</pubDate>
		<dc:creator>Elson Barbosa</dc:creator>
		
		<category><![CDATA[Kanban]]></category>

		<category><![CDATA[QCON]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=241</guid>
		<description><![CDATA[Semana passada a InfoQ publicou uma apresentação do David Anderson sobre Kanban - A Kanban System for Software Engineering. Logo no início Anderson falou algumas frases que valem o registro:
&#8220;Kanban system physically limits the work-in-progress (&#8230;) It&#8217;s not a real Kanban system unless it physically limits the work-in-progress. Sticky notes on a white board doesn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>Semana passada a <a href="http://www.infoq.com">InfoQ</a> publicou uma apresentação do David Anderson sobre Kanban - <a href="http://www.infoq.com/presentations/kanban-for-software;jsessionid=5E912D00313936B17F696DC514EE262A">A Kanban System for Software Engineering</a>. Logo no início Anderson falou algumas frases que valem o registro:</p>
<blockquote><p>&#8220;Kanban system physically limits the work-in-progress (&#8230;) It&#8217;s not a real Kanban system unless it physically limits the work-in-progress. Sticky notes on a white board doesn&#8217;t work unless you add a limit to the amount of work-in-progress. Because if there isn&#8217;t a limit there isn&#8217;t a pull system.&#8221;</p></blockquote>
<p>A íntegra da apresentação - pouco mais de uma hora de duração - está em <a href="http://www.infoq.com/presentations/kanban-for-software;jsessionid=5E912D00313936B17F696DC514EE262A">A Kanban System for Software Engineering</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/03/30/a-kanban-system-for-software-engineering/feed/</wfw:commentRss>
		</item>
		<item>
		<title>10 formas para descobrir se seu time ainda não é ágil</title>
		<link>http://agilblog.locaweb.com.br/2009/03/17/10-formas-de-saber-que-seu-time-ainda-nao-e-agil/</link>
		<comments>http://agilblog.locaweb.com.br/2009/03/17/10-formas-de-saber-que-seu-time-ainda-nao-e-agil/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 12:11:20 +0000</pubDate>
		<dc:creator>Joca</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[Testes]]></category>

		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=232</guid>
		<description><![CDATA[Em um post antigo, de 2007, um dos pais das metodologias ágeis, o Alistair Cockburn, enumera 10 formas de saber se um time NÃO está sendo ágil.

Acho que vale refletir sobre essa lista. Por um lado, é provável que vários itens dessa lista seu time já tenha resolvido, mas pode ser que ainda falte um [...]]]></description>
			<content:encoded><![CDATA[<p>Em um <a href="http://alistair.cockburn.us/Top+ten+ways+to+know+you+are+not+doing+agile">post antigo</a>, de 2007, um dos pais das metodologias ágeis, o <a href="http://alistair.cockburn.us/">Alistair Cockburn</a>, enumera 10 formas de saber se um time NÃO está sendo ágil.</p>
<p><center><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/03/scrum-300x118.png" alt="scrum" title="scrum" width="300" height="118" class="size-medium wp-image-235" /></center></p>
<p>Acho que vale refletir sobre essa lista. Por um lado, é provável que vários itens dessa lista seu time já tenha resolvido, mas pode ser que ainda falte um ou outro item:</p>
<blockquote><p>
In no particular order, you know you’re not doing agile if: </p>
<ol>
<li> The team is co-located, but people are not sitting within the length of a school bus to each other. </li>
<li> They’re distributed, and there is an absence of microphones and webcams and one or two meetings a day. </li>
<li> They have not delivered anything to real users in the last three months. Some of my agile friends would say that’s much too long, but I’m being generous there. </li>
<li> If no user has seen real running software inside the last month. </li>
<li> They don’t have the output of last month’s reflection workshop or retrospective on the wall. </li>
<li> They don’t have fully automated unit tests, and a large number of acceptance tests aren’t automated. </li>
<li> They’re not having a build integration at least once day. Good groups do it every half hour; there are groups that get away with it every other day. </li>
<li> They write big requirements documents, and they don’t know how to split those up into smaller pieces so they could deliver a piece of software every month. </li>
<li> They have itty-bitty requirements on the order of “here’s what happens when you click here,” but they don’t have long-term vision for what they’re trying to accomplish. </li>
<li> People keep saying, “It’s not my job.” One of the things about proper agile development is that there is group accountability for results. Very specifically, if the requirements are not coming in fast enough, whoever has a bit of spare time (programmers, testers, etc.) drops what they’re doing and helps gather requirements; if tests aren’t getting done, people with some spare capacity help test and so on. </li>
</ol>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/03/17/10-formas-de-saber-que-seu-time-ainda-nao-e-agil/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Vídeo sobre Domain Driven Design</title>
		<link>http://agilblog.locaweb.com.br/2009/03/10/video-sobre-domain-driven-design/</link>
		<comments>http://agilblog.locaweb.com.br/2009/03/10/video-sobre-domain-driven-design/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 13:34:56 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[Sem Categoria]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=229</guid>
		<description><![CDATA[Acabamos de publicar um vídeo com a palestra sobre Domain Driven Design. Para aqueles que leram nosso último post, o vídeo é uma oportunidade para aprender DDD com um pouco mais de detalhe.
Introdução a Domain Driven Design (DDD) from Locaweb on Vimeo.
]]></description>
			<content:encoded><![CDATA[<p>Acabamos de publicar um vídeo com a palestra sobre Domain Driven Design. Para aqueles que leram nosso último post, o vídeo é uma oportunidade para aprender DDD com um pouco mais de detalhe.</p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3545313&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=3545313&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><br /><a href="http://vimeo.com/3545313">Introdução a Domain Driven Design (DDD)</a> from <a href="http://vimeo.com/user1397808">Locaweb</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/03/10/video-sobre-domain-driven-design/feed/</wfw:commentRss>
		</item>
		<item>
		<title>O que é Domain Driven Design?</title>
		<link>http://agilblog.locaweb.com.br/2009/03/02/o-que-e-domain-driven-design/</link>
		<comments>http://agilblog.locaweb.com.br/2009/03/02/o-que-e-domain-driven-design/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 15:46:17 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[DDD]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=169</guid>
		<description><![CDATA[No ano passado, durante a QCON, participamos de um tutorial sobre Domain Driven Design com Ralph Johnson. Pra quem não sabe, Ralph é um dos 4 do GOF (Gang of Four), que escreveu um dos livros mais famosos do mundo de Orientação a Objetos, Padrões de Projetos (ou Design Patterns).  Nesse tutorial aprendemos muito sobre [...]]]></description>
			<content:encoded><![CDATA[<p>No ano passado, durante a QCON, participamos de um tutorial sobre Domain Driven Design com <a href="http://st-www.cs.uiuc.edu/users/johnson/" target="_blank">Ralph Johnson</a>. Pra quem não sabe, Ralph é um dos 4 do GOF (Gang of Four), que escreveu um dos livros mais famosos do mundo de Orientação a Objetos, Padrões de Projetos (ou Design Patterns).  Nesse tutorial aprendemos muito sobre o assunto e começamos a estudar a fundo, com o objetivo de aplicar os conceitos no desenvolvimento dos nossos produtos.</p>
<p>Domain Driven Design significa Projeto Orientado a Domínio. Ele veio do título do livro escrito por Eric Evans, dono da <a href="http://www.domainlanguage.com/">DomainLanguage</a>,  uma empresa especializada em treinamento e consultoria para desenvolvimento de software. O livro de Evans é um grande catálogo de <a href="http://hillside.net/plop/2008/" target="_blank">Padrões</a>, baseados em experiências do autor ao longo de mais de 20 anos desenvolvendo software usando técnicas de Orientação a Objetos. O seria um Padrão?</p>
<p style="text-align: center;"><em>Um padrão é uma regra de três partes que expressa a relação entre um certo contexto(1), um problema(2) e uma solução(3)</em></p>
<p style="text-align: left;">DDD pode ser visto por alguns como a volta da orientação a objetos. É verdade que o livro é um chamado às boas práticas de programação que já existem desde a época remota do <a href="http://en.wikipedia.org/wiki/Smalltalk" target="_blank">SmallTalk</a>.  Quando se fala em Orientação a Objetos, pensa-se logo em classes, heranças, polimorfismo, encapsulamento. Mas essência de Orientação a Objetos também tem coisas como:</p>
<ul>
<li>Alinhamento do código com o negócio</li>
<li>Favorecimento de reutilização</li>
<li>Mínimo de acoplamento</li>
<li>Independência da Tecnologia</li>
</ul>
<p>Todas essas coisas são bem exemplificadas e mostradas na forma de vários padrões em DDD. Mas o livro também mostra muitos padrões que não dizem respeito a código ou modelagem. Aparecem coisas que estão mais ligadas a processos (como <a href="http://agilblog.locaweb.com.br/2008/12/16/integracao-continua/" target="_blank">Integração Contínua</a>) ou a formas de relacionamento entre times que fazem parte do desenvolvimento de um sistema complexo.</p>
<p>Eric Evans dividiu o livro em quatro partes:</p>
<h3>1 - Colocando o modelo de domínio para funcionar</h3>
<p>Para ter um software que atenda perfeitamente a um determinado domínio, é necessário que se estabeleça, em primeiro lugar, uma <strong>Linguagem Ubíqua</strong>. Nessa linguagem estão termos que fazem parte das conversas diárias entre especialistas de negócio e times de desenvolvimento. Todos devem usar os mesmos termos tanto na linguagem falada quanto no código. Isso significa que, se durante uma conversa com um cliente do sistema de cobrança, por exemplo, ele disser: &#8220;Temos que <strong>emitir</strong> a <strong>fatura</strong> para o <strong>cliente</strong> antes da <strong>data limite</strong>&#8220;, vamos tem no nosso código alguma coisa do tipo</p>
<ul>
<li>uma classe para a entidade <strong>Cliente</strong></li>
<li>uma classe para a entidade <strong>Fatura<br />
</strong></li>
<li>Algum serviço que tenha um método <strong>emitir</strong></li>
<li>algum atributo que chame <strong>data limite</strong></li>
</ul>
<p>Essa linguagem ubíqua deve ser compreendida por todos e não podem haver ambigüidades. Toda vez que alguém perceber que um determinado conceito do domínio possui várias palavras que o represente, essa pessoa deve tentar readequar tanto a linguagem falada e escrita, quanto o código.</p>
<p>Outra forma de colocar o modelo para funcionar é utilizando Model Driven Design (MDD), conforme explicado no vídeo abaixo:<br />
<object width="445" height="364" data="http://www.youtube.com/v/vfiI_jiVNYA&amp;hl=en&amp;fs=1&amp;color1=0x5d1719&amp;color2=0xcd311b&amp;border=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/vfiI_jiVNYA&amp;hl=en&amp;fs=1&amp;color1=0x5d1719&amp;color2=0xcd311b&amp;border=1" /><param name="allowfullscreen" value="true" /></object></p>
<h3>2 - Blocos de construção do Model Driven Design (MDD)</h3>
<p>O Model Driven Design possuí vários Padrões, que são os blocos de construção que fazem a representação do modelo abstrato. Esses blocos podem ser:</p>
<ul>
<li><strong>Entidades</strong> - classes de objetos que necessitam de uma identidade</li>
<li><strong>Objetos de Valores</strong> - objetos que só carregam valores, mas que não possuem distinção de identidade</li>
<li><strong>Agregados</strong> - conjuntos de <strong>Entidades</strong> ou <strong>Objetos de Valores </strong>que são encapsulados numa única classe</li>
<li><strong>Fábricas - </strong>classes responsáveis pela criação de <strong>Agregados</strong> ou <strong>Objetos de Valores</strong></li>
<li><strong>Serviços - </strong>classes que contém lógica de negócio que não pertence à nenhuma <strong>Entidade</strong> ou  <strong>Objetos de Valores</strong></li>
<li><strong>Repositórios</strong> - classes responsáveis por administrar o ciclo de vida dos outros objetos e de prover, alterar, e eliminar instâncias destes</li>
<li><strong>Módulos</strong> - abstrações que têm por objetivos agrupar classes por um determinado conceito do domínio</li>
</ul>
<h3>3 - Refatorando para compreender profundamente o modelo</h3>
<p>Depois de elaborar um modelo de dados que reflete o seu domínio, usando os blocos de construção do MDD, o processo de aperfeiçoamento do modelo continua. O modelo deve ser refatorado na medida em que se compreende mais e mais novos conceitos do domínio. Muitas vezes alguns conceitos do domínio estão implícitos no código. Nosso trabalho é tentar identificar esse conceitos implícitos e torná-los explícitos. Alguns padrões podem ajudar a compreender mais profundamente o modelo:</p>
<ul>
<li><strong>Interface de Intenção Revelada - </strong>usar nomes de métodos ou classes que dizem exatamente <strong>o que</strong> essas classes e métodos fazem, mas não <strong>como</strong> elas fazem. Dizer <strong>como</strong> quebra o encapsulamento.</li>
<li><strong>Funções sem Efeitos-Colaterais</strong> - tentar deixar o código com o maior número possível de métodos que não alteram o estado dos objetos, concentrando esse tipo de operação (alteração de estado) em <strong>Comandos</strong>.</li>
<li><strong>Asserções</strong> - para os <strong>Comandos</strong> que alteram estados, criar testes de unidade, ou colocar asserções no código que validem, após a chamada dos comandos, as alterações de estado esperadas.<br />
<h3><img class="alignright size-medium wp-image-219" title="Mapa entre Contextos" src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/03/picture-1-300x220.png" alt="Mapa entre Contextos" width="300" height="220" /></h3>
</li>
</ul>
<h3>4 - Projeto estratégico</h3>
<p>Além de ter uma <strong>Linguagem Ubíqua</strong>, usada na elaboração de um modelo consistente e adequado para o domínio, precisamos de algumas estratégias para lidar com sistemas complexos, onde vários pedaços de softwares (desenvolvidos por vários times) interagem entre si. Precisamos delimitar em que contexto cada time trabalha e qual será o grau de interação entre esses times e esses contextos. Para isso os padrões:</p>
<ul>
<li><strong>Contexto delimitado </strong>- um traçado perfeito sobre o que pertence e o que não pertence a um contexto</li>
<li><strong>Mapa entre Contextos </strong>- uma forma de documentar claramente termos usados para um mesmo conceito em vários contextos (p. ex. no contexto do sistema de cobrança usamos o termo &#8220;Fatura&#8221;, que significa a mesma coisa que o termo &#8220;Nota Fiscal&#8221; no contexto do sistema de faturamento)</li>
<p><img class="alignright size-medium wp-image-220" title="Núcleo Compartilhado" src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/03/picture-2-300x182.png" alt="Núcleo Compartilhado" width="300" height="182" /></p>
<li><strong>Núcleo Compartilhado </strong>- Quando dois times alteram uma mesma base de código em comum</li>
<li><strong>Produtor-Consumidor </strong>- Quando os times possuem uma relação bem clara de Cliente-Fornecedor</li>
<li><strong>Conformista</strong> - Caso não seja possível alterar ou pedir alterações  de uma parte do sistema mantida por outro time</li>
</ul>
<ul>
<li><strong>Camada Anti-corrupção</strong> - quando temos um sistema legado, com código muito bagunçado e uma interface complexa, e estamos escrevendo um sistema novo com o código razoavelmente bem feito, criamos uma camada entre esses dois sistemas.<img class="size-medium wp-image-221 alignright" title="picture-3" src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/03/picture-3-300x195.png" alt="picture-3" width="300" height="195" /> O nosso sistema novo e bem feito falará com essa camada, que possui uma interface bem feita. E a camada anti-corrupção é responsável por traduzir e adaptar as chamadas para o sistema legado, usando uma fachada interna.</li>
</ul>
<h3>Conclusões</h3>
<p>Estes são apenas alguns padrões de <strong>Domain Driven Design</strong>. A razão pela qual falamos desse assunto no Blog Ágil é que desenvolvimento de software ágil está muito ligado a boas práticas de Orientação a Objetos e outros padrões de comunicação entre sistemas contidos no livro do Eric Evans. Obviamente não é possível entender DDD apenas lendo esse artigo. Nós, da Locaweb, estamos estudando todos esses conceitos e começando a aplicar esses Padrões no software que desenvolvemos. Nosso objetivo é ter, cada vez mais, um serviço de qualidade, baseado em sistemas seguros e fáceis de dar manutenção. Com isso poderemos atender nossos clientes com rapidez sem assumir nenhum tipo de débito técnico que possa inviabilizar nosso crescimento.</p>
<p>Aguardamos muitas sugestões e dúvidas sobre o assunto. Estamos mutio interessados em falar e aprender mais sobre DDD.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/03/02/o-que-e-domain-driven-design/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Kanban</title>
		<link>http://agilblog.locaweb.com.br/2009/02/26/kanban/</link>
		<comments>http://agilblog.locaweb.com.br/2009/02/26/kanban/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 20:39:50 +0000</pubDate>
		<dc:creator>Elson Barbosa</dc:creator>
		
		<category><![CDATA[Kanban]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=124</guid>
		<description><![CDATA[Nos últimos meses tem-se falado bastante sobre Kanban, e em como as práticas de administração de produção podem ser aplicadas a desenvolvimento de software. David Anderson em suas palestras no Agile 2008 e no Falando em Agile apresentou algumas dessas ideias, que estão atualmente sendo aplicadas na Locaweb.
Antes, vale uma introdução ao tema.
Kanban (literalmente &#8220;cartão [...]]]></description>
			<content:encoded><![CDATA[<p>Nos últimos meses tem-se falado bastante sobre <a href="http://pt.wikipedia.org/wiki/Kanban" target="_blank">Kanban</a>, e em como as práticas de administração de produção podem ser aplicadas a desenvolvimento de software. <a href="http://www.agilemanagement.net/" target="_blank">David Anderson</a> em suas palestras no <a href="http://agile2008.org/" target="_blank">Agile 2008</a> e no <a href="http://www.caelum.com.br/falando-em-agile/" target="_blank">Falando em Agile</a> apresentou algumas dessas ideias, que estão atualmente sendo aplicadas na Locaweb.</p>
<p>Antes, vale uma introdução ao tema.</p>
<p>Kanban (literalmente &#8220;cartão visual&#8221;) é uma metodologia de produção que utiliza controles visuais (cartões) como sinalizadores de estoque ou status de uma determinada etapa do processo. Os cartões podem ter diversos significados: problemas, atenção, quantidades em falta ou em excesso etc. É o Kanban que permite a aplicação dos conceitos de <a href="http://pt.wikipedia.org/wiki/Just_in_time" target="_blank">Just-In-Time</a> (produção somente do necessário, na quantidade necessária e no momento necessário, sem estoques ou desperdícios) da metodologia <a href="http://pt.wikipedia.org/wiki/Lean" target="_blank">Lean</a>. Um bom exemplo de Kanban aplicado ao dia-a-dia é o apresentado por David Anderson: em uma visita a um lugar turístico no Japão, Anderson observou que na entrada eram distribuídos cartões em branco, sem nenhuma instrução ou número de controle. Esses cartões eram recolhidos na saída, e re-aproveitados para nova distribuição. A explicação: mais do que controlar a quantidade total de pessoas que entram, os cartões eram usados para controlar a quantidade de pessoas que estavam no lugar naquele exato momento - ou seja, a <em>falta</em> de cartões indica que há muitos turistas visitando o lugar e que deve-se diminuir o fluxo de entrada.</p>
<p>Na área de software, esse conceito está sendo usado para o mesmo propósito - controlar o fluxo de funcionalidades (histórias) em desenvolvimento.</p>
<h3>Quadro de Kanban</h3>
<p>O primeiro passo é definir a ferramenta a ser usada para a aplicação do Kanban. Com um simples quadro branco e post-its ou cartões já é possível criar um controle de fluxo de histórias buscando 100% de eficiência. O quadro deve conter colunas para identificar os diversos status de uma história (ex: Não Iniciado, Em Andamento, Impedimento, Em Publicação, Concluído). Observação: quanto menos status houver, mais fácil de manter o quadro; adicionem somente os status que não dependem da própria equipe resolver (ex: equipe não tem acesso de publicação em produção).</p>
<p><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/02/kanban01.jpg" alt="kanban01" title="kanban01" width="421" height="273" class="alignnone size-full wp-image-135" /></p>
<p>Antes de começar a falar sobre Kanban, vale fazer um comparativo: é muito comum equipes usarem planilhas ou sistemas para controle dos sprints. Apesar de serem boas ferramentas, muitas vezes não temos feedbacks visuais de como o sprint está andando. Com isso, é possível não percebermos que o sprint está dessa forma:</p>
<p><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/02/kanban02.jpg" alt="kanban02" title="kanban02" width="421" height="273" class="alignnone size-full wp-image-135" /></p>
<p>O primeiro passo é definir uma ordem de prioridade das histórias, deixando claro de alguma forma qual é a história mais importante que deve ser a primeira a ser desenvolvida.</p>
<p><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/02/kanban04.jpg" alt="kanban04" title="kanban04" width="421" height="273" class="alignnone size-full wp-image-135" /></p>
<p>Em seguida, ao primeiro dia do sprint, a equipe puxa a primeira história e a coloca como Em Andamento:</p>
<p><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/02/kanban05.jpg" alt="kanban05" title="kanban05" width="421" height="273" class="alignnone size-full wp-image-135" /></p>
<p>Na figura acima notem que adicionamos um traço que delimita o tamanho do espaço Em Andamento. Essa limitação é na verdade o segredo de todo o processo: como nesse espaço cabem um e somente um post-it, na prática limitamos a uma e somente uma única história em desenvolvimento. O simples fato de criarmos essa limitação física faz com que eliminemos alguns dos principais desperdícios Lean - trabalho não terminado, troca de tarefas etc.</p>
<h3>Impedimentos</h3>
<p>Uma boa metáfora para um quadro de Kanban é compará-lo com uma máquina qualquer, que transforma matéria-prima (histórias) em produtos (funcionalidades). Quando a máquina tem algum problema, normalmente uma luz vermelha é acesa, indicando qual é o problema e que algo deve ser feito para resolvê-lo.</p>
<p>Da mesma forma, podemos transpor essa ideia para o quadro. Caso haja algum problema que impeça o andamento da história, a equipe pode &#8220;acender a luz vermelha&#8221; com um post-it vermelho acima da história para indicar a todos que o problema existe e ainda não foi solucionado. Além disso, é importante  movimentar a história para a coluna Em Impedimento - a razão disso é liberar espaço para a equipe puxar uma nova história Em Andamento enquanto o impedimento não for resolvido. Importante: esse procedimento só deve ser feito se o impedimento for algo que depende de terceiros e não pode ser resolvido no momento; se a própria equipe puder resolvê-lo, a história deve continuar Em Andamento.</p>
<p><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/02/kanban06.jpg" alt="kanban06" title="kanban06" width="421" height="273" class="alignnone size-full wp-image-135" /></p>
<p>De forma análoga, o status Em Publicação segue a mesma ideia: só deve ser usado se a publicação em produção depender de terceiros; se a própria equipe tiver acesso à produção, a história deve continuar Em Andamento. Uma observação: caso as histórias devam ser armazenadas para a publicação de um release futuro, é importante mostrar isso no quadro, aumentando o limite de acordo com a necessidade; muitos post-its armazenados podem indicar que o release está com muitas funcionalidades e que talvez deva ser publicado antes do previsto.</p>
<p><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/02/kanban07.jpg" alt="kanban07" title="kanban07" width="421" height="273" class="alignnone size-full wp-image-135" /></p>
<h3>Feedback Visual</h3>
<p>Com o Kanban em funcionamento, é possível começar a ler algumas informações. No exemplo abaixo, as três histórias que estavam no backlog no início foram consumidas pela fila, e os espaços em branco indicam que a equipe parou o sprint por falta de novas histórias.</p>
<p><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/02/kanban08.jpg" alt="kanban08" title="kanban08" width="421" height="273" class="alignnone size-full wp-image-135" /></p>
<p>O exemplo abaixo mostra uma situação crítica no Kanban: a história Em Andamento deveria ser movida para Em Publicação (ou Em Impedimento), mas não há espaço para esse movimento:</p>
<p><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/02/kanban09.jpg" alt="kanban09" title="kanban09" width="421" height="273" class="alignnone size-full wp-image-135" /></p>
<p>A solução para essa situação é publicar a história Em Publicação, ou remover o impedimento o mais rápido possível. Caso nenhum desses dois seja possível realizar no momento, vale reunir a equipe e analisar o sprint - por que o impedimento não pode ser resolvido naquele momento? Por que a história não pode ser publicada naquele momento? O que fazer para que a máquina não pare novamente? Devemos repensar esses limites (ex: duas histórias na fila de publicação)?</p>
<p><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/02/kanban10.jpg" alt="kanban10" title="kanban10" width="421" height="273" class="alignnone size-full wp-image-135" /></p>
<p>Com o impedimento resolvido, é importante guardá-lo em um espaço reservado, para analisar qual a raiz daquele problema e o que deve ser feito para que não ocorra novamente. Na prática, qualquer informação que passar pelo quadro serve como pauta para a Reunião de Retrospectiva de Sprint.</p>
<p>Eis um exemplo de um Kanban com problemas:</p>
<p><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/02/kanban11.jpg" alt="kanban11" title="kanban11" width="421" height="273" class="alignnone size-full wp-image-135" /></p>
<p>Os problemas que podemos identificar:</p>
<ul>
<li>Muitas histórias em andamento, gerando desperdícios;</li>
<li>Muitas histórias em publicação, gerando atraso e acúmulo de trabalho;</li>
<li>Nenhuma história foi finalizada ainda, apesar de todo o trabalho em andamento;</li>
<li>Muitas atividades off-sprint, o que indica que a equipe está ocupada com atividades gerais (chamados, correções de bugs em produção etc);</li>
<li>Muitos impedimentos - O que fazer para evitá-los?</li>
<li>Histórias canceladas - Por que foram canceladas? Por que eram prioritárias antes? Como fazer para evitar essa situação? Como fazer para identificar histórias que deveriam ter sido canceladas e acabaram sendo implementadas, gerando desperdícios e complexidade?</li>
</ul>
<p>Por fim, o quadro de Kanban pode ser usado para diversas outras informações que a equipe achar relevante:</p>
<p><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/02/kanban12.jpg" alt="kanban12" title="kanban12" width="421" height="273" class="alignnone size-full wp-image-135" /></p>
<p>Estamos implantando essas ideias em diversas equipes na Locaweb, e o resultado tem sido excelente. Em um próximo post daremos algumas dicas do que andamos observando. Até lá!</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/02/26/kanban/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Apresentação sobre metodologias ágeis</title>
		<link>http://agilblog.locaweb.com.br/2009/02/25/apresentacao-sobre-metodologias-ageis/</link>
		<comments>http://agilblog.locaweb.com.br/2009/02/25/apresentacao-sobre-metodologias-ageis/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 14:49:34 +0000</pubDate>
		<dc:creator>Joca</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=166</guid>
		<description><![CDATA[Apresentação interessante sobre métodologias ágeis. Pode ser útil quando você precisar apresentar o tema em algum lugar:
The Zen of Scrum 1.0
View more presentations from Jurgen Appelo. (tags: projectmanagement development)

]]></description>
			<content:encoded><![CDATA[<p>Apresentação interessante sobre métodologias ágeis. Pode ser útil quando você precisar apresentar o tema em algum lugar:</p>
<div style="width:425px;text-align:left" id="__ss_1055377"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/jurgenappelo/the-zen-of-scrum-10?type=powerpoint" title="The Zen of Scrum 1.0">The Zen of Scrum 1.0</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=TheZenofScrum1-090221154550-phpapp01&#038;rel=0&#038;stripped_title=the-zen-of-scrum-10" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=TheZenofScrum1-090221154550-phpapp01&#038;rel=0&#038;stripped_title=the-zen-of-scrum-10" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/jurgenappelo">Jurgen Appelo</a>. (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/projectmanagement">projectmanagement</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/development">development</a>)</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/02/25/apresentacao-sobre-metodologias-ageis/feed/</wfw:commentRss>
		</item>
		<item>
		<title>2o. Locaweb Tech Day</title>
		<link>http://agilblog.locaweb.com.br/2009/02/17/2o-locaweb-tech-day/</link>
		<comments>http://agilblog.locaweb.com.br/2009/02/17/2o-locaweb-tech-day/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 20:02:28 +0000</pubDate>
		<dc:creator>Adolfo Sousa</dc:creator>
		
		<category><![CDATA[Eventos]]></category>

		<category><![CDATA[Testes]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=141</guid>
		<description><![CDATA[Imagine-se trabalhando em uma empresa dinâmica, formada por equipes autonômas, responsáveis por produtos diferentes, e trabalhando com tecnologias diversas. Em um cenário como este, exercitar a comunicação é fundamental. Sabendo disto, realizamos há duas semanas o 2o. Locaweb Tech Day.
Além de um espaço em que as equipes podem trocar experiências e apresentar as suas soluções [...]]]></description>
			<content:encoded><![CDATA[<p>Imagine-se trabalhando em uma empresa dinâmica, formada por equipes autonômas, responsáveis por produtos diferentes, e trabalhando com tecnologias diversas. Em um cenário como este, exercitar a comunicação é fundamental. Sabendo disto, realizamos há duas semanas o 2o. Locaweb Tech Day.<br />
Além de um espaço em que as equipes podem trocar experiências e apresentar as suas soluções criativas, o evento é também útil para nos colocar em contato com novas tecnologias, técnicas, ferramentas e, sobretudo, com outros profissionais. Neste segundo encontro, tínhamos um tema: <strong>TESTES </strong>e também alguns palestrantes convidados. Segue um breve resumo do que aconteceu naquele 04/02/2009:</p>
<ul>
<li> <a href="http://www.ime.usp.br/~kon/" target="_blank">Fábio Kon</a>, professor do IME/USP, e Paulo Cheque, da <a href="http://www.agilcoop.org.br/" target="_blank">AgilCoop</a>, fizeram uma palestra introdutória falando um pouco da história, tipos e técnicas de testes. Ficou evidente a importância que estes dois profissionais dão a este assunto, por acreditarem que escrever e automatizar testes são aliados da qualidade. Destaque para a iniciativa (divulgada pelo Fábio Kon) de formação do <a href="http://ccsl.ime.usp.br/" target="_blank">Centro de Competência em Software Livre</a> pela USP.</li>
<li>Ricardo Lemke falou sobre os diversos tipos de testes. Foi uma palestra muito importante por detalhar tipos pouco conhecidos, distingüi-los e desfazer alguns enganos conceituais.</li>
<li><a href="http://codeache.blogspot.com/" target="_blank">Hugo Corbocci</a>, também da <a href="http://www.agilcoop.org.br/" target="_blank">AgilCoop</a>, fez uma palestra prática a respeito de BDD (Behaviour Driven Development). Hugo observou o comportamento do Registro de Domínio no site da Locaweb e reimplementou esta funcionalidade utilizando o famoso framework RSpec. Um detalhe interessante da palestra é que ela foi realizada no formato de um Dojo Kata, e todos nós pudemos ver, passo a passo, que é possível escrever testes desde a camada de apresentação e como as técnicas de &#8220;test first&#8221;, &#8220;baby steps&#8221; e design incremental contribuem para a modelagem e construção de uma aplicação bem testada e com código limpo.</li>
<li>Depois do almoço, <a href="http://www.adolfosousa.com.br/blog/" target="_blank">eu</a> moderei uma sessão de Dojo, agora no estilo Randori. O objetivo era incentivar a participação nas duas sessões semanais que estamos organizando há cerca de 2 meses aqui na Locaweb. Escolhemos um problema e programamos em turnos de 7 minutos, entrecortados por interessantes discussões a respeito de design e TDD.</li>
<li>Maurício De Diana fez a palestra entitulada &#8220;Lidando com Sistemas Legados&#8221;. Foi interessante ouvir a respeito das técnicas e boas práticas recomendadas para aqueles que precisam lidar com sistemas já em funcionamento.</li>
<li><a href="http://agileandart.blogspot.com/" target="_blank">Daniel Cukier</a> falou sobre injeção de dependências e testes com dublês. É impressionante perceber como muitas vezes confundimos mocks com stubs ou não utilizamos a técnica correta para cada tipo de teste.</li>
<li>E para finalizar o evento, tivemos outra apresentação do Maurício De Diana, desta vez falando a respeito de boas práticas de design. Toda vez que discutimos conceitos como SRP (Single Responsability Principle), OCP (Open-Closed Principle), etc aprendemos ou pensamos em alguma coisa nova a respeito de design de software.</li>
</ul>
<p style="text-align: center;"><a href="http://farm4.static.flickr.com/3460/3257285015_7ea65fa35a_o.jpg"><img class="aligncenter" src="http://farm4.static.flickr.com/3460/3257285015_8b28910210.jpg?v=0" alt="" width="500" height="333" /></a></p>
<p>Se quiser ver mais fotos do nosso evento, fique à vontade para <a href="http://www.flickr.com/photos/locaweb/sets/72157613398275949/" target="_blank">nos visitar no Flickr</a>.</p>
<p>E vocês, o que fazem para compartilhar conhecimento e melhorar a comunicação das suas equipes?</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/02/17/2o-locaweb-tech-day/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Deploy contínuo</title>
		<link>http://agilblog.locaweb.com.br/2009/02/14/deploy-continuo/</link>
		<comments>http://agilblog.locaweb.com.br/2009/02/14/deploy-continuo/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 22:28:26 +0000</pubDate>
		<dc:creator>Joca</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=144</guid>
		<description><![CDATA[Texto muito interessante sobre “deploy contínuo”. Seria o próximo passo depois de se alcançar a “integração contínua”.
http://startuplessonslearned.blogspot.com/2009/02/continuous-deployment-and-continuous.html
A idéia é bem simples (o destaque é meu):

The high level of our process is dead simple: Continuously integrate (commit early and often). On commit automatically run all tests. If the tests pass deploy to the cluster. If the [...]]]></description>
			<content:encoded><![CDATA[<p>Texto muito interessante sobre “deploy contínuo”. Seria o próximo passo depois de se alcançar a “integração contínua”.</p>
<p><a href="http://startuplessonslearned.blogspot.com/2009/02/continuous-deployment-and-continuous.html">http://startuplessonslearned.blogspot.com/2009/02/continuous-deployment-and-continuous.html</a></p>
<p>A idéia é bem simples (o <font color=#cc0000><strong>destaque</strong></font> é meu):</p>
<blockquote><p>
The high level of our process is dead simple: Continuously integrate (commit early and often). On commit automatically run all tests. If the tests pass deploy to the cluster. If the deploy succeeds, repeat.</p>
<p>Our tests suite takes nine minutes to run (distributed across 30-40 machines). Our code pushes take another six minutes. Since these two steps are pipelined that means at peak we’re pushing a new revision of the code to the website every nine minutes. That’s 6 deploys an hour. Even at that pace we’re often batching multiple commits into a single test/push cycle. <font color=#cc0000><strong>On average we deploy new code fifty times a day.</strong></font></p>
<p>We call this process continuous deployment because it seemed to us like a natural extension of the continuous integration we were already doing. Our eventual conclusion was that there was no reason to have code that had passed the integration step but was not yet deployed.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/02/14/deploy-continuo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Próximos Passos do Mundo Ágil</title>
		<link>http://agilblog.locaweb.com.br/2009/01/28/proximos_passos_agei/</link>
		<comments>http://agilblog.locaweb.com.br/2009/01/28/proximos_passos_agei/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 18:22:04 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<category><![CDATA[Introdução]]></category>

		<category><![CDATA[Lean Software Development]]></category>

		<category><![CDATA[QCON]]></category>

		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[Sem Categoria]]></category>

		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=108</guid>
		<description><![CDATA[No ano passado vimos o movimento ágil crescer e se alastrar por todo país. Muita gente tomou contato pela primeira vez com Scrum, XP, Lean. Vamos recapitular tudo que aconteceu e fazer uma breve reflexão sobre o que vem por aí no mundo ágil.
O Passado
No final de 2006, a equipe que desenvolve o Pabx Virtual [...]]]></description>
			<content:encoded><![CDATA[<p>No ano passado vimos o movimento ágil crescer e se alastrar por todo país. Muita gente tomou contato pela primeira vez com Scrum, XP, Lean. Vamos recapitular tudo que aconteceu e fazer uma breve reflexão sobre o que vem por aí no mundo ágil.</p>
<h3>O Passado</h3>
<p>No final de 2006, a equipe que desenvolve o <a href="http://www.locaweb.com.br/pabx">Pabx Virtual</a> começou a usar Programação Extrema como metodologia de desenvolvimento. Por ser uma equipe pequena, nova e independente das outras, todas as práticas da metodologia puderam ser adotadas gradualmente e o produto foi um sucesso.</p>
<p>Em agosto de 2007, a Locaweb resolveu estender as práticas ágeis para todas as equipes de desenvolvimento e promoveu um treinamento para todos os 80 programadores da época. A partir daí todos adotaram Scrum. Depois de 6 meses de adoção, já pôde ser percebida o aumento de produtividade da nossa área de tecnologia.</p>
<p>Em maio de 2008 o <a href="http://agilblog.locaweb.com.br/2008/05/05/o-que-sao/">Joca inaugurou o blog ágil</a> com o objetivo de compartilhar nossa experiência com todos os clientes. Escrevemos vários posts no ano de 2008, muitos deles introdutórios e básicos:</p>
<ul>
<li><a href="http://agilblog.locaweb.com.br/2008/05/12/como-tudo-comecou/">Como tudo começou</a> - uma pequena introdução aos primórdios dos M.A.</li>
<li><a href="http://agilblog.locaweb.com.br/2008/05/23/scrum-entidades-do-scrum/">Scrum</a> - os primeiros ensinamentos sobre a metodologia que virou moda em 2008.</li>
<li><a href="http://agilblog.locaweb.com.br/2008/05/29/historias-de-usuario/">Histórias de Usuários</a>, <a href="http://agilblog.locaweb.com.br/2008/06/13/escrevendo-boas-historias-de-usuario/">como escrevê-las</a> de <a href="http://agilblog.locaweb.com.br/2008/10/29/historias-de-usuario-in-order-to-as-a-i-want/">várias maneiras.</a></li>
<li>Fizemos WebCasts sobre <a href="http://agilblog.locaweb.com.br/2008/05/29/historias-de-usuario/" target="_blank">Métodos Ágeis, Scrum</a> e <a href="http://agilblog.locaweb.com.br/2008/05/29/historias-de-usuario/">XP.</a></li>
<li>Falamos das <a href="http://agilblog.locaweb.com.br/2008/06/20/programacao-extrema-extreme-programming-ou-simplesmente-xp/">práticas de XP</a>, <a href="http://agilblog.locaweb.com.br/2008/07/15/refatoracao-pratica-para-manter-qualidade/">refatoração.</a></li>
<li>Como <a href="http://agilblog.locaweb.com.br/2008/06/28/estimativas-ageis/">estimar de forma ágil</a>, <a href="http://agilblog.locaweb.com.br/2008/08/01/estimar-jogando/">estimar jogando</a> e <a href="http://agilblog.locaweb.com.br/2008/07/25/mudancas-de-sprint/">acompanhar os resultados do sprint.</a></li>
</ul>
<p>No meio do ano de 2008, por volta de agosto, percebemos que nosso público já havia entendido os princípios dos Métodos Ágeis e começamos a abordar temas mais avançados. Participamos da conferência internacional Agile 2008 e resumimos os <a href="http://agilblog.locaweb.com.br/2008/08/21/agile-2008/">melhores momentos</a>. Além desse evento, o final do ano foi marcado por uma maratona de encontros da comunidade ágil.</p>
<p>Em outubro tivemos o <a href="http://www.encontroagil.com.br/principal/home.jsf">Encontro Ágil</a>, promovido pela <a href="http://www.agilcoop.org.br">Agilcoop</a> da USP.<img class="alignright size-medium wp-image-116" style="margin-left: 7px; margin-right: 7px;" title="Encontro Ágil 2008" src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/01/img_6923-300x200.jpg" alt="Encontro Ágil 2008" width="300" height="200" /> Foi um evento de muita qualidade, principalmente pelos debates e discussões, com nomes importantes como <a href="http://www.ime.usp.br/~kon">Fabio Kon</a>, Dairton Bassi Juan Bernabó. No mesmo mês ainda tivemos o <a href="http://www.locaweb.com.br/railssummit/" target="_blank">Rails Summit Latin America</a> promovido pela Locaweb, com vários membros da comunidade rails e ágil internacional, como Chad Fowler, <a href="http://www.akitaonrails.com/" target="_blank">Fábio Akita</a>, <a href="http://www.dtsato.com/blog/" target="_blank">Danilo Sato</a>, Fábio Kung. E no final de outubro ainda tivemos o <a href="http://www.caelum.com.br/falando-em-agile/" target="_blank">Falando em Agile</a>, organizado pela Caelum, onde <a href="http://agileandart.blogspot.com">Daniel Cukier</a> fez uma palestra contando das técnicas que usou para ajudar a introduzir métodos ágeis na Locaweb. Foi realmente uma maratona, mas valeu muito a pena, não só para aprimorar os conhecimentos em assuntos Ágeis, como para conhecer melhor quem são as pessoas que estão fazendo a diferença em matéria de desenvolvimento de software, no Brasil e no mundo.</p>
<p>Mais para o final do ano começamos a falar de Lean, introduzindo alguns conceitos como <a href="http://agilblog.locaweb.com.br/2008/08/14/xp-e-a-teoria-das-restricoes/">Teoria das Restrições</a>, <a href="http://agilblog.locaweb.com.br/2008/10/26/investimento-em-opcoes/">Investimento em Opções</a>, e voltamos ao XP falando de <a href="http://agilblog.locaweb.com.br/2008/10/20/por-que-pareamento-e-no-minimo-tao-produtivo-quanto-trabalhar-sozinho/">pareamento</a> e tópicos de como integrar <a href="http://agilblog.locaweb.com.br/2008/12/26/ux-agil/">Ágil com UX</a>.</p>
<p>A adoção de Métodos Ágeis na Locaweb não foi feita do dia para a noite e o processo foi demorado e muito suado. Para conseguir convencer as pessoas de que Ágil era uma boa idéia, usamos <a href="http://agilblog.locaweb.com.br/2008/11/04/como-convencer-a-adotarem-sua-ideia/">Padrões para Introduzir Novas Idéias</a>. Apresentamos alguns padrões para que nossos leitores pudessem usá-los e facilitar a adoção de Ágil em suas empresas.</p>
<p><img class="alignleft size-medium wp-image-118" style="margin-left: 10px; margin-right: 10px;" title="qcon" src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/01/qcon-300x200.jpg" alt="qcon" width="300" height="200" />Em novembro, participamos da <a href="http://agilblog.locaweb.com.br/2008/11/18/locaweb-na-qcon-sao-francisco-2008/">QCON</a> em <a href="http://picasaweb.google.com/danicuki/QCONSF2008#">São Francisco</a>, uma das maiores e melhores conferências de software do mundo. Fizemos alguns artigos sobre o evento:</p>
<ul>
<li><a href="http://agilblog.locaweb.com.br/2008/11/20/behaviour-driven-design-bdd/">BDD Behaviour Driven Design com Dan North</a></li>
<li><a href="http://agilblog.locaweb.com.br/2008/11/21/qcon-agilists-and-architects-allies-not-adversaries/">Agilistas e Arquitetos: aliados, não adversários</a></li>
<li><a href="http://agilblog.locaweb.com.br/2008/11/21/qcon-how-to-build-any-team-any-time/">Como montar um time a qualquer hora</a></li>
<li><a href="http://agilblog.locaweb.com.br/2008/11/28/qcon-radical-simplification-through-polyglot-and-poly-paradigm-programming/">Programação poliglota e multi-paradigmas</a></li>
</ul>
<p>Em dezembro iniciamos uma série de vídeos sobre vários assuntos ágeis como<a href="Integração Contínua"> Integração Contínua</a>, <a href="http://agilblog.locaweb.com.br/2008/12/04/refatoracao-refactoring-videos/">Refatoração</a>, e <a href="http://agilblog.locaweb.com.br/2008/12/08/padroes-para-introduzir-novas-ideias-videos/">Padrões para Introduzir Novas Idéias</a> e terminamos o ano com um post sobre<a href="http://agilblog.locaweb.com.br/2008/12/08/systemantics-ou-a-biblia-dos-sistemas/"> bíblia dos sistemas</a>, outro sobre o <a href="http://agilblog.locaweb.com.br/2008/12/17/ag2-tambem-usa-metodologias-ageis-de-desenvolvimento/">case AG2</a> e mais outro sobre a <a href="http://agilblog.locaweb.com.br/2008/12/24/analise-de-causa-raiz/">análise da causa raíz</a>.</p>
<h3>O Futuro</h3>
<p>Apesar de termos caminhado bastante, sabemos que desenvolver software é um processo de melhoria contínua. Isso significa que sempre teremos coisas novas para aprender. Enquanto os Métodos Ágeis estavam restritos ao pequeno grupo que criou as metodologias, era fácil manter os conceitos claros e bem entendidos por todos. Na medida em que mais e mais gente começa a tomar conhecimento do assunto, bifurcações começam a acontecer e algumas vezes as pessoas acabam esquecendo dos princípios. É muito possível que hoje já exista gente dizendo que é ágil, mas que não segue o Manifesto Ágil.</p>
<p><img class="alignright size-full wp-image-119" style="margin-left: 10px; margin-right: 10px;" title="futuro" src="http://agilblog.locaweb.com.br/wp-content/uploads/2009/01/futuro.jpg" alt="futuro" width="239" height="358" />Se formos pensar em todo universo de desenvolvedores de software, ainda tem muita gente que nunca ouviu falar de XP ou Scrum. Talvez alguns estejam mais antenado, quem lê blogs, quem acompanha a InfoQ, essas pessoas como você, que são uma minoria. Temos que lembrar que temos uma massa de programadores que ainda seguem os métodos antigos ou não seguem método nenhum. São pessoas que não tiveram acesso ao conhecimento e nosso papel é ajudá-los.</p>
<p>Vamos contar nossas experiências, nossos casos de sucesso, nossos casos de fracasso. Vamos ensinar à massa como se desenvolve software de qualidade, como se elimina desperdício, como se garante um custo de manutenção baixo e constante ao longo do tempo.</p>
<p>Vamos lembrar que <strong>pessoas e as interações</strong> entre elas são mais importantes que processos e ferramentas. Isso significa que, não é a linguagem de programação que você usa, o sistema operacional que você gosta, NÃO é isso que MAIS importa. Vamos valorizar as pessoas, fazer com que elas interajam de forma saudável, que trabalhem bem e em paz. Que sejam produtivas, mas que sejam felizes também e se divirtam, que possam crescer profissionalmente. Quem defende a bandeira ágil, defende o interesse das pessoas, todas elas em harmonia: os clientes, os programadores, os gerentes, os designers, os times operacionais e de suporte e todos que fazem parte de um grupo de pessoas interessadas em criar e usar bons produtos de software.</p>
<p>O próximo ano será não só de muitos desafios, mas também de oportunidades. A crise do ano passado serviu para avaliarmos nossa posição. Fizemos a reflexão. O que foi ruim e precisamos melhorar? O que foi bom e desejamos manter? Agora que a reflexão foi feita é hora de agir. Tem muito software para ser escrito e muito legado para receber manutenção e melhoria. Vamos escrever muitos <strong>testes</strong> automatizados, vamos continuar <strong>refatorando</strong> nosso código antigo, continuar fazendo nossos <strong>planejamentos</strong> cíclicos, <strong>entregando antes</strong> o que é mais importante, entregando com qualidade e de forma <strong>incremental</strong>, trabalhando juntos e <strong>pareados</strong>, ao lado do cliente.</p>
<p>Por último, vamos lembrar da verdade sobre a qual os Métodos Ágeis se baseiam: <strong>MUDANÇA</strong>! Tudo está o tempo todo mudando, <a href="http://en.wikipedia.org/wiki/Impermanence">nada é permanente</a>. Ser ágil é se adaptar o mais rápido possível às mudanças. Kent Beck já disse isso desde o título do primeiro livro de XP (Embrace Change). Com certeza em 2009 teremos muitas mudanças e se somos realmente ágeis, vamos saber lidar com todas elas de forma positiva. Que esse ano seja cheio de agilidade, mudanças e sucessos para todos!</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/01/28/proximos_passos_agei/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Becoming a Great Scrum Product Owner</title>
		<link>http://agilblog.locaweb.com.br/2009/01/16/becoming-a-great-scrum-product-owner/</link>
		<comments>http://agilblog.locaweb.com.br/2009/01/16/becoming-a-great-scrum-product-owner/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 13:25:59 +0000</pubDate>
		<dc:creator>Adolfo Sousa</dc:creator>
		
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=106</guid>
		<description><![CDATA[É bem provável que aqueles que se interessam por metodologias ágeis de desenvolvimento já leram (ou ao menos ouviram falar) do livro Scrum &#38; XP from the Trenches. Ele é um excelente relato da experiência prática de Henrik Kniberg com estas duas metodologias. Inspirado pela idéia de Henrik, Bob Galen disponibilizou um &#8220;rascunho&#8221; do seu [...]]]></description>
			<content:encoded><![CDATA[<p>É bem provável que aqueles que se interessam por metodologias ágeis de desenvolvimento já leram (ou ao menos ouviram falar) do livro <a href="http://www.infoq.com/minibooks/scrum-xp-from-the-trenches" target="_blank">Scrum &amp; XP from the Trenches</a>. Ele é um excelente relato da experiência prática de Henrik Kniberg com estas duas metodologias. Inspirado pela idéia de Henrik, Bob Galen disponibilizou um &#8220;rascunho&#8221; do seu livro Becoming a Great Scrum Product Owner.</p>
<p>Mais uma fonte para quem se interessa pelo papel de PO do Scrum e sente falta de referências na literatura especializada. Aproveitem!</p>
<p><a title="Becoming a Great Scrum Product Owner" href="http://www.rgalen.com/publications.html" target="_blank">http://www.rgalen.com/publications.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2009/01/16/becoming-a-great-scrum-product-owner/feed/</wfw:commentRss>
		</item>
		<item>
		<title>UX ágil</title>
		<link>http://agilblog.locaweb.com.br/2008/12/26/ux-agil/</link>
		<comments>http://agilblog.locaweb.com.br/2008/12/26/ux-agil/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 16:22:30 +0000</pubDate>
		<dc:creator>Joca</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<category><![CDATA[Testes]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=99</guid>
		<description><![CDATA[Recentemente li dois posts sobre como &#8220;encaixar&#8221; UX em times que estão usando metodologias ágeis. Um deles é o &#8220;Agile UX: Como trabalhar com os designers&#8221; do Guilherme Chapiewski que trabalha na Globo.com. O outro é o &#8220;Agile UX: como integrar UX e desenvolvimento&#8221; do Antonio Carlos Silveira do Yahoo! Brasil.
Como o próprio Antonio apontou [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente li dois posts sobre como &#8220;encaixar&#8221; UX em times que estão usando metodologias ágeis. Um deles é o &#8220;<a href=http://gc.blog.br/2008/12/19/como-trabalhar-com-os-designers/>Agile UX: Como trabalhar com os designers</a>&#8221; do Guilherme Chapiewski que trabalha na Globo.com. O outro é o &#8220;<a href="http://www.acarlos.com.br/blog/2008/12/agile-ux-como-integrar-ux-e-desenvolvimento">Agile UX: como integrar UX e desenvolvimento</a>&#8221; do Antonio Carlos Silveira do Yahoo! Brasil.</p>
<p>Como o próprio Antonio apontou bem, essa preocupação sobre como integrar UX em um time de desenvolvimento de software que segue alguma metodologia ágil existe desde o início das metodologias ágeis. Alguns posts sobre o tema:</p>
<ul>
<li><a href="http://www.useit.com/alertbox/agile-methods.html">Agile Development Projects and Usability</a>: Jakob Nielsen descreve maneiras de garantir que a qualidade da usabilidade não seja ameaçada pela adoção de metodologias ágeis.</li>
<li><a href="http://www.svpg.com/resources/Agile/Process.html">Agile / Scrum Product Development Process</a>: Marty Cagan propõe uma forma de integrar UX e Scrum.</li>
<li><a href="http://web.archive.org/web/20070313205440/www.fawcette.com/interviews/beck_cooper">Extreme Programming vs. Interaction Design</a>: Entrevista com Kent Beck e Alan Cooper sobre design de interação e XP. Nessa entrevista, chamada por alguns de &#8220;duelo de titãs&#8221;, Beck defende o desenvolvimento do design de interação de forma incremental, enquanto Cooper defende que o desenvolvimento de software não deve começar antes de todo o trabalho de design de interação ser concluído.</li>
<li><a href="http://uxagile.com">UX Agile</a>: um blog totalmente dedicado à questão de integrar UX aos times de desenvolvimento que usam metodologias ágeis.</li>
</ul>
<p>Aliás a <a href="http://www.google.com.br/search?hl=pt-BR&amp;q=agile+ux">busca por Agile UX no Google</a> retorna muitas e muitas páginas dedicadas ao tema.</p>
<p>Um exemplo interessante é a apresentação abaixo, da Leisa Reichert que ela apresentou na <a href="http://www.web2expo.com/webexberlin2008">Web 2.0 Expo Berlin</a>:</p>
<div id="__ss_163209" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Agile Development, Agile Design - Web 2.0 Expo Berlin" href="http://www.slideshare.net/leisa/agile-development-agile-design-web-20-expo-berlin?type=powerpoint">Agile Development, Agile Design - Web 2.0 Expo Berlin</a><object width="425" height="355" data="http://static.slideshare.net/swf/ssplayer2.swf?doc=agile-development-agile-design-web-20-expo-berlin-1194869817755865-5&amp;rel=0&amp;stripped_title=agile-development-agile-design-web-20-expo-berlin" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=agile-development-agile-design-web-20-expo-berlin-1194869817755865-5&amp;rel=0&amp;stripped_title=agile-development-agile-design-web-20-expo-berlin" /><param name="allowfullscreen" value="true" /></object></p>
<div style="font-size: 11px; padding-top: 2px; font-family: tahoma,arial; height: 26px;">View SlideShare <a style="text-decoration:underline;" title="View Agile Development, Agile Design - Web 2.0 Expo Berlin on SlideShare" href="http://www.slideshare.net/leisa/agile-development-agile-design-web-20-expo-berlin?type=powerpoint">presentation</a> or <a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=powerpoint">Upload</a> your own. (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/web20expoberlin">web20expoberlin</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/web20expo">web20expo</a>)</div>
</div>
<p>Sem dúvida há várias maneiras de se integrar UX e metodologias ágeis e o correto é escolher a maneira que se adapta melhor à sua situação e disponibilidade de recursos (tempo, dinheiro e pessoas).</p>
<p>Contudo, queria adicionar meus 2 centavos a essa conversa. Apesar de ser importante termos especialistas em UX, pessoas que conheçam a fundo sobre arquitetura da informação, design de interação, design visual e todos os temas relacionados à experiência do usuário, acredito que UX deve ser uma preocupação de todas as pessoas do time. Não há razão alguma para o PO e os membros do time não se preocuparem com o tema e deixarem tudo nas mãos de um especialista. E se esse especialista um dia não estiver disponível? Se ele estiver ocupado cuidando de outras coisas? Ou mesmo se não tivermos um especialista em UX no time?</p>
<p>Não estou querendo dizer que UX não é um tema complexo, que requer muito estudo e prática, mas acredito que todos nós devemos conhecer os conceitos básicos de UX.</p>
<p>Vou citar duas situações exemplo que ilustram bem a importância de todo o time se preocupar com UX:</p>
<ol>
<li><strong>Feedback</strong>: imagine que você tem em sua aplicação uma determinada função que não é executada na hora e que pode levar até 2 horas para acontecer. Na interface você implementa o comendo que executa essa função só que não informa o prazo. O usuário certamente vai se perguntar o que aconteceu, se a função foi de fato executada. Um solução é avisá-lo desse prazo logo após o comando ser invocado. O ideal é avisar antes mesmo de ele invocar o comando que executa a função.</li>
<li><strong>Opções</strong>: imagine que você está desenvolvendo um formulário de pagamento com opções de pagamento por cartão de crédito. Você recebe o protótipo com um <em>select</em> que permite escolher entre Amex, VISA e Mastercard. Você implementa esse protótipo. Na hora de colocar em produção você recebe a informação de que inicialmente o sistema só irá aceitar Mastercard. Você edita o <em>select</em> e remove as outras opções. A sua interface vai ficar com um <em>select</em> de uma opção só! O correto aqui seria remover o <em>select</em> enquanto houver uma opção só.</li>
</ol>
<p>Ou seja, não é necessário ser um especialista em UX para ajudar no desenvolvimento e melhoria de UX dos sistemas que seu time cuida. Leia, estude, informe-se, afinal conhecimento nunca é em excesso!</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/12/26/ux-agil/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Análise de causa raiz</title>
		<link>http://agilblog.locaweb.com.br/2008/12/24/analise-de-causa-raiz/</link>
		<comments>http://agilblog.locaweb.com.br/2008/12/24/analise-de-causa-raiz/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 16:08:04 +0000</pubDate>
		<dc:creator>Mauricio De Diana</dc:creator>
		
		<category><![CDATA[XP]]></category>

		<category><![CDATA[extreme programming]]></category>

		<category><![CDATA[incidentes]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=98</guid>
		<description><![CDATA[
XP tem uma meia dúzia de práticas raramente lembradas. Uma das mais interessantes e mais esquecidas é a análise de causa raiz.
A análise de causa raiz tem por objetivo encontrar e ajudar a atacar a verdadeira causa de um problema, e não seu efeito. Quando não se resolve um problema na raiz a tendência é [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://lh4.ggpht.com/_t3QKIVOmzys/SD9xlOMstoI/AAAAAAAAAHM/-FB4AKVK-tc/s720/IMG_0666.JPG " alt="Raízes" /></p>
<p>XP tem uma meia dúzia de práticas raramente lembradas. Uma das mais interessantes e mais esquecidas é a <a href="http://en.wikipedia.org/wiki/Root_cause_analysis">análise de causa raiz</a>.</p>
<p>A análise de causa raiz tem por objetivo encontrar e ajudar a atacar a verdadeira causa de um problema, e não seu efeito. Quando não se resolve um problema na raiz a tendência é que outros efeitos semelhantes (ou o mesmo) apareçam no futuro. São raras as vezes em que ao &#8220;apagar um incêndio&#8221; resolvemos a causa raiz do problema.</p>
<p>Por exemplo, imagine que sua empresa definiu que toda comunicação via webservice deve ser feita com encoding UTF-8. Agora imagine que você escreveu uma aplicação que usa um webservice específico, mas ao testá-la você percebe que a comunicação falha pois o encoding das respostas devolvidas pelo webservice é ISO-8859-1. Você pode simplesmente mudar o seu código para que ele use o mesmo encoding e passe a se comunicar com o webservice. Mas essa medida não resolve a raiz do problema, que é o fato de o webservice ter quebrado o padrão definido. É ele que deveria ter sido alterado.</p>
<p>Nesse momento percebe-se a importância de resolver a causa raiz dos problemas. Imagine agora que você adote a opção de mudar o seu cliente. Algumas semanas depois alguém precisa consumir o mesmo serviço e também ignora o padrão definido pela empresa e também adapta seu código para usar ISO-8859-1. E se depois de algum tempo aparecer mais alguém precisando chamar esse webservice, e reclamar que ele está fora do padrão? Pode ser que a raiz seja ignorada mais uma vez e digam para o programador que agora é tarde, já há clientes consumindo o webservice e portanto ele não pode mais ser alterado. Ou então é criada uma segunda versão com o encoding correto, mas agora há duas versões a serem mantidas. Pior ainda se o consumidor em questão também for um webservice que, ao se adaptar ao encoding errado, propaga para seus clientes a quebra de padrão.</p>
<p>É fácil perceber, mesmo através de um exemplo simples como esse, como a análise de causa raiz pode facilitar a manutenção de sistemas. E quando se pensa em situações menos óbvias, essa análise passa a ser ainda mais poderosa, chegando a indicar problemas organizacionais que vão além do desenvolvimento de software. O livro Extreme Programming Explained apresenta um bom exemplo disso:</p>
<ol>
<li>Por que não notamos esse defeito? - Porque não sabíamos que o balanço poderia se tornar negativo de um dia para o outro.</li>
<li>Por que não sabíamos? - Porque só a senhora Crosby sabe e ela não é parte da equipe.</li>
<li>Por que ela não é parte da equipe? - Porque ela ainda dá suporte ao sistema velho e não tem mais ninguém que possa fazer isso.</li>
<li>Por que mais ninguém sabe? - Porque não é uma prioridade da gerência ensinar ninguém.</li>
<li>Por que não é prioridade da gerência? - Porque eles não perceberam que um investimento de $20.000 poderia ter nos economizado $500.000.</li>
</ol>
<p>A técnica de análise de raiz usada acima é uma das mais simples e mais comuns, criada por Taiichi Ono da Toyota e conhecida como os <a href="http://en.wikipedia.org/wiki/5_Whys">5 Porquês</a>. Ela consiste basicamente em se perguntar &#8220;por que&#8221; recursivamente 5 vezes para se atingir a causa. Nada impede que se mais (ou menos) do que 5 perguntas sejam feitas, o número 5 vem da observação de Ono de que esse número costuma ser suficiente para se chegar a causa raiz.</p>
<p>Alguns criticam essa técnica, acusando-a de ser simplista. Existem diversos <a href="http://en.wikipedia.org/wiki/Root_cause_analysis#Root_cause_analysis_techniques">modelos mais complexos</a>, mas para a maioria dos casos em que se está procurando a causa de um bug, por exemplo, ela é mais do que suficiente.</p>
<p>E já que o assunto é software especificamente, vale comentar o processo de correção de bugs apresentado no mesmo Extreme Programming Explained:</p>
<ol>
<li>Escreva um teste de aceitação automatizado que reproduza o problema, e que demonstre qual o comportamento esperado.</li>
<li>Escreva um teste unitário que reproduza o problema.</li>
<li>Conserte o código de forma que o teste unitário passe. O teste de aceitação também deve passar se o problema foi arrumado. Caso isso não tenha acontecido, volte para 2.</li>
<li>Assim que o problema for arrumado, faça a análise de raiz para descobrir porque ele aconteceu e não foi percebido antes.</li>
</ol>
<p>O processo acima apresenta uma sutileza que vale ser comentada: a análise de causa raiz ocorre depois que o bug foi consertado. Isso significa que não é necessário se conhecer a raiz para se consertar o bug? Na maioria das vezes não. A análise de causa raiz busca entender porque o bug ocorreu, e não qual a sua causa técnica necessariamente. E isso faz bastante sentido, em especial quando o bug está atrapalhando o uso do sistema em produção, ou seja, há alguma pressa em fazer com que as coisas voltem a funcionar como deveriam. Consertar o bug e resolver o problema na raiz são coisas diferentes. Em inglês, usa-se o termo <em>fix</em> para indicar a solução superficial ou emergencial do problema e o termo <em>resolve</em> para indicar a solução na raiz.</p>
<p>Vale notar que a análise de raiz não é uma técnica exata. Os resultados podem ser diferentes dependendo de quem faz a investigação. Pode ser que alguém fazendo a análise citada acima concluísse que o problema não foi a falta de treinamento, mas sim a demora para se livrar do sistema antigo, que fez com que a senhora Crosby ficasse sobrecarregada. Nesses casos é interessante que a equipe fazendo a análise levante essas diferenças.</p>
<p>Por último, é importante deixar claro que nem sempre é possível resolver a causa raiz. Por exemplo, pode-se perceber que a causa dos problemas é a dependência do sistema de um fornecedor que não tem como ser substituído. Nesses casos o melhor a fazer é deixar essa causa raiz documentada, e tentar resolver o item anterior a ela na cadeia de causas.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/12/24/analise-de-causa-raiz/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AG2 também usa metodologias ágeis de desenvolvimento.</title>
		<link>http://agilblog.locaweb.com.br/2008/12/17/ag2-tambem-usa-metodologias-ageis-de-desenvolvimento/</link>
		<comments>http://agilblog.locaweb.com.br/2008/12/17/ag2-tambem-usa-metodologias-ageis-de-desenvolvimento/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 21:37:28 +0000</pubDate>
		<dc:creator>Joca</dc:creator>
		
		<category><![CDATA[Entrevistas]]></category>

		<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=94</guid>
		<description><![CDATA[A AG2 é uma agência digital com mais de 70 pessoas envolvidas em desenvolvimento. Recentemente ele resolveram adotar o Scrum e abaixo o Marcelo Bacchieri, responsável pela área de projetos da AG2, conta um pouco dessa experiência.

[LW] Você poderia nos contar o que é a AG2 e que tipo de desenvolvimento vocês fazem?
[AG2] A AG2 [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href=http://www.ag2.com.br>AG2</a> é uma agência digital com mais de 70 pessoas envolvidas em desenvolvimento. Recentemente ele resolveram adotar o Scrum e abaixo o Marcelo Bacchieri, responsável pela área de projetos da AG2, conta um pouco dessa experiência.</p>
<p><center><a href='http://agilblog.locaweb.com.br/wp-content/uploads/2008/12/5894.jpg'><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/12/5894-300x214.jpg" alt="" title="5894" width="300" height="214" class="alignnone size-medium wp-image-97" /></a></center></p>
<p><b>[LW]</b> Você poderia nos contar o que é a AG2 e que tipo de desenvolvimento vocês fazem?<br />
<b>[AG2]</b> A AG2 Agência de Inteligência Digital S.A. é uma agência digital de soluções completas para grandes corporações. Atuante em nível nacional, é líder de mercado na Região Sul e uma das 5 maiores do país. Suas linhas de serviços proporcionam um ciclo de atendimento completo, tendo capacidade de resposta às necessidades de toda a cadeia de valor do negócio. A AG2 suporta seus clientes na definição de opções estratégicas e tecnológicas, desenvolve sistemas web sob medida para as mais diversas aplicações, bem como ações de comunicação interativa, provendo ainda toda a gestão operacional da presença digital. Com mais de 150 colaboradores nas suas bases de São Paulo, Porto Alegre e Pelotas, a AG2 atende empresas como Embraer, Bradesco, General Motors, Grupo Silvio Santos, Bunge, C&#038;A e Vulcabras.</p>
<p><b>[LW]</b> Quantos desenvolvedores trabalham na AG2?<br />
<b>[AG2]</b> A AG2 conta com aproximadamente 30 colaboradores envolvidos diretamente no desenvolvimento de sistemas, como codificadores HTML, analistas de sistemas, DBAs, desenvolvedores .Net e analistas de testes e 40 nas disciplinas relacionadas a arquitetura de informação e interface, como analistas e projetistas de interface, diretores de arte, web designers, programadores Flash, além de profissionais de análise de negócios, criação e gerenciamento de projetos.</p>
<p><b>[LW]</b> Vocês decidiram usar Scrum recentemente. Quando foi isso e por que vocês decidiram seguir esse caminho?<br />
<b>[AG2]</b> Começamos a estudar Scrum pelo fato de ser mais uma metodologia de desenvolvimento de projetos, inicialmente mais em tom investigativo e para conhecer os conceitos do que efetivamente objetivando alterar nossos métodos. Durante o estudo notamos que vários aspectos dela poderiam se encaixar muito bem no que fazemos, agregando muito com relação a agilidade e velocidade de desenvolvimento que ela proporciona. Devido principalmente aos prazos sempre apertados que temos para desenvolver e o teor de alguns projetos começamos a fazer alguns testes em alguns projetos.</p>
<p><b>[LW]</b> Você utilizam só Scrum, ou usam outras metodologias também como o XP?<br />
<b>[AG2]</b> Apenas Scrum.</p>
<p><b>[LW]</b> Como foi a implementação do Scrum? Foi em toda a equipe de desenvolvimento ao mesmo tempo? E qual foi a receptividade? Todos gostaram ou houve alguma resistência?<br />
<b>[AG2]</b> Começamos a implementar o Scrum de forma bem &#8220;comportada&#8221;. Inicialmente montamos alguns workshops para apresentar a metodologia para a equipe e discutimos bastante os benefícios e os possíveis problemas que poderíamos enfrentar com esse nova metodologia. Uma vez conversado entre o time de desenvolvimento, observamos a possibilidade de aplicarmos Scrum em um projeto especifico e assim o fizemos. Ou seja, não saímos alterando nossos métodos e  processos do dia para a noite. Queríamos fazer nossos próprios testes e tirar as nossas conclusões. A receptividade dos envolvidos foi ótima! Tendo em vista que o Scrum prima pela multidisciplinaridade e o envolvimento completo do time do projeto, todos os integrantes envolvidos no piloto passaram a se sentir mais presentes e agregadores ao projeto. Não tivemos praticamente nenhuma resistência na implementação da metodologia.</p>
<p><b>[LW]</b> Como foi feita a divisão dos times? Quantas pessoas por time? Como vocês fazem para integrar todos os times?<br />
<b>[AG2]</b> Os times que montamos (e ainda estamos montando) tem em média 9 integrantes. Para cada time optamos por colocar diferentes disciplinas de desenvolvimento, de forma que um time tenha capacidade de desenvolver qualquer tipo de demanda e seja auto-gerenciável. Ou seja, temos Desenvolvedores .Net junto com Diretores de Arte, sentados lado a lado em locais físicos específicos para o time. Com relação a &#8220;sintonia fina&#8221; das equipes, outra coisa que fizemos na montagem dos times foi agrupá-los por cliente. Isso faz com que a cultura de cada um dos clientes seja absorvida de forma mais visceral pelo time, resultando em projetos bem mais aderentes aos objetivos de nossos contratantes.</p>
<p><center><a href='http://agilblog.locaweb.com.br/wp-content/uploads/2008/12/5897.jpg'><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/12/5897-300x214.jpg" alt="" title="5897" width="300" height="214" class="alignnone size-medium wp-image-95" /></a></center></p>
<p><b>[LW]</b> Como responsável pela gestão de projetos, quais as vantagens que você vê em usar metodologias ágeis de desenvolvimento em comparação com modelos mais tradicionais de gestão de projetos?<br />
<b>[AG2]</b> Creio que todos os modelos de gerenciamento de projetos tem as suas vantagens e estas são exponencializadas de acordo com os projetos propriamente ditos. Aqui na AG2 desenvolvemos alguns projetos usando modelos mais tradicionais em cascata e outros usando Scrum. Decidimos o modelo de gestão para um projeto específico baseado nas características de cada um deles. Se vislumbramos algo com escopo razoavelmente definido e altíssimo grau de complexidade talvez optemos por um modelo mais clássico de desenvolvimento, pois talvez um modelo ágil não seja o mais adequado para esta ocasião. Ao passo que, se nos deparamos com uma possibilidade de desenvolvimento onde temos uma variável de tempo muito curta e muitas indefinições, a metodologia ágil tende a aumentar muito as nossas chances de sucesso. Então, creio que quem dita as vantagens realmente são os projetos.</p>
<p><b>[LW]</b> As metodologias ágeis prevêm a presença do cliente junto da equipe de desenvolvimento. Vocês conseguem ter o cliente por perto durante o desenvolvimento?<br />
<b>[AG2]</b> A grande maioria de nossos clientes são extremamente participativos no decorrer de todo o desenvolvimento. Nestes casos envolvemos o cliente do inicio ao fim explicando os benefícios de seu envolvimento no processo de tomada de decisões e no processo produtivo como um todo. Isso sempre se mostra uma excelente forma de aumentar a possibilidade de sucesso do projeto. Reuniões de definições de prioridades para desenvolvimento e aprovações acontecem durante todo o projeto e as indesejáveis surpresas deixam de acontecer. Quando é mais difícil agregar o cliente ao processo elegemos alguém que represente o cliente em nossa estrutura, geralmente o profissional de Atendimento. Dessa forma tentamos aproximar ao máximo as percepções do cliente ao nosso dia a dia de trabalho.</p>
<p><b>[LW]</b> Um grande questionamento que existe é sobre como encaixar o design visual no processo de desenvolvimento de sistemas usando metodologias ágeis. Como vocês conseguiram combinar o design visual com o desenvolvimento?<br />
<b>[AG2]</b> A forma que estamos utilizando para desenvolver o design juntamente com a parte de programação inserido na metodologia ágil é tentar mantê-las independentes o máximo de tempo possível. No inicio do projeto tentamos definir o Backlog de cada Sprint de forma que os desenvolvedores de sistema possam programar as funcionalidades que são totalmente independentes da Interface, ao passo que o pessoal do design possa se preocupar com a arquitetura da informação, navegabilidade e estética do projeto. Em Sprints subseqüentes, devido ao aumento do conhecimento de toda a equipe assim como a melhoria da definição do projeto começamos a aproximar as áreas para que a integração entre elas ocorra sem problemas.</p>
<p><b>[LW]</b> A adoção de metodologias ágeis é um processo de constante aprimoramento. Quais são os seu próximos objetivos?<br />
<b>[AG2]</b> Estamos engatinhando ainda no que diz respeito a metodologias ágeis. Nossos próximos passos são realmente comprovar a eficácia com relação a rentabilidade e performance dos projetos e aumentar a cultura destes métodos na AG2. Treinamentos e workshops são as medidas imediatas para que todos sintam-se confortáveis e confiantes com o uso delas. A partir desse ponto veremos o que o futuro nos apresenta&#8230;</p>
<p><center><a href='http://agilblog.locaweb.com.br/wp-content/uploads/2008/12/5892.jpg'><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/12/5892-300x214.jpg" alt="" title="5892" width="300" height="214" class="alignnone size-medium wp-image-96" /></a></center></p>
<p>Se você também quer compartilhar a sua experiência, mande um email para joaquim ponto torres arroba locaweb ponto com ponto br.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/12/17/ag2-tambem-usa-metodologias-ageis-de-desenvolvimento/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Integração Contínua</title>
		<link>http://agilblog.locaweb.com.br/2008/12/16/integracao-continua/</link>
		<comments>http://agilblog.locaweb.com.br/2008/12/16/integracao-continua/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 17:00:41 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[Sem Categoria]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=93</guid>
		<description><![CDATA[Dando continuidade ao ciclo de palestras da Locaweb, Maurício Dediana explica nos vídeos abaixo uma das práticas defendidas por Kent Beck na metodologia XP: a Integração Contínua. Muita gente confunde o conceito de Integração Contínua com ferramentas como o Cruise Control ou o Continuum. Vale a pena alinhar esses conceitos assistindo os vídeos e lendo [...]]]></description>
			<content:encoded><![CDATA[<p>Dando continuidade ao ciclo de palestras da Locaweb, Maurício Dediana explica nos vídeos abaixo uma das práticas defendidas por Kent Beck na <a href="http://www.extremeprogramming.org/" target="_blank">metodologia XP</a>: a <a href="http://martinfowler.com/articles/continuousIntegration.html">Integração Contínua</a>. Muita gente confunde o conceito de Integração Contínua com ferramentas como o <a href="http://cruisecontrol.sourceforge.net/" target="_blank">Cruise Control</a> ou o <a href="http://continuum.apache.org/" target="_blank">Continuum</a>. Vale a pena alinhar esses conceitos assistindo os vídeos e lendo alguns posts sobre o assunto, como o do <a href="http://martinfowler.com/articles/continuousIntegration.html">Martin Fowler</a>, o da <a href="http://www.improveit.com.br/xp/praticas/integracao">ImproveIt</a> e o da <a href="http://blog.caelum.com.br/2008/11/04/integracao-continua/">Caelum</a>. Bons estudos!<br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/NcYjvOJhHbE&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/NcYjvOJhHbE&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/ROHZdVNmVJ0&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ROHZdVNmVJ0&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/fKfTA1TWCj8&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/fKfTA1TWCj8&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/e0RHBVRsAi0&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/e0RHBVRsAi0&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/2msVCC7LHsU&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/2msVCC7LHsU&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/12/16/integracao-continua/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Systemantics ou A Bíblia dos Sistemas</title>
		<link>http://agilblog.locaweb.com.br/2008/12/08/systemantics-ou-a-biblia-dos-sistemas/</link>
		<comments>http://agilblog.locaweb.com.br/2008/12/08/systemantics-ou-a-biblia-dos-sistemas/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 13:20:30 +0000</pubDate>
		<dc:creator>Joca</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<category><![CDATA[Planejamento]]></category>

		<category><![CDATA[sistemas]]></category>

		<category><![CDATA[systemantics]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=91</guid>
		<description><![CDATA[Outro dia me deparei com um post no blog da 37signals sobre sistemas complexos que trazia uma citação de John Gall:
A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You [...]]]></description>
			<content:encoded><![CDATA[<p>Outro dia me deparei com um <a href="http://www.37signals.com/svn/posts/1414-a-complex-system-that-works-is-invariably">post no blog da 37signals</a> sobre sistemas complexos que trazia uma citação de John Gall:</p>
<blockquote><p><em>A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over, beginning with a working simple system.</em></p></blockquote>
<p>Fuçando um pouco descobri que esse John Gall, um pediatra, escreveu em 1978 um livro chamado &#8220;Systemantics, How Systems Really Work and Especially How They Fail&#8221; com um conjunto de leis que regem quaisquer tipos de sistemas, que podem ser desde programas de computador até o corpo humano, o universo, uma cidade, uma empresa, etc.</p>
<p><a href="http://3.bp.blogspot.com/_EezP_9qFM_g/STsNPs5vGaI/AAAAAAAAAF0/8XMn-VVNMag/s1600-h/systemantics+1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5276825951797189026" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 190px; height: 320px;" src="http://3.bp.blogspot.com/_EezP_9qFM_g/STsNPs5vGaI/AAAAAAAAAF0/8XMn-VVNMag/s320/systemantics+1.png" border="0" alt="" /></a></p>
<p><a href="http://3.bp.blogspot.com/_EezP_9qFM_g/STsNPzjqjEI/AAAAAAAAAF8/CWz5lmpEYcI/s1600-h/systemantics+2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5276825953583664194" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 218px; height: 320px;" src="http://3.bp.blogspot.com/_EezP_9qFM_g/STsNPzjqjEI/AAAAAAAAAF8/CWz5lmpEYcI/s320/systemantics+2.png" border="0" alt="" /></a></p>
<p>O livro é uma espécie de paródia ou crítica à <a href="http://en.wikipedia.org/wiki/Systems_theory">teoria de sistemas</a> que foi criada por <a href="http://en.wikipedia.org/wiki/Ludwig_von_Bertalanffy">Ludwig von Bertalanffy</a>, um biólogo austríaco, no início do século passado.</p>
<p><a href="http://1.bp.blogspot.com/_EezP_9qFM_g/STsNk4NcexI/AAAAAAAAAGE/ZtA4C_UVVS4/s1600-h/Bertalanffy.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5276826315609897746" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 253px;" src="http://1.bp.blogspot.com/_EezP_9qFM_g/STsNk4NcexI/AAAAAAAAAGE/ZtA4C_UVVS4/s320/Bertalanffy.jpg" border="0" alt="" /></a></p>
<p>Systemantics teve uma segunda edição, &#8220;Systemantics: The Underground Text of Systems Lore&#8221;:</p>
<p><a href="http://1.bp.blogspot.com/_EezP_9qFM_g/STsNlNeHS-I/AAAAAAAAAGM/RWJL1djfwF8/s1600-h/Systemantics+Cover.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5276826321316957154" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 219px; height: 320px;" src="http://1.bp.blogspot.com/_EezP_9qFM_g/STsNlNeHS-I/AAAAAAAAAGM/RWJL1djfwF8/s320/Systemantics+Cover.jpg" border="0" alt="" /></a></p>
<p>E na terceira edição foi rebatizado como &#8220;The Systems Bible: The Beginner&#8217;s Guide to Systems Large and Small&#8221;:</p>
<p><a href="http://1.bp.blogspot.com/_EezP_9qFM_g/STsNlURSKqI/AAAAAAAAAGU/Ja76kkjBuRs/s1600-h/The_Systems_Bible.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5276826323142191778" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 213px; height: 320px;" src="http://1.bp.blogspot.com/_EezP_9qFM_g/STsNlURSKqI/AAAAAAAAAGU/Ja76kkjBuRs/s320/The_Systems_Bible.gif" border="0" alt="" /></a></p>
<p>Apesar de ser uma paródia, no estilo das <a href="http://en.wikipedia.org/wiki/Murphy%27s_Law">Leis de Murphy</a>, ou mesmo por ser uma paródia, as leis de Systemantics fazem refletir, principalmente quando as lemos pensando em desenvolvimento de sistemas e produtos de internet.</p>
<p>Além da citação do início desse post, gosto particularmente das leis abaixo, que refletem muito a forma de pensar das metodologias ágeis:<br />
<em> </em></p>
<ul>
<li><em>The Functional Indeterminacy Theorem (F.I.T.): In complex systems, malfunction and even total non-function may not be detectable for long periods, if ever.</em></li>
<li><em>The mode of failure of a complex system cannot ordinarily be predicted from its structure.</em></li>
<li><em>The larger the system, the greater the probability of unexpected failure.</em></li>
<li><em>Colossal systems foster colossal errors.</em></li>
<li><em>Choose your systems with care.</em></li>
</ul>
<p>As 5 primeiras leis são bem interessantes também:<br />
<em> </em></p>
<ul>
<li><em>The Primal Scenario or Basic Datum of Experience: Systems in general work poorly or not at all. (Complicated systems seldom exceed five percent efficiency.)</em></li>
<li><em>The Fundamental Theorem: New systems generate new problems.</em></li>
<li><em>The Law of Conservation of Anergy [sic]: The total amount of anergy in the universe is constant. (&#8221;Anergy&#8221; = &#8216;human energy&#8217;)</em></li>
<li><em>Laws of Growth: Systems tend to grow, and as they grow, they encroach.</em></li>
<li><em>The Generalized Uncertainty Principle: Systems display antics. (Complicated systems produce unexpected outcomes. The total behavior of large systems cannot be predicted.)</em></li>
</ul>
<p>Uma lista mais completa das leis pode ser encontrada em:</p>
<p><a href="http://en.wikipedia.org/wiki/Systemantics">http://en.wikipedia.org/wiki/Systemantics</a></p>
<p>E nos links abaixo há a lista de leis com alguns comentários:</p>
<p><a href="http://www.laetusinpraesens.org/docs/systfail.php">http://www.laetusinpraesens.org/docs/systfail.php</a><br />
<a href="http://www.draftymanor.com/bart/systems1.htm">http://www.draftymanor.com/bart/systems1.htm</a><br />
<a href="http://www.ece.osu.edu/~fasiha/systemantics">http://www.ece.osu.edu/~fasiha/systemantics</a></p>
<p>Fecho esse post com uma lei específica sobre evolução que é bem apropriada aos sistemas desenvolvidos usando metodologias ágeis:</p>
<blockquote><p><em>As evolution is the only system known to produce intelligent behaviour, it is to be preferred.</em></p></blockquote>
<p><em></em></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/12/08/systemantics-ou-a-biblia-dos-sistemas/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Padrões para Introduzir Novas Idéias - Vídeos</title>
		<link>http://agilblog.locaweb.com.br/2008/12/08/padroes-para-introduzir-novas-ideias-videos/</link>
		<comments>http://agilblog.locaweb.com.br/2008/12/08/padroes-para-introduzir-novas-ideias-videos/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 12:37:59 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[Sem Categoria]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=92</guid>
		<description><![CDATA[No mês passado fiz um post falando de Padrões que podem ser usados para convencer as pessoas a adotarem suas idéias. Estive, com mais alguns colegas da Locaweb, no tutorial que a Linda Rising fez na QCON. Nesse tutorial ela propôs uma forma de aprendizado usando uma peça de teatro, onde as pessoas da platéia [...]]]></description>
			<content:encoded><![CDATA[<p>No mês passado fiz um <a href="http://agilblog.locaweb.com.br/2008/11/04/como-convencer-a-adotarem-sua-ideia/">post falando de Padrões</a> que podem ser usados para convencer as pessoas a adotarem suas idéias. Estive, com mais alguns colegas da Locaweb, no tutorial que a Linda Rising fez na QCON. Nesse tutorial ela propôs uma forma de aprendizado usando uma peça de teatro, onde as pessoas da platéia &#8220;interpretaram&#8221; as personagens e praticaram os Padrões que eu citei no post. Consegui filmar <a href="http://agileandart.blogspot.com/2008/11/padres-para-introduzir-novas-idias.html">alguns vídeos desse tutorial</a>.</p>
<p>Semana passada fiz também uma apresentação sobre esses Padrões aqui na Locaweb e gostaríamos de compartilhar esse conhecimento com todos vocês. O vídeo está dividido em 6 partes, sendo que na parte final fizemos um pequeno debate sobre os conceitos apresentados. Aguardamos os seus comentários.<br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/OlnfDMfeT6s&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/OlnfDMfeT6s&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<br />
<object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/UywTjBJ6TrQ&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/UywTjBJ6TrQ&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object><br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/xNd8IZgRq-4&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/xNd8IZgRq-4&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/B2Ja_B2g5ZQ&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/B2Ja_B2g5ZQ&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/vml_wVi9vFo&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/vml_wVi9vFo&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/5vSu-40VR1A&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5vSu-40VR1A&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/12/08/padroes-para-introduzir-novas-ideias-videos/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Refatoração (Refactoring) - Vídeos</title>
		<link>http://agilblog.locaweb.com.br/2008/12/04/refatoracao-refactoring-videos/</link>
		<comments>http://agilblog.locaweb.com.br/2008/12/04/refatoracao-refactoring-videos/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 22:10:20 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[Sem Categoria]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=90</guid>
		<description><![CDATA[Refatoração é um assunto antigo no mundo de Orientação a Objetos e proramação, que nem todos conhecem em detalhes. Os vídeos abaixo ajudam a dar os primeiros passos nessa técnica tão preciosa para  desenvolvimento de software. Para mais detalhes e um catálogo completo de refatorações, entrem no site sobre o assunto














]]></description>
			<content:encoded><![CDATA[<p>Refatoração é um assunto antigo no mundo de Orientação a Objetos e proramação, que nem todos conhecem em detalhes. Os vídeos abaixo ajudam a dar os primeiros passos nessa técnica tão preciosa para  desenvolvimento de software. Para mais detalhes e um catálogo completo de refatorações, entrem no <a href="http://www.refactoring.com/ " target="_blank">site sobre o assunto</a><br />
</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/aFJbeQzGvMk&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/aFJbeQzGvMk&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/CnJJ3GR9X6s&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/CnJJ3GR9X6s&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/XCvAiUgEDnw&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/XCvAiUgEDnw&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Yo5w65RCJck&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Yo5w65RCJck&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/q-Ho7xj4pgA&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/q-Ho7xj4pgA&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/q-Ho7xj4pgA&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/q-Ho7xj4pgA&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Njq4AkZakPQ&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Njq4AkZakPQ&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/12/04/refatoracao-refactoring-videos/feed/</wfw:commentRss>
		</item>
		<item>
		<title>QCon -  Radical Simplification through Polyglot and Poly-paradigm Programming</title>
		<link>http://agilblog.locaweb.com.br/2008/11/28/qcon-radical-simplification-through-polyglot-and-poly-paradigm-programming/</link>
		<comments>http://agilblog.locaweb.com.br/2008/11/28/qcon-radical-simplification-through-polyglot-and-poly-paradigm-programming/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 03:59:11 +0000</pubDate>
		<dc:creator>Antonio Marques</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<category><![CDATA[QCON]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=89</guid>
		<description><![CDATA[A track de Effective design and Clean code foi encerrada com a palestra de Dean Wampler, da Object Mentor. Ele iniciou com uma breve discussão sobre linguagens e paradigmas de programação, observando que:

Não existe um paradigma de programação que funcione bem para todos os tipos de aplicação
Não existe uma linguagem ideal para todos os tipos [...]]]></description>
			<content:encoded><![CDATA[<p>A track de <em>Effective design and Clean code</em> foi encerrada com a palestra de <a href="http://www.deanwampler.com/">Dean Wampler</a>, da <a href="http://www.objectmentor.com/">Object Mentor</a>. Ele iniciou com uma breve discussão sobre linguagens e paradigmas de programação, observando que:</p>
<ul>
<li>Não existe um paradigma de programação que funcione bem para todos os tipos de aplicação</li>
<li>Não existe uma linguagem ideal para todos os tipos de domínio</li>
</ul>
<p>Segundo Dean o maior problema daquilo que definiu como <strong>monoculturas</strong> é que geralmente há mais código do que o necessário - o que ele definiu como <em>the pervasive IT problem</em> – e que a razão para isso é o uso de linguagens ou paradigmas não ideais para o problema sendo resolvido.</p>
<p>Ele então apontou quatro problemas considerados comuns em monoculturas, analisou seus principais sintomas e definiu estratégias para solucioná-los através de <em>polyglot and poly-paradigm programming</em>:</p>
<p><strong>Problema 1: Necessidade de maior extensibilidade e agilidade</strong></p>
<p><strong>Sintomas:</strong><br />
- Novas funcionalidades levam muito tempo para ser implementadas<br />
- Reação lenta a mudanças</p>
<p><strong>Solução:</strong><br />
Aplicação = Componentes + Scripts</p>
<p>Componentes: escritos em linguagem estática (Java, C#, C++, C, etc) e compilados para ter melhor performance. Possuem produtividade mais baixa.</p>
<p>Scripts: escritos em linguagens dinâmicas (Ruby, Python, etc&#8230;) e interpretados para ter melhor extensibilidade e agilidade. Possuem produtividade mais alta.</p>
<p><strong>Problema 2: Código obscuro e de difícil manutenção</strong></p>
<p><strong>Sintomas: </strong><br />
- Lógica de negócio não vem à tona ao ler o código<br />
- Traduzir regras de negócio em código é algo propenso a erros</p>
<p><strong>Solução:</strong><br />
<em>Domain Specific Languages</em> - modelar uma linguagem que faça com que o código seja lido como uma frase estruturada contendo regras do domínio de negócio</p>
<p><strong>Problema 3: Há código duplicado por toda parte</strong></p>
<p><strong>Sintomas:</strong><br />
- Há lógica de persistência em todas as classes do domínio<br />
- Tratamento de erros e <em>logging</em> é inconsistente</p>
<p><strong>Solução:</strong><br />
Programação orientada a aspectos para lidar com <em>Cross-cutting concerns</em></p>
<p><strong>Problema 4: A aplicação é altamente concorrente e deve estar disponível 24&#215;7</strong></p>
<p><strong>Sintomas:</strong><br />
- Dificuldade em escrever código realmente Thread-safe<br />
- O sistema &#8220;trava&#8221; ao ser submetido a grande carga</p>
<p><strong>Solução: </strong><br />
Programação funcional: torna a programação concorrente fácil por não haver necessidade de sincronização, e portanto não há preocupação com locks, semáforos, etc.<br />
<br /></br><br />
Por fim Dean observou que muitas coisas que eram consideradas velhas estão se tornando novas outra vez, como o caso de programação funcional e de algumas linguagens dinâmicas (como Ruby e Lisp).</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/11/28/qcon-radical-simplification-through-polyglot-and-poly-paradigm-programming/feed/</wfw:commentRss>
		</item>
		<item>
		<title>QCon - How to Build Any Team Any Time</title>
		<link>http://agilblog.locaweb.com.br/2008/11/21/qcon-how-to-build-any-team-any-time/</link>
		<comments>http://agilblog.locaweb.com.br/2008/11/21/qcon-how-to-build-any-team-any-time/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 02:17:41 +0000</pubDate>
		<dc:creator>carlos.mendonca</dc:creator>
		
		<category><![CDATA[QCON]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=88</guid>
		<description><![CDATA[No primeiro dia de conferência da QCon, a track de Agile foi aberta por Amr Elssamadisy, que em seguida passou a palavra para o Cristopher Avery. Avery discutiu questões muito interessantes a respeito do fator humano na formação de equipes de projeto ágil. Ele começou a apresentação reafirmando que saber trabalhar em equipe é uma [...]]]></description>
			<content:encoded><![CDATA[<p>No primeiro dia de conferência da QCon, a track de Agile foi aberta por <a href="http://www.elssamadisy.com/">Amr Elssamadisy</a>, que em seguida passou a palavra para o <a href="http://www.christopheravery.com/">Cristopher Avery</a>. Avery discutiu questões muito interessantes a respeito do fator humano na formação de equipes de projeto ágil. Ele começou a apresentação reafirmando que saber trabalhar em equipe é uma das mais importantes formas de alavancar sua carreira e de cara já propõe um teste que ajuda a ilustrar a problemática que ele quer explorar:</p>
<blockquote><p>Encontre um parceiro e desenhe um jogo da velha, mas que ao invés de ter 3 posições por 3 posições, tenha 4 por 4. As regras do jogo são simples: cada linha ou coluna com 4 marcações suas seguidas vale 50 pontos; cada linha ou coluna com 3 marcações suas seguidas vale 40 pontos; não se conta pontos na diagonal. O objetivo também é simples: maximize sua pontuação.</p></blockquote>
<p>E aí?! Jogou? Quantos pontos fez? 40? 50? 90? Mais? O parceiro que terminou o jogo achando que foi prejudicado e que poderia ter feito mais pontos já está vendo a problemática que o Avery quer discutir: nós somos naturalmente programados para garantir o nosso sucesso, mas no entanto não nos damos conta que estamos constantemente inseridos em situações nas quais nossa credibilidade depende do resultado do trabalho de pessoas que não controlamos.</p>
<p>A discussão prosseguiu em torno da diferença básica entre dois conceitos: <em>accountability</em> e <em>responsibility</em>. As duas palavras são geralmente traduzidas de forma igual, mas eu diria que <em>accountability</em> está mais para “prestação de contas”. E essa diferença é fundamental, pois a obrigação de prestar contas é algo que alguém nos atribui, ao passo que a responsabilidade por alguma coisa é algo que geralmente de uma forma ou de outra escolhemos ter. Além disso, há muitas situações em que queremos ser responsáveis por alguma coisa, mas não queremos prestar contas quando ela der errado.</p>
<p>O Avery segue a apresentação discutindo o processo pelo qual as pessoas passam quando se confrontam com um problema (a série: negação, atribuição de culpa, vergonha e resolução pela obrigação) e como se pode sair desse processo. Por fim, ele discutiu como todos esses conceitos também são aplicáveis em equipes de projeto que não sejam de software (vide o livro <a href="http://books.google.com/books?id=oe4_zHL78PUC&amp;dq=mastering+the+rockefeller+habits&amp;pg=PP1&amp;ots=W_qIynFXLy&amp;source=bn&amp;sig=45KkkERucukw8R1rEhtPNN-rqjc&amp;hl=en&amp;sa=X&amp;oi=book_result&amp;resnum=5&amp;ct=result">Mastering the Rockefeller Habits</a>), apresentou um framework para orientação de equipes e fechou apresentando alguns resultados práticas observados. Achei uma discussão muito interessante e vale a pena <a href="http://www.christopheravery.com/blog/wp-content/uploads/2008/11/avery-buildanyteam.pdf">baixar a apresentação da QCon</a> e acompanhar o seu <a href="http://www.christopheravery.com/blog/">blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/11/21/qcon-how-to-build-any-team-any-time/feed/</wfw:commentRss>
		</item>
		<item>
		<title>QCon - Agilists and Architects: allies not adversaries</title>
		<link>http://agilblog.locaweb.com.br/2008/11/21/qcon-agilists-and-architects-allies-not-adversaries/</link>
		<comments>http://agilblog.locaweb.com.br/2008/11/21/qcon-agilists-and-architects-allies-not-adversaries/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 05:56:23 +0000</pubDate>
		<dc:creator>Antonio Marques</dc:creator>
		
		<category><![CDATA[Eventos]]></category>

		<category><![CDATA[Geral]]></category>

		<category><![CDATA[QCON]]></category>

		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=85</guid>
		<description><![CDATA[A palestra de Martin Fowler e Rebecca Parsons começou com a exibição do trecho do filme The Matrix Reloaded em que Neo encontra &#8220;O Arquiteto&#8221;, sentado numa grande sala circular monitorando tudo o que acontece no sistema que ele criou.
A idéia era ilustrar o estilo de arquitetura que definiram como &#8220;torre de marfim&#8221;, comum na [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="float: left;" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/11/foto_post1.jpg" alt="" width="252" height="173" />A palestra de <a href="http://martinfowler.com">Martin Fowler</a> e Rebecca Parsons começou com a exibição do trecho do filme <em>The Matrix Reloaded</em> em que Neo encontra &#8220;O Arquiteto&#8221;, sentado numa grande sala circular monitorando tudo o que acontece no sistema que ele criou.<br />
A idéia era ilustrar o estilo de arquitetura que definiram como &#8220;torre de marfim&#8221;, comum na metodologia de desenvolvimento em cascata, onde o arquiteto fica muito distante dos times que realmente estão desenvolvendo o software. Nesse tipo de metodologia o arquiteto assume a responsabilidade por todo o design do sistema, delegando à equipe apenas a implementação.</p>
<p>Alguns problemas foram apontados nesse tipo de abordagem:</p>
<li>Distância do arquiteto da codificação: o arquiteto não sabe se a implementação realmente reflete os conceitos do design</li>
<li>Baixa comunicação com a equipe:  o que torna a resposta à mudanças lenta</li>
<li>O arquiteto se torna um gargalo arquitetural: todas as decisões de design estão nele centralizadas</li>
<p>Então Martin Fowler lembrou que metodologias ágeis se baseiam em princípios de comunicação e foco no cliente, e que portanto a função do arquiteto deve ser redefinida num contexto ágil. Explicou que nesse contexto o arquiteto assume como função principal a de <strong>colaborador</strong>, tendo como atividade primária a de <strong>mentor </strong>(similar ao <em>coach </em>do XP), trabalhando na capacitação do time de desenvolvimento para que ele possa lidar sozinho com assuntos cada vez mais complexos.<br />
Desse modo, em um contexto ágil, o valor de um arquiteto se torna inversamente proporcional ao número de decisões que ele toma.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/11/21/qcon-agilists-and-architects-allies-not-adversaries/feed/</wfw:commentRss>
		</item>
		<item>
		<title>QCon - Behaviour Driven Design (BDD)</title>
		<link>http://agilblog.locaweb.com.br/2008/11/20/behaviour-driven-design-bdd/</link>
		<comments>http://agilblog.locaweb.com.br/2008/11/20/behaviour-driven-design-bdd/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 01:05:44 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[Eventos]]></category>

		<category><![CDATA[QCON]]></category>

		<category><![CDATA[Testes]]></category>

		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=84</guid>
		<description><![CDATA[
Ontem participamos da palestra do Dan North sobre Behaviour Driven Design (BDD). É um conceito que surgiu em 2006. Seus conceitos não são tão novos assim. Na verdade BDD é apenas a união de várias práticas consideradas ágeis e úteis para quem desenvolve software na indústria. O objetivo de BDD é focar em funcionalidades de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://agilblog.locaweb.com.br/wp-content/uploads/2008/11/dn.jpg"><img class="alignright size-medium wp-image-83" title="dn" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/11/dn-300x200.jpg" alt="" width="303" height="202" /></a></p>
<p>Ontem participamos da palestra do <a href="http://dannorth.net">Dan North</a> sobre Behaviour Driven Design (BDD). É um conceito que surgiu em 2006. Seus conceitos não são tão novos assim. Na verdade BDD é apenas a união de várias práticas consideradas ágeis e úteis para quem desenvolve software na indústria. O objetivo de BDD é focar em funcionalidades de alto valor e aplanar os custos de mudança. Quando você estiver fazendo:</p>
<ul>
<li>XP - especialmente Desenvolvimento Orientado a Testes (TDD) e Integração Contínua</li>
<li><a href="http://domaindrivendesign.org/">Domain Driven Design</a> (DDD)</li>
<li>Planejamento Orientado a testes de aceitação</li>
<li>Uma linguagem ubíqua bem definida</li>
<li>Programação Neurolinguística (no sentido de que cada palavra pronunciada tem um significado que fica na memória das pessoas e norteiam o desenvolvimento do software)</li>
</ul>
<p>você estará no caminho de BDD. A idéia principal é que as palavras usadas no código tem um poder enorme de confundir ou de facilitar o trabalho do programador. Assim, o uso eficiente da língua deve ser feito: testes devem ter nomes que identificam o que eles estão testando de fato, ou seja, o nome dos testes devem ser frases que dizem o que o teste testa.</p>
<p>Para quem usa Java, Dan North escreveu o <a href="http://jbehave.org/">JBehave</a>, uma ferramenta cujo objetivo é ajudar a escrever testes usando uma linguagem mais natural do que a forma como se escreve usando somente o JUnit. Para os programadores de Ruby existe o framework <a href="http://rspec.info/">RSPec</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/11/20/behaviour-driven-design-bdd/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Locaweb na QCON São Francisco 2008</title>
		<link>http://agilblog.locaweb.com.br/2008/11/18/locaweb-na-qcon-sao-francisco-2008/</link>
		<comments>http://agilblog.locaweb.com.br/2008/11/18/locaweb-na-qcon-sao-francisco-2008/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 23:43:08 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[Eventos]]></category>

		<category><![CDATA[Geral]]></category>

		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[Testes]]></category>

		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=81</guid>
		<description><![CDATA[
Esta semana alguns de nós da Locaweb estaremos na QCON. Viemos numa caravana de 9 pessoas, inclusive o CIO da empresa, Gilberto Mautner. O nosso objetivo é aprender o que há de mais atual e moderno em matéria de desenvolvimento de software e compartilhar o máximo desse conhecimento com os nossos clientes.
A QCON é uma [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-82" title="Locaweb na QCON" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/11/img_6939-300x225.jpg" alt="" width="300" height="225" /></p>
<p>Esta semana alguns de nós da Locaweb estaremos na <a href="http://qconsf.com/">QCON</a>. Viemos numa caravana de 9 pessoas, inclusive o CIO da empresa, Gilberto Mautner. O nosso objetivo é aprender o que há de mais atual e moderno em matéria de desenvolvimento de software e compartilhar o máximo desse conhecimento com os nossos clientes.</p>
<p>A QCON é uma das maiores conferências de Metodologias Ágeis e desenvolvimento de software do mundo, com presença de nomes como <a href="http://martinfowler.com">Martin Fowler</a>, <a href="http://www.extremeprogramming.org/">Kent Beck</a>, <a href="http://lindarising.org">Linda Rising</a>, Eric Evans, Ralph Johnson e tantos outros. A segunda e a terça são os dias dos tutoriais, e a conferência começa a esquentar de verdade na quarta-feira. Serão <a href="http://qconsf.com/sf2008/schedule/wednesday.jsp">mais de 100 palestras</a> sobre dezenas de tópicos: <a href="http://site.locaweb.com.br/rails/">Ruby On Rails</a>, <a href="http://www.locawebidc.com.br/assinaturas/cloud.asp">Cloud Computing</a>, Scrum, Testes, Código Limpo, Java, RESTful Web Services e muito mais. </p>
<p>Ontem tivemos um tutorial muito interessante sobre <a href="http://agileandart.blogspot.com/2007/06/padres-para-introduzir-novas-idias.html">Padrões para Introduzir Novas Idéias</a>. Fiz um post no <a href="http://agileandart.blogspot.com">meu blog</a> com alguns vídeos sobre o tutorial. Mais material sobre assunto também pode ser encontrado lá. Também participamos de um tutorial sobre <a href="http://domaindrivendesign.org/">Domain Driver Design (DDD)</a> com o Ralph Johnson. O tutorial abordou alguns padrões de interação entre equipes e sistemas, quando se trata de desenvolver software distribuído. Um dos tópicos que ficou evidente é a grande importância de se criar uma Linguagem Ubíqua (<a href="http://domaindrivendesign.org/discussion/messageboardarchive/UbiquitousLanguage.html">ubiquitous language</a>), ou seja, é importante definir claramente os termos da língua com os quais os desenvolvedores e os clientes irão se comunicar. Esses termos devem ser claros para todos no time e devem ser usados de maneira única para não dar margem a ambigüidades.</p>
<p>Outro tutorial que assistimos foi sobre <a href="http://www.martinfowler.com/bliki/DomainSpecificLanguage.html">Domain Specific Languages</a> (DSL), um trabalho recente que está sendo desenvolvido pelo Martin Fowler e pode ser visto em mais detalhes no <a href="http://www.martinfowler.com/bliki/DomainSpecificLanguage.html">site do autor</a>.</p>
<p>Fiquem ligados nos nossos blogs! Em breve traremos mais novidades da QCON São Francisco 2008.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/11/18/locaweb-na-qcon-sao-francisco-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Como tornar reuniões mais ágeis</title>
		<link>http://agilblog.locaweb.com.br/2008/11/13/como-tornar-reunioes-mais-ageis/</link>
		<comments>http://agilblog.locaweb.com.br/2008/11/13/como-tornar-reunioes-mais-ageis/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 22:47:40 +0000</pubDate>
		<dc:creator>Elson Barbosa</dc:creator>
		
		<category><![CDATA[Planejamento]]></category>

		<category><![CDATA[backlog]]></category>

		<category><![CDATA[histórias]]></category>

		<category><![CDATA[product owner]]></category>

		<category><![CDATA[scrum master]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=79</guid>
		<description><![CDATA[Achei um artigo no site Agile Commons dando dicas sobre como tornar mais ágeis as reuniões de planejamento. O artigo, dividido em duas partes (Shorter Agile Meetings, Part 1: Iteration Planning e Shorter Agile Meetings, Part 2: Release Planning), dá algumas boas dicas, em especial nesse trecho:
An Iteration Planning Meeting is all about agreeing as [...]]]></description>
			<content:encoded><![CDATA[<p>Achei um artigo no site <a href="http://agilecommons.org">Agile Commons</a> dando dicas sobre como tornar mais ágeis as reuniões de planejamento. O artigo, dividido em duas partes (<a href="http://agilecommons.org/posts/96b902776c">Shorter Agile Meetings, Part 1: Iteration Planning</a> e <a href="http://agilecommons.org/posts/073892d7d4">Shorter Agile Meetings, Part 2: Release Planning</a>), dá algumas boas dicas, em especial nesse trecho:</p>
<blockquote><p>An Iteration Planning Meeting is all about agreeing as a team that we can deliver a certain amount of work within the upcoming iteration, and figuring out how to go about implementing that work. For me, the most important part of a successful IPM is that the whole team agrees on what is to be built, right down to detailed acceptance criteria for each story.</p>
<p>This part of the meeting goes a lot faster if you&#8217;ve done some of the following:</p>
<p>1. The Product Owner comes in with a prioritized list of user stories to be built<br />
2. The team, or at least a few members, know what&#8217;s at the top of the list<br />
3. The Product Owner has done a first pass at writing acceptance criteria for the stories<br />
4. The Product Owner and a tester have discussed those stories and added negative tests (edge cases)<br />
5. The tech lead has looked at the stories and acceptance criteria, and discussed these with the Product Owner<br />
6. The team got the list of stories a few days before, so they&#8217;ve had some time to think about implementation</p></blockquote>
<p>Aqui na Locaweb observei alguns casos de pequenos desperdícios durante as reuniões de planejamento. A identificação e eliminação desses desperdícios podem agilizar bastante as reuniões que duram mais tempo do que o necessário. Algumas situações comuns que identifiquei:</p>
<ul>
<li><strong>Organização do Backlog durante a reunião:</strong> Vi alguns casos em que o Product Owner organiza o backlog durante a reunião de planejamento, com toda a equipe presente. Essa organização inclui desde priorizar as histórias até procurar emails com solicitações de novas histórias, passando por tirar dúvidas com solicitantes externos. Essa prática acaba tomando muito tempo da reunião e de todos os presentes, fazendo com que o foco se disperse e o resultado do planejamento fique comprometido.</li>
<li><strong>Discussões muito detalhadas:</strong> É importante discutir os detalhes necessários, mas somente os necessários. Em uma reunião recente, vi a equipe chamando um especialista de outra equipe e abrindo o Notepad para listar todas as regras de validação de um determinado campo. Perguntei se isso influenciava na estimativa em si, e descobri que a história já estava estimada. Na prática, saber que existem 3, 5 ou 13 regras de validação já é o suficiente para estimar a história, não é necessário listar e discutir cada uma delas.</li>
<li><strong>Discussões de histórias que não entraram no sprint:</strong> Em outra reunião recente observei uma história que após uma breve discussão decidiu-se por não incluí-la no sprint - faltava definir alguns detalhes funcionais, e a prioridade nem era tão alta. Antes de passar para a próxima história uma outra dúvida foi levantada. Com isso, a equipe passou os próximos minutos discutindo novamente toda a história, não para decidir se ela deveria entrar mesmo no sprint, mas já definindo detalhes para quando ela entrar em um sprint futuro.</li>
</ul>
<h3>Uma solução simples</h3>
<p>A solução que ajuda a minimizar esses problemas é simples: O PO enviar um email listando as histórias que serão discutidas para o próximo sprint. O email deve ser enviado para a equipe, para os solicitantes externos que pedem histórias, e para os POs das outras equipes.</p>
<p><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/11/email.jpg" alt="" title="email" width="326" height="274" class="alignnone size-full wp-image-80" /></p>
<p>Essa prática ajuda a:</p>
<ul>
<li>O próprio PO organizar o backlog previamente;</li>
<li>A equipe conhecer as histórias que serão discutidas, e já levantar alguns detalhes que podem ser importantes;</li>
<li>Os solicitantes saberem se suas histórias serão discutidas, e se prepararem caso sejam acionados para esclarecer dúvidas;</li>
<li>Os solicitantes saberem que outras histórias suas não serão discutidas, e repriorizá-las caso necessário;</li>
<li>Os POs de outras equipes saberem se alguma história pode impactar algum produto seu, ou se existe alguma dependência que deva ser analisada;</li>
<li>Divulgar a várias áreas o que a equipe está fazendo.</li>
</ul>
<p>Em outras palavras, voltando ao artigo da Agile Commons, enviar um email com antecedência ajuda a resolver os ítens 1, 2, 5 e 6 da lista. Para os itens 3 e 4, um <em><a href="http://chrissterling.gettingagile.com/2007/10/05/building-a-definition-of-done/">Definition of Done</a></em> claro e preciso ajuda a resolvê-los. Ou seja, com dois passos simples é possível diminuir bastante o tempo da reunião de planejamento.</p>
<p>Um detalhe importante: Da mesma forma que o ScrumMaster é o responsável por eliminar impedimentos que comprometam o andamento do sprint, ele também é o responsável por eliminar impedimentos que comprometam o andamento da própria reunião de planejamento. Puxando para o <em><a href="http://en.wikipedia.org/wiki/Lean_manufacturing">Lean Thinking</a></em>, o valor da reunião de planejamento é ter o sprint planejado - qualquer coisa que não ajude a equipe a atingir esse objetivo é considerado desperdício.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/11/13/como-tornar-reunioes-mais-ageis/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Let&#8217;s Talk Agile</title>
		<link>http://agilblog.locaweb.com.br/2008/11/05/lets-talk-agile/</link>
		<comments>http://agilblog.locaweb.com.br/2008/11/05/lets-talk-agile/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 13:21:58 +0000</pubDate>
		<dc:creator>Elson Barbosa</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=78</guid>
		<description><![CDATA[Apresentação interessante:
Lets Talk Agile
View SlideShare presentation or Upload your own. (tags: management leader)

]]></description>
			<content:encoded><![CDATA[<p>Apresentação interessante:</p>
<div style="width:425px;text-align:left" id="__ss_710405"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/dcaron/lets-talk-agile-presentation?type=powerpoint" title="Lets Talk Agile">Lets Talk Agile</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=lets-talk-agile-1225483406947375-9&#038;stripped_title=lets-talk-agile-presentation" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=lets-talk-agile-1225483406947375-9&#038;stripped_title=lets-talk-agile-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View SlideShare <a style="text-decoration:underline;" href="http://www.slideshare.net/dcaron/lets-talk-agile-presentation?type=powerpoint" title="View Lets Talk Agile on SlideShare">presentation</a> or <a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=powerpoint">Upload</a> your own. (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/management">management</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/leader">leader</a>)</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/11/05/lets-talk-agile/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Como convencer as pessoas a adotarem sua idéia?</title>
		<link>http://agilblog.locaweb.com.br/2008/11/04/como-convencer-a-adotarem-sua-ideia/</link>
		<comments>http://agilblog.locaweb.com.br/2008/11/04/como-convencer-a-adotarem-sua-ideia/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 14:08:38 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[Sem Categoria]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=76</guid>
		<description><![CDATA[Já faz 6 meses que a Locaweb lançou o agilblog. Como a adoção de métodos ágeis foi um grande passo de evolução na área de tecnologia da empresa, decidimos compartilhar esse conhecimento para que nossos clientes tivessem sucesso com boas práticas de desenvolvimento de software. O tempo passou e essas metodologias (como Scrum, XP, Lean, [...]]]></description>
			<content:encoded><![CDATA[<p>Já faz 6 meses que a Locaweb lançou o agilblog. Como a adoção de métodos ágeis foi um grande passo de evolução na área de tecnologia da empresa, decidimos compartilhar esse conhecimento para que nossos clientes tivessem sucesso com boas práticas de desenvolvimento de software. O tempo passou e essas metodologias (como Scrum, XP, Lean, etc) se tornaram bem conhecidas. Ainda assim, implantá-las nem sempre é uma tarefa fácil. A adoção da filosofia ágil envolve mudanças culturais, quebra de paradigmas, e isso requer tempo.</p>
<p>Se você tem uma boa idéia (como implantar XP ou Scrum na sua empresa) e essa idéia não é aceita, se você não consegue convencer as pessoas de que isso é legal, saiba de duas coisas. Primeiro: você não é o único a ter passado por isso. Segundo: quem já passou por isso identificou alguns padrões que ocorrem quando tentamos convencer as pessoas. Esses padrões são chamados de &#8220;Padrões para Introduzir Novas Idéias&#8221; e podem ser usados como uma ferramenta a seu favor.</p>
<p>No mês de outubro fiz, junto com o Prof. <a href="http://www.ime.usp.br/~kon">Fábio Kon</a>,  uma apresentação no evento <a href="http://www.caelum.com.br/falando-em-agile/">Falando em Agile</a> sobre esses padrões e gostaria agora de compartilhá-los com todos essas dicas de como introduzir uma idéia.</p>
<h2>Breve resumo do que é um padrão</h2>
<p>Um padrão pode ser visto como um documento que descreve um problema e uma possível solução já pensada por alguém. O padrão normalmente também descreve o contexto em que o problema é encontrado e quais vantagens e desvantagens de aplicar a solução proposta num contexto similar.</p>
<p>Christopher Alexander definiu um padrão como <em>uma regra de três partes que expressa a relação entre um certo contexto, um problema e uma solução</em>. <a href="http://www.dreamsongs.com/">Richard P. Gabriel</a> complementou essa definição para o ambiente de software, dizendo que <em>cada padrão é uma regra de três partes que expressa a relação entre um certo contexto, um certo sistema de forças que ocorre repetidamente neste contexto e uma certa configuração de software que permita que essas forças se resolvam</em>. <a href="http://martinfowler.com/">Martin Fowler</a> nos trouxe uma outra definição mais simples: <strong><em>um padrão é uma idéia que foi útil em algum contexto prático e provavelmente será util em outros</em></strong>.</p>
<h2>Padrões para introduzir novas idéias</h2>
<h2><a href="http://agilblog.locaweb.com.br/wp-content/uploads/2008/11/51gjk4ykpul_ss500_.jpg"><img class="alignright size-medium wp-image-77" title="Fearless Change" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/11/51gjk4ykpul_ss500_-300x300.jpg" alt="" width="300" height="300" /></a></h2>
<p>Esses padrões foram identificados (porque um padrão não é inventado e sim identificado depois que já aconteceu) pela <a href="http://www.lindarising.org/">Linda Rising </a>e pela Mary Linn Manns e compilados no livro <a href="http://www.amazon.com/Fearless-Change-Patterns-Introducing-Ideas/dp/0201741571">Fearless Change</a> (Mudança sem Medo). Esse livro mostra 48 maneiras diferentes de se agir no objetivo de convencer as pessoas de uma idéia. São práticas que foram usadas em empresas de tecnologia e sua eficácia comprovada em contextos diferentes.</p>
<p>Vamos mostrar alguns exemplos aqui. Quem tiver mais interesse pode olhar o documento no site da agilcoop com o <a href="agilcoop.incubadora.fapesp.br/portal/Artigos/padroes_novas_ideias.pdf">resumo de TODOS os padrões</a> ou ouvir o <a href="http://agileandart.blogspot.com/2008/09/agilcast-padres-para-introduzir-novas.html">podcast sobre Padrões para Introduzir Novas Idéias</a>.</p>
<h3>As Pessoas</h3>
<p>Antes de mais nada, é preciso lembrar que para introduzir uma idéia iremos lidar com pessoas. Os primeiros padrões que precisamos conhecer então são os padrões relacionados a pessoas. Você deve estar preparado para saber como elas aceitarão suas idéias, quem poderá lhe ajudar e quem irá atrapalhar, como interagir com as várias personalidades que irão passar pelo seu caminho.</p>
<p>São 5 Padrões de pessoas:</p>
<ul>
<li><strong>O Inovador</strong> (2,5%) - aceitam de imediato, só pelo fato da coisa ser nova</li>
<li><strong>Os que Adotam Cedo</strong> (13,5%) - Visionários e respeitados, ficam mais abertos depois de avaliarem de perto e perceberem que a nova idéia é uma grande descoberta</li>
<li><strong>A Primeira Maioria</strong> (35%) - são a ponte entre o velho e o novo, o primeiro grande grupo a ser convencido. Precisam ver a idéia funcionando em algum lugar antes de adotar</li>
<li><strong>A Última Maioria</strong> (35%) - Conservadores e céticos, precisam de uma certa pressão e só se convencem quando não há mais incertezas</li>
<li><strong>Os Retardatários</strong> (14%) - São os que pensam: &#8220;Pra que mudar, nós sempre fizemos assim e sempre funcionou&#8221;</li>
</ul>
<h3>Por onde Começar?</h3>
<p>O padrão <strong>Experimente a Água</strong> diz para começar com duas ou três pequenas práticas, que não exijam muito esforço, e validar o que deu certo, tirando um <strong>Tempo para Reflexão</strong>. Outro padrão, <strong>Comemore Pequenos Sucessos</strong>, mostra que uma guerra se vence de várias pequenas batalhas. Qualquer pequeno objetivo alcançado é motivo de festa. Se não puder comemorar algo que deu certo, comemore se nada der errado! Faça as coisas no <strong>Passo a Passo</strong>, respeitando sempre o tempo da mudança. Use cada passo como uma oportunidade para aprender enquanto avança.</p>
<h3>E em seguida?</h3>
<p>Tenha contato e valorize os <strong>Conectores</strong>: secretárias, porteiros, copeiros, etc. Essas pessoas, que fazem parte das redes informais, se encarregarão de espalhar sua mensagem. Converse com os Conectores sobre suas idéias. Tenha o <strong>Guru ao Seu Lado</strong>, aquela pessoa cuja opinião é respeitada. Use-o como filtro, ouça sua opinião com humildade e respeito.</p>
<h3>Mais alguns padrões</h3>
<p>Esses Padrões foram usados no processo de adoção de métodos ágeis na Locaweb e foram muito importantes para o sucesso. É muito difícil realizar uma grande mudança sozinho. <strong>Peça Ajuda</strong> das pessoas, <strong>Envolva Todos</strong> e divida os méritos. Saiba sempre reconhecer <strong>A Hora Certa</strong> de agir. O tempo das pessoas é precioso, saiba respeitar esse tempo. Se não souber por onde começar, <strong>Simplesmente Faça</strong>: comece por algum lugar, esse é um bom começo. Você aprenderá com esse início, novas idéias irão aparecer e você saberá como prosseguir.</p>
<h2>Para saber mais</h2>
<ul>
<li><a href="http://agileandart.blogspot.com/2007/06/padres-para-introduzir-novas-idias.html">Resumo em Português sobre os Padrões para Introduzir Novas Idéias</a></li>
<li><a href="http://gsd.ime.usp.br/seminars/2008/presentation_daniel_cukier.pdf">Apresentação em PDF</a></li>
<li><a href="http://agileandart.blogspot.com/2008/09/agilcast-padres-para-introduzir-novas.html">Podcast (mp3) sobre o assunto</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/11/04/como-convencer-a-adotarem-sua-ideia/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Histórias de Usuário: &#8220;In order to&#8230; As a&#8230; I want&#8230;&#8221;</title>
		<link>http://agilblog.locaweb.com.br/2008/10/29/historias-de-usuario-in-order-to-as-a-i-want/</link>
		<comments>http://agilblog.locaweb.com.br/2008/10/29/historias-de-usuario-in-order-to-as-a-i-want/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 20:12:51 +0000</pubDate>
		<dc:creator>Elson Barbosa</dc:creator>
		
		<category><![CDATA[Planejamento]]></category>

		<category><![CDATA[histórias de usuário]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=75</guid>
		<description><![CDATA[David Chelimsky no Rails Summit Latin America e David Anderson no Falando em Agile 2008 apresentaram um formato de história ligeiramente diferente do formato clássico proposto por Mike Cohn.
O formato clássico,
As a &#60;type of user&#62;
I want &#60;some goal&#62;
So that &#60;some reason&#62;
ou em uma tradução livre,
Como um &#60;tipo de usuário&#62;
Eu quero &#60;uma história&#62;
Para que &#60;razão&#62;
tem suas [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.davidchelimsky.net/">David Chelimsky</a> no <a href="http://www.locaweb.com.br/railssummit/">Rails Summit Latin America</a> e <a href="http://www.agilemanagement.net">David Anderson</a> no <a href="http://www.caelum.com.br/falando-em-agile/">Falando em Agile 2008</a> apresentaram um formato de história ligeiramente diferente do formato clássico proposto por <a href="http://blog.mountaingoatsoftware.com/?p=24">Mike Cohn</a>.</p>
<p>O formato clássico,</p>
<blockquote><p>As a &lt;type of user&gt;<br />
I want &lt;some goal&gt;<br />
So that &lt;some reason&gt;</p></blockquote>
<p>ou em uma tradução livre,</p>
<blockquote><p>Como um &lt;tipo de usuário&gt;<br />
Eu quero &lt;uma história&gt;<br />
Para que &lt;razão&gt;</p></blockquote>
<p>tem suas grandes vantagens:</p>
<ul>
<li>A primeira parte do texto, &#8220;Como um &lt;tipo de usuário&gt;&#8221;, deixa bastante claro quem é o principal beneficiário da história;</li>
<li>A segunda parte, &#8220;Eu quero &lt;uma história&gt;&#8221;, é a história em si, o que deve ser desenvolvido;</li>
<li>A terceira parte, &#8220;Para que &lt;razão&gt;&#8221;, mostra o valor da história, seu objetivo, o porquê dessa história ser feita e qual sua importância no projeto.</li>
</ul>
<p>Na Locaweb, inicialmente trabalhávamos com um formato mais livre, onde cada PO definia seu formato ideal. Logo depois vimos alguns problemas surgirem nos planejamentos, especialmente quando a história era muito direta e pouco explicativa (&#8221;Cliente está com problema X; resolver&#8221;, &#8220;Corrigir problema Y&#8221;), com textos normalmente iniciando por verbos assertivos. Quando começamos a trabalhar com o formato clássico &#8220;As a&#8230; I want&#8230; So that&#8230;&#8221;, imediatamente vimos o valor disso, e as histórias passaram a ficar mais claras para as equipes.</p>
<p>Contudo, ainda vimos um problema: Em alguns casos o objetivo da história, o &#8220;Para que&#8221;, não ficava muito claro. Algumas vezes o texto era um pouco genérico, outras vezes era até omitido (&#8221;Como um cliente eu quero que o problema X seja resolvido&#8221;).</p>
<p>A sugestão de Chelimsky e Anderson é a melhor solução para isso. Com uma simples mudança na ordem da frase, passamos a focar mais no valor da história do que antes:</p>
<blockquote><p>In order to &lt;achieve some value&gt;<br />
As a &lt;persona&gt;<br />
I want &lt;some feature&gt;</p></blockquote>
<p>Ou em uma tradução livre:</p>
<blockquote><p>Para que &lt;um valor seja obtido&gt;,<br />
Como uma &lt;persona&gt;<br />
Eu quero &lt;uma história&gt;</p></blockquote>
<p>Nesse formato identificamos três grandes vantagens:</p>
<ul>
<li><strong>Valor -</strong> O valor da história passa a ficar ainda mais claro do que no formato clássico. Primeiro identificamos o porquê dessa história, depois seu beneficiário e por fim a história em si. Além disso, o objetivo naturalmente passa a ser obrigatório no texto, sem o risco de ser omitido.</li>
<li><strong>Agrupamento Funcional -</strong> A leitura das histórias passa a ser mais funcional. Se o backlog contiver histórias começando com &#8220;Como um Cliente do sistema X, eu quero etc&#8221; e outras &#8220;Como um Analista Interno do sistema X, eu quero&#8221;, é fácil identificar um agrupamento natural de beneficiários - histórias de Clientes e de Analistas Internos. No novo formato, histórias como &#8220;Para que eu não precise abrir um chamado, eu como um Cliente quero etc&#8221; e &#8220;Para agilizar meu trabalho no atendimento a um Cliente, eu como um Analista Interno quero etc&#8221;, a leitura passa a ser mais funcional, focando nos objetivos das histórias, facilitando até o planejamento de sprints e releases. No último exemplo, em uma leitura rápida podemos definir um sprint focando nas histórias de diminuição de incidentes, e no seguinte em diminuição de tempo de atendimento.</li>
<li><strong>Personas -</strong> O uso de personas ajuda ainda mais a identificar o beneficiário da história, ao usar personagens fictícios como usuários. Para mais detalhes sobre as vantagens de se usar personas, vale ler o artigo na <a href="http://en.wikipedia.org/wiki/Personas">Wikipedia</a> sobre o assunto.
</ul>
<p>Chelimsky sugeriu também uma variação no formato, para separar quem quer a funcionalidade de quem vai usá-la:</p>
<blockquote><p>In order to &lt;deliver some value&gt;,<br />
as a &lt;role&gt;,<br />
I want that &lt;some other role&gt;<br />
can &lt;some feature&gt;</p></blockquote>
<p>Ou em uma tradução livre:</p>
<blockquote><p>Para que &lt;um valor seja obtido&gt;,<br />
como um &lt;tipo de usuário&gt;,<br />
eu quero que &lt;um outro tipo de usuário&gt;<br />
possa &lt;ter algum benefício&gt;</p></blockquote>
<p>Pretendemos adotar essas idéias a partir de agora, em breve saberemos resultados.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/10/29/historias-de-usuario-in-order-to-as-a-i-want/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Investimento em Opções</title>
		<link>http://agilblog.locaweb.com.br/2008/10/26/investimento-em-opcoes/</link>
		<comments>http://agilblog.locaweb.com.br/2008/10/26/investimento-em-opcoes/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 19:28:06 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[Lean Software Development]]></category>

		<category><![CDATA[Sem Categoria]]></category>

		<category><![CDATA[opções]]></category>

		<category><![CDATA[options]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=74</guid>
		<description><![CDATA[O mercado financeiro e de commodities desenvolveu há muito tempo um mecanismo, chamado de opções. Ele basicamente serve para permitir que decisões sejam postergadas. Uma opção é o direito, não uma obrigação, de fazer algo no futuro. Como um certificado de garantia: se as coisas forem bem, como esperado, pode-se exercer a opção (equivalente a [...]]]></description>
			<content:encoded><![CDATA[<p>O mercado financeiro e de commodities desenvolveu há muito tempo um mecanismo, chamado de opções. Ele basicamente serve para permitir que decisões sejam postergadas. Uma opção é o direito, não uma obrigação, de fazer algo no futuro. Como um certificado de garantia: se as coisas forem bem, como esperado, pode-se exercer a opção (equivalente a ficar com o produto). Senão, pode-se ignorar a opção (devolvendo o produto) e tudo que se perde é o custo inicial de ter a opção.</p>
<p>Uma incerteza pode levar para duas direções: nos dias de hoje sabe-se muito bem como uma ação na bolsa de valores pode subir ou descer muitas vezes. Também nesse mercado existe uma forma de vender opções que garantam um preço mínimo de venda da ação (no caso de queda) ou comprar opções para um preço máximo de compra (no caso de uma alta).</p>
<p>Tube bem que é um pouco confuso essa coisa de misturar venda com compra, compra com venda, uma barbaridade, mas no fundo a idéia é gastar pouco agora para poder ganhar muito no futuro se a coisa der certo e, caso dê errado, como o gasto foi pequeno, perder pouco. O principal é que com isso podemos tomar as grandes decisões na hora certa, que é justamente quando a incerteza diminui.</p>
<p><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/ZF_h5ySafLA"></param> <embed src="http://www.youtube.com/v/ZF_h5ySafLA" type="application/x-shockwave-flash" width="425" height="350"></embed></object></p>
<p>A Microsoft fez isso com software, em 1988, quando apresentou na Comdex o DOS, uma versão do Windows, o OS/2 para IBM, uma versão do UNIX e as primeiras versões do Word e do Excel. Nessa época não se sabia qual plataforma iria prevalecer e Gates tinha a estratégia: cobrir todas as possibilidades. Ele jogou o jogo das opções e esperou o mercado emergir.</p>
<p>Processos de desenvolvimento de software podem ser vistos como uma forma de criar opções, permitindo que as decisões sejam adiadas para o momento em que o cliente sabe claramente o que quer. Não se pode confundir com falta de planejamento, mas com uma forma de deixar as coisas sempre prontas para se adaptarem e mudarem conforme a necessidade do cliente. A idéia é evitar tomar decisões erradas antecipadamente e ao mesmo tempo poder mudar rapidamente de rumo caso seja necessário.</p>
<p>Vale lembrar que pensar em opções tem seu custo: opções não garantem sucesso. Mas elas são uma excelente ferramenta em tempos de incertezas e devem ser usadas para tomar decisões olhando-se fatos, baseando-se em aprendizado e não em especulações. </p>
<p>Fonte: Lean Software Development - An Agile Toolkit</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/10/26/investimento-em-opcoes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Por que pareamento é, no mínimo, tão produtivo quanto trabalhar sozinho?</title>
		<link>http://agilblog.locaweb.com.br/2008/10/20/por-que-pareamento-e-no-minimo-tao-produtivo-quanto-trabalhar-sozinho/</link>
		<comments>http://agilblog.locaweb.com.br/2008/10/20/por-que-pareamento-e-no-minimo-tao-produtivo-quanto-trabalhar-sozinho/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 12:06:20 +0000</pubDate>
		<dc:creator>Joca</dc:creator>
		
		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=73</guid>
		<description><![CDATA[Obie Fernandez falou na sua palestra no Rails Summit Latin America 2008 sobre porque pareamento é, no mínimo, tão produtivo quanto trabalhar sozinho:

Quando está trabalhando em par se trabalha o dia todo. Pois ao trabalhar sozinho, você vê o seu e-mail, lê blogs e etc. E essas coisas não acontecem com programação em par. Ao [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://obiefernandez.com/">Obie Fernandez</a> falou na sua palestra no <a href="http://www.locaweb.com.br/railssummit">Rails Summit Latin America 2008</a> sobre porque pareamento é, no mínimo, tão produtivo quanto trabalhar sozinho:</p>
<blockquote><p>
Quando está trabalhando em par se trabalha o dia todo. Pois ao trabalhar sozinho, você vê o seu e-mail, lê blogs e etc. E essas coisas não acontecem com programação em par. Ao fim de um dia de programação em par você está cansado. Pois você realmente pensou e trabalhou o dia todo, mas você fica contente, pois sabe que teve o trabalho realizado.
</p></blockquote>
<p>Para ver a transcrição completa da apresentação, acesse o <a href="http://mergulhao.info/2008/10/16/rails-summit-dia-16-obie-fernandez">blog do Sylvestre Mergulhão</a>.</p>
<p>Existem vários estudos científicos sobre pareamento. Uma das mais conhecidas estudiosas sobre o assunto é a <a href="http://collaboration.csc.ncsu.edu/laurie">Laurie Willians</a>. Veja um vídeo que ela fez para mostrar a estudantes as vantagens de programação em pares:</p>
<p><center><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/A6kdFdJp4jY&#038;hl=en&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/A6kdFdJp4jY&#038;hl=en&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></center></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/10/20/por-que-pareamento-e-no-minimo-tao-produtivo-quanto-trabalhar-sozinho/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A natureza de desenvolver software</title>
		<link>http://agilblog.locaweb.com.br/2008/10/18/a-natureza-de-desenvolver-software/</link>
		<comments>http://agilblog.locaweb.com.br/2008/10/18/a-natureza-de-desenvolver-software/#comments</comments>
		<pubDate>Sat, 18 Oct 2008 17:38:11 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[Lean Software Development]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=72</guid>
		<description><![CDATA[A geração de bom software não é um processo de produção; é um processo de desenvolvimento. Desenvolver é diferente de produzir. Desenvolver é como criar uma receita, enquanto que produzir é seguir os passos de uma receita pronta. São atividades diferentes. Desenvolver uma receita é um processo de aprendizado, de tentativa e erro. Quando um [...]]]></description>
			<content:encoded><![CDATA[<p>A geração de bom software não é um processo de produção; é um processo de desenvolvimento. Desenvolver é diferente de produzir. Desenvolver é como criar uma receita, enquanto que produzir é seguir os passos de uma receita pronta. São atividades diferentes. Desenvolver uma receita é um processo de aprendizado, de tentativa e erro. Quando um grande chefe cria um prato, ele não o cria de primeira. O prato primordial é resultado de um refinamento, de várias tentativas e variações sobre um tema, na busca do resultado perfeito.</p>
<table style="height: 200px;" border="1" width="416">
<tbody>
<tr>
<td style="text-align: center;"><span style="font-weight: bold;">Desenvolvimento</span><br />
Projetar a receita</td>
<td>
<div style="text-align: center;"><span style="font-weight: bold;">Produção</span></div>
<div style="text-align: center;">Produzir o prato</div>
</td>
</tr>
</tbody>
<tbody>
<tr>
<td>
<ul>
<li>Qualidade é estar de acordo com o uso</li>
<li>Variações são boas</li>
<li>Iterações geram valor</li>
</ul>
</td>
<td>
<ul>
<li>Qualidade é estar de acordo com os requisitos</li>
<li>Variações são ruim</li>
<li>Iterações geram desperdício (re-trabalho)</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>Na Disneylândia, existem centenas de atores cujo único trabalho é fazer com que cada visitante tenha momentos maravilhosos. Os requisitos do que é um &#8220;momento maravilhoso&#8221; muda de visitante para visitante e o trabalho do ator é descobrir o que o visitante vê como experiência de qualidade e se certificar de que ele tenha essa experiência.</p>
<p>A visão de qualidade de serviço (e hoje software é serviço) leva em conta que cada cliente tem uma idéia diferente do que significa uma experiência de qualidade.</p>
<p>A diferença entre prover um serviço e produzir um produto é que, em serviços, atender a necessidade do cliente requer variações, enquanto que em linhas de produção variações são vistas como inimigas.</p>
<p>Problemas de software possuem várias soluções, em vários níveis, feitas por todos os membros do time. Não só os arquitetos estão envolvidos, mas todos os desenvolvedores. Escrever código envolve um entendimento profundo do problema, reconhecer padrões, experimentar várias abordagens, testar os resultados. Para isso, o melhor processo é aquele que consiste em ciclos curtos de aprendizado.</p>
<p><span style="font-style: italic;">Fonte: Mary and Tom Poppendieck, Lean Software Development - An Agile Toolkit</span></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/10/18/a-natureza-de-desenvolver-software/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cascata x ágil</title>
		<link>http://agilblog.locaweb.com.br/2008/10/15/cascata-x-agil/</link>
		<comments>http://agilblog.locaweb.com.br/2008/10/15/cascata-x-agil/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 21:33:43 +0000</pubDate>
		<dc:creator>Joca</dc:creator>
		
		<category><![CDATA[Sem Categoria]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=70</guid>
		<description><![CDATA[Por meio de um pingback que cita o meu primeiro texto aqui nesse blog, cheguei no post Metodologia: Cascata x Ágil que tem um vídeo bacana comparando metodologia de desenvolvimento em cascata e as metodologias de desenvolvimento ágil. Pode ser uma boa ferramenta de aprensentação das metodologias ágeis:

]]></description>
			<content:encoded><![CDATA[<p>Por meio de um <a href="http://agilblog.locaweb.com.br/2008/05/05/o-que-sao/#comment-46">pingback</a> que cita o <a href="http://agilblog.locaweb.com.br/2008/05/05/o-que-sao/">meu primeiro texto</a> aqui nesse blog, cheguei no post <a href="http://oiniciodofim.alojagratis.org/desenvolvimento/metodologia-cascata-x-agil">Metodologia: Cascata x Ágil</a> que tem um vídeo bacana comparando metodologia de desenvolvimento em cascata e as metodologias de desenvolvimento ágil. Pode ser uma boa ferramenta de aprensentação das metodologias ágeis:</p>
<p><center><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/gDDO3ob-4ZY&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/gDDO3ob-4ZY&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></center></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/10/15/cascata-x-agil/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Necessidade de impor a colaboração</title>
		<link>http://agilblog.locaweb.com.br/2008/10/06/necessidade-de-impor-a-colaboracao/</link>
		<comments>http://agilblog.locaweb.com.br/2008/10/06/necessidade-de-impor-a-colaboracao/#comments</comments>
		<pubDate>Tue, 07 Oct 2008 01:55:31 +0000</pubDate>
		<dc:creator>Joca</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=69</guid>
		<description><![CDATA[Quando lemos sobre como funciona a colaboração e o auto-gerenciamento em times que adotaram metodologias ágeis, sobre como tudo funciona de forma democrática, ficamos com a impressão que os desenvolvedores foram os primeiros a abraçar esses conceitos e que o difícil foi fazer a alta gerência aceitar.
Paul Glen, um consultor sobre liderança de geeks que [...]]]></description>
			<content:encoded><![CDATA[<p>Quando lemos sobre como funciona a colaboração e o auto-gerenciamento em times que adotaram metodologias ágeis, sobre como tudo funciona de forma democrática, ficamos com a impressão que os desenvolvedores foram os primeiros a abraçar esses conceitos e que o difícil foi fazer a alta gerência aceitar.</p>
<p><a href="http://www.paulglen.com/pages/PMG_Bio.htm">Paul Glen</a>, um consultor sobre liderança de geeks que disponibiliza vários artigos sobre o tema, escreveu um artigo entitulado &#8220;<a href="http://www.paulglen.com/pages/article_91.htm">Sometimes It Takes a Tyrant to Support Collaboration</a>&#8221; onde ele explica que muitas vezes a colaboração precisa ser defendida pelo líder em função de alguns tipos de comportamentos que são prejudiciais ao grupo. Ele dá também algumas formas de lidar com esse tipo de comportamento.</p>
<p>Eu gostaria de ir um pouco além e escrever sobre o que, ao meu ver, seriam as causas desses comportamentos inadequados que podem por em risco a colaboração em um time que adotou metodologias ágeis.</p>
<p>Há dois aspectos do trabalho de desenvolvimento de sistemas não colaborativo que tenho visto como sendo as raízes desses comportamentos inadequados:
<ul>
<li><b>falsa sensação de poder:</b> o trabalho técnico isolado dá uma falsa sensação de poder. Se somente uma pessoa sabe fazer determinado trabalho técnico, ela começa a se sentir indispensável e acredita que seu emprego está garantido. Por outro lado, gerentes não gostam de se sentir reféns. É natural que o gerente queira que mais pessoas conheçam o trabalho de outras pessoas do time para que, na ausência de uma dessas pessoas, o time não fique capenga. As metodologias ágeis pressupõem a colaboração, chegando ao ponto de usar a <a href="http://en.wikipedia.org/wiki/Pair_programming">programação pareada</a>. Isso é um risco para aqueles que acham que o fato de só eles saberem determinada parte do sistema é uma garantia de emprego.
<li><b>deficiências escondidas:</b>  o trabalho técnico isolado dá a oportunidade de esconder deficiências. Um desenvolvedor que tenha alguma deficiência, por não ter seu código revisto por outras pessoas pode facilmente esconder suas deficiências. Esse é outro cenário que um gerente não quer ver. Deficiênciais técnicas podem ser danosas não só do ponto de vista de produtividade, ou seja, algo demorar mais para ser feito do que deveria, mas também do ponto de vista de qualidade, pois código feito por desenvolvedores que escondem deficiências tem um potencial enorme de dar defeito. As metodologias ágeis, por meio da intensa colaboração que deve ser praticada, expõe as deficiências, o que também pode ser uma ameaça para alguns desenvolvedores.
</ul>
<p>Quando da implementação de metodologia ágil, pode acontecer de uma ou mais pessoas do time se sentirem ameaçadas pelos efeitos da colaboração em função dos aspectos acima e, numa situação como essa, acabarem optando por procurar outro emprego. Esse é um risco conhecido. <a href="http://www.scrumalliance.org/profiles/7-ken-schwaber">Ken Schwaber</a>, um dos criadores do Scrum, menciona que é esperado até <a href="http://groups.yahoo.com/group/scrumdevelopment/message/15041">20% de turn over quando da implementação de metodologias ágeis</a>. Ele também menciona que até 40% da gerência pode ir embora. Comentarei sobre o que muda na vida de um gerente quando o time adota metodologias ágeis em breve.</p>
<p>Por isso, apesar de soar estranho, às vezes é mesmo necessário ser um ditador para garantir que a colaboração prevaleça em seu time.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/10/06/necessidade-de-impor-a-colaboracao/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Como &#8220;encaixar&#8221; UX em ambientes ágeis?</title>
		<link>http://agilblog.locaweb.com.br/2008/09/26/como-encaixar-ux-em-ambientes-ageis/</link>
		<comments>http://agilblog.locaweb.com.br/2008/09/26/como-encaixar-ux-em-ambientes-ageis/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 23:21:07 +0000</pubDate>
		<dc:creator>Joca</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<category><![CDATA[experiência do usuário]]></category>

		<category><![CDATA[protótipo]]></category>

		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=64</guid>
		<description><![CDATA[Dica do Marty Cagan, da SVPG:
http://www.svpg.com/resources/Agile/Process.html

]]></description>
			<content:encoded><![CDATA[<p>Dica do <a href="http://www.svpg.com/company/team/team.html#marty">Marty Cagan</a>, da <a href="http://www.svpg.com/index.html">SVPG</a>:</p>
<p><a href="http://www.svpg.com/resources/Agile/Process.html">http://www.svpg.com/resources/Agile/Process.html</a></p>
<p><center><a href='http://uxblog.locaweb.com.br/wp-content/uploads/2008/09/agile1.jpg'><img src="http://uxblog.locaweb.com.br/wp-content/uploads/2008/09/agile1-300x178.jpg" alt="" title="Agile process" width="300" height="178" class="alignnone size-medium wp-image-50" /></a></center></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/09/26/como-encaixar-ux-em-ambientes-ageis/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agenda Ágil de outubro</title>
		<link>http://agilblog.locaweb.com.br/2008/09/22/agenda-agil-de-outubro/</link>
		<comments>http://agilblog.locaweb.com.br/2008/09/22/agenda-agil-de-outubro/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 17:58:21 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[Eventos]]></category>

		<category><![CDATA[Lean Software Development]]></category>

		<category><![CDATA[Planejamento]]></category>

		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[Testes]]></category>

		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=60</guid>
		<description><![CDATA[O mês de outubro está repleto de ótimos eventos ágeis. Vai ser difícil conciliar a agenda para conseguir acompanhar tudo que acontecerá no próximo mês. Aí vão as dicas:
Dia 11 de Outubro: Encontro Ágil, organizado pela Agilcoop. O evento é gratuito e terá uma trilha básica para os iniciantes e uma trilha avançada para aqueles [...]]]></description>
			<content:encoded><![CDATA[<p>O mês de outubro está repleto de ótimos eventos ágeis. Vai ser difícil conciliar a agenda para conseguir acompanhar tudo que acontecerá no próximo mês. Aí vão as dicas:<a href="http://agilblog.locaweb.com.br/wp-content/uploads/2008/09/badget1.png"><img class="alignright size-medium wp-image-61" title="Encontro Ágil" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/09/badget1.png" alt="" width="196" height="70" /></a></p>
<p>Dia 11 de Outubro: <a href="http://www.encontroagil.com.br/" target="_blank">Encontro Ágil</a>, organizado pela <a href="http://agilcoop.incubadora.fapesp.br/portal" target="_blank">Agilcoop</a>. O evento é <strong>gratuito</strong> e terá uma trilha básica para os iniciantes e uma trilha avançada para aqueles que já conhecem métodos ágeis e querem se aprofundar nos conceitos. Presenças confirmadas de <a href="http://www.ime.usp.br/~kon" target="_blank">Fábio Kon</a>, Dairton Bassi e Vinicius Teles entre outros.</p>
<p><a href="http://agilblog.locaweb.com.br/wp-content/uploads/2008/09/railsummit.jpg"><img class="alignright size-medium wp-image-63" title="railsummit" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/09/railsummit.jpg" alt="" width="124" height="100" /></a></p>
<p>Dias 15 e 16 de Outubro: <a href="http://www.locaweb.com.br/railssummit/" target="_blank">Rails Summit Latin America</a>, organizado pela Locaweb. O foco do evento é a linguagem Ruby On Rails, mas sabemos que a comunidade Rails está fortemente ligada à comunidade ágil. Presenças de Chad Fowler, <a href="http://www.akitaonrails.com/" target="_blank">Fábio Akita</a>, <a href="http://www.dtsato.com/blog/" target="_blank">Danilo Sato</a>, Fábio Kung.<a href="http://agilblog.locaweb.com.br/wp-content/uploads/2008/09/falando-agile-site_06.gif"><img class="alignright size-medium wp-image-62" title="falando-agile-site_06" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/09/falando-agile-site_06.gif" alt="" width="114" height="127" /></a></p>
<p>Dias 23 e 24 de Outubro: <a href="http://www.caelum.com.br/falando-em-agile/" target="_blank">Falando em Agile</a>, organizado pela Caelum. O evento terá participações importantes de colaboradores da Thoughtworks, uma das primeiras empresas de consultoria a adotar métodos ágeis. Presenças de David Anderson, <a href="http://amagno.blogspot.com/" target="_blank">Alexandre Magno</a>, Adail Retamal e Edmílson Miyasaki e muito mais.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/09/22/agenda-agil-de-outubro/feed/</wfw:commentRss>
		</item>
		<item>
		<title>QA em ambiente ágil</title>
		<link>http://agilblog.locaweb.com.br/2008/09/12/qa-em-ambiente-agil/</link>
		<comments>http://agilblog.locaweb.com.br/2008/09/12/qa-em-ambiente-agil/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 19:18:57 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[Testes]]></category>

		<category><![CDATA[QA ágil]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=59</guid>
		<description><![CDATA[Dentro do desenvolvimento ágil, um dos assuntos mais difíceis de aprender e de colocar em prática são os TESTES. O tema Teste abrange uma série de assuntos:

Automatização
Refatoração
Integração Contínua
Desenvolvimento Orientado a Testes (TDD)
Fases de Teste
Mocks, Stubs
Fixtures

Para falar sobre esses assuntos e todos mais que dizem respeito a testes, o QA (Quality Assurance) de uma das equipes [...]]]></description>
			<content:encoded><![CDATA[<p>Dentro do desenvolvimento ágil, um dos assuntos mais difíceis de aprender e de colocar em prática são os TESTES. O tema Teste abrange uma série de assuntos:</p>
<ul>
<li>Automatização</li>
<li>Refatoração</li>
<li>Integração Contínua</li>
<li>Desenvolvimento Orientado a Testes (TDD)</li>
<li>Fases de Teste</li>
<li>Mocks, Stubs</li>
<li>Fixtures</li>
</ul>
<p>Para falar sobre esses assuntos e todos mais que dizem respeito a testes, o QA (Quality Assurance) de uma das equipes da Locaweb criou o blog: <a href="http://franklin.locaweb.com.br/qualityassurance/" target="_blank">Testes e Qualidade em ambiente ágil</a>. Vale a pena ficar de olho nos próximos posts desse blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/09/12/qa-em-ambiente-agil/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agile2008 Conference</title>
		<link>http://agilblog.locaweb.com.br/2008/08/21/agile-2008/</link>
		<comments>http://agilblog.locaweb.com.br/2008/08/21/agile-2008/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 17:00:48 +0000</pubDate>
		<dc:creator>Elson Barbosa</dc:creator>
		
		<category><![CDATA[Lean Software Development]]></category>

		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[XP]]></category>

		<category><![CDATA[Agile2008]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=55</guid>
		<description><![CDATA[No início de agosto a Locaweb esteve presente no maior evento de Metodologias Ágeis do planeta: o Agile2008, em Toronto, Canadá. Os números impressionaram: por volta de 2000 participantes do mundo inteiro se dividiram em quase 500 sessões sobre os mais diversos assuntos, desde Scrum, XP e Lean até Cultura Ágil, Liderança Ágil, Planejamento Ágil, [...]]]></description>
			<content:encoded><![CDATA[<p>No início de agosto a Locaweb esteve presente no maior evento de Metodologias Ágeis do planeta: o <a href="http://www.agile2008.org">Agile2008</a>, em Toronto, Canadá. Os números impressionaram: por volta de 2000 participantes do mundo inteiro se dividiram em <a href="http://www.agile2008.org/program.html">quase 500 sessões</a> sobre os mais diversos assuntos, desde Scrum, XP e Lean até Cultura Ágil, Liderança Ágil, Planejamento Ágil, Valores, Métricas, Ferramentas, Qualidade, UX etc. As credenciais dos palestrantes também impressionaram: Mary Poppendieck (autora de <em>Implementing Lean Software Development</em>), Mike Cohn (autor de <em>Agile Estimating and Planning</em>), Alan Shalloway (autor de <em>Design Patterns Explained: A New Perspective on Object-Oriented Design</em>), Scott Ambler (autor de <em>Refactoring Databases: Evolutionary Database Design</em>), Henrik Kniberg (autor de <em>Scrum and XP from the Trenches</em>), entre dezenas de outros.</p>
<p><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/08/agile2008-300x225.jpg" alt="" title="agile2008" width="300" height="225" class="alignnone size-medium wp-image-56" /></p>
<p>Como participante, a maior dificuldade foi escolher a melhor sessão a assistir. Em média havia 40 sessões simultâneas, sendo no mínimo umas 10 imperdíveis. A seguir alguns breves comentários sobre as sessões a que assisti:</p>
<ul>
<li><strong>Expanding Agile Horizons: The Five Dimensions of Systems</strong><br />
<em>Mary Poppendieck</em><br />
Poppendieck começou questionando se Ágil pode ser somente mais uma &#8220;plank road&#8221; - uma excelente solução temporária que não sobrevive a longo prazo. Mas concluiu que até o momento não há indícios que as Metodologias Ágeis sejam temporárias - pelo contrário. Em seguida explicou as cinco dimensões que todo sistema deve ter - Propósito, Estrutura, Integridade, Tempo de Vida e Resultados.</li>
<p></p>
<li><strong>Introduction to Lean Software Development</strong><br />
<em>Alan Shalloway</em><br />
Shalloway descreveu as semelhanças entre o Desenvolvimento de Produto Lean e o Desenvolvimento de Software Ágil. Descreveu o Pensamento Lean, seus princípios - Valor, Fluxo de Valor, Fluxo, Puxar, Perfeição - e suas práticas - Otimizar o Todo, Eliminar Desperdícios, Construir Qualidade, Entregar Rápido.</li>
<p></p>
<li><strong>Agile Estimating and Planning</strong><br />
<em>Mike Cohn</em><br />
Cohn apresentou um resumo do livro <em>Agile Estimating and Planning</em>, uma das bíblias da Metodologia Ágil. Todos os conceitos básicos - Backlog de Produtos, Estimativas, Pontos de História, Planejamento de Sprints, Planning Poker, Velocidades, Releases etc - foram apresentados, além de algumas boas dicas para quem já aplica a metodologia.</li>
<p></p>
<li><strong>Embrace Uncertainty, Why In Agile Development Knowing What You Want May Be An Impediment to Getting It</strong><br />
<em>Jeff Patton</em><br />
Nessa palestra Patton mostrou como o conceito de Iteração Ágil pode ser mal interpretado ao ignorarmos incertezas. Ele demonstrou como desenvolver histórias pensando em Metas de Qualidade Iterativa - primeiro focar em Necessidade, depois Flexibilidade, depois Segurança, e por fim Luxo e Performance. Em outras palavras, se o release contiver 10 features, é melhor desenvolver o mínimo de cada uma das 10 em poucas iterações e depois melhorá-las do que desenvolver as 10 completas uma de cada vez. &#8220;Não existe iteração se você fizer uma única vez&#8221;.</li>
<p></p>
<li><strong>Value Stream Mapping - Extending Our View to the Enterprise</strong><br />
<em>Alan Shalloway</em><br />
Shalloway demonstrou como criar um Mapa de Fluxo de Valor - identificar as ações, identificar os tempos totais e de valor de cada ação, identificar retrabalhos, calcular a eficiência atual -, para enfim identificar o que fazer para melhorar cada ponto do processo e assim melhorar sua eficiência.</li>
<p></p>
<li><strong>Prioritizing Your Product Backlog</strong><br />
<em>Mike Cohn</em><br />
Cohn mostrou como priorizar histórias de produtos utilizando pesquisas de usuários aliado a diferentes técnicas de análise: Kano Analysis, Theme Screening, Theme Scoring, Relative Weighting etc.</li>
<p></p>
<li><strong>Defining the Role of Agile Manager - Theory and Practice</strong><br />
<em>Michael Spayd, Lyssa Adkins</em><br />
Spayd e Adkins mostraram os diferentes tipos de Liderança Ágil - Gerenciamento de Times, de Recursos, de Performance, de Resultados, de Portfolio, de Parceiros Internos, de Fornecedores -, explicaram seus papéis e responsabilidades, e sugeriram um &#8220;health check&#8221; para identificar sucessos e pontos de melhoria.</li>
<p></p>
<li><strong>Future Directions for Agile</strong><br />
<em>David Anderson</em><br />
Anderson questionou o quanto o próprio conceito de Agilidade se adapta e evolui com o tempo, e apresentou algumas novas tendências como Behaviour-Driven Development, Kanban Development e Real Option Theory.</li>
<p></p>
<li><strong>From High-Performing to Hyper-Performing Agile Teams</strong><br />
<em>Gabrielle Benefield, Jeff Sutherland, Rob Mee, Jason Titus</em><br />
Nesse debate os participantes relataram experiências de Ágil na PatientKeeper, Pivotal e Yahoo Mail, contando como melhoraram a performance de seus times e a qualidade de seus produtos.</li>
<p></p>
<li><strong>The Aikido of Agile Project Metrics</strong><br />
<em>Alan Goerner</em><br />
Goerner mostrou técnicas simples e eficientes para criar métricas em projetos ágeis, demonstrando indicadores de qualidade e prazo através da análise de velocidades de times e de quantidade de valor entregue.</li>
<p></p>
<li><strong>Energize Your Strategy Through Agility and Innovation</strong><br />
<em>Jochen Krebs</em><br />
Krebs comentou a importância da inovação através de métodos ágeis, buscando definir metas (maximização de valor, alinhamento estratégico) e evitando riscos (muitos projetos em paralelo, projetos errados em andamento, falta de visão).</li>
<p></p>
<li><strong>Starting a Kanban System for Software Engineering with Value Stream Maps and Theory of Constraints</strong><br />
<em>Corey Ladas</em><br />
Ladas deu dicas de como aplicar Lean em desenvolvimento de software, utilizando Kanban (cartões ou post-its), limitando trabalho em andamento e implementando um sistema puxado de atividades.</li>
<p></p>
<li><strong>10 Ways to Screw Up with Scrum and XP</strong><br />
<em>Henrik Kniberg</em><br />
Kniberg apresentou as 10 &#8220;melhores&#8221; maneiras de estragar Scrum e XP: Acreditar no hype, não ter uma definição de &#8220;pronto&#8221;, não analisar velocidade, não ter retrospectivas, não ter comprometimento do time, ter débitos técnicos, não ter teamwork, não ter um product owner efetivo, mergophobia, não ter um backlog claro.</li>
</ul>
<h3>Conclusão</h3>
<p>A oportunidade de assistir a sessões dos experts nesses conceitos foi excelente. A cada palestra assistida surgiam novas idéias de aplicação aqui na Locaweb. O ponto contra foi a enorme quantidade de palestras simultâneas, o que obrigou cada participante a abrir mão de centenas de sessões em favor de algumas poucas. Mas no geral vale a pena, e muito. O ganho que teremos na empresa com a aplicação das diversas idéias discutidas ali certamente será enorme.</p>
<p>Por exemplo, implantamos o Método Ágil de Remoção de Impedimentos com sucesso absoluto! <img src='http://agilblog.locaweb.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/08/impediment-removal-device" alt="" title="impediment-removal-device1" class="alignnone size-medium wp-image-58" /></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/08/21/agile-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>XP e a Teoria das Restrições</title>
		<link>http://agilblog.locaweb.com.br/2008/08/14/xp-e-a-teoria-das-restricoes/</link>
		<comments>http://agilblog.locaweb.com.br/2008/08/14/xp-e-a-teoria-das-restricoes/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 17:52:14 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[XP]]></category>

		<category><![CDATA[programação extrema]]></category>

		<category><![CDATA[restrições]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=30</guid>
		<description><![CDATA[A metodologia XP não resolve todos os problemas de uma organização. O principal foco dela é no desenvolvimento de software. A Programação Extrema não resolverá problemas das áreas de marketing, vendas ou recursos humanos. Porém a adoção dessa metodologia acarreta mudanças em toda empresa. Vamos mostrar porque isso acontece. Para isso usaremos o exemplo da [...]]]></description>
			<content:encoded><![CDATA[<p>A metodologia XP não resolve todos os problemas de uma organização. O principal foco dela é no desenvolvimento de software. A Programação Extrema não resolverá problemas das áreas de marketing, vendas ou recursos humanos. Porém a adoção dessa metodologia acarreta mudanças em toda empresa. Vamos mostrar porque isso acontece. Para isso usaremos o exemplo da <strong>Teoria das Restrições</strong>, mostrada no livro <a href="http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658" target="_blank">Extreme Programming Explained - Second Edition (Kent Beck)</a>.</p>
<p>Suponha que você tenha uma lavanderia como a da figura.</p>
<p><a href="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/lavanderia1.jpg"><img class="aligncenter size-medium wp-image-51" title="lavanderia1" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/lavanderia1-300x123.jpg" alt="" width="300" height="123" /></a></p>
<p>Sua lavadora de roupas demora 45 minutos para limpar as roupas, a secadora 90 minutos para secar. Passar roupas demora 15 minutos. O gargalo desse processo está na secadora. Mesmo que você compre mais uma lavadora, não conseguirá ter mais roupas terminadas. Pode ser que tenha mais roupas lavadas temporariamente, mas terá que armazená-las em algum lugar durante um tempo até que a secadora termine o trabalho anterior.</p>
<p>A Teoria das Restrições diz que num sistema existe uma restrição (gargalo) por vez. Para melhorar o processo como um todo, você precisa encontrar onde está a restrição.</p>
<p>Como encontrar restrições e eliminá-las? O trabalho &#8220;empilha&#8221; nos pontos de restrição. A secadora é um gargalo. Para melhorar meu processo de lavagem, preciso aumentar a velocidade de secagem. Posso comprar uma secadora nova. Posso usar uma lavadora que centrifuga a roupa e diminui o tempo de secagem. Ou posso estender a roupa num varal:</p>
<p><a href="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/lavanderia2.jpg"><img class="aligncenter size-medium wp-image-50" title="lavanderia2" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/lavanderia2-300x206.jpg" alt="" width="300" height="206" /></a></p>
<p>Uma vez eliminada uma restrição,  outro gargalo surgirá no processo e deverá ser otimizado.</p>
<p>Em desenvolvimento de software os gargalos precisam ser identificados. No processo tradicional (cascata) temos:</p>
<p>Levantamento de Requisitos » Especificação » Implementação » Testes de Integração</p>
<p>Se existirem pilhas de funcionalidades não implementadas, o gargalo está na implementação. Se há muitas funcionalidades implementadas esperando para serem testadas, o gargalo está nos testes de integração e assim por diante. Esse modelo é conhecido como &#8220;push&#8221;. XP usa o modelo &#8220;pull&#8221;:</p>
<p style="text-align: center;"><a href="http://agilblog.locaweb.com.br/wp-content/uploads/2008/08/lava3.jpg"><img class="alignnone size-medium wp-image-54 aligncenter" title="XP modelo \" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/08/lava3-300x300.jpg" alt="" width="300" height="300" /></a></p>
<p>As histórias são especificadas em detalhes imediatamente antes de serem implementadas. Os testes são extraídos (pulled) da especificação. A interface é definida para satisfazer os testes. O código é escrito para satisfazer a interface e os testes. <strong>O design é refinado para atender às necessidades do código</strong>.</p>
<p>A Teoria das Restrições é interessante para ajudar a identificar qual é o seu processo. Vale ressaltar que o desenvolvimento de software é um processo <strong>humano</strong>, não uma fábrica. Não pense nas pessoas como caixas desse processo.</p>
<p>O uso de XP na empresa pode trocar o gargalo do processo para algum lugar fora da área de desenvolvimento de software. Por isso, XP pode afetar toda a empresa quando ela resolve adotar a metodologia. Por exemplo, se os programadores começarem a implementar mais rápido do que o time de produtos consegue especificar, o gargalo vai parar no time de produtos. Beck conta que algumas vezes equipes de software produtivas são tristemente despedidas e XP eliminado, pois traz a tona ineficiências em outras áreas da empresa. Daí a importância de ter o apoio de algum alto executivo que defenderá a metodologia perante outras áreas.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/08/14/xp-e-a-teoria-das-restricoes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Estimar jogando</title>
		<link>http://agilblog.locaweb.com.br/2008/08/01/estimar-jogando/</link>
		<comments>http://agilblog.locaweb.com.br/2008/08/01/estimar-jogando/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 19:55:57 +0000</pubDate>
		<dc:creator>Mauricio De Diana</dc:creator>
		
		<category><![CDATA[Planejamento]]></category>

		<category><![CDATA[estimativas]]></category>

		<category><![CDATA[histórias de usuário]]></category>

		<category><![CDATA[tarefas]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=52</guid>
		<description><![CDATA[Alguns posts atrás comentamos sobre como estimar histórias e tarefas. Agora vamos falar um pouco sobre o processo de estimativa em si.
Em uma equipe ágil todos participam das estimativas tanto de histórias quanto de tarefas. Existem alguns problemas que costumam acontecer nessas situações:

Os membros da equipe &#8220;copiam&#8221; a estimativa do desenvolvedor mais experiente, o que [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://agilblog.locaweb.com.br/wp-content/uploads/2008/08/planning-poker-cards.jpg"><img class="alignright size-medium wp-image-53" title="Cartas para Planning Poker" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/08/planning-poker-cards.jpg" alt="" width="200" height="173" /></a>Alguns posts atrás comentamos sobre como <a href="http://agilblog.locaweb.com.br/?p=29">estimar histórias e tarefas</a>. Agora vamos falar um pouco sobre o processo de estimativa em si.</p>
<p>Em uma equipe ágil todos participam das estimativas tanto de histórias quanto de tarefas. Existem alguns problemas que costumam acontecer nessas situações:</p>
<ul>
<li>Os membros da equipe &#8220;copiam&#8221; a estimativa do desenvolvedor mais experiente, o que é equivalente ao caso clássico em que apenas o gerente de projeto ou arquiteto planejam.</li>
<li>Discussões sobre a estimativa de um desenvolvedor começam antes que todos tenham dado sua opinião.</li>
<li>Discussões demoradas acontecem quando todos (ou quase todos) estão concordando, mas ainda não perceberam.</li>
</ul>
<p>Uma técnica interessante para evitar essas situações é o <em><a href="http://www.planningpoker.com/detail.html">planning poker</a></em>. A idéia soa um pouco esquisita a princípio, mas é extremamente eficaz. Nesse &#8220;jogo&#8221; cada desenvolvedor possui um conjunto de cartas com os valores possíveis para as estimativas. Existem alguns baralhos específicos para isso (como os da <a href="http://www.crisp.se/planningpoker/">Crisp</a> ou da <a href="http://www.mountaingoatsoftware.com/products/cards">Mountain Goat</a>), mas é perfeitamente possível usar um baralho normal, ou até mesmo fazer o seu próprio. A estimativa de cada item se dá da seguinte maneira:</p>
<ol>
<li>O item é apresentado brevemente para todos pelo moderador, que normalmente é o Product Owner ou o Scrum Master.</li>
<li>Os desenvolvedores fazem perguntas para entender melhor do que se trata o item, mas sem discutir detalhes de implementação. O foco aqui é entender o que deve ser feito, não como.</li>
<li>Cada desenvolvedor escolhe em silêncio a carta que representa sua estimativa.</li>
<li>O moderador pede para todos mostrarem as cartas.</li>
<li>Se todas as estimativas forem iguais, o que raramente acontece de primeira, a estimativa está feita e o processo volta ao início, para um novo item.</li>
<li>Se houver ao menos uma estimativa diferente, aqueles que apresentaram o(s) maior(es) e o(s) menor(es) valor(es) se justificam.</li>
<li>O processo se repete até todas as estimativas convergirem. Aqui vale o bom senso: se, por exemplo, 3 membros da equipe colocaram &#8216;5&#8242; como estimativa, e um único desenvolvedor insiste em colocar &#8216;3&#8242;, o ideal é que ele abra mão.</li>
</ol>
<p>A filosofia por trás desse processo é discutir os detalhes o mínimo possível (mas não menos do que isso), otimizando o tempo usado no planejamento. Todos apresentarem o mesmo valor significa que cada participante pensou em soluções muito semelhantes, portanto não há o que se debater. Quando há discrepância ouve-se apenas os extremos pois provavelmente algum deles enxergou uma solução ou uma profundidade do problema que os outros não viram. E o jogo não é simplesmente democrático (ou seja, vence a maioria) justamente por isso. Muitas vezes apenas um membro da equipe percebeu algo que os outros não viram. Ele pode saber de algo que justifique uma estimativa mais baixa que a dos outros, como a existência de um framework que torne a tarefa muito mais fácil de ser executada, por exemplo. Ou então pode ter algo que explique sua estimativa ser a mais alta como, por exemplo, ele ser o único a saber que a estrutura da base de dados legada é muito difícil de ser alterada.</p>
<p>Estimar não é nem de longe a atividade preferida de programadores (eles costumam preferir programar) e tempo gasto planejando é tempo que não é gasto desenvolvendo. Como planejar é necessário, qualquer técnica que agilize o processo é sempre bem vinda. <em>Planning poker</em> é uma técnica que atinge esse objetivo de forma surpreendente.</p>
<p><strong>Nota:</strong> Quem observou os baralhos com atenção pode ter achado a escala usada nas cartas um pouco estranha. Em breve falaremos sobre ela.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/08/01/estimar-jogando/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mudanças de Sprint</title>
		<link>http://agilblog.locaweb.com.br/2008/07/25/mudancas-de-sprint/</link>
		<comments>http://agilblog.locaweb.com.br/2008/07/25/mudancas-de-sprint/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 23:30:01 +0000</pubDate>
		<dc:creator>Elson Barbosa</dc:creator>
		
		<category><![CDATA[Planejamento]]></category>

		<category><![CDATA[Scrum]]></category>

		<category><![CDATA[burndown]]></category>

		<category><![CDATA[burnup]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=31</guid>
		<description><![CDATA[Algumas semanas atrás apresentamos um webcast sobre metodologias ágeis, com enfoque em Scrum. Observei que um dos assuntos que mais geraram dúvidas é em relação a mudanças durante os sprints. Acredito que vale um post específico sobre esse assunto.
Antes de mais nada, vale lembrar que o Scrum é totalmente flexível para mudanças fora do sprint [...]]]></description>
			<content:encoded><![CDATA[<p>Algumas semanas atrás apresentamos um <a href="http://agilblog.locaweb.com.br/?p=21">webcast sobre metodologias ágeis</a>, com enfoque em Scrum. Observei que um dos assuntos que mais geraram dúvidas é em relação a mudanças durante os sprints. Acredito que vale um post específico sobre esse assunto.</p>
<p>Antes de mais nada, vale lembrar que o Scrum é totalmente flexível para mudanças fora do sprint (ou seja, o backlog de histórias pode ser atualizado a qualquer hora), mas durante o período do sprint, as histórias que entram em um sprint não devem ser alteradas. Contudo, sabemos que exceções acontecem, desde atrasos ou adiantamentos que requerem uma mudança de planejamento, até histórias que têm de ser re-priorizadas ou retiradas do sprint. Na prática, o ideal é a equipe e o PO analisarem cada caso para tomarem a decisão correta. Se existe algo urgente a ser feito, pode valer mais a pena a equipe desenvolver essa história e deixar de entregar outra do que seguir o plano inicial e deixar a história urgente para o sprint seguinte. Cada caso é um caso.</p>
<p>Vamos ver alguns exemplos. Abaixo seguem algumas situações que requerem mudanças durante o sprint, devido a atrasos, adiantamentos ou impedimentos. As situações são baseadas em um sprint imaginário de duas semanas, com um fim-de-semana no meio do sprint, tendo ao todo 100 horas. As análises serão feitas baseadas nos gráficos de burndown e burnup.</p>
<h3>Sprint Atrasado</h3>
<p><strong>Situação A:</strong> A equipe está trabalhando no sprint, mas algo não está indo bem e faz com que a equipe atrase as atividades. O burndown mostra que no fim-de-semana faltavam por volta de 80 horas, ao invés das 50 previstas.</p>
<p><img class="alignnone size-medium wp-image-38" title="bd_a" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/bd_a.bmp" alt="Burndown" /></p>
<p>Existem duas explicações possíveis:</p>
<p><img class="alignright size-medium wp-image-39" title="bu_a_a" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/bu_a_a.bmp" alt="Burnup" /><strong>Explicação A1:</strong> A equipe não está trabalhando no sprint. De acordo com o gráfico de burnup, a equipe trabalhou cerca de 20 horas na primeira semana, ao invés das 50 previstas. É necessário identificar porque isso está acontecendo - Estão recebendo tarefas fora do sprint? São urgentes? O que tem que ser feito para que a equipe volte a produzir?</p>
<p><img class="alignright size-medium wp-image-40" title="bu_a_b" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/bu_a_b.bmp" alt="Burnup" /><strong>Explicação A2:</strong> A equipe subestimou as histórias. De acordo com o burnup, a equipe está trabalhando normalmente no sprint, mas a cada hora trabalhada, novas horas surgem (ex: uma atividade tinha 8 horas; equipe trabalha 4 horas e diz que ainda faltam mais 8 horas de trabalho). De forma análoga, é necessário identificar porque isso está acontecendo - Falta de planejamento? Falta de entendimento das histórias no dia do planejamento? Falta de experiência na linguagem ou ferramenta utilizada?</p>
<p><strong>O que deve ser feito:</strong><br />
- As duas situações pedem a mesma solução: A equipe, mais especificamente o Scrum Master, deve avisar o PO de que algumas histórias não poderão ser entregues nesse sprint, e o PO deve decidir quais podem ser retiradas. Com isso acontecendo, vemos no burndown a situação se normalizando, e no burnup a queda de horas a serem entregues.</p>
<p><img class="alignnone size-medium wp-image-42" title="bd_a1" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/bd_a1.bmp" alt="Burndown" /> <img class="alignnone size-medium wp-image-41" title="bu_a1" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/bu_a1.bmp" alt="Burnup" /></p>
<p><strong>O que não deve ser feito:</strong><br />
- Exigir que a equipe trabalhe mais horas sem cortar escopo: Isso oferece riscos à qualidade final do código.<br />
- A equipe decidir quais histórias não entregar: Quem deve tomar essa decisão é sempre o PO.<br />
- A equipe &#8220;deixar a bomba estourar&#8221; sem avisar o PO.</p>
<h3>Sprint Adiantado</h3>
<p><strong>Situação B:</strong> A equipe está trabalhando no sprint, mas está indo mais rápido que o previsto e deverá terminar o sprint antes do esperado. O burndown mostra que no fim-de-semana faltavam por volta de 30 horas, ao invés das 50 previstas.</p>
<p><img class="alignnone size-medium wp-image-43" title="bd_b" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/bd_b.bmp" alt="Burndown" /></p>
<p>Existem duas explicações possíveis:</p>
<p><img class="alignright size-medium wp-image-45" title="bu_b_b" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/bu_b_a.bmp" alt="Burnup" /><strong>Explicação B1:</strong> A equipe está trabalhando mais do que o previsto. De acordo com o gráfico de burnup, a equipe trabalhou cerca de 70 horas na primeira semana, ao invés das 50 previstas. É necessário identificar porque isso está acontecendo - Estão codificando sem seguir padrões, sem testes e sem qualidade? Estão fazendo pouco pareamento?</p>
<p><img class="alignright size-medium wp-image-44" title="bu_b_a" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/bu_b_b.bmp" alt="Burnup" /><strong>Explicação B2:</strong> A equipe superestimou as histórias. De acordo com o burnup, a equipe está trabalhando normalmente no sprint, mas a cada hora trabalhada, outras horas são eliminadas (ex: uma atividade tinha 8 horas; equipe trabalha 2 horas e diz que faltam somente mais 2 horas de trabalho). De forma análoga, é necessário identificar porque isso está acontecendo - Falta de planejamento? Falta de entendimento das histórias no dia do planejamento?</p>
<p><strong>O que deve ser feito:</strong><br />
- As duas situações pedem a mesma solução: A equipe, mais especificamente o Scrum Master, deve avisar o PO de que o sprint está adiantado, e pedir mais histórias pra completar o sprint. Com isso, vemos no burndown a situação se normalizando, e no burnup o aumento de horas a serem entregues.</p>
<p><img class="alignnone size-medium wp-image-47" title="bd_b1" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/bd_b1.bmp" alt="Burndown" /> <img class="alignnone size-medium wp-image-46" title="bu_b1" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/bu_b1.bmp" alt="Burnup" /></p>
<p><strong>O que não deve ser feito:</strong><br />
- Terminar o sprint alguns dias antes: Em algumas situações pode ser aceitável, mas isso acaba quebrando a cadência da equipe, além de criar possíveis problemas de agendamento de salas, atualização de agendas etc.<br />
- A equipe esconder a situação para trabalhar menos: Isso pode ser visto facilmente nos gráficos, e pode gerar desconfiança entre as partes envolvidas.</p>
<h3>Mudança de Prioridade</h3>
<p><strong>Situação C:</strong> A equipe está trabalhando no sprint, mas um problema urgente surge e deve ser resolvido ainda durante o mesmo sprint.</p>
<p><strong>O que deve ser feito:</strong><br />
- Conversar, sempre. A situação é tão urgente que não pode esperar 15 dias? A metodologia defende a idéia de que o sprint deve ser cancelado, já que o seu escopo está sendo alterado. Contudo, pode valer uma adaptação da metodologia: Fazendo uma renegociação, com a história urgente entrando no sprint, ao mesmo tempo em que outras histórias ainda não iniciadas saem, pode ser mais ágil do que propriamente cancelar o sprint e fazer um novo planejamento.<br />
- Tratar a atividade como impedimento, e discutí-la na revisão de sprint: Esse problema poderia ter sido previsto e/ou evitado? Pode acontecer novamente no futuro?</p>
<p><strong>O que não deve ser feito:</strong><br />
- PO insistir na história urgente sem negociar: &#8220;É rápido e vocês resolvem fácil&#8230;&#8221;<br />
- Tratar a situação fora do sprint: Toda atividade realizada fora do sprint não aparece como resultado da equipe, e é importante saber se essa situação é frequente ou somente uma exceção.</p>
<h3>Revisão de Sprint: Melhoria Contínua</h3>
<p>Por fim, vale lembrar uma das práticas mais importantes das Metodologias Ágeis: Melhoria Contínua. Todas as situações acima devem ser discutidas na reunião de revisão de sprint, e decisões devem ser tomadas para que esses problemas não ocorram mais.</p>
<p><img class="alignnone size-medium wp-image-49" title="manter_mudar" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/manter_mudar.bmp" alt="Revisão" /></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/07/25/mudancas-de-sprint/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Refatoração - Prática para Manter Qualidade</title>
		<link>http://agilblog.locaweb.com.br/2008/07/15/refatoracao-pratica-para-manter-qualidade/</link>
		<comments>http://agilblog.locaweb.com.br/2008/07/15/refatoracao-pratica-para-manter-qualidade/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 13:58:59 +0000</pubDate>
		<dc:creator>Daniel Cukier</dc:creator>
		
		<category><![CDATA[XP]]></category>

		<category><![CDATA[código]]></category>

		<category><![CDATA[práticas XP]]></category>

		<category><![CDATA[refactoring]]></category>

		<category><![CDATA[refatoração]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=33</guid>
		<description><![CDATA[No nosso post anterior sobre XP falamos sobre as várias práticas que compõem a metodologia. Neste artigo abordaremos os detalhes da Refatoração. O termo &#8220;refatoração&#8221; vem do inglês &#8220;refactoring&#8221;, e surgiu nas comunidades de Smalltalk nos anos 80/90. Foi inserida na indústria por Kent Beck como prática XP. Tornou-se famosa com o livro &#8220;Refatoração - [...]]]></description>
			<content:encoded><![CDATA[<p>No nosso post <a href="http://agilblog.locaweb.com.br/?p=6">anterior sobre XP</a> falamos sobre as várias práticas que compõem a metodologia. Neste artigo abordaremos os detalhes da <a href="http://www.refactoring.com/" target="_blank"><strong>Refatoração</strong></a>. O termo &#8220;refatoração&#8221; vem do inglês &#8220;refactoring&#8221;, e surgiu nas comunidades de Smalltalk nos anos 80/90. Foi inserida na indústria por Kent Beck como prática XP. Tornou-se famosa com o livro &#8220;Refatoração - Aperfeiçoando o Projeto de Código Existente&#8221; escrito por <a href="http://www.martinfowler.com/" target="_blank">Martin Fowler</a>. Segundo o próprio M. Fowler define:</p>
<blockquote><p>&#8220;Refatoração é uma técnica disciplinada para reestruturar um código fonte existente, alterando sua estrutura interna sem mudar o seu comportamento externo. Sua essência está em uma série de pequenas transformações que preservam comportamento. Cada transformação (chamada de refatoração) faz pouca coisa, mas uma sequência de pequenas transformações produz uma reestruturação significativa. Uma vez que cada refatoração é pequena, é mais improvável que algo dê errado. O sistema se mantém funcionando integralmente após cada refatoração, reduzindo as chances de o sistema sofrer um dano grave durante a reestruturação&#8221;</p></blockquote>
<p>O objetivo de refatorar um código freqüentemente é manter o custo de manutenção constante ao longo do tempo. Refatorações trazem simplicidade, flexibilidade, clareza e algumas vezes desempenho ao código. Elas ajudam a manter a casa em ordem. Sem refatorações o código tende a ficar cada vez mais bagunçado e quanto maior a bagunça, mais difícil é de arrumar, ou seja, bagunça tende a gerar mais bagunça, até o limite em que o código fica ilegível. O custo de manutenção fica tão alto que a única solução é jogar tudo fora e começar do zero (isso é a última coisa que queremos num projeto de software, embora algumas vezes seja necessária).</p>
<p><a href="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/refatoracao-casa.png"><img class="aligncenter size-full wp-image-34" title="Refatoração" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/refatoracao-casa.png" alt="" width="500" height="182" /></a></p>
<p>Vale lembrar que cada refatoração é um passo trivial (ovo de colombo). O segredo está em conhecer com maestria o vocabulário das refatorações e saber aplicar cada uma delas no momento certo. Martin Fowler mantém um <a href="http://www.refactoring.com/catalog/index.html" target="_blank">catálogo online de refatorações</a>. Alguns exemplos de refatorações:</p>
<ul>
<li>Mudar o nome de uma variável</li>
<li>Encapsular um código repetido num método</li>
<li>Remover um parâmetro não utilizado em um método</li>
<li>Generalizar um método (ex: raizQuadrada(float x) =&gt; raiz(float x, int indice))</li>
</ul>
<h2>Por onde começar?</h2>
<p>Antes de começar a aplicar refatorações, é importante que seu código já tenha uma boa base de testes <a href="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/testes.jpg"><img class="alignleft size-full wp-image-35" style="margin: 10px; float: left;" title="testes" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/testes.jpg" alt="" width="500" height="210" /></a>automatizados. <strong>Teste</strong> é uma outra importante prática da metodologia XP. Testes e refatorações são práticas irmãs. Uma refatoração pode ocasionalmente inserir um erro no sistema. Os testes ajudarão a detectar e corrigir esses erros.</p>
<p>Após aplicar uma refatoração você irá rodar todos os testes &#8220;apertando um botão&#8221; e terá como resultado uma luz verde (testes passaram) ou uma luz vermelha (testes não passaram).</p>
<h2>Um pequeno exemplo</h2>
<p>Vamos dar um pequeno exemplo de refatoração para tornar o conceito claro. Alguns outros exemplos podem ser obtidos <a href="http://agilcoop.incubadora.fapesp.br/portal/slides/refatoracao2006.ppt" target="_blank">nesses slides</a> e no <a href="http://www.refactoring.com/catalog/index.html" target="_blank">catálogo online</a> do Martin Fowler.</p>
<p>O nome da refatoração que vamos usar é <strong>Substituir Variável Temporária por Busca</strong>. suponha que uma variável local está sendo usada para guardar o resultado de uma expressão. A idéia desta refatoração é trocar as referências a esta expressão por um método. Variáveis temporárias encorajam métodos longos (devido ao escopo). Com a refatoração, o código fica mais limpo e o método pode ser usado em outros locais.</p>
<p>Os passos para essa refatoração são:</p>
<ol>
<li>Encontre variáveis locais que são atribuídas uma única vez</li>
<li>Declare temp como final</li>
<li>Compile (para ter certeza)</li>
<li>Extraia a expressão</li>
<li>Compile e teste</li>
</ol>
<p>Exemplo de código:<br />
<code><br />
double getPreco() {<br />
    int precoBase = _quantidade * _precoItem;<br />
    double fatorDesconto;<br />
    if (precoBase &gt; 1000) fatorDesconto = 0.95;<br />
    else fatorDesconto = 0.98;<br />
    return precoBase * fatorDesconto;<br />
}</code></p>
<hr /><code><br />
double getPreco() {<br />
    <span style="color: #ff0000;">final </span>int precoBase = _quantidade * _precoItem;<br />
    <span style="color: #ff0000;">final </span>double fatorDesconto;<br />
    if (precoBase &gt; 1000) fatorDesconto = 0.95;<br />
    else fatorDesconto = 0.98;<br />
    return precoBase * fatorDesconto;<br />
}</code></p>
<hr /><code><br />
double getPreco() {<br />
    final int precoBase = <span style="color: #ff0000;">precoBase()</span>;<br />
    final double fatorDesconto;<br />
    if (precoBase &gt; 1000) fatorDesconto = 0.95;<br />
    else fatorDesconto = 0.98;<br />
    return precoBase * fatorDesconto;<br />
}</code></p>
<p><code><span style="color: #ff0000;">private int precoBase() {<br />
    return _quantidade * _precoItem;<br />
} </span></code></p>
<hr /><code><br />
double getPreco() {<br />
    final double fatorDesconto;<br />
    if (<span style="color: #ff0000;">precoBase()</span> &gt; 1000) fatorDesconto = 0.95;<br />
    else fatorDesconto = 0.98;<br />
    return<span style="color: #ff0000;"> precoBase() </span>* fatorDesconto;<br />
}</code></p>
<p><code>private int precoBase() {<br />
    return _quantidade * _precoItem;<br />
}</code></p>
<hr /><code><br />
double getPreco() {<br />
    final double fatorDesconto = <span style="color: #ff0000;">fatorDesconto()</span>;<br />
    return precoBase() * fatorDesconto;<br />
}</code></p>
<p><code><span style="color: #ff0000;">private int fatorDesconto() {<br />
    if (precoBase() &gt; 1000)<br />
    return 0.95;<br />
    return 0.98;<br />
}</span></code></p>
<p><code>private int precoBase() {<br />
    return _quantidade * _precoItem;<br />
}</code></p>
<p><code>double getPreco() {<br />
    return precoBase() <span style="color: #ff0000;">* fatorDesconto()</span>;<br />
}</code></p>
<hr /><code><br />
double getPreco() {<br />
    return precoBase() * <span style="color: #ff0000;">fatorDesconto()</span>;<br />
}</code></p>
<p><span style="color: #000000;"><code>private int fatorDesconto() {<br />
    if (precoBase() &gt; 1000)<br />
    return 0.95;<br />
    return 0.98;<br />
}</code></span></p>
<p><code>private int precoBase() {<br />
    return _quantidade * _precoItem;<br />
}</code></p>
<p><code>double getPreco() {<br />
    return precoBase() <span style="color: #ff0000;">* fatorDesconto()</span>;<br />
}</code></p>
<hr />
<h2>Conclusões</h2>
<p>O uso de refatorações se torna mais e mais freqüente na medida em que o programador vai ficando mais experiente. As refatorações não devem ser usadas de qualquer modo, mas sim no momento certo e no lugar certo. Um bom programador surge só com muito trabalho e experiência. Qualquer um pode escrever código que o computador consegue entender. Bons programadores escrevem código que pessoas conseguem entender.</p>
<p><a href="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/refatoracaovs.jpg"><img class="alignright size-medium wp-image-37" title="refatoracaovs" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/refatoracaovs-300x201.jpg" alt="" width="315" height="211" /></a></p>
<p><a href="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/refatoracaoe.jpg"><img class="aligncenter size-medium wp-image-36" title="refatoracaoe" src="http://agilblog.locaweb.com.br/wp-content/uploads/2008/07/refatoracaoe-300x214.jpg" alt="" width="300" height="214" /></a></p>
<p>Uma boa dica de quando refatorar é ao identificar três repetições no código. Outro indício é quando você está tendo necessidade de escrever comentários para explicar o que um código faz. Algumas ferramentas como o <a href="http://www.eclipse.org" target="_blank">Eclipse </a>e o Visual Studio já possuem atalhos para as refatorações mais comuns como <a href="http://www.refactoring.com/catalog/renameMethod.html" target="_blank">renomear método</a>, <a href="http://www.refactoring.com/catalog/extractSuperclass.html" target="_blank">extrair superclasse</a>, <a href="http://www.refactoring.com/catalog/introduceParameterObject.html" target="_blank">introduzir objeto parâmetro</a>. A experiência em refatorações trará grandes melhorias na qualidade do código de um programador. Em breve falaremos mais sobre Testes (automatizados), mais uma importante prática em que a Programação Extrema se baseia.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/07/15/refatoracao-pratica-para-manter-qualidade/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fórmula ScrUM</title>
		<link>http://agilblog.locaweb.com.br/2008/07/11/formula-scrum/</link>
		<comments>http://agilblog.locaweb.com.br/2008/07/11/formula-scrum/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 21:06:40 +0000</pubDate>
		<dc:creator>Elson Barbosa</dc:creator>
		
		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=32</guid>
		<description><![CDATA[O Willi da SEA Tecnologia criou uma analogia genial: como uma corrida de Fórmula Um pode ser comparada a um projeto ágil. Vale a leitura:
http://blog.seatecnologia.com.br/articles/2008/07/11/formula-scrum-no-spam
]]></description>
			<content:encoded><![CDATA[<p>O Willi da <a href="http://www.seatecnologia.com.br">SEA Tecnologia</a> criou uma analogia genial: como uma corrida de Fórmula Um pode ser comparada a um projeto ágil. Vale a leitura:</p>
<p><a href="http://blog.seatecnologia.com.br/articles/2008/07/11/formula-scrum-no-spam">http://blog.seatecnologia.com.br/articles/2008/07/11/formula-scrum-no-spam</a></p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/07/11/formula-scrum/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Estimativas ágeis</title>
		<link>http://agilblog.locaweb.com.br/2008/06/28/estimativas-ageis/</link>
		<comments>http://agilblog.locaweb.com.br/2008/06/28/estimativas-ageis/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 04:07:42 +0000</pubDate>
		<dc:creator>Mauricio De Diana</dc:creator>
		
		<category><![CDATA[Planejamento]]></category>

		<category><![CDATA[estimativas]]></category>

		<category><![CDATA[histórias de usuário]]></category>

		<category><![CDATA[tarefas]]></category>

		<category><![CDATA[velocidade]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=29</guid>
		<description><![CDATA[Um post anterior falou sobre Scrum e as duas etapas do planejamento que ocorrem em todo sprint. Na primeira delas a equipe precisa estimar o esforço necessário para a realização das histórias, já na segunda, estimativas são feitas com foco nas tarefas. Esses são momentos do planejamento bastante delicados, a começar pelo próprio conceito de [...]]]></description>
			<content:encoded><![CDATA[<p>Um <a href="http://agilblog.locaweb.com.br/?p=9">post anterior falou sobre Scrum</a> e as duas etapas do planejamento que ocorrem em todo sprint. Na primeira delas a equipe precisa estimar o esforço necessário para a realização das histórias, já na segunda, estimativas são feitas com foco nas tarefas. Esses são momentos do planejamento bastante delicados, a começar pelo próprio conceito de estimativa.</p>
<p>Muitos desenvolvedores detestam estimar pois às vezes eles são cobrados duramente pelas estimativas que fizeram. Alguns clientes e gerentes recebem mal a notícia de que &#8220;aquela tela de cadastro não vai ficar pronta até amanhã&#8221;. Isso normalmente acontece pois os desenvolvedores deram uma estimativa - algo como &#8220;acho que isso deve demorar 2 dias para fazer&#8221; - e, por falta de domínio em uma tecnologia ou algum mal entendido com relação ao negócio, não a cumpriram.</p>
<p>O erro conceitual aí é que não existe &#8220;não cumprir a estimativa&#8221;, já que uma estimativa é, por definição, um cálculo aproximado. É impossível dizer com exatidão qual o esforço envolvido em determinada atividade. E quanto mais genérica, abrangente e indefinida ela for, mais incerta será sua estimativa.</p>
<p>Metodologias ágeis não ignoram esse fato e por isso muitos autores sugerem diferenciar as estimativas de histórias (mais abrangentes) das de tarefas (mais específicas). Dado que histórias são breves descrições de coisas a serem feitas, a idéia é estimá-las em termos de tamanho, e não de tempo. Para isso, a primeira coisa a fazer é usar <strong>pontos de história</strong> como unidade de medida ao invés de horas. Como esse é um conceito artificial, um referencial é necessário.</p>
<p>Dessa forma, imagine que na primeira parte da reunião de planejamento o Product Owner apresente as seguintes histórias para a equipe:</p>
<ul>
<li>Um usuário se cadastra na loja virtual passando suas informações pessoais básicas (nome, RG, endereço, etc).</li>
<li>Um usuário adiciona um produto a sua lista de desejos.</li>
<li>Um diretor tem à sua disposição um relatório com informações consolidadas mensalmente das vendas feitas pela loja virtual.</li>
</ul>
<p>Num primeiro momento os desenvolvedores precisam escolher uma história que servirá como base para as estimativas de todas as outras. Normalmente escolhe-se uma história que seja pequena e dá-se um valor para ela que funcionará como referência. No caso das histórias acima, um desenvolvedor pode dizer &#8220;é bem fácil fazer um cadastro desses, já fiz muitos deles, essa história vale 1 ponto&#8221;. Será então a partir dessa que as outras serão estimadas. Um outro desenvolvedor diz &#8220;acho que a história da lista de desejos é 3 vezes maior&#8221; (ou seja, ela vale 3 pontos) e outro diz que &#8220;a história para o diretor então vale 8, pois teremos que processar muitos dados diferentes, e formatação de relatórios nunca é fácil&#8221;.</p>
<p>Alguém pode se perguntar pra que serve estimar histórias dessa forma se isso não vai dar nenhuma noção de prazo nem de quantidade de horas a serem trabalhadas no sprint. Na verdade a função disso é mensurar, mesmo que de uma forma imprecisa, a capacidade de produção de uma equipe em cada sprint. Imagine que a equipe citada decidiu implementar as três histórias no sprint, mas só teve tempo para acabar a primeira (1 ponto) e a última (8 pontos). Isso resulta na <strong>velocidade</strong> da equipe, que nesse caso foi de 9 pontos de história. A velocidade é usada para saber o tamanho do próximo <em>Selected Product Backlog</em>, ou seja, ela indica quantos pontos de história a equipe <strong>provavelmente</strong> será capaz de produzir no sprint seguinte.</p>
<p>Imagine agora que no sprint seguinte a equipe pegou os 9 pontos de história, mas acabou tudo antes do final do sprint. Como a equipe ainda não pode começar um novo sprint, pois no Scrum o tamanho dos sprints não pode ser alterado, a única opção para que os programadores não fiquem ociosos é &#8220;puxar&#8221; mais uma história que está no backlog. Se essa nova história estiver estimada em 5 pontos, por exemplo, e for de fato finalizada, a velocidade da equipe será então 14. Essa será então a quantidade de pontos a serem colocadas no <em>Selected Product Backlog</em> seguinte.</p>
<p>Esse processo de usar a velocidade de um sprint para definir a carga do seguinte cria um forte comprometimento da equipe com a entrega das histórias de um sprint, já que ela sabe que não será cobrada nem julgada por nada além do que já foi capaz de fazer. Por outro lado, os clientes se sentem seguros, pois sabem o que podem esperar da equipe. Ou seja, a medida de velocidade é um instrumento muito valioso no desenvolvimento de uma relação de confiança mútua entre programadores e clientes.</p>
<p>E quanto às estimativas de tarefas? Com relação à segunda parte do planejamento não há novidades: <strong>horas</strong> são uma boa unidade de medida. Primeiramente, porque é bastante razoável um programador dizer que gastará 3 horas para criar a página de cadastro, 1 hora para escrever a query que insere os dados do cliente no banco e mais 1 hora para escrever os testes de aceitação automatizados dessa história. Depois porque são as horas que dão a carga de trabalho do sprint, sendo usadas para o traçado do burndown e do burnup.</p>
<p>Em breve daremos algumas dicas sobre técnicas e formas de organizar o processo de estimativa. Até lá.</p>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/06/28/estimativas-ageis/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Webcast - Programação eXtrema (XP)</title>
		<link>http://agilblog.locaweb.com.br/2008/06/24/webcast-programacao-extrema-xp/</link>
		<comments>http://agilblog.locaweb.com.br/2008/06/24/webcast-programacao-extrema-xp/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 17:16:35 +0000</pubDate>
		<dc:creator>Elson Barbosa</dc:creator>
		
		<category><![CDATA[XP]]></category>

		<category><![CDATA[extreme programming]]></category>

		<category><![CDATA[metodologias]]></category>

		<category><![CDATA[programação extrema]]></category>

		<category><![CDATA[webcast]]></category>

		<guid isPermaLink="false">http://agilblog.locaweb.com.br/?p=27</guid>
		<description><![CDATA[Essa semana teremos mais um webcast sobre Metodologias Ágeis, dessa vez com enfoque na Programação eXtrema (XP). Segue o post publicado no blog oficial da Locaweb:
No dia 27 de Junho, Sexta-feira, às 15h, faremos uma transmissão ao vivo sobre Programação eXtrema ou eXtreme Programming (XP).
O evento será apresentado por Daniel Cukier, líder de desenvolvimento de [...]]]></description>
			<content:encoded><![CDATA[<p>Essa semana teremos mais um webcast sobre Metodologias Ágeis, dessa vez com enfoque na Programação eXtrema (XP). Segue o post publicado no <a title="webcast" href="http://blog.locaweb.com.br/" target="_blank">blog oficial da Locaweb</a>:</p>
<blockquote><p>No dia 27 de Junho, Sexta-feira, às 15h, faremos uma transmissão ao vivo sobre Programação eXtrema ou eXtreme Programming (XP).</p>
<p>O evento será apresentado por Daniel Cukier, líder de desenvolvimento de software na equipe de Telecom e autor do blog <a href="http://agileandart.blogspot.com">http://agileandart.blogspot.com</a>, que falará sobre as principais vantagens dessa metodologia nas equipes de desenvolvimento de software.</p>
<p>A duração prevista é de 60 minutos e a participação é gratuita.</p>
<p>Para participar clique aqui, preencha o cadastro e faça a sua inscrição.</p>
<p>Se você já se cadastrou, clique na aba “Já sou cadastrado”, digite o seu e-mail e inscreva-se no evento.</p>
<p>Aproveite pois as vagas são limitadas!</p>
<p>Obs: o webcast é um projeto piloto da Locaweb e podem ocorrer instabilidades durante a sua apresentação.<br />
Como sempre, sugestões são MUITO bem-vindas!</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://agilblog.locaweb.com.br/2008/06/24/webcast-programacao-extrema-xp/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
