<?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>blog.caelum.com.br &#187; desenvolvimento</title>
	<atom:link href="http://blog.caelum.com.br/tag/desenvolvimento/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.caelum.com.br</link>
	<description>blog dos desenvolvedores da Caelum</description>
	<lastBuildDate>Thu, 09 Feb 2012 13:04:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Desenvolvimento: o dia que o meu projeto parou</title>
		<link>http://blog.caelum.com.br/desenvolvimento-o-dia-que-o-meu-projeto-parou/</link>
		<comments>http://blog.caelum.com.br/desenvolvimento-o-dia-que-o-meu-projeto-parou/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 01:38:05 +0000</pubDate>
		<dc:creator>Guilherme Silveira</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[agilidade]]></category>
		<category><![CDATA[deploy]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[integração contínua]]></category>
		<category><![CDATA[testes]]></category>

		<guid isPermaLink="false">http://blog.caelum.com.br/?p=2345</guid>
		<description><![CDATA[Existem diversos tipos de débitos e o que todos eles tem em comum é que tornam a manutenção de um sistema muito custosa e delicada. Por mais de dois anos, a Caelum tem feito um esforço sobre cortar diversos tipos de débitos técnicos, incluindo levar práticas ao extremo, como testes end-to-end em grid. Uma forma <a href="http://blog.caelum.com.br/desenvolvimento-o-dia-que-o-meu-projeto-parou/#more-2345'" class="more-link">more &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Existem diversos tipos de débitos e o que todos eles tem em comum é que tornam a manutenção de um sistema muito custosa e delicada.</p>
<p>Por mais de dois anos, a Caelum tem feito um <a href="http://blog.caelum.com.br/o-processo-de-deploy-continuo/">esforço sobre cortar diversos tipos de débitos técnicos</a>, incluindo levar práticas ao extremo, como <a href="http://blog.caelum.com.br/integracao-continua-builds-rapidos-com-grids-e-paralelismo/">testes end-to-end em grid</a>.</p>
<p>Uma forma de enxergar que devemos melhorar o processo de desenvolvimento é verificar que perdemos dinheiro ao tomar decisões <a href="http://agilenomundoreal.wordpress.com/2010/03/30/um-produto-por-semana/">ou muito cedo</a>, <a href="http://agilenomundoreal.wordpress.com/2010/03/04/como-criar-e-priorizar-um-backlog/">ou tarde demais</a>.</p>
<p>O <strong>descuido</strong> gera débitos que cortam a produtividade de sua equipe. Também o <strong>excesso de cuidado</strong>, <a href="http://www.wired.com/magazine/2009/12/fail_duke_nukem/">gera muitas trocas de decisões, visando o preciosismo técnico</a>, pode levar a um atraso muito grande.</p>
<p>Além disso, uma empresa que espera 4 meses para colocar algo em produção pode ser uma empresa 4 meses atrás de seus concorrentes. Entregar valor tardio é ficar para trás.</p>
<p>Mas o que causa empresas ágeis a não entregar tão frequentemente? </p>
<p>Muito produtos criados em ambientes ágeis só são colocados em produção  depois de muito tempo. Durante todo esse tempo, os únicos a testarem e aprovarem as funcionalidades são a equipe de QA e o Product Owner. Ao colocar este produto em produção depois de um ciclo tão grande, o cliente final vai encontrar <a href="http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process">os problemas que costumavam aparecer em metodologias tradicionais</a>. </p>
<p>No lado gerencial, o Product Owner apresenta dificuldades em priorizar seu backlog de maneira a entregar valor, acabando por entregar funcionalidades. Além disso, é dificil aceitarmos algo &#8220;incompleto para o uso mínimo&#8221; e, na visão de quem é dono de um produto, o &#8220;mínimo necessário&#8221; acaba sendo maior do que o real e nunca é atingido para ser colocado em produção. É aí que seu projeto para: ele ficara sem entregas durante muito tempo.</p>
<p>Existe uma prática bem simples para um PO executar e perceber se possui essas dificuldades. Olhe seu penúltimo sprint e veja as funcionalidades que já estão sendo utilizadas por seu cliente. Agora jogue na fórmula:</p>
<blockquote><p>GPD = (salario da equipe * pontos_desnecessários) / pontos_do_sprint</p></blockquote>
<p>GPD é o <strong>G</strong>asto que você teve com <strong>P</strong>riorização <strong>D</strong>esnecessária durante o penúltimo sprint. Ser ágil é entregar valor, e <a href="http://www.dtsato.com/blog/2009/07/04/velocity-gone-wrong-2-making-up-points/">seus pontos estão sendo utilizados em funcionalidades completas sem tanto valor</a>. Se existiam outras tarefas que entregavam valor para os usuários, a priorização poderia ter sido melhor.</p>
<p>Outra possível melhora na parte gerencial está na execução de testes somente por QAs e POs: o feedback não vem do cliente final. Devemos entregar cedo e frequentemente para receber feedback real, e não apenas do PO. Mas como alcançar isso se o produto possui um conjunto mínimo de funcionalidades, que é razoavelmente grande, para entrar em produção?</p>
<p>Assim como diversos ramos de software, adote o conceito de usuários beta. Ele possuem acesso a suas funcionalidades mais cedo, em servidores suficientemente estáveis que acessam dados de produção, rodando a última versão de seu produto, mas com o risco de algo dar errado. O conceito de beta potencializa a propaganda do seu produto,  <a href="http://www.uberreview.com/2008/01/25-signs-that-you-might-be-an-apple-fanboy.htm">podendo criar uma legião</a> de fanboys.</p>
<p>Na parte técnica, desenvolvedores tem percebido cada vez mais a importância de todos tipos de testes automatizados, controle de versão, integração contínua e outras práticas com base em XP, mas outra causa ainda mais comum de problemas em diversas empresas é <a href="http://www.agileadvice.com/archives/2005/05/truck_factor.html">o truck factor</a>. Se durante a reunião de planejamento alguém responde que determinada tarefa é dele &#8211; pois ele  &#8220;conhece mais aquela parte do sistema&#8221; &#8211; ou se alguém é o único que vota os pontos de parte do sistema; ou ainda se é comum esperarem por alguém para executar qualquer tarefa,  está na hora de compartilhar mais o conhecimento e acabar com esse impeditivo antes que o <em>truck</em> acabe com ele. Parear e ensinar mais o que conhecemos permite que, ao invés de produzirmos por nós mesmos, diversas pessoas produzam através do que compartilhamos. Essa é a mágica do ensino, levado ao pareamento. Não parear por causa daquela parte ser responsabilidade de uma única pessoa é um paradoxo! É justo esse tipo de caso que mais ganha vantagens do pareamento.</p>
<p>O outro fator para desenvolvedores e sysadmins se perguntarem é quanto tempo leva para fazer deploy? Alguns dias? Se sim, a metodologia ágil que foi alcançada perdeu grande parte do seu valor pois o feedback rápido virou feedback semanal ou ainda mensal.</p>
<p>Apesar de processos de build automatizados junto com integração contínua serem importantes, <a href="http://blog.caelum.com.br/integracao-continua-deploys-e-aprovacoes-sem-dores-de-cabeca-para-o-cliente/">deploy contínuo é cada vez mais fundamental</a>.</p>
<p>Essas e outras práticas, gerenciais ou técnicas, servem para encontrar o que está implicando na não-entrega de valor ao cliente. Depois de detectado esse gargalo, devemos  agir para melhorar nosso processo de desenvolvimento.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.caelum.com.br/desenvolvimento-o-dia-que-o-meu-projeto-parou/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

