<?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; Pitty</title>
	<atom:link href="http://www.brasiltech.net/agilez/author/pitty/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>Sun, 25 Jul 2010 19:38:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Gerenciando seu c&#243;digo-fonte</title>
		<link>http://www.brasiltech.net/agilez/2010/02/09/gerenciando-seu-cdigo-fonte/</link>
		<comments>http://www.brasiltech.net/agilez/2010/02/09/gerenciando-seu-cdigo-fonte/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 19:53:42 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[codigo-fonte]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[Práticas]]></category>

		<guid isPermaLink="false">http://www.brasiltech.net/agilez/2010/02/09/gerenciando-seu-cdigo-fonte/</guid>
		<description><![CDATA[Um código fonte ‘sadio’ é uma das chaves para o sucesso de um projeto, e um CVS (control version system) é uma ferramenta fundamental para manter a saúde do seu código fonte. No entanto, somente uma boa ferramenta não garante um bom controle de versão. Ela deve ser amparada por boas práticas que normatizam sua [...]]]></description>
			<content:encoded><![CDATA[<p>Um código fonte ‘sadio’ é uma das chaves para o sucesso de um projeto, e um CVS (control version system) é uma ferramenta fundamental para manter a saúde do seu código fonte. No entanto, somente uma boa ferramenta não garante um bom controle de versão. Ela deve ser amparada por boas práticas que normatizam sua utilização. Para analisar se você utiliza corretamente seu controle de versão, verifique se pelo menos as seguintes perguntas podem ser rapidamente atendidas:<a href="http://exocortex.files.wordpress.com/2010/02/codigofonte.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;margin-left: 0px;border-left-width: 0px;margin-right: 0px" border="0" alt="codigo-fonte" align="right" src="http://exocortex.files.wordpress.com/2010/02/codigofonte_thumb.jpg" width="242" height="190" /></a></p>
<ul>
<li>
<p>Como era o método XYZ da classe FooBar na versão 2.0.3.12 do projeto?</p>
</li>
<li>
<p>Quais foram as alterações feitas para incluir suporte à NF-e?</p>
</li>
<li>
<p>Quando esta linha de código foi adicionada ao método XYZ?</p>
</li>
<li>
<p>Consigo compilar e executar o sistema na versão 2.0.2.15 para reproduzir e consertar o bug de um cliente?</p>
</li>
</ul>
<p>Se o seu controle de versão não consegue responder a estas perguntas, então está na hora de rever as práticas do seu time. Uma ferramenta de controle de versão não deve servir somente como um backup do código fonte, onde, ao final do dia, o desenvolvedor deposita seu trabalho inacabado. Ela deve ser um santuário, o repositório sagrado que exige do desenvolvedor todo respeito e cuidado. Afinal, o artefato mais valioso de um projeto, o código fonte, está guardado ali. Portanto, não basta instalar um controle de versão e sair usando. O time deve rever seus conceitos e absorver as mudanças necessárias, que podem ser dolorosas. No entanto, após um tempo, o time começa a colher os frutos do terreno bem preparado.</p>
<p>Há pouco tempo li um artigo muito bom do <a href="http://eduardomiranda.net/blogs/dotnet" target="_blank">Eduardo Miranda</a> sobre gerência de versionamento, onde ele cita algumas práticas boas e ruins. Vamos a elas:</p>
</p>
<p> <span id="more-131"></span>
</p>
<h6></h6>
<h4><strong>Boas práticas</strong></h4>
<ol>
<li>
<p><strong>O código-fonte no servidor deve estar sempre pronto para compilação. </strong>Ou seja, a qualquer momento do dia deve ser possível buscar a cópia da última versão disponível do servidor e compilar uma nova versão da aplicação.</p>
</li>
<li>
<p><strong>Toda <em>changelist </em>(conjunto de alterações que foram submetidas juntas) submetida visa <span style="text-decoration: underline">melhorar</span> o produto, <span style="text-decoration: underline">nunca piorar</span>.</strong> O código fonte é sagrado e deve ser total e completamente respeitado. Uma changelist corrige um defeito, adiciona uma funcionalidade, refatora um trecho de código. O desenvolvedor não pode submeter changelists que quebrem o build, seja pela adição de erros de compilação ou pela quebra dos testes automatizados. O time com o qual trabalho tem uma prática problemática que é fazer chekins parciais de código para compartilhar com outro desenvolvedor as alterações feitas. Não tem problema, desde que feito em um ramo de versão temporário especialmente criado para isso (também conhecido como <em>branch)</em>. Assim, o ramo principal (o chamado <em>trunk) </em>não fica ‘contaminado’ com códigos incompletos. Somente quando toda codificação estiver terminada e os testes unitários completos, podemos fazer um merge do ramo temporário com o ramo principal. Claro que o trabalho é maior devido ao merge, mas a maioria das atuais ferramentas de CVS oferecem um bom suporte para isso.</p>
</li>
<li>
<p><strong>Submeta suas alterações o mais rápido possível e com freqüência. </strong>Quanto mais tempo um arquivo fica em alteração mais difícil se torna seu merge e mais aumenta o risco de quebra do build. Divida suas alterações em pequenos pacotes compiláveis e testáveis e submeta sempre.</p>
</li>
<li>
<p><strong>Oh-oh! Atenção, build quebrado! </strong>Se o build está quebrado não submeta alterações nem sincronize sua cópia de trabalho. Um <em>build break</em> é um estado que deve ser tratado com a máxima prioridade. Neste estado não é possível garantir que a sua alteração compila e não quebra testes, portanto não é possível garantir sua qualidade. Por outro lado, sincronizar sua cópia de trabalho irá corrompê-la, o que te impedirá de compilar e testar as funções localmente.</p>
</li>
<li>
<p><strong>Controle tudo que é necessário para compilar e instalar a aplicação.</strong> Código-fonte não é a única matéria prima para compilação e instalação dos aplicativos. Sua aplicação pode depender de bibliotecas de terceiros. Neste caso, é necessário armazenar no repositório uma cópia do binário na versão utilizada pela aplicação. Em caso de atualização, a nova versão deve ser submetida junto com toda a alteração no código-fonte da sua aplicação necessária para suportar a versão.</p>
</li>
<li>
<p><strong>Estabeleça critérios de qualidade. </strong>Código sem erros de compilação é o mínimo aceitável. A partir do momento que o objetivo passa a ser melhorar a aplicação, novos parâmetros de qualidade devem ser adotados para aprovação de um check in: código sem <em>warnings</em> e <em>hints, </em>testes unitários executados, métricas de complexidade mantidas, etc.</p>
</li>
</ol>
<h4>Práticas ruins</h4>
<p>Qualquer prática que vá de encontro ao objetivo de ter no repositório uma versão compilável, testada e sempre melhor da aplicação, é uma prática ruim e deve ser evitada. Mas algumas são típicas e merecem destaque:</p>
<ul>
<li>
<p><strong>Não submeta alterações em cima da hora.</strong> Sexta-feira, 18h, você louco para ir embora e não estará no sábado de amanhã de prontidão para resolver algum problema.</p>
</li>
<li>
<p><strong>Não segure as alterações em sua cópia de trabalho por muito tempo. </strong>Código-fonte fora de repositório estraga como comida fora da geladeira. Tentar submeter uma alteração feita há 2 meses no repositório gera um trabalho enorme e um elevado risco de quebra de build.</p>
</li>
<li>
<p><strong>Nunca ignore a política de check in. </strong>Mesmo alterações simples podem quebrar um build. </p>
</li>
</ul>
<h4>Finalizando</h4>
<p>O controle de versão é provavelmente a ferramenta mais útil e fundamental no desenvolvimento de software e uma das mais utilizadas no dia-a-dia do desenvolvedor. É necessário sempre se preocupar com a facilidade de uso, para que ela não atrapalhe a produtividade nem caia em desuso, sem, contudo, abrir mão dos seus objetivos primordiais.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brasiltech.net/agilez/2010/02/09/gerenciando-seu-cdigo-fonte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Os 12 mandamentos do Agile</title>
		<link>http://www.brasiltech.net/agilez/2009/12/22/os-12-mandamentos-do-agile/</link>
		<comments>http://www.brasiltech.net/agilez/2009/12/22/os-12-mandamentos-do-agile/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 01:18:18 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Metodologias]]></category>

		<guid isPermaLink="false">http://www.brasiltech.net/agilez/2009/12/22/os-12-mandamentos-do-agile/</guid>
		<description><![CDATA[A fim de ajudar as pessoas a entenderem melhor o desenvolvimento ágil de software, em 2001 os membros da Agile Alliance refinaram o enunciado do Manifesto Ágil, criando doze princípios que as metodologias ágeis devem seguir. Estes princípios são os seguintes: Nossa maior prioridade é satisfazer o cliente através de entregas rápidas e contínuas de [...]]]></description>
			<content:encoded><![CDATA[<p>A fim de ajudar as pessoas a entenderem melhor o desenvolvimento ágil de software, em 2001 os membros da Agile Alliance refinaram o enunciado do Manifesto Ágil, criando doze princípios que as metodologias ágeis devem seguir. Estes princípios são os seguintes:</p>
<ol>
<li>Nossa maior prioridade é satisfazer o cliente através de entregas rápidas e contínuas de software funcional.</li>
<li>Abrace as mudanças de requisitos do projeto, mesmo que ocorram tardiamente. Os processos ágeis apóiam a mudança como uma vantagem competitiva para o cliente.</li>
<li>Entregue software funcionando com uma freqüência de duas semanas a dois meses, escolhendo sempre a menor escala de tempo possível.</li>
<li>O pessoal de negócio e os desenvolvedores devem trabalhar juntos no projeto diariamente.</li>
<li>Construa os projetos com pessoas motivadas. Forneça o ambiente, os equipamentos e as ferramentas de que elas precisam e confie que elas farão o trabalho.</li>
<li>Uma conversa cara a cara é a melhor forma de transmitir e receber informação do time de desenvolvimento.</li>
<li>Software funcionando é a principal medida de progresso.</li>
<li>Processos ágeis promovem um desenvolvimento sustentado. Gerência, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente.</li>
<li>A atenção contínua à excelência técnica e a um bom design aumentam a agilidade.</li>
<li>Simplicidade – a arte de maximizar a quantidade de trabalho desnecessária – é essencial.</li>
<li>As melhores arquiteturas, designs e requisitos surgem de times auto-gerenciados.</li>
<li>A intervalos regulares, o time reflete sobre como se tornar mais eficaz, e então ajusta seu comportamento de acordo com as reflexões.</li>
</ol>
<p>Pare por um momento e reflita sobre os princípios acima. Serão tão radicais e impossíveis como algumas pessoas acham ou simplesmente seguem o bom senso? Será tão difícil fazer os projetos funcionarem desta forma? Você realmente acredita que seu cliente prefere uma ótima e farta documentação a um sistema funcionando em um curto prazo? Ou que um e-mail substitua um bom bate-papo? E que tal fazer somente o necessário, sem ficar ‘viajando na maionese’?</p>
<p>Estes princípios formam um senso comum e prático, sobre o qual podemos alicerçar nossos esforços para a construção de um software de sucesso.</p>
<p><em>(Referência: Agile Modelling – Scott Ambler)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brasiltech.net/agilez/2009/12/22/os-12-mandamentos-do-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Um dia na terra do Kanban</title>
		<link>http://www.brasiltech.net/agilez/2009/12/01/um-dia-na-terra-do-kanban/</link>
		<comments>http://www.brasiltech.net/agilez/2009/12/01/um-dia-na-terra-do-kanban/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 03:08:02 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Metodologias]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://www.brasiltech.net/agilez/2009/12/01/um-dia-na-terra-do-kanban/</guid>
		<description><![CDATA[Como um amigo meu disse certa vez… ‘na internet nada se cria, tudo se copia’. Acabei me rendendo a essa frase, e publicarei uma estorinha já contada em outros blogs. Essa eu peguei do blog do André Dourado (blog muito bom, recomendo). O post original é de Henrik Kniberg, autor do livro ‘Scrum e XP [...]]]></description>
			<content:encoded><![CDATA[<p>Como um amigo meu disse certa vez… ‘na internet nada se cria, tudo se copia’. Acabei me rendendo a essa frase, e publicarei uma estorinha já contada em outros blogs. Essa eu peguei do blog do <a href="http://blog.adsystems.com.br/">André Dourado</a> (blog muito bom, recomendo). O post original é de Henrik Kniberg, autor do livro ‘<a href="http://www.infoq.com/br/minibooks/scrum-xp-from-the-trenches">Scrum e XP direto das trincheiras</a>’. </p>
<p>É uma historinha bem humorada do dia a dia de negociações com nossos Product Owners. O André fez uma tradução livre para o português. O post original pode ser visto em <a href="http://blog.crisp.se/henrikkniberg/2009/06/26/1246053060000.html">One Day in Kanban Land</a>.</p>
<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/12/Kanban1_ptbr.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;margin-left: 0px;border-left-width: 0px;margin-right: 0px" border="0" alt="Kanban1_ptbr" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/12/Kanban1_ptbr_thumb.jpg" width="504" height="619" /></a>&#160;</p>
<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/12/Kanban2_ptbr.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;margin-left: 0px;border-left-width: 0px;margin-right: 0px" border="0" alt="Kanban2_ptbr" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/12/Kanban2_ptbr_thumb.jpg" width="504" height="610" /></a> </p>
<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/12/Kanban3_ptbr.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="Kanban3_ptbr" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/12/Kanban3_ptbr_thumb.jpg" width="504" height="610" /></a> </p>
</p>
<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/12/Kanban4_ptbr.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="Kanban4_ptbr" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/12/Kanban4_ptbr_thumb.jpg" width="504" height="636" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brasiltech.net/agilez/2009/12/01/um-dia-na-terra-do-kanban/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>
		<item>
		<title>Estimando pelo tamanho e n&#227;o pela dura&#231;&#227;o</title>
		<link>http://www.brasiltech.net/agilez/2009/09/22/estimando-pelo-tamanho-e-no-pela-durao/</link>
		<comments>http://www.brasiltech.net/agilez/2009/09/22/estimando-pelo-tamanho-e-no-pela-durao/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 04:35:43 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Metodologias]]></category>
		<category><![CDATA[estimativas]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://www.brasiltech.net/agilez/2009/09/22/estimando-pelo-tamanho-e-no-pela-durao/</guid>
		<description><![CDATA[Estimativas de tamanho são diferentes das estimativas de duração. Ao estimar a duração tentamos estabeler quanto tempo será necessário para concluir uma tarefa. Mas, ao estimar pelo tamanho, analisamos quanto esforço (ou quanto trabalho) será necessário dispender para executar a tarefa. Times ágeis estimam pelo tamanho e separam essa estimativa da estimativa de duração. Utilizarei [...]]]></description>
			<content:encoded><![CDATA[<p>Estimativas de tamanho são diferentes das estimativas de duração. Ao estimar a duração tentamos estabeler quanto <strong><em>tempo</em></strong> será necessário para concluir uma tarefa. Mas, ao estimar pelo tamanho, analisamos quanto <strong><em>esforço</em></strong> (ou quanto trabalho) será necessário dispender para executar a tarefa.</p>
<p>Times ágeis estimam pelo tamanho e separam essa estimativa da estimativa de duração. Utilizarei uma metáfora como exemplo para entendermos melhor essa distinção.</p>
<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/09/2617756.jpg"><img style="border-right-width: 0px;margin: 0px 10px 0px 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/09/2617756_thumb.jpg" border="0" alt="2617756" width="317" height="205" align="left" /></a>Suponha que, em uma bela manhã de domingo, minha esposa me incumba de recolher uma grande pilha de folhas e lixo de um canto do nosso jardim. Após um café da manhã reforçado, posso olhar aquela enorme pilha, analisar e avaliar minhas ferramentas (uma pá e um carrinho de mão) e estimar imediatamente que levarei 5 horas para terminar o trabalho. Para chegar a esse valor, ignorei qualquer estimativa de <strong>tamanho</strong> e parti diretamente para uma estimativa de <strong>duração</strong>.</p>
<p>Agora, imagine que eu olhe para a pilha e estime seu <strong>tamanho</strong>. Baseando-me nas suas dimensões, estimo que a pilha contem cerca de 10 metros cúbicos de sujeira. Essa é minha estimativa do <strong>tamanho</strong> da tarefa. Mas, nesse caso, somente uma estimativa de tamanho não é lá muito útil. Como no domingo tem um joguinho de futebol, quero saber quanto tempo vou demorar para limpar toda a sujeira. Ou seja, preciso converter minha estimativa de <strong>tamanho</strong> em uma estimativa de <strong>duração</strong>.</p>
<p><span id="more-74"></span></p>
<p>Uma etiqueta no meu carrinho de mão informa que o mesmo possui uma capacidade de 0,2 metros cúbicos. Dividindo os 10 metros cúbicos de sujeira pela capacidade do carrinho, concluo que precisarei de 50 viagens para dar um fim na bagunça. Ainda estimo que levarei cerca de 3 minutos para carregar o carrinho, mais 2 minutos para movê-lo até a lixeira e outro minuto para retornar com o carrinho vazio. Isso dá um total de 6 minutos por viagem. Como antecipei que precisaria de 50 viagens, chego à uma duração total de 300 minutos, ou 5 horas, para minha tarefa doméstica.</p>
<p>Em ambas as estimativas cheguei a 5 horas de duração. No entanto, a segunda estimativa é mais confiável, pois analisamos uma dimensão absoluta: o <strong>tamanho</strong> (ou esforço) da tarefa. Na primeira estimativa trabalhamos diretamente com a <strong>duração</strong>, que é uma dimensão relativa, pois se meu carrinho tiver uma capacidade de carga maior, a duração da tarefa será menor. E se o carrinho possuir uma capacidade menor, a duração da tarefa será maior.</p>
<p>Similarmente, o processo que agilistas utilizam para estimar um projeto de software segue os seguintes passos:</p>
<ol>
<li>Definir as funcionalidades desejadas;</li>
<li>Estimar o tamanho das tarefas;</li>
<li>Estimar a duração das tarefas;</li>
<li>Programar as datas de entrega.</li>
</ol>
<p>Existem duas medidas de tamanho que podemos utilizar no desenvolvimento de software: pontos de estória (<em>story points</em>) e dia ideal (<em>ideal time</em>). O que são, quais as diferenças entre essas medidas e como podemos utilizá-las será assunto de um próximo tópico.</p>
<p>Enjoy it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brasiltech.net/agilez/2009/09/22/estimando-pelo-tamanho-e-no-pela-durao/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dual view: luxo ou ferramenta de produtividade?</title>
		<link>http://www.brasiltech.net/agilez/2009/09/01/dual-view-luxo-ou-ferramenta-de-produtividade/</link>
		<comments>http://www.brasiltech.net/agilez/2009/09/01/dual-view-luxo-ou-ferramenta-de-produtividade/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 05:18:42 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Metodologias]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[produtividade]]></category>

		<guid isPermaLink="false">http://www.brasiltech.net/agilez/2009/09/01/dual-view-luxo-ou-ferramenta-de-produtividade/</guid>
		<description><![CDATA[Dual view é a utilização simultânea de 2 monitores no mesmo computador, com a respectiva extensão da área de trabalho disponível. Neste artigo pretendo apresentar argumentos de como uma equipe pode ganhar produtividade utilizando bem não apenas um, mas dois monitores LCD. O argumento mais óbvio é o ganho de espaço para visualização simultânea de [...]]]></description>
			<content:encoded><![CDATA[<p>Dual view é a utilização simultânea de 2 monitores no mesmo computador, com a respectiva extensão da área de trabalho disponível. Neste artigo pretendo apresentar argumentos de como uma equipe pode ganhar produtividade utilizando bem não apenas um, mas dois monitores LCD.</p>
<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/09/DSC02339Medium.jpg"><img style="border-right-width: 0px;margin: 0px 25px 10px 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="DSC02339 (Medium)" align="left" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/09/DSC02339Medium_thumb.jpg" width="360" height="271" /></a> </p>
<p>O argumento mais óbvio é o ganho de espaço para visualização simultânea de várias janelas, mas somente isso não é suficiente; devemos utilizar esse espaço adicional de forma inteligente. E tudo começa com um conceito que aparentemente não tem relação alguma com monitores: “<em>contexto mental”</em>.</p>
<p>Segundo Andy Hunt, em seu livro “<a href="http://books.google.com.br/books?id=Pq3_PAAACAAJ&amp;dq=pragmatic+thinking&amp;ei=cpKcSub_BY_-ygTJ1q3rDg&amp;hl=pt-BR" target="_blank">Pragmatic Thinking</a>”, <em>contexto mental</em> é o conjunto de fatos, estados e/ou objetos em que estamos focados em um certo momento. Por exempo, quando participamos de uma reunião, o assunto em pauta, a entonação de voz do interlocutor, sua aparência, a sala, a mesa, a iluminação, até mesmo aquela cadeira desconfortável, tudo se une para formar o contexto. Pense nele como o conjunto de informações para as quais você dedica sua <em>atenção</em> em um certo momento e que estão carregadas na sua memória de curta-duração.</p>
</p>
<p> <span id="more-63"></span>
<p><em>Atenção </em>é a palavra chave. Nossa atenção é muito facilmente dividida, de modo que dificilmente algo recebe nossa <strong>total atenção</strong>. E, sem total atenção, perdemos o <strong>foco</strong>, deixando escapar muitos detalhes do contexto. É o que acontece quando recebemos um email ou uma chamada do MSN durante a resolução daquele problema difícil. Nossa atenção é desviada, o foco é perdido e o contexto mental é alterado.</p>
<p>A alteração de contexto mental é um fator crítico para a produtividade. Nós não trocamos de contexto mental com facilidade. Se algo nos interrompe, quebrando nosso fluxo de idéias, é realmente custoso recuperar novamente a linha de pensamento. Estudos indicam que, mesmo sendo a interrupção breve, perdemos de 10 a 20 minutos para restaurar todo o contexto mental anterior. Assim, quanto maior a frequência da troca de contexto mental, menor a produtividade.</p>
<p>Bem, e onde entram os monitores nessa teoria toda? </p>
<p>O dual view, quando bem utilizado, ajuda a manter o contexto mental da tarefa. </p>
<p>Como? Evitando ou minimizando a necessidade de swap de janelas (o famoso CTRL-TAB). </p>
<p>Nossa equipe trabalha diariamente com várias ferramentas ao mesmo tempo; utilizamos uma ferramenta para controle de versão, outra para controle de chamados, Delphi como ferramenta de desenvolvimento, vários plugins e suas respectivas janelas, mais email, navegadores, agenda, etc. Antes, para realizarmos os checkins e checkouts do fonte, tínhamos que alternar o tempo todo entre o controle de versão e o Delphi. Com o dual view, conseguimos manter todas essas ferramentas visíveis simultaneamente. Não perdemos mais o contexto mental da tarefa de programação. Outro exemplo: podemos depurar nosso sistema rodando o Delphi em um monitor e o executável no segundo monitor. Tudo continua dentro do mesmo contexto mental, sem aquelas irritantes trocas de janela entre o depurador e nosso sistema.</p>
<p>A foto abaixo mostra uma parte da sala após instalarmos os monitores. Hoje toda a equipe possui 2 monitores, e já estamos pensando em aumentar para 3.</p>
<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/09/DSC02343Medium.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="DSC02343 (Medium)" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/09/DSC02343Medium_thumb.jpg" width="600" height="452" /></a> </p>
<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/09/DSC02340Medium.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" border="0" alt="DSC02340 (Medium)" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/09/DSC02340Medium_thumb.jpg" width="600" height="451" /></a> </p>
<p>Assim, pela nossa experiência, o dual view pode, quando bem utilizado, ajudar a melhorar o foco da equipe e, consequentemente, sua produtividade. </p>
<p>E, é claro, existem outras formas de controlar ou minimizar o ‘<em>context switching’.</em> </p>
<p>Como gestor da área de desenvolvimento, recebo muitos emails diariamente. Quase sempre, assim que chegava o aviso de um novo email, eu parava o que estava fazendo para lê-lo (e obviamente mandava pelo ralo todo meu contexto mental). Para contornarmos isso, instalamos um ótimo aplicativo para gerenciamento de desktops virtuais (<a href="http://www.dexpot.de/index.php?lang=en" target="_blank">Dexpot</a>), que nos ajuda a manter contextos mentais muito diferentes totalmente separados. Passamos a trabalhar com 3 desktops virtuais: no primeiro mantemos as ferramentas de desenvolvimento; no segundo, somente email e acesso à internet; e no terceiro assuntos sem importância. É como se trabalhássemos com três pares de monitores. Colocando o aplicativo de email no 2º desktop, conseguimos reduzir muito a troca de contexto, pois não vemos mais o email chegando. A leitura de emails é feita no início do dia, um pouco antes do almoço e no final da tarde, mantendo sob controle a troca dos contextos mentais.</p>
<p>Pense em como você pode controlar seu ‘<em>context switching’. </em>Você vai se surpreender com os resultados.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brasiltech.net/agilez/2009/09/01/dual-view-luxo-ou-ferramenta-de-produtividade/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Uma alternativa para montar seu Agile Board</title>
		<link>http://www.brasiltech.net/agilez/2009/08/24/uma-alternativa-para-montar-seu-agile-board/</link>
		<comments>http://www.brasiltech.net/agilez/2009/08/24/uma-alternativa-para-montar-seu-agile-board/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 03:50:23 +0000</pubDate>
		<dc:creator>Pitty</dc:creator>
				<category><![CDATA[Metodologias]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://www.brasiltech.net/agilez/2009/08/24/uma-alternativa-para-montar-seu-agile-board/</guid>
		<description><![CDATA[Há alguns meses vi um post muito interessante e criativo sobre a montagem do agile board da BlueSoft. Os curiosos podem acessá-lo aqui. Desde então fiquei tentado a aplicar a idéia na empresa onde trabalho e montar para minha equipe um quadro magnético na parede. No entanto, não é uma solução muito barata, a sala [...]]]></description>
			<content:encoded><![CDATA[<p>Há alguns meses vi um post muito interessante e criativo sobre a montagem do agile board da BlueSoft. Os curiosos podem acessá-lo <a href="http://bluesoft.wordpress.com/2007/11/16/scrum-board/" target="_blank">aqui</a>. Desde então fiquei tentado a aplicar a idéia na empresa onde trabalho e montar para minha equipe um quadro magnético na parede. No entanto, não é uma solução muito barata, a sala é pequena, e se nossa equipe aumentar teremos que mudar de sala… e lá se vai todo o trabalho de pintura.</p>
<p>Utilizávamos um quadro de feltro verde que não recomendo. Por baixo do feltro o que existe é um papelão fajuto (isso mesmo!) que após alguns furos perde o tônus e não segura mais nada. Por sorte, encontramos uma alternativa bem legal e de baixo custo. São placas de cortiça auto-colante que podem ser fixadas diretamente na parede.</p>
<p>Na foto abaixo mostramos um pacote com 6 placas dessas. Cada pacote custa R$ 26,90 e cobre meio metro quadrado.</p>
<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/08/DSC02329Medium.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/08/DSC02329Medium_thumb.jpg" border="0" alt="DSC02329 (Medium)" width="600" height="451" /></a></p>
<p>A montagem é muito simples; basta remover o plástico protetor e posicionar a placa no local desejado. Deve-se ter cuidado com a colocação da primeira, pois as outras placas serão alinhadas com ela. Se ela estiver torta o quadro ficará fora de prumo. <span id="more-51"></span></p>
<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/08/DSC02324Medium.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/08/DSC02324Medium_thumb.jpg" border="0" alt="DSC02324 (Medium)" width="600" height="452" /></a></p>
<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/08/DSC02331Medium.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/08/DSC02331Medium_thumb.jpg" border="0" alt="DSC02331 (Medium)" width="600" height="451" /></a></p>
<p>Após a colocação da primeira placa, continue colando as placas seguintes, montando o resto do quadro.</p>
<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/08/DSC02334Medium.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/08/DSC02334Medium_thumb.jpg" border="0" alt="DSC02334 (Medium)" width="600" height="451" /></a></p>
<p>Após várias colagens, este é o resultado final.</p>
<p><a href="http://www.brasiltech.net/agilez/wp-content/uploads/2009/08/DSC02335Medium.jpg"><img style="border-right-width: 0px;border-top-width: 0px;border-bottom-width: 0px;border-left-width: 0px" src="http://www.brasiltech.net/agilez/wp-content/uploads/2009/08/DSC02335Medium_thumb.jpg" border="0" alt="DSC02335 (Medium)" width="600" height="451" /></a></p>
<p>O legal é que podemos aumentar o quadro se necessário. Basta acrescentar mais placas. Além disso, a cortiça não tem o problema do quadro de feltro, pois ela se fecha quando removemos o alfinete.</p>
<p>Para montar este quadro usamos 3 pacotes de placas, com um custo total de R$ 80,70. É uma ótima opção, que recomendo a todos que quiserem montar um agile board. Espero que gostem da idéia.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brasiltech.net/agilez/2009/08/24/uma-alternativa-para-montar-seu-agile-board/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
