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

<channel>
	<title>AgileZ &#187; planejamento</title>
	<atom:link href="http://www.brasiltech.net/agilez/tag/planejamento/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brasiltech.net/agilez</link>
	<description>Metodologias e técnicas aplicadas a desenvolvimento e gerenciamento</description>
	<lastBuildDate>Wed, 29 Dec 2010 23:40:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Mais agilidade em suas estimativas com o Planning Poker</title>
		<link>http://www.brasiltech.net/agilez/2009/12/13/mais-agilidade-em-suas-estimativas-com-o-planning-poker/</link>
		<comments>http://www.brasiltech.net/agilez/2009/12/13/mais-agilidade-em-suas-estimativas-com-o-planning-poker/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 13:38:34 +0000</pubDate>
		<dc:creator>Douglas Cunha</dc:creator>
				<category><![CDATA[Metodologias]]></category>
		<category><![CDATA[estimativas]]></category>
		<category><![CDATA[planejamento]]></category>
		<category><![CDATA[planning poker]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://www.brasiltech.net/agilez/2009/12/13/mais-agilidade-em-suas-estimativas-com-o-planning-poker/</guid>
		<description><![CDATA[Quem trabalha com desenvolvimento de software sabe que um dos nossos maiores desafios é conseguir mensurar o tamanho de cada tarefa com uma boa precisão, e, conseqüentemente, conseguir prever quando determinado recurso deverá ser concluído. A forma como fazemos nossas estimativas tem um grande impacto na confiabilidade de nossos prazos, porém, nem sempre as equipes [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/12/PlanningPoker617x410.jpg"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px 20px 0px; display: inline; border-top: 0px; border-right: 0px" title="PlanningPoker617x410" border="0" alt="PlanningPoker617x410" align="left" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/12/PlanningPoker617x410_thumb.jpg" width="240" height="159" /></a> </p>
<p>Quem trabalha com desenvolvimento de software sabe que um dos nossos maiores desafios é conseguir mensurar o tamanho de cada tarefa com uma boa precisão, e, conseqüentemente, conseguir prever quando determinado recurso deverá ser concluído. A forma como fazemos nossas estimativas tem um grande impacto na confiabilidade de nossos prazos, porém, nem sempre as equipes tomam consciência desse fato, e continuam dando pouco valor ou dedicando menos esforço do que deveriam a essa atividade.</p>
<p>Seja qual for a metodologia de trabalho que sua equipe utiliza (scrum + XP ou outra mais tradicional) você pode utilizar diversas técnicas de estimativas. Neste artigo vou apresentar a que é mais utilizada por equipes que empregam metodologias ágeis: o Planning Poker.</p>
<p>Antes de começar, devo introduzir um conceito que pode não ser conhecido ou aceito por todos: uma estimativa é da equipe e não de um programador ou analista em específico, ou seja, o ato de estimar é uma atividade de TODA a equipe, e esse detalhe é primordial para o sucesso do Planning Poker. Com isso em mente, vamos à definição:</p>
<p> <span id="more-114"></span>
</p>
<blockquote><p>O Planning Poker é uma técnica de estimativa baseada no consenso de toda a equipe, onde é utilizado um conjunto de cartas com valores específicos que podem representar pontos relativos ou até mesmo horas (esses valores podem seguir a seqüência de fibonacci) e é praticado como se fosse um jogo. Uma pessoa apresenta a tarefa ou estória para o time, e, após uma <strong>breve</strong> discussão, cada um escolhe uma carta e coloca virada para baixo sobre uma mesa. Quando todas as cartas estiverem lançadas, elas são viradas e caso não haja consenso nos valores escolhidos, as diferenças são discutidas de forma <strong>breve</strong>, e uma nova rodada acontece até que haja a convergência.</p>
</blockquote>
<p>Vale notar que eu enfatizei que as discussões devem ser breves. Esse ponto é muito importante, pois tem o objetivo de evitar longas argumentações técnicas, que não devem de forma alguma ser o foco de uma estimativa.    <br />Exemplo: quatro membros da equipe jogaram o valor 3 para uma determinada tarefa, e um quinto jogou o valor 8. Houve uma diferença muito grande, e por isso o quinto jogador deve argumentar brevemente porque entendeu que a tarefa demanda mais esforço. Pode ser porque ele não entendeu bem o que deve ser feito, ou porque tem mais experiência naquele tipo de tarefa e conseguiu prever algumas dificuldades que os demais não conseguiram.</p>
<p>Algumas vantagens do Planning Poker:</p>
<p>· Equipe mais comprometida, pois todos participam;</p>
<p>· Força a equipe a ter um conhecimento de negócio mais homogêneo;</p>
<p>· Aumenta bastante a precisão das estimativas, pois considera a experiência de todos;</p>
<p>· Mais atraente (divertida) que as demais técnicas.</p>
<p>Se seu time está tentando implementar o <strong>scrum</strong>, algumas considerações:</p>
<p>· Estórias são funcionalidades, na forma como tem valor para o cliente (no scrum, o PO ou Product Owner). Exemplo: Eu como usuário quero poder cadastrar um produto;</p>
<p>· Tarefas são as implementações que devem ser feitas para que a funcionalidade seja entregue. Uma estória pode possuir uma ou mais tarefas;</p>
<p>· Nós só conseguimos estimar com precisão as tarefas pequenas. Se estiver estimando em horas, um valor maior que oito já é considerado um ‘chute’, e geralmente significa que aquela tarefa deve ser particionada em pelo menos duas partes, e reestimada, portanto, é recomendável assumir que cada tarefa deve ser pequena o suficiente para poder ser executada em um dia;</p>
<p>· Nem todas as estórias precisam ser detalhadas durante as estimativas. Se você trabalha com scrum, durante o <em>backlog estimate </em>(reunião, geralmente semanal, onde estimamos apenas as estórias de usuário) todas as estórias são reestimadas, e as estórias grandes são quebradas de acordo com a priorização do Product Owner. Dessa forma, as estórias com prioridade mais baixas podem ser estimadas com valores mais altos, e seu detalhamento pode ser postergado para quando se tornarem mais próximas de serem selecionadas para o sprint;</p>
<p>· Estimativas por horas devem ser feitas sem considerar as interrupções, ou seja, o tempo que efetivamente levaríamos para concluir a tarefa em um dia ideal;</p>
<p>· Estimativas por pontos é uma técnica muito boa para se estimar as estórias de usuário e não as tarefas, que usamos estimativas por horas em dias ideais (veja mais sobre estimativas por pontos <a title="Estimando pelo tamanho e não pela duração" href="http://www.brasiltech.net/agilez/2009/09/22/estimando-pelo-tamanho-e-no-pela-durao/" target="_blank">aqui</a>).</p>
<p>Existe um site bem interessante onde é possível jogar online o Planning Poker com sua equipe: <a href="http://www.planningpoker.com/" rel="nofollow" target="_blank">planningpoker.com</a>. Mas note que o poker real, com cartas de papel, é mais recomendável e geralmente mais ágil. Existem vários sites que fornecem as cartas para impressão, como: <a href="http://www.sprintplanning.com/PlanningPoker.aspx" rel="nofollow" target="_blank">sprintplanning.com</a> (para mais, deem uma olhada nas referências da <a href="http://en.wikipedia.org/wiki/Planning_poker" rel="nofollow" target="_blank">Wikipedia</a>).</p>
<p>Aqui tem uma explicação bem legal sobre como funciona a dinâmica do jogo: <a href="http://www.crisp.se/planningpoker" rel="nofollow" target="_blank">www.crisp.se/planningpoker</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brasiltech.net/agilez/2009/12/13/mais-agilidade-em-suas-estimativas-com-o-planning-poker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Porque o planejamento tradicional n&#227;o funciona?</title>
		<link>http://www.brasiltech.net/agilez/2009/11/04/porque-o-planejamento-tradicional-nao-funciona-2/</link>
		<comments>http://www.brasiltech.net/agilez/2009/11/04/porque-o-planejamento-tradicional-nao-funciona-2/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 23:52:42 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[planejamento]]></category>

		<guid isPermaLink="false">http://www.brasiltech.net/agilez/2009/11/04/porque-o-planejamento-tradicional-nao-funciona-2/</guid>
		<description><![CDATA[Estimativa e planejamento são passos críticos para o sucesso de qualquer projeto de desenvolvimento de software. No entanto, planejar é uma atividade difícil e os planos geralmente falham. Estimativas feitas no início de um planejamento ou projeto tem pouquíssima exatidão e a probabilidade de termos uma estimativa correta para um planejamento de 1 ano é [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/11/planejamento.jpg"><img style="border-right-width: 0px;margin: 0px 15px 0px 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/11/planejamento_thumb.jpg" border="0" alt="planejamento" width="180" height="181" align="left" /></a>Estimativa e planejamento são passos críticos para o sucesso de qualquer projeto de desenvolvimento de software. No entanto, planejar é uma atividade difícil e os planos geralmente falham. Estimativas feitas no início de um planejamento ou projeto tem pouquíssima exatidão e a probabilidade de termos uma estimativa correta para um planejamento de 1 ano é muito menor que a probabilidade de acertarmos a estimativa para um planejamento de 2 semanas. Esse refinamento na probabilidade do acerto das estimativas é chamado de <em>cone da incerteza (Boehm, 1981)</em>.</p>
<p>No entanto, a dificuldade em planejar não é desculpa para não fazê-lo. O planejamento reduz o risco, diminui a incerteza, ajuda na tomada de decisões, estabelece uma maior confiança e dissemina informações. Infelizmente, o planejamento tradicional não vem funcionando. Ao tentar combinar e responder às necessidades do trio escopo\cronograma\recursos, o planejamento tradicional não nos leva a respostas e produtos satisfatórios.</p>
<p>E por que o planejamento tradicional não funciona? Mike Cohn, em seu livro <em>Agile Estimating and Planning,</em> elenca 5 causas para as falhas de planejamento.<span id="more-95"></span></p>
<ol>
<li>
<div><strong>O planejamento é baseado nas tarefas necessárias e não nos recursos desejados.<br />
</strong>É vital o time manter o foco nos requisitos solicitados; são eles que agregam valor para o cliente (veja <a href="http://www.brasiltech.net/agilez/2009/10/12/voce-entrega-algo-de-valor-para-seu-cliente-fdd-desenvolvimento-orientado-a-funcionalidade/" target="_blank">&#8220;Você entrega algo de valor para seu cliente?&#8221;</a>). Tarefas por si só não agregam valor algum. Além disso, os planejamentos tradicionais, por basearem-se em tarefas, preocupam-se com a dependência entre elas. Assim, atrasos em qualquer tarefa acumulam-se no final do cronograma, pois são repassados pela cadeia de dependência.</div>
</li>
<li>
<div><strong>Executar tarefas simultaneamente agora acaba gerando atrasos no futuro.<br />
</strong>Com a melhor das intenções, o time pode ver a multitarefa como uma possível solução para atrasos. No entanto, ao trabalhar em duas tarefas ao mesmo tempo, um membro do time provavelmente prorrogará o término das duas. Como outras tarefas dependem das primeiras (lembra do item anterior?), é quase certo que um atraso será embutido na cadeia de dependência, refletindo-se no prazo de entrega final.
<div></div>
</div>
</li>
<li>
<div><strong>Não se atende aos requisitos pela prioridade dos mesmos.<br />
</strong>O pensamento tradicional diz que, se todo trabalho é completado, não importa a ordem em que é feito. Nesse caso, é natural que a seqüência e priorização das tarefas siga a conveniência do time de desenvolvimento e não a importância dos requisitos para o cliente. Como conseqüência, é muito provável que no final do projeto, para manter o cronograma, o time acabe descartando requisitos importantes que não foram corretamente priorizados.</div>
</li>
<li>
<div><strong>O planejamento antecipado sempre contém um certo grau de incerteza que é ignorado.<br />
</strong>O planejamento tradicional não considera as incertezas presentes em todo projeto de software. Ele assume que a análise inicial será completa e perfeita e que coletará todos os requisitos do produto. Assume também que os usuários não mudarão de idéia, que nenhuma necessidade nova aparecerá durante a execução do projeto e que sabemos exatamente como os requisitos serão  implementados. É claro que isso não é verdade; tudo o que não sabemos no início do projeto é uma incerteza que deve ser considerada no planejamento, e a melhor forma de lidar com as incertezas é através de iterações curtas com feedbacks rápidos e constantes.</div>
</li>
<li>
<div><strong>Estimativas com alto nível de incertezas e baixa probabilidade de acerto acabam se tornando compromissos.<br />
</strong>Dentro de cada estimativa está embutida uma <em>probabilidade </em>do trabalho ser finalizado no tempo previsto. Uma probabilidade varia de 0 a 100%. Portanto, ao estimar a duração de uma tarefa estamos dizendo que existe uma probabilidade de x % de terminarmos a tarefa em y dias. O problema é que compromissos não podem ser assumidos sobre probabilidades; eles são assumidos sobre uma data.</div>
</li>
</ol>
<p>O planejamento ágil ataca esses problemas focando nos requisitos. A unidade mínima de entrega é um requisito completo; não importa quantas tarefas foram terminadas, se um requisito não está completamente implementado, ele não está entregue. A priorização baseia-se nos requisitos de maior valor para o cliente e não nas tarefas do time de desenvolvimento. O time todo trabalha para entregar um requisito, por isso praticamente não existe multitarefa. O planejamento é incremental; assume-se que no início do projeto sabemos muito pouco sobre o que será feito e sobre como será feito. O time encontrará essas respostas gradativamente, conforme implementa requisito por requisito.</p>
<p>Parece utópico, mas funciona. Qualquer um que desenvolveu software sabe que nunca conseguimos levantar todos os requisitos necessários para um sistema, por maior que seja o esforço. Conheço uma pessoa que trabalha para uma grande empresa indiana que possui a famosa certificação CMM5. Há 2 anos ela realiza levantamento de requisitos para o sistema de um grande banco brasileiro. Dois longos anos de trabalho da equipe; nenhuma linha de código foi escrita, nenhum requisito foi entregue; somente algumas centenas de artefatos obrigatoriamente gerados pela especificação do CMM5. Claro, CMM5 garante qualidade, mesmo que a um custo altíssimo, certo? Mas qual a probabilidade dos requisitos levantados há dois anos ainda serem válidos? Será que ainda representam o que o cliente <em>quer</em> <em>atualmente</em>? Acho pouco provável.</p>
<p>E você, qual sua opinião?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brasiltech.net/agilez/2009/11/04/porque-o-planejamento-tradicional-nao-funciona-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

