<?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>1up4developers &#187; questionamento</title>
	<atom:link href="http://1up4dev.org/category/questionamento/feed/" rel="self" type="application/rss+xml" />
	<link>http://1up4dev.org</link>
	<description>Nadando contra o Waterfall. tail -f /mind/realworld &#62;&#62; /blog</description>
	<lastBuildDate>Tue, 08 Nov 2011 11:00:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>&#8216;(enlightenment)</title>
		<link>http://1up4dev.org/2011/07/enlightenment/</link>
		<comments>http://1up4dev.org/2011/07/enlightenment/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 01:39:50 +0000</pubDate>
		<dc:creator>Plínio Balduino</dc:creator>
				<category><![CDATA[questionamento]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[iluminação]]></category>
		<category><![CDATA[pensamento]]></category>
		<category><![CDATA[plaft!]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=1064</guid>
		<description><![CDATA[TweetSentado num quarto de hotel, longe de casa, com a televisão passando imagens sem som, uma tela de computador cheia de parênteses na minha frente, sentindo uma imensa felicidade por ganhar a vida fazendo aquilo que escolhi, e principalmente, por &#8230; <a href="http://1up4dev.org/2011/07/enlightenment/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-left"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://1up4dev.org/2011/07/enlightenment/" data-text="&#8216;(enlightenment)" data-count="vertical" data-via="socializeWP" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div class="socialize-in-button socialize-in-button-left"><iframe src="http://www.facebook.com/plugins/like.php?href=http://1up4dev.org/2011/07/enlightenment/&amp;layout=box_count&amp;show_faces=false&amp;width=50&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:50px !important; height:65px;" allowTransparency="true"></iframe></div></div><p style="text-align: justify;">Sentado num quarto de hotel, longe de casa, com a televisão passando imagens sem som, uma tela de computador cheia de parênteses na minha frente, sentindo uma imensa felicidade por ganhar a vida fazendo aquilo que escolhi, e principalmente, por (re)descobrir o quão divertido e empolgante pode ser esse caminho.</p>
<p style="text-align: justify;">Meu filho, de um ano e meio, me ensina todo dia a ser curioso, a não parar de aprender, me relembra como é bom descobrir o mundo, entender como as coisas funcionam, aprender com os erros. Vejo nele a alegria de perceber pequenas coisas, de querer mais, por mais que isso algumas vezes incomode quem está ao redor.</p>
<p style="text-align: justify;">As pessoas costumam crescer, buscam conforto, buscam um canto macio e aquecido para encostar, um cubículo para se sentar todo dia fazendo o mesmo trabalha de sempre, sem aprender, sem questionar, muitas vezes em entender, ouvindo e dizendo as mesmas coisas todos os dias. As pessoas crescem e perdem aquela alegria da criança ao aprender, se esquecem como é bom entender, perguntar o porquê, colocar a mão onde não é para mexer.</p>
<p style="text-align: justify;">Eu não consigo entender como alguém escolhe se tornar um programador, um desenvolvedor, e não alimenta a curiosidade, não alimenta a vontade de aprender. É pelo salário, já me disseram. Pode ser, mas garanto que estão perdendo o melhor da brincadeira. Eles vão conseguir uma vida confortável, comprometer o orçamento com o que quer seja e logo o lado financeiro não será mais suficiente. Surgirá uma sensação de vazio, de inutilidade, de frustração por trabalhar com algo que não traz nenhuma satisfação, por desperdiçar metade do dia numa vida vazia, metade da vida numa função sem atrativos.</p>
<p style="text-align: justify;">Com a participação de alguns amigos, passamos a compartilhar experiências, conhecimento e novidades com os demais colegas de trabalho. Existem sempre aqueles que nunca estão interessados, como queiram. Mas existem aqueles que logo se tornam sedentos por conhecimento, por novidades, que começam a compartilhar o que sabem, o que descobriram, e isso começa a formar um círculo virtuoso. Essas pessoas passam a relembrar daquela alegria infantil de aprender e entender o mundo, e começam a contaminar as pessoas ao redor, aumentando esse círculo. O ambiente de trabalho passa a ter um clima melhor, apesar de tudo; as pessoas passam a se respeitar mais, a se conhecer melhor, a nutrir admiração uns pelos outros. Obrigado a todos por isso.</p>
<p style="text-align: justify;">Não deixe aquela curiosidade infantil e a vontade de descobrir o mundo morrerem em você. Vale todo o esforço, eu posso garantir.</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2011/07/enlightenment/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>TPW: e-mails vs reuniões</title>
		<link>http://1up4dev.org/2011/06/tpw-e-mails-vs-reunioes/</link>
		<comments>http://1up4dev.org/2011/06/tpw-e-mails-vs-reunioes/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 09:00:59 +0000</pubDate>
		<dc:creator>Rodrigo Panachi</dc:creator>
				<category><![CDATA[cascata]]></category>
		<category><![CDATA[processos]]></category>
		<category><![CDATA[questionamento]]></category>
		<category><![CDATA[real world]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=634</guid>
		<description><![CDATA[TweetA cilada típica em ambientes corporativos: &#160; E agora, quem poderá nos ajudar? Infelizmente, e-mails e reuniões, mesmo em ambientes ágeis, são inevitáveis, e na maioria das situações, tóxicos. Reuniões de 2 horas de duração ou 50 emails diários são &#8230; <a href="http://1up4dev.org/2011/06/tpw-e-mails-vs-reunioes/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-left"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://1up4dev.org/2011/06/tpw-e-mails-vs-reunioes/" data-text="TPW: e-mails vs reuniões" data-count="vertical" data-via="socializeWP" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div class="socialize-in-button socialize-in-button-left"><iframe src="http://www.facebook.com/plugins/like.php?href=http://1up4dev.org/2011/06/tpw-e-mails-vs-reunioes/&amp;layout=box_count&amp;show_faces=false&amp;width=50&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:50px !important; height:65px;" allowTransparency="true"></iframe></div></div><p>A cilada típica em ambientes corporativos:</p>
<p><img class="aligncenter" title="Ciclo corporativo" src="http://lh5.ggpht.com/_JtWk7d3YRZo/S6k6MYuywBI/AAAAAAAALCE/eTVUncdC1s8/ciclocorporativo.jpg" alt="Ciclo corporativo" width="558" height="551" /></p>
<p>&nbsp;</p>
<h2>E agora, quem poderá nos ajudar?</h2>
<p>Infelizmente, <strong>e-mails</strong> e <strong>reuniões</strong>, mesmo em ambientes ágeis, são inevitáveis, e na maioria das situações, tóxicos. Reuniões de 2 horas de duração ou 50 emails diários são sinais claros de que as coisas não andam muito bem.</p>
<p>Atitudes ágeis tendem a evitar &#8220;enrolações&#8221; que desviem o foco da equipe ou desacelerem a produtividade. A seguir, algumas estratégias e dicas que podemos aplicar para quebrar um pouco essas práticas corporativas cascateiras, ajudar a manter o foco da equipe e produzir mais.</p>
<h2>Reuniões</h2>
<p>Simplesmente <strong>evite reuniões</strong>, com temor! Tente resolver os problemas com <strong>conversas cara-a-cara</strong>, na sua mesa mesmo. Se precisar discutir um assunto por mais de 5 minutos, convide as pessoas envolvidas para um cafézinho, de preferência em pé.</p>
<p>Se não puder evitar a reunião, <strong>defina com antecipação</strong>: 1) o(s) <strong>objetivo</strong>(s) e 2) a <strong>duração máxima</strong>. Limite qualquer reunião a no máximo 5 participantes e duração de 15 minutos. Acredite: é  suficiente.</p>
<p>Se um problema for muito complexo para ser resolvido em uma reunião de 15 minutos, <strong>quebre o problema em problemas menores</strong>, e discuta um de cada vez. Os próximos problemas devem ser discutidos somente quando o problema anterior for resolvido.</p>
<p>Antes de começar qualquer discussão, faça com que todos presentes tomem ciência dos <strong>objetivos e da duração máxima</strong>. Assim que alcançarem os objetivos ou o tempo se esgotar, termine a discussão imediatamente! Não dê oportunidade para que alguém inicie uma nova discussão desnecessária.</p>
<p><strong>Diga não</strong>! Em certas ocasiões, é a melhor resposta. Se você não é o responsável por determinado problema, desconhece ou não pode ajudar plenamente, simplesmente diga &#8220;não, obrigado&#8221;.</p>
<h2>E-mails</h2>
<p>Alguns problemas podem ser resolvidos com um simples e-mail, é verdade. A única regra que devemos seguir é a do &#8220;passa, repassa ou paga&#8221;. <strong>Não deixe os e-mails passarem das tréplicas</strong>. Se depois de 3 e-mails o problema ainda não foi resolvido, convide os envolvidos para tomar um cafezinho.</p>
<p><strong>E-mail não é chat</strong>. O time deve conversar cara-a-cara, incluindo os clientes. Trocar mais do que 5 e-mails diários entre a equipe é um mau sinal. Se não puder falar pessoalmente, <strong>use o telefone ou skype</strong> ao invés de mandar um e-mail que pode ser facilmente ignorado pelo destinatário.</p>
<p><strong>E-mail não é documentação</strong>. Não é preciso enviar um e-mail a cada decisão tomada pelo cliente ou pelo time. Se algo importante foi decidido, converse pessoalmente com os envolvidos.</p>
<p>Finalmente, use o e-mail com sabedoria, para trocar informações importantes e relevantes entre a equipe. <strong>E-mail não deve ser regra</strong>, e sim um suporte para comunicação entre a equipe. Lembre-se: <strong>quanto mais e-mails você enviar, maior a chance de ser ignorado.</strong></p>
<h2>Resumo</h2>
<p>Reuniões e e-mails são tóxicos. Evite-os! Se não puder evitar, use-os com sabedoria.</p>
<p>Se identificou com alguma situação? Acha que essas dicas &#8220;choveram no molhado&#8221;? Concorda, discorda, quer complementar algo? Use os comentários.</p>
<p><strong>Reflexão: quais dessas práticas você aplica no seu cotidiano profissional?</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2011/06/tpw-e-mails-vs-reunioes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t be a hero</title>
		<link>http://1up4dev.org/2011/04/dont-be-a-hero/</link>
		<comments>http://1up4dev.org/2011/04/dont-be-a-hero/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 21:59:21 +0000</pubDate>
		<dc:creator>Plínio Balduino</dc:creator>
				<category><![CDATA[questionamento]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[we don't need another hero]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=1031</guid>
		<description><![CDATA[TweetUm amigo escreveu isso há algum tempo e tive a oportunidade de reler hoje. Sometimes things go wrong: hardware is not acting as expected, the API you rely on is not reliable, some vital information is missing. But you don’t &#8230; <a href="http://1up4dev.org/2011/04/dont-be-a-hero/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-left"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://1up4dev.org/2011/04/dont-be-a-hero/" data-text="Don&#8217;t be a hero" data-count="vertical" data-via="socializeWP" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div class="socialize-in-button socialize-in-button-left"><iframe src="http://www.facebook.com/plugins/like.php?href=http://1up4dev.org/2011/04/dont-be-a-hero/&amp;layout=box_count&amp;show_faces=false&amp;width=50&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:50px !important; height:65px;" allowTransparency="true"></iframe></div></div><p>Um amigo escreveu isso há algum tempo e tive a oportunidade de reler hoje.</p>
<blockquote><p>Sometimes things go wrong: hardware is not acting as expected, the API you rely on is not reliable, some vital information is missing. But you don’t care, as you are a hero, a tough Charles Bronson-like guy that will accomplish the mission no matter what.</p>
<p>Another project is saved? Maybe. But someone made a very stupid choice and will pay for it. And I’m talking about you, Bruce Lee.</p>
<p>In six months nobody will remember the adversities you’ve been through. The sleepless nights. The weird bugs. The managers on you back, asking for status reports every five minutes. But something will linger: your name in the source code. It will be there in the SCM, ready to prove that you are a lousy coder and committed buggy/ugly code.</p>
<p>So, next time you find yourself in this kind of situation, take a deep breath and raise the red flag. Share the problem. It’s not fair to chain yourself to something bad just to show that you are tough.</p></blockquote>
<p>Eu deveria ter levado esse texto impresso para a Venezuela.</p>
<p><strong>Update em 02/05</strong>:<br />
<a title="Igor Musardo" href="http://igormusardo.com.br/" target="_blank">Igor Musardo</a> <a href="http://igormusardo.com.br/2011/05/01/no-seja-um-heroi/" target="_blank">repostou esse post</a>, e adicionou um excelente vídeo da palestra do DHH na Rails Conf 2009. Recomendo que <a title="assistam" href="http://igormusardo.com.br/2011/05/01/no-seja-um-heroi/" target="_blank">assistam</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2011/04/dont-be-a-hero/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Comunicação é tudo e mais um pouco</title>
		<link>http://1up4dev.org/2011/04/comunicacao-e-tudo-e-mais-um-pouco/</link>
		<comments>http://1up4dev.org/2011/04/comunicacao-e-tudo-e-mais-um-pouco/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 13:00:54 +0000</pubDate>
		<dc:creator>Plínio Balduino</dc:creator>
				<category><![CDATA[questionamento]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[coffee script]]></category>
		<category><![CDATA[coffeescript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=928</guid>
		<description><![CDATA[TweetImagine que você receba a seguinte especificação: Pegue uma folha de papel A4. Sob a mesa, dobre-a ao meio. Coloque a folha dobrada sobre a mesa. A especificação parece clara e simples, mas aposto que dobramos as folhas de forma &#8230; <a href="http://1up4dev.org/2011/04/comunicacao-e-tudo-e-mais-um-pouco/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-left"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://1up4dev.org/2011/04/comunicacao-e-tudo-e-mais-um-pouco/" data-text="Comunicação é tudo e mais um pouco" data-count="vertical" data-via="socializeWP" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div class="socialize-in-button socialize-in-button-left"><iframe src="http://www.facebook.com/plugins/like.php?href=http://1up4dev.org/2011/04/comunicacao-e-tudo-e-mais-um-pouco/&amp;layout=box_count&amp;show_faces=false&amp;width=50&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:50px !important; height:65px;" allowTransparency="true"></iframe></div></div><p>Imagine que você receba a seguinte especificação:</p>
<blockquote><p>Pegue uma folha de papel A4. Sob a mesa, dobre-a ao meio. Coloque a folha dobrada sobre a mesa.</p></blockquote>
<p>A especificação parece clara e simples, mas aposto que dobramos as folhas de forma diferente, obtendo resultados diferentes. Eu dobrei a minha folha verticalmente, enquanto provavelmente você dobrou horizontalmente, obtendo uma forma próxima de um quadrado.</p>
<p>Qual foi o problema?</p>
<p>Eu criei uma especificação tendo em mente exatamente o que eu queria. E eu acreditei que aquilo era mais do que suficiente.</p>
<p>Você pegou uma especificação, aparentemente muito simples, e sem questionar seguiu os passos que julgou corretos.</p>
<p>Não houve comunicação, cada parte presumiu coisas e o resultado final não foi o esperado.</p>
<p>O grande diferencial das ditas metodologia ágeis é exatamente permitir a comunicação rápida, clara e sem ruídos entre todos os membros da equipe. Isso não tem nada a ver com post-its, gráficos ou ferramentas na Internet. É por isso que estamos vendo-as falhar, e é por isso que o seu projeto, e o meu, também estão falhando.</p>
<p>É por isso que relacionamentos chegam a níveis insuportáveis de convivência, casamentos terminam, empregos viram um inferno. É por isso que ocorrem desencontros, é por isso que clientes recebem algo que não pediram e que não os atendem.</p>
<p>É por isso também que não consegui comprar um mísero pão doce quando estive fora do país.</p>
<p>Comunicação é, na minha opinião, o fator mais importante, e o menos valorizado. É tudo isso que eu falei, e mais um pouco.</p>
<p>(Escrito pelo autor em 26/01/2009, e muito pouco ou quase nada mudou desde então)</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2011/04/comunicacao-e-tudo-e-mais-um-pouco/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>O desenvolvedor preguiçoso</title>
		<link>http://1up4dev.org/2011/04/o-desenvolvedor-preguicoso/</link>
		<comments>http://1up4dev.org/2011/04/o-desenvolvedor-preguicoso/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 16:24:49 +0000</pubDate>
		<dc:creator>Plínio Balduino</dc:creator>
				<category><![CDATA[questionamento]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=925</guid>
		<description><![CDATA[TweetDurante o almoço eu estava conversando com um colega e citei que, se tivesse uma empresa, gostaria de contratar um programador/desenvolvedor/engenheiro que fosse preguiçoso. Por meio minuto ele deve ter imaginado que eu estava louco, ou que queria abrir transformar minha &#8230; <a href="http://1up4dev.org/2011/04/o-desenvolvedor-preguicoso/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-left"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://1up4dev.org/2011/04/o-desenvolvedor-preguicoso/" data-text="O desenvolvedor preguiçoso" data-count="vertical" data-via="socializeWP" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div class="socialize-in-button socialize-in-button-left"><iframe src="http://www.facebook.com/plugins/like.php?href=http://1up4dev.org/2011/04/o-desenvolvedor-preguicoso/&amp;layout=box_count&amp;show_faces=false&amp;width=50&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:50px !important; height:65px;" allowTransparency="true"></iframe></div></div><p>Durante o almoço eu estava conversando com um colega e citei que, se tivesse uma empresa, gostaria de contratar um programador/desenvolvedor/engenheiro que fosse preguiçoso. Por meio minuto ele deve ter imaginado que eu estava louco, ou que queria abrir transformar minha empresa imaginária numa repartição pública.</p>
<p>Vou tentar ser breve na explicação.</p>
<p>O primeiro ponto é que uma pessoa preguiçosa, dentro desse contexto, é completamente diferente de uma pessoa acomodada, encostada ou vagabunda. Uma pessoa preguiçosa, novamente nesse contexto, é aquela que se incomoda de fazer várias vezes ao dia a mesma tarefa, e encontra meios de automatizar isso.</p>
<p>Um caso real: eu trabalhei numa projeto em que era necessário compilar os fontes, passar os binários resultantes (executáveis, DLLs ou JARs) por um software proprietário para que esses fossem convertidos num formato que a plataforma proprietária entenda, e então utilizar um outro software para jogar esse binário convertido para dentro do dispositivo.</p>
<p>O segundo passo, a conversão dos binários, era freqüentemente esquecido, fazendo com que um binário desatualizado fosse instalado no dispositivo, desperdiçando tempo e estressando os envolvidos.</p>
<p>Um colega, preguiçoso, criou um passo novo que foi adicionado ao <a title="Maven" href="http://maven.apache.org/" target="_blank">Maven</a> para que essa geração fosse automatizada, reduzindo todo processo à compilação e instalação. Não fosse o software de instalação tão fechado, a coisa toda seria realizada num único processo.</p>
<p>O mesmo acontece com a utilização de testes automatizados. Poderíamos muito bem executar passo a passo todos os itens de uma planilha gigantesca cada vez que eu gerasse uma nova versão do sistema. Ao invés disso, escrevemos alguns testes automatizados (705 da última vez vi) que levam trinta segundos para executar toda vez que você altera o código. A cada nova funcionalidade, uma nova série de testes é escrita, fazendo com que a coisa seja menos trabalhosa para todos os envolvidos.</p>
<p>Automatizar tarefas repetitivas aumenta a produtividade, reduz drasticamente a possibilidade de que erros idiotas aconteçam e ainda te dá tempo para investir no que realmente interessa.</p>
<p>E você, está sendo preguiçoso ou acomodado?</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2011/04/o-desenvolvedor-preguicoso/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Pare de chorar e mexa-se</title>
		<link>http://1up4dev.org/2011/02/pare-de-chorar-e-mexa-se/</link>
		<comments>http://1up4dev.org/2011/02/pare-de-chorar-e-mexa-se/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 12:00:30 +0000</pubDate>
		<dc:creator>Plínio Balduino</dc:creator>
				<category><![CDATA[questionamento]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[resmungo]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=858</guid>
		<description><![CDATA[TweetAntes de qualquer outra coisa, escrevo esse post em forma de autocrítica e como um tapa na cara em mim mesmo. Espero que a carapuça sirva em você também. Cena 1: dois programadores estão tomando refrigerante enquanto reclamam do site &#8230; <a href="http://1up4dev.org/2011/02/pare-de-chorar-e-mexa-se/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-left"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://1up4dev.org/2011/02/pare-de-chorar-e-mexa-se/" data-text="Pare de chorar e mexa-se" data-count="vertical" data-via="socializeWP" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div class="socialize-in-button socialize-in-button-left"><iframe src="http://www.facebook.com/plugins/like.php?href=http://1up4dev.org/2011/02/pare-de-chorar-e-mexa-se/&amp;layout=box_count&amp;show_faces=false&amp;width=50&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:50px !important; height:65px;" allowTransparency="true"></iframe></div></div><p>Antes de qualquer outra coisa, escrevo esse post em forma de autocrítica e como um tapa na cara em mim mesmo. Espero que a carapuça sirva em você também.</p>
<p>Cena 1: dois programadores estão tomando refrigerante enquanto reclamam do <a href="http://beonthe.net/" target="_blank">site</a> que um terceiro programador fez, deu certo e e acabou virando a principal fonte de renda do empreendedor.</p>
<p>Cena 2: um grupo de funcionários critica um colega que está ganhando mensalmente o equivalente ao salário com aplicações para iPhone e iPad com frase do tipo &#8216;isso aí até eu faço&#8217;, ou &#8216;é pura falta do que fazer&#8217;.</p>
<p>Cena 3: um programador, desses acostumados a usar paletó, gravata e passar o dia em cima de diagramas de <a href="http://en.wikipedia.org/wiki/Use_case_diagram" target="_blank">stick figures, setinhas e balões</a>, profere sem o menor pudor: &#8216;Estudar uma tecnologia nova em casa? Eu só aprendo algo novo se for pago pra isso.&#8217;</p>
<p>Cena 4: um colega, inocente e empolgado, convida outro para participar de um Coding Dojo, e recebe como resposta: &#8216;programar depois do expediente? eu prefiro levar uma topada no dedão&#8217;</p>
<p>E a clássica cena 5: funcionários reunidos almoçando/tomando café/fumando/num happy hour e falando mal do coordenador/líder técnico/chefe/diretor/gerente/empresa em geral.</p>
<p>Pense um pouco e você vai perceber que, com certeza, já presenciou ou já fez parte de algumas dessas cenas.</p>
<p>Reclamar, ficar insatisfeito, criticar ou debochar é algo natural, faz parte da natureza das pessoas e, acho eu, até mesmo de certas espécies de animais. O problema aparece quando a crítica vira choradeira e nunca passa disso.</p>
<p>Eu trabalhei numa empresa pequena, com cinco funcionários, onde havia contato direto com o dono e com os clientes. A quantidade de coisas que aprendi ali, tanto profissionalmente quanto pessoalmente é algo que me ajuda até hoje. Porém, talvez pelo fato de eu ter ficado por ali mais tempo do que seria produtivo para ambas as partes, eu perdia tempo demais reclamando, me estressando e agindo de forma infantil e improdutiva. Chegou ao ponto de uma namorada dizer &#8216;que cada funcionário está na empresa que merece, e cada empresa tem o funcionário que merece&#8217;.</p>
<p>Até hoje penso nessa frase e apesar de toda a violência com a qual ela foi empregada, não deixo de notar a realidade por trás das palavras.</p>
<p>Um ex-funcionário do Google escreveu um artigo (se alguém ainda tiver o link, por favor me envie) em que conta que seus colegas reclamavam da qualidade do granulado usado nos doces que eram <strong>dados</strong> pela empresa no horário de trabalho simplesmente por não terem do que reclamar.</p>
<p>Já presenciei colegas reclamando da qualidade da churrascaria que a empresa escolheu para a confraternização de fim de ano, onde comeram e beberam de graça sem pagar um centavo que fosse. E, honestamente, era um local que eu não teria condições de levar minha família sem deixar uma parcela considerável dos meus rendimentos.</p>
<p>As pessoas, incluindo eu e você, deveriam parar de choramingar, de reclamar e de perder tempo com conversinhas inúteis e começar a meter a mão na massa, produzir coisas de que se orgulhem e que sejam úteis para outras pessoas.</p>
<p>Não estou me limitando ao discurso Go Horse de &#8216;não está feliz, peça as contas&#8217;. Estou dizendo para que você pense em como se tornar adulto, até mesmo em como se tornar economicamente autossuficiente (pela Nova Gramática).</p>
<p>Atualmente, o custo de se iniciar um projeto ou de se colocar uma idéia em prática usando a Internet é próximo de zero. Qualquer pessoa com iniciativa e, principalmente, acabativa, consegue <a href="http://williamwilkinson.com/post/3089051066" target="_blank">colher bons frutos</a> com praticamente nenhum investimento além do próprio tempo.</p>
<p>Fazendo uma conta de padaria: se você investir uma hora e meia por dia estudando e/ou implementando uma idéia, por mais absurda que ela pareça para os outros, em um mês você vai ter investido 45 horas, o que é tempo mais do que suficiente para aprender os fundamentos de uma nova linguagem ou apresentar um protótipo da idéia.</p>
<p>Hoje em dia você tem Rails, Sinatra, Django, web2py, uma lista imensa de ferramentas que permitem a criação rápida de aplicações, sem a perda de tempo de editar arquivos XML, descritores ou ficar desenhando <a href="http://1up4dev.org/?attachment_id=860" target="_blank">bonecos de palitinho</a>.</p>
<p>Pare de reclamar. Se organize. Tenha metas claras e reais. Pare de apontar o dedo e comece a trabalhar. Leve o problema a quem for devido ao invés de simplesmente adotar uma postura <a href="http://pt.wikipedia.org/wiki/Comportamento_passivo-agressivo" target="_blank">passivo-agressiva</a>. Busque motivação onde ela não existe, ou vá respirar novos ares. Tente uma forma diferente de fazer as mesmas coisas, compartilhe conhecimento, ouça mais e aprenda mais.</p>
<p>Enfim, deixe de ser uma menininha chorona e comece a agir.</p>
<p>E, a propósito, parabéns ao <a href="http://twitter.com/viniciusteles" target="_blank">Vinicius Teles</a> e equipe pelo trabalho iniciado, concluído e bem feito.</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2011/02/pare-de-chorar-e-mexa-se/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>Complexidade não escala!</title>
		<link>http://1up4dev.org/2011/02/complexidade-nao-escala/</link>
		<comments>http://1up4dev.org/2011/02/complexidade-nao-escala/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 09:00:00 +0000</pubDate>
		<dc:creator>Rodrigo Panachi</dc:creator>
				<category><![CDATA[questionamento]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[escalabilidade]]></category>
		<category><![CDATA[simplicidade]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=800</guid>
		<description><![CDATA[TweetEste é um assunto polêmico e que gera muita discussão nos escritórios de TI. Mesmo assim, tendo trabalhado em várias empresas, grandes e pequenas, presenciando vários projetos fracassarem por decisões arquiteturais (as gerenciais não contam nesse contexto), e os mesmos &#8230; <a href="http://1up4dev.org/2011/02/complexidade-nao-escala/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-left"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://1up4dev.org/2011/02/complexidade-nao-escala/" data-text="Complexidade não escala!" data-count="vertical" data-via="socializeWP" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div class="socialize-in-button socialize-in-button-left"><iframe src="http://www.facebook.com/plugins/like.php?href=http://1up4dev.org/2011/02/complexidade-nao-escala/&amp;layout=box_count&amp;show_faces=false&amp;width=50&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:50px !important; height:65px;" allowTransparency="true"></iframe></div></div><p>Este é um assunto polêmico e que gera muita discussão nos escritórios de TI. Mesmo assim, tendo trabalhado em várias empresas, grandes e pequenas, presenciando vários projetos fracassarem por decisões arquiteturais (as gerenciais não contam nesse contexto), e os mesmos erros sendo cometidos repetidas vezes, sinto-me na obrigação de passar esta experiência e meu ponto de vista.</p>
<h3>Escalabilidade, por definição</h3>
<p>De acordo com a <a href="http://en.wikipedia.org/wiki/Scalability">Wikipedia</a>, <strong>escalabilidade</strong> <em>é uma característica desejável em todo o sistema que indica sua habilidade de manipular uma porção crescente de trabalho de forma uniforme, ou estar preparado para crescer.</em> Em outras palavras, um sistema deve estar preparado para suportar uma demanda crescente.</p>
<p>Pode ser classificada como:</p>
<ul>
<li>Carga de escalabilidade: um sistema distribuído deve ser fácil para ser expandido e usar sua gama de recursos para acomodar tanto exigências do mesmo sendo elas pouca ou excessiva.</li>
<li>Geograficamente escalável: um sistema é geograficamente escalável quando ele mantém sua utilidade e usabilidade, não obstante como são usados os seus recursos.</li>
<li>Escalabilidade administrativa: não importa a variação de informação que diferentes organizações necessitam compartilhar em um único sistema distribuído, ele deve permanecer fácil de ser usado e gerenciado.</li>
<li>Escalabilidade funcional: capacidade de melhorar o sistema, adicionando novas funcionalidades com mínimo esforço.</li>
</ul>
<p>Pode ser aplicada como:</p>
<ul>
<li><strong>Escalabilidade Vertical</strong> (scale up): significa adicionar recursos em um único nó do sistema (mais memória ou um disco rígido mais rápido).</li>
<li><strong>Escalabilidade Horizontal</strong> (scale out): significa adicionar mais nós ao sistema, tais como adicionar um novo computador com uma aplicação para clusterizar o software. Você pode encontrar escalabilidade horizontal nos sabores <a href="http://pt.wikipedia.org/wiki/Computa%C3%A7%C3%A3o_distribu%C3%ADda">Sistemas Distribuídos</a>, <a href="http://en.wikipedia.org/wiki/Enterprise_JavaBean">Serviços de Componentes</a>, <a href="http://pt.wikipedia.org/wiki/Service-oriented_architecture">SOA</a>, <a href="http://en.wikipedia.org/wiki/System_of_systems">System of Systems</a>, etc.</li>
</ul>
<p><a href="http://escalabilidade.com"><img src="http://1up4dev.org/wp-content/uploads/2011/01/scale-up-300x150.png" alt="Escalabilidade" title="Escalabilidade" width="300" height="150" class="aligncenter size-medium wp-image-828" /></a><br />
Do ponto de vista do custo de desenvolvimento, manutenção e suporte, eu defino escalabilidade como: caro (complexo) vs. barato (simples). Porém, o que é caro nem sempre é bom&#8230; e vice versa.</p>
<h3>Analogias com o mundo real</h3>
<p>Nós gostamos de fazer <a href="http://en.wikipedia.org/wiki/Extreme_programming_practices#System_metaphor">analogias com coisas reais</a>, são ótimas para expressar idéias e facilitar a comunicação.</p>
<p>Call centers, ou centrais de atendimento. Se você mora no Brasil provavelmente já perdeu algumas horas de sua vida pendurado no telefone tentando resolver um problema com sua assinatura de celular, internet, TV, energia elétrica, etc. Mas por que isso acontece?<br />
Provavelmente, essas centrais de atendimento começaram com poucos funcionários, porém foram &#8220;projetadas&#8221; para crescer conforme a demanda. Basta contratar mais funcionários, dar treinamento e pronto: mais &#8220;nós&#8221; atendendo as requisições. Entretanto, o processo passa a ser mais complexo e mais burocrático, pois é muita informação para disseminar entre os funcionários. Resultado: alto custo para empresa e pouco resultado para os clientes. A espera ainda existe e quando finalmente somos atendidos, a sensação é de estar falando com um robô, que dificilmente entenderá seu problema e dará uma solução padrão ou insatisfatória para o mesmo.</p>
<p><a href="http://1up4dev.org/wp-content/uploads/2011/01/call-center.jpg"><img src="http://1up4dev.org/wp-content/uploads/2011/01/call-center-300x225.jpg" alt="Call Center" title="Call Center" width="300" height="225" class="aligncenter size-medium wp-image-820" /></a></p>
<p>O processo é adequado para escalar a demanda horizontalmente, o que o torna complexo e não garante a qualidade. Vale lembrar que o <a href="http://pt.wikipedia.org/wiki/Sistemas_computacionais">software</a> apenas automatiza ou apóia a realização dos processos reais. Se o processo é complexo, o software será tão complexo quanto (e em alguns casos até mais complexo).</p>
<p>Um exemplo diferente: o <a href="http://pt.wikipedia.org/wiki/Volkswagen_Fusca">Fusca</a>. É um dos carros mais simples que existem, não precisa nem de refrigeração a água. Costuma-se dizer que pode ser consertado com um alicate e um rolo de arame. Seu custo de fabricação seria mínimo se comparado com o custo de um carro popular moderno. Ok, não oferece a mesma segurança, velocidade e conforto de um carro moderno, mas ambos conseguem transportar 5 passageiros ao destino desejado.</p>
<p><a href="http://1up4dev.org/wp-content/uploads/2011/01/fuka_herbie_oval.jpg"><img class="aligncenter size-medium wp-image-810" title="Fusca" src="http://1up4dev.org/wp-content/uploads/2011/01/fuka_herbie_oval-300x210.jpg" alt="Fusca" width="300" height="210" /></a></p>
<p>Mas o que um Fusca têm a ver com escalabilidade? Bem, imagine um congestionamento na véspera de um feriado, por exemplo. Tanto o Fusca quanto o carro moderno ficarão parados na mesma fila de farofeiros. Toda tecnologia, complexidade e custo da fabricação do carro moderno não o livra de um congestionamento. Não há projeto que consiga prever ou contornar esse problema.</p>
<p><a href="http://1up4dev.org/wp-content/uploads/2011/01/baleia1.jpg"><img class="aligncenter size-medium wp-image-811" title="Twitter" src="http://1up4dev.org/wp-content/uploads/2011/01/baleia1-300x225.jpg" alt="Twitter" width="300" height="225" /></a></p>
<p>Voltando para nossa realidade, em certos casos o custo não paga o benefício. Mesmo um sistema bem planejado, distribuído, separado em camadas e serviços independentes, pode não suportar a demanda, seja de carga ou de funcionalidade. O mesmo aconteceria com um sistema mais simples arquiteturalmente, com certeza. Porém, o custo e velocidade de desenvolvimento e manutenção seria bem menor.</p>
<h3>O que fazer então?</h3>
<p>Sistemas precisam evoluir de acordo com a necessidade. <a href="http://merbist.com/2011/01/31/designing-for-scalability/">Projetar um sistema</a> prevendo todos os possíveis &#8220;casos de uso&#8221; bem como suas hipotéticas cargas (ou acessos) é uma forte característica do <em>waterfall</em>. Sistemas mais simples arquiteturalmente evoluem mais facilmente, em outras palavras, escalam mais facilmente:</p>
<ul>
<li><a href="http://pt.wikipedia.org/wiki/Keep_It_Simple"><strong>Keep it simple, stupid</strong></a>! Soluções simples geralmente custam menos e trazem retorno mais rápido. Qualquer funcionalidade ou recurso que não agregue valor deve ser descartada. Simples assim!</li>
<li><strong>Simplifique requisitos</strong>. Clientes <em>sem</em> software costumam <em>viajar</em> nos requisitos. Converse, escute e entenda exatamente seus <a href="http://1up4dev.org/2008/11/foco-no-problema/">PROBLEMAS</a>, então <a href="http://pt.wikipedia.org/wiki/YAGNI">negocie</a> e sugira uma SOLUÇÃO simples e rápida. E a <a href="http://pragprog.com/titles/prj/ship-it">entregue</a> logo!</li>
<li><strong>Busque soluções prontas</strong>. As necessidades dos clientes, em muitos casos, são parecidas. Provavelmente existe alguma solução pronta que você pode entregar para seu cliente ao invés de desenvolver um novo [software que todos conhecem] do zero.</li>
<li><strong>Otimize sua infra-estrutura</strong>. Procure a melhor forma de deploy da aplicação. Qual hardware é mais adequado, qual sistema operacional e arquitetura. Faça tunning do webserver (workers, pool, memória), módulos e load balance. Utilize uma versão otimizada do interpretador, como o <a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a>, <a href="http://www.jruby.org/">JRuby</a> ou <a href="http://rubini.us/">Rubinius</a>.</li>
<li><strong>Monitore sua aplicação</strong>. Uma vez que esteja em produção, monitore-a em busca de gargalos e possíveis pontos de otimização. Existem várias ferramentas para ajudá-lo nessa tarefa, como o <a href="http://hoptoadapp.com/">Hoptoad</a>, <a href="http://newrelic.com/">NewRelic</a>, ou até mesmo o <a href="http://rubini.us/doc/en/tools/profiler/">Rubinius Profiler</a>.</li>
<li><strong>Otimize sua aplicação</strong>. O log é seu melhor amigo no desenvolvimento. Não ignore queries demoradas ou que geram <a href="http://rails-bestpractices.com/posts/29-fix-n-1-queries">N+1</a>, otimize-as! Faça <em>profiling</em>, analise e otimize o código. Utilize <em>caching</em> para serviços externos e para páginas. Caching pode ser a melhor alternativa para turbinar sua aplicação, mas use-o com sabedoria. Bancos de dados não devem ser um problema, por isso saiba escolher a melhor distribuição para seu caso. Mesmo que <a href="http://nosql-database.org/">NoSQL</a> esteja na moda, não quer dizer que é a melhor solução para sua aplicação (a menos que seja necessário para o negócio).</li>
<li><strong>Simplifique o desenvolvimento</strong>. Fameworks ajudam bastante, mas use-os com sabedoria para não inflar o <em>stack</em> da aplicação. Em certas situações, vale mais a pena desenvolver algo simples do zero do que utilizar algo pronto, pesado e que precise ser adaptado para sua necessidade. Escreva menos: quanto menor seu código, mais rápido será sua execução. Camadas são perigosas: evite rodeios e escreva código que realmente interessa. E lembre-se: sempre existe uma ferramenta certa para cada problema.</li>
</ul>
<h3>SIMPLIFIQUE!</h3>
<p>Tenha sempre a palavra <a href="http://zenhabits.net/simple-living-manifesto-72-ideas-to-simplify-your-life/"><strong>SIMPLES</strong></a> gravada na sua mente. Se uma coisa exigir muito esforço para ser feita, talvez nem valha a pena. Volte para o início, pense novamente e busque uma ALTERNATIVA mais rápida/fácil/barata. Quanto melhor for sua técnica, melhor serão suas escolhas. <a href="http://blip.tv/file/2733212">Pratique constantemente</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2011/02/complexidade-nao-escala/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Agile Enterprise Edition</title>
		<link>http://1up4dev.org/2009/12/agile-enterprise-edition/</link>
		<comments>http://1up4dev.org/2009/12/agile-enterprise-edition/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 09:00:08 +0000</pubDate>
		<dc:creator>Rodrigo Panachi</dc:creator>
				<category><![CDATA[questionamento]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[agilidade]]></category>
		<category><![CDATA[corporativismo]]></category>
		<category><![CDATA[metodologia]]></category>
		<category><![CDATA[pragmatic waterfall]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=560</guid>
		<description><![CDATA[TweetPara começar o post, segue esta história sobre gerenciamento que vi no blog do Gustavo Ribeiro: Todos os dias, uma formiga chegava cedinho ao escritório e pegava duro no trabalho. A formiga era produtiva e feliz. O gerente marimbondo estranhou &#8230; <a href="http://1up4dev.org/2009/12/agile-enterprise-edition/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-left"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://1up4dev.org/2009/12/agile-enterprise-edition/" data-text="Agile Enterprise Edition" data-count="vertical" data-via="socializeWP" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div class="socialize-in-button socialize-in-button-left"><iframe src="http://www.facebook.com/plugins/like.php?href=http://1up4dev.org/2009/12/agile-enterprise-edition/&amp;layout=box_count&amp;show_faces=false&amp;width=50&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:50px !important; height:65px;" allowTransparency="true"></iframe></div></div><p>Para começar o post, segue esta história sobre <em>gerenciamento</em> que vi no blog do <a href="http://gustavoribeiro.com/blog/gerenciamento" target="_blank">Gustavo Ribeiro</a>:</p>
<blockquote><p>Todos os dias, uma formiga chegava cedinho ao escritório e pegava duro no trabalho. A formiga era produtiva e feliz. O gerente marimbondo estranhou a formiga trabalhar sem supervisão. Se ela era produtiva sem supervisão, seria ainda mais se fosse supervisionada.</p>
<p>E colocou uma barata, que preparava belíssimos relatórios e tinha muita experiência, como supervisora. A primeira preocupação da barata foi a de padronizar o horário de entrada e saída da formiga.</p>
<p>Logo, a barata precisou de uma secretária para ajudar a preparar os relatórios e contratou também uma aranha para organizar os arquivos e controlar as ligações telefônicas.</p>
<p>O marimbondo ficou encantado com os relatórios da barata e pediu também gráficos com indicadores e análise das tendências que eram mostradas em reuniões.</p>
<p>A barata, então, contratou uma mosca, e comprou um computador com impressora colorida. Logo, a formiga produtiva e feliz, começou a se lamentar de toda aquela movimentação de papéis e reuniões!<br />
O marimbondo concluiu que era o momento de criar a função de gestor para a área onde a formiga produtiva e feliz, trabalhava. O cargo foi dado a uma cigarra, que mandou colocar carpete no seu escritório e comprar uma cadeira especial.</p>
<p>A nova gestora cigarra logo precisou de um computador e de uma assistente (sua assistente na empresa anterior) para ajudá-la a preparar um plano estratégico de melhorias e um controle do orçamento para a área onde trabalhava a formiga, que já não cantarolava mais e cada dia se tornava mais chateada.</p>
<p>A cigarra, então, convenceu o gerente marimbondo, que era preciso fazer um estudo de clima. Mas, o marimbondo, ao rever as cifras, se deu conta de que a unidade na qual a formiga trabalhava já não rendia como antes e contratou a coruja, uma prestigiada consultora, muito famosa, para que fizesse um diagnóstico da situação. A coruja permaneceu três meses nos escritórios e emitiu um volumoso relatório, com vários volumes que concluía: &#8220;Há muita gente nesta empresa!&#8221;</p>
<p>Então o marimbondo mandou demitir a formiga porque ela andava muito desmotivada e aborrecida.</p></blockquote>
<p>Então lembrei de uma imagem que ilustra perfeitamente esta fábula e retrata fielmente a &#8220;organização&#8221; de alguma empresas:</p>
<p style="text-align: center;"><a href="http://1up4dev.org/wp-content/uploads/2009/07/trabalho_em_equipe.jpg"><img class="aligncenter" title="trabalho_em_equipe" src="http://1up4dev.org/wp-content/uploads/2009/07/trabalho_em_equipe-222x300.jpg" alt="" width="222" height="300" /></a></p>
<h2>Dividir para conquistar: você está fazendo isso errado!</h2>
<p>Quando uma <em>startup</em> passa a vender mais e ter uma procura maior por seus produtos/serviços (o que é bom), uma reação comum da &#8220;cúpula&#8221; é aumentar o quadro de funcionários visando atender a demanda. Logo surgem os problemas com a organização do pessoal e/ou fluxo de trabalho. A solução mais simplista (e óbvia) é a especialização: fulano faz isso, ciclano faz aquilo, e beltrano gerencia. Logo controles são criados, fluxos validados, centros de custo, documentos, reuniões, atas, comitês, gestão de pessoas e relacionamento, terceirização, cargos, departamentos&#8230; e nasce o monstro da <a href="http://pt.wikipedia.org/wiki/Burocracia">burocracia</a>, aka &#8220;enterprise&#8221;.</p>
<p>Com essa <a href="http://en.wikipedia.org/wiki/Enterprise_architecture">especialização</a>, cada &#8220;módulo&#8221; (também conhecido como departamento) começa a perder o foco no GRANDE objetivo da empresa e passa a defender apenas <a href="http://1up4dev.org/2008/11/os-guardioes-da-cascata">seus interesses</a> &#8211; a famosa MISSÃO da empresa passa a ser coadjuvante. O resultado? A empresa dobra ou triplica seu quadro de funcionários e na maioria dos casos, seu lucro bruto. Porém agora tem mais despesas com pessoal e gastos extras para manter  esse novo modelo &#8220;enterprise&#8221;. Trocando em miúdos, continua na mesma!</p>
<p>Onde está o erro? Mais uma vez o FOCO está na <a href="http://1up4dev.org/2008/11/foco-no-problema/">solução</a> ao invés de PROBLEMA. Se você ler meus posts anteriores vai ver que este é um tema recorrente. Então por que as empresas continuam fazendo as coisas erradas e cometendo os mesmos erros?</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/R47Xe8kVrv0&amp;hl=pt_BR&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/R47Xe8kVrv0&amp;hl=pt_BR&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Idéias criativas surgem das pessoas <a href="http://blog.aspercom.com.br/2008/07/21/hierarquias-sao-inteligentes-nas-pontas/">diretamente</a> relacionadas com os problemas e não de diretores, contadores, gestores, etc. Esse modelo &#8220;enterprise&#8221; é um <em>overhead</em> organizacional que só gera ruído e desperdício!</p>
<h2>A solução é adotar agile!</h2>
<p>SOLUÇÃO!? Mas qual era o PROBLEMA mesmo!? Sim, mais uma vez o foco é a <a href="http://agilesoftwaredevelopment.com/blog/janusz-gorycki/agile-dead">solução</a> ao invés do problema.</p>
<p>Como eu disse nos posts anteriores, acreditar que uma mudança drástica do processo pode mudar a cultura da empresa e pincipalmente as pessoas é o maior erro na adoção de metodologias ágeis. Mudam o processo mas não mudam as pessoas.</p>
<p>De uma forma simples e direta, agile resume-se a quatro valores:</p>
<blockquote><p>Individuals and interactions over processes and tools<br />
Working software over comprehensive documentation<br />
Customer collaboration over contract negotiation<br />
Responding to change over following a plan</p></blockquote>
<p>Ou seja, pessoas, software, colaboração e feedback. Simples assim!</p>
<p>O manifesto ágil não cita nada sobre &#8220;enterprise&#8221;, sobre a implementação. Este é o grande desafio em sua adoção. Como seguir estes valores sem burocratizar e engessar o processo? Como criar uma relação de colaboração com os clientes? Como responder rapidamente a mudanças? Como eliminar o esforço que não agrega valor ao produto e/ou empresa? Como evitar politicagem?</p>
<h2>Mantenha-se pequeno!</h2>
<p>Otimize! Busque soluções para os problemas que impedem de produzir mais e com mais qualidade. Faça MAIS com MENOS. Foque no O QUE ao invés do COMO. Escale as pessoas verticalmente!</p>
<p>Inove! Não espere conseguir resultados diferentes fazendo sempre a mesma coisa. Busque novidades, opniões, experiências. Ouça seus funcionários, seus clientes. Estude, pesquise, arrisque, erre, acerte&#8230; continuamente.</p>
<p>Mantenha o foco! Tenha um GRANDE e único objetivo e certifique-se que todos acreditem nesta filosofia. É importante que todos comprem a idéia e o <em>modus operandis</em>.</p>
<p>Finalizando, este é apenas meu ponto de vista, baseado na minha experiência em diversas empresas grandes e pequenas, vivenciando problemas, errando muito e principalmente aprendendo com os erros dos outros. Agilidade pode funcionar bem em grandes corporações, desde que haja foco e que todos comprem a idéia. Você pode concordar ou não.</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2009/12/agile-enterprise-edition/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Agilidade é a buzzword do momento</title>
		<link>http://1up4dev.org/2009/04/agilidade-e-a-buzzword-do-momento/</link>
		<comments>http://1up4dev.org/2009/04/agilidade-e-a-buzzword-do-momento/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 14:46:42 +0000</pubDate>
		<dc:creator>Rodrigo Panachi</dc:creator>
				<category><![CDATA[processos]]></category>
		<category><![CDATA[questionamento]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[waterfall]]></category>
		<category><![CDATA[agilidade]]></category>
		<category><![CDATA[pragmatic waterfall]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=427</guid>
		<description><![CDATA[TweetNos últimos anos o mercado de TI cresceu exponencialmente. Surgiram desde pequenas empresas especializadas em construir websites até monstruosas fábricas de software com seus contratos milionários. Algumas com orçamento limitado outras com dinheiro jorrando pelos canos. Umas com problemas por &#8230; <a href="http://1up4dev.org/2009/04/agilidade-e-a-buzzword-do-momento/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-left"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://1up4dev.org/2009/04/agilidade-e-a-buzzword-do-momento/" data-text="Agilidade é a buzzword do momento" data-count="vertical" data-via="socializeWP" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div class="socialize-in-button socialize-in-button-left"><iframe src="http://www.facebook.com/plugins/like.php?href=http://1up4dev.org/2009/04/agilidade-e-a-buzzword-do-momento/&amp;layout=box_count&amp;show_faces=false&amp;width=50&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:50px !important; height:65px;" allowTransparency="true"></iframe></div></div><p>Nos últimos anos o mercado de TI cresceu exponencialmente. Surgiram desde pequenas empresas especializadas em construir websites até monstruosas fábricas de software com seus contratos milionários. Algumas com orçamento limitado outras com dinheiro jorrando pelos canos. Umas com problemas por falta de organização outras com problemas burocráticos. Bons profissionais vs. equipes de sobrinhos, habilidade técnica contra enxurradas de documentos&#8230; muito fracasso, pouco sucesso.</p>
<h2>A meta é coletar as moedas até conseguirmos uma estrela</h2>
<p>Surgiram muitas empresas especializadas em desenvolver software ou que têm um software como produto principal. Normalmente, essas empresas se preocupam apenas em satisfazer os investidores e se esquecem dos clientes. Focam em vender e deixam a qualidade de lado. Prezam pela imagem e ignoram os problemas.</p>
<p>É uma triste realidade que essas empresas tenham mais <a href="http://www.youtube.com/watch?v=R47Xe8kVrv0" target="_blank">executivos</a> do que programadores. Como diz o <a href="http://www.luli.com.br/" target="_blank">Luli Radfahrer</a>, <em>executivos são aqueles seres que se vestem com um pensamento fracassado, usam uma linguagem própria sendo uma mistura de termos que só eles entendem e 20% de palavras em inglês</em>&#8230; não vivem os problemas reais da empresa. É como se estivessem em outro mundo: Mario World!</p>
<div id="attachment_439" class="wp-caption aligncenter" style="width: 310px"><a href="http://1up4dev.org/wp-content/uploads/2009/04/marioland-clean.jpg"><img class="size-medium wp-image-439" title="Mario World" src="http://1up4dev.org/wp-content/uploads/2009/04/marioland-clean-300x188.jpg" alt="" width="300" height="188" /></a><p class="wp-caption-text">O mundo dos executivos: nuvens sorrindo</p></div>
<p>A maioria das empresas que têm problemas com desenvolvimento de software ainda estão vivendo na década de 90. Internet ainda é uma palavra assustadora. Programador é apenas um funcionário que sabe o que significam siglas de informática e sabem mexer no computador. Mudança ainda é encarada como algo arriscado, que deve ser planejado, estudado e aprovado pelo presidente, diretoria e gestores. A palavra da vez é <strong>processo</strong> e seu fiel companheiro é <strong>prazo</strong>. A burocracia é uma amiga que garante que as coisas não fujam de controle. Nesse cenário não há como fugir do waterfall.</p>
<p>O maior problema do waterfall são os papéis: cada um com sua &#8220;especialidade&#8221;. Alguém determina que um <span style="text-decoration: line-through;">infeliz</span> funcionário vai ser responsável por &#8220;levantar requisitos&#8221;. Faz um cursinho de UML e começa a escrever uma quantidade sem fim de Casos de Uso sem ter noção alguma do que seu trabalho afeta no processo. Então a &#8220;equipe&#8221; começa a ter muito &#8220;retrabalho&#8221;, uma vez que os clientes não estão satisfeitos com o que está sendo entregue. Logo percebem que devem fazer o &#8220;levantamento&#8221; mais detalhado e passam a engessar ainda mais o processo com reuniões, assinaturas, etc. Conclusão: tempo e dinheiro desperdiçados e nenhum resultado satisfatório.</p>
<div id="attachment_441" class="wp-caption aligncenter" style="width: 310px"><a href="http://1up4dev.org/wp-content/uploads/2009/04/lost_hatch_locke.jpg"><img class="size-medium wp-image-441" title="Lost" src="http://1up4dev.org/wp-content/uploads/2009/04/lost_hatch_locke-300x199.jpg" alt="Seu trabalho é digitar xxx a cada 108 segundos" width="300" height="199" /></a><p class="wp-caption-text">Meu trabalho é digitar 4 8 15 16 23 42 a cada 108 segundos</p></div>
<p>Falta de foco? Profissionais não qualificados? Processo falho? Não apenas isso: não há comunicação, não há troca de experiências. O waterfall favorece o aparecimento da síndrome do funcionário público: &#8220;eu sou gerente: eu <a href="http://www.youtube.com/watch?v=R47Xe8kVrv0" target="_blank">córdeno</a>, não preciso saber programar&#8221;. As decisões geralmente são tomadas por uma única pessoa. Os projetos seguem o modelo de construção civil. Os profissionais se acomodam pois não veem perspectiva, não conhecem o processo completo, não são ouvidos e por isso não são valorizados.</p>
<p>O foco destas empresas está longe de ser tecnologia. Se concentram em suas <a href="http://migre.me/rwD" target="_blank">buzzwords</a>, processos e reuniões e se esquecem do produto, ou seja, o software. Focam mais na solução do que no problema. Fazendo uma analogia, essas empresas são como um barco furado, onde está entrando água mas há pessoas com baldes para retirá-la e mantê-lo flutuando. Se a agua subir muito, contratam mais pessoas para operar os baldes. Enquanto isso, os executivos ficam acenando como se nada tivesse acontecendo. Quando perguntam se há algum problema, nenhum <span style="text-decoration: line-through;">fdp</span> infeliz tem coragem para falar que o problema é o furo no barco!</p>
<p>As empresas que focam em tecnologia e nos profissionais, tipo o <a href="http://lmgtfy.com/?q=empresas+que+investem+em+tecnologia" target="_blank">Google</a> ou a <a href="http://37signals.com/" target="_blank">37signals</a>, estão se dando bem e mostrando que agilidade não é apenas mais um processo&#8230; é algo real e que funciona!</p>
<h2>Agilidade é sair fazendo as coisas de qualquer jeito</h2>
<p>Diante do cenário caótico das empresas, um grupo de profissionais organizou um movimento a fim de unificar as práticas bem sucedidas e tornar o processo de desenvolvimento mais produtivo e pragmático: <a href="http://agilemanifesto.org/" target="_blank">o manifesto ágil</a>. Quem freqüenta esse blog sabe que nós somos fãs e seguidores das práticas ágeis, não porque somos fanáticos e acreditamos somente em uma verdade absoluta, mas por que já sofremos muito com projetos e empresas fracassadas, vivenciamos os problemas que compartilhamos neste blog, passamos noites em claro corrigindo código escrito por maus profissionais, acumulamos horas em reuniões suficiente para tirarmos brevê, tivemos que negociar com cliente, com o chefe, fazer entrevista, contratar, gerenciar, analisar, programar, testar&#8230; nós sofremos os problemas do waterfall na pele!</p>
<p>O termo agilidade é bem popular atualmente: &#8220;precisamos <strong>agilizar</strong> nosso processo de desenvolvimento&#8221;. Como divulgação do manifesto ágil é algo muito positivo, pois mais pessoas podem conhecer e utilizar as práticas ágeis. Mas, como toda fama tem seu lado negativo, não seria diferente neste caso. Muitos profissionais &#8220;gafanhoto&#8221; estão utilizando esse termo como alavancagem profissional. Já tem gerente falando que RUP é ágil, arquiteto defensor de modelagem UML ágil, diagrama ER ágil, modelo de dados ágil, caso de uso ágil, cronograma ágil, etc. Ou seja, estão distorcendo totalmente o propósito e a filosofia da agilidade.</p>
<p>Como disse o <a href="http://gc.blog.br/2008/11/22/agile-indo-para-o-buraco/" target="_blank">Chapiewski</a>, os programadores estão querendo ir direto para a sobremesa e esquecendo de comer seus vegetais. Agile é muito mais do que desenvolver iterativamente, fazer stand-up meetings e planejamentos ágeis. Não dá para ignorar todas as práticas de engenharia de software que realmente fazem com que a produção e mudanças em softwares sejam ágeis, sem contar todos os princípios e práticas que fazem uma diferença enorme.</p>
<p>O mercado que não é bobo já percebeu esse movimento migratório e lançou seus cursos de &#8220;Gerenciamento de projetos ágeis com MSProject&#8221;, &#8220;Desenvolvendo aplicações web com agilidade&#8221;, &#8220;Aprenda a programar com JUnit e TDD&#8221;. Não demorou muito para que uma massa de desenvolvedores colocasse o termo ágil em seus currículos. Pretensiosos demais em achar que um cursinho qualquer pode ensinar todo conceito e técnicas ágeis catalogadas por profissionais com décadas de experiência em desenvolvimento de software.</p>
<p>&#8220;Estou aprendendo Ruby on Rails por que o mercado está <a href="http://gc.blog.br/2009/02/15/plano-de-cargos-e-salarios/" target="_blank">pagando bem</a>&#8220;. do dia para a noite surgiram milhares de especialistas ágeis. O cara que programava em .NET ou Java no modelo tradicional (digitador de código), faz um cursinho rápido e de repente começa a desenvolver aplicações numa tecnologia que exige uma enorme bagagem conceitual. Faz tudo errado, pois não <strong>sabe</strong> realmente o que está fazendo, o projeto fracassa e ainda deixa a tecnologia com má fama. Isso aconteceu com PHP, ASP e está acontecendo com <a href="http://www.mouseoverstudio.com/blog/2009/04/08/nao-deixa-o-mar-te-engolir/" target="_blank">Rails.</a></p>
<p>Programar é difícil, não é um trabalho para qualquer aventureiro. É preciso <a href="http://akitaonrails.com/2009/04/17/off-topic-devo-fazer-faculdade" target="_blank">estudar</a> muito, se dedicar e principalmente, gostar! Não basta apenas estudar para conseguir uma <a href="http://www.nomedojogo.com/2009/02/17/um-modelo-de-maturidade-para-projetos-rails-e-pratico/" target="_blank">certificação</a> pois não garante nada. Deve-se viver a programação, participar de fóruns, contribuir com projetos open-source, discutir idéias, ser auto-crítico, ler muito, praticar, apreciar as boas práticas e abolir o que não presta&#8230;</p>
<div id="attachment_443" class="wp-caption aligncenter" style="width: 235px"><a href="http://1up4dev.org/wp-content/uploads/2009/04/controle-wii-remote.jpg"><img class="size-medium wp-image-443" title="controle-wii-remote" src="http://1up4dev.org/wp-content/uploads/2009/04/controle-wii-remote-225x300.jpg" alt="Agilidade é propor soluções simples para os problemas" width="225" height="300" /></a><p class="wp-caption-text">Agilidade é propor soluções simples para os problemas</p></div>
<p>Agilidade não é anarquia, não significa &#8220;sair fazendo as coisas de qualquer jeito&#8221;, dizer &#8220;não&#8221; para documentação, etc. É uma mudança de atitude, uma nova maneira de enfrentar os problemas e propor soluções <a href="http://blog.aspercom.com.br/2008/07/21/hierarquias-sao-inteligentes-nas-pontas/" target="_blank">simples e práticas</a>, é ter foco, é saber fazer mais com menos, é automatizar tarefas, é estar comprometido&#8230; agilidade é atitude.</p>
<h2>Contratamos uma consultoria para implantar Scrum</h2>
<p>Scrum é a <em>metodologia</em> da moda. Assim que começou a se popularizar entre a comunidade de desenvolvedores, não demorou muito para o que vários sites e blogs se dedicassem exclusivamente na sua divulgação, apresentando benefícios, artigos, guias, exemplos, certificados para imprimir e pendurar em uma moldura na parede, etc. Logo surgiram as consultorias especializadas em <span style="text-decoration: line-through;">adestramento</span> treinamento e implantação de Scrum nas empresas. Um pouco de política aqui e influência ali até que a INFO Magazine publicasse uma matéria dizendo sua empresa <strong>deveria</strong> usar Scrum como solução para todos os problemas.</p>
<p>Mais uma vez, a falta de foco e maturidade das empresas distorcem tudo. Muitas empresas &#8220;compraram&#8221; o Scrum como a solução pronta. Bastar treinar os funcionários, comprar blocos de post-it e tudo passa a funcionar bem e gerar lucro. Pagam um curso de &#8220;gerenciamento de projetos com Scrum&#8221; para os gerentes. Depois apostam todos as fichas em um projeto &#8220;piloto&#8221;. Fazem tudo que manda o manual: reuniões diárias, planing-pocker, quadro com post-its, etc. E o projeto&#8230; fracassa!</p>
<div id="attachment_454" class="wp-caption aligncenter" style="width: 210px"><a href="http://1up4dev.org/wp-content/uploads/2009/04/burning_money.jpg"><img class="size-medium wp-image-454" title="burning_money" src="http://1up4dev.org/wp-content/uploads/2009/04/burning_money.jpg" alt="Queimando dinheiro" width="200" height="150" /></a><p class="wp-caption-text">Queimando dinheiro</p></div>
<p>Então quer dizer que Scrum não funciona? Foi dinheiro desperdiçado? Tanto esforço para nada? Neste caso, devo dizer que sim! Se esqueceram do processo anterior falho, funcionários pouco qualificados e dos líderes sem foco. Escolheram aqueles funcionários mais &#8220;experientes&#8221; para serem o Scrum Master. Sim, aqueles mesmos que só sabiam escrever casos de uso e diagramas UML. Se esqueceram dos valores, dos princípios, <a href="http://rogerioalcantara.blogspot.com/2009/04/ah-entao-vc-usa-scrum.html" target="_blank">da atitude</a>, do relacionamento com o cliente. O pensamento não mudou, o foco ainda era no processo. Depois de tanto esforço, só deram outro nome o waterfall. Não demorou muito e surgiram os papéis, artefatos, documentos&#8230; ou seja, a empresa continua cometendo os mesmos erros!</p>
<p>Não importa a tecnologia ou processo se não souber usá-lo corretamente! E definitivamente Scrum não pode ser encarado como mais um processo bonitinho, com seus papéis, artefatos, bla bla bla. Um processo de software que funciona é aquele onde a equipe está realmente comprometida e tem experiência acumulada para enfrentar e resolver problemas ao longo do desenvolvimento da aplicação. O processo, ou metodologia, será meramente um nome para as práticas que a equipe conhece e utiliza naturalmente.</p>
<h2>Resumo</h2>
<p>Não há ferramenta, metodologia ou processo que substitua a atitude e experiência de um verdadeiro desenvolvedor ágil. Estude, pratique, esteja comprometido, estude denovo, questione-se, estude novamente. <a href="http://smartic.us/2008/09/09/10-things-you-could-be-doing-to-your-code-right-now/" target="_blank">Revise seu código</a>, estude mais um pouco, e principalmente, tenha atitude! <strong>Agilidade não é metodologia, é atitude!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2009/04/agilidade-e-a-buzzword-do-momento/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A perpetuação da espécie</title>
		<link>http://1up4dev.org/2008/10/a-perpetuacao-da-especie/</link>
		<comments>http://1up4dev.org/2008/10/a-perpetuacao-da-especie/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 02:48:18 +0000</pubDate>
		<dc:creator>Humberto</dc:creator>
				<category><![CDATA[questionamento]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[waterfall]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=200</guid>
		<description><![CDATA[TweetNa semana passada uma desconfortável discussão me pôs a pensar sobre os obstáculos culturais na aceitação de princípios ágeis no desenvolvimento de sistemas. A discussão ocorreu quando um amigo meu comentou comigo a respeito de uma metodologia que ele pretende &#8230; <a href="http://1up4dev.org/2008/10/a-perpetuacao-da-especie/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-left"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://1up4dev.org/2008/10/a-perpetuacao-da-especie/" data-text="A perpetuação da espécie" data-count="vertical" data-via="socializeWP" >Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div class="socialize-in-button socialize-in-button-left"><iframe src="http://www.facebook.com/plugins/like.php?href=http://1up4dev.org/2008/10/a-perpetuacao-da-especie/&amp;layout=box_count&amp;show_faces=false&amp;width=50&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:50px !important; height:65px;" allowTransparency="true"></iframe></div></div><p>Na semana passada uma desconfortável discussão me pôs a pensar sobre os obstáculos culturais na aceitação de princípios ágeis no desenvolvimento de sistemas. A discussão ocorreu quando um amigo meu comentou comigo a respeito de uma metodologia que ele pretende aplicar em um projeto no qual está envolvido. Fiz questão que ouvi-lo com atenção, pois ele, além de ser uma pessoa da minha consideração, possui um background de sistemas muito diferente do meu. O que permite tentar entender outros lados de problemas em comum.</p>
<p>Logo nos primeiros instantes da conversa, percebi que a metodologia que ele estava a me explicar era nada menos que algo derivado de waterfall, onde, basicamente, um &#8220;sistema&#8221; é definido, por sábios analistas, em um conjunto de diagramas diversos, para depois passar por &#8220;estágios&#8221; de aprovações e assinaturas mil, e então finalmente cair nas mãos sujas de pizza dos programadores. Documentos. Documentos e mais documentos. Tudo para garantir que não houvesse mal-entendidos, nenhum &#8220;re-trabalho&#8221;, nenhuma oportunidade de &#8220;o cliente&#8221; pedir mais do que podia ou mudar de idéia depois de todos os acordos &#8212; simplesmente, a metodologia era sinônimo de controle total e absoluto sobre todas as &#8220;fases&#8221; de um projeto.</p>
<p>Eu não podia ouvir tudo aquilo e ficar calado. A primeira pergunta que eu fiz foi: quais problemas essa idéia vai combater? Ou, pra ser mais sincero com o eventual leitor, perguntei que problemas, <strong>observados na prática</strong>, seriam resolvidos com a metodologia. Sim, na prática, pois durante a conversa ele havia dado exemplos bastante hipotéticos e superficiais de problemas. Recebi como resposta um olhar de espanto, como se eu tivesse perguntado se a Lua era feita de queijo Minas. Deveria ser óbvio para mim quais eram os problemas! Na raiz de todos os males está a informalidade total no andamento dos projetos! Cliente conversando direto com programador! Sistema que foge às especificações! Cronogramas que não são cumpridos! Programador dando uma de arquiteto! E outras na mesma linha.</p>
<p>Diante de tantas certezas, vi que a conversa já não ia dar em nada, mas continuei o debate. Respondi que, no projeto em que eu estou trabalhando, uma situação de caos total foi revertida sem que a equipe tivesse que conversar em UML, sem que colocássemos travas no diálogo com o cliente&#8230; mas com muito, muito &#8220;re-trabalho&#8221;. Disse ainda que, do meu ponto de vista, os problemas eram de fundo humano: equipe mal qualificada e expectativas amadoras dos assim chamados responsáveis. E ainda afirmei que não acreditava em especificação perfeita, primeiro porque especificações e diagramas são feitos por seres humanos (ainda que na qualidade de iluminados analistas), e segundo porque software se trata de algo mutável pela própria natureza. (Ou então seria chamado &#8220;hardware&#8221;.) Não falei em termos tão professorais assim, ou ao menos, procurei ser humilde nas colocações.</p>
<p>Continuei dizendo que, por causa desse fundamento humano, a solução dos problemas, se é que existe, passaria por: apoiar o talento das pessoas, não ser reativo nas negociações, recrutar direito, apostar em um gerenciamento mais adaptativo (em nenhum momento usei a palavra &#8220;ágil&#8221;) de projetos. Certamente, soluções bem menos simples do que dar ordens de se produzir e seguir diagramas ao pé da letra. (Como se houvesse leitura &#8220;ao pé da letra&#8221;&#8230;)</p>
<p>Pensei que possuía alguma credibilidade, mas acho que a essa altura da conversa o meu amigo já não me via como desenvolvedor experiente, e sim como um encarregado que tinha ido trocar a água do bebedouro perto do qual estávamos e resolveu dar palpite sobre esse troço de sistemas. Tive que ouvir que eu estava &#8220;totalmente errado&#8221;, que esse papo de dar valor às pessoas era &#8220;a causa de nada funcionar&#8221;, que as empresas precisavam reter conhecimento através de documentação (no que ele está certo), e que &#8220;muitas empresas grandes&#8221; estavam trabalhando com essa metodologia. (Não citou as empresas e eu não questionei pra não ficar chato.)</p>
<p>O papo acabou logo depois, mas se alguém ainda está lendo e achou que brigamos, não foi o que aconteceu. Continuamos amigos igual antes. Mas dificilmente volto a ter uma conversa com ele sobre esses assuntos. Existe uma diferença cultural muito grande entre nós dois no que diz respeito a software, e é esse o assunto do post!</p>
<p>Em toda a minha carreira eu apostei na minha capacidade de resolver coisas, no meu domínio sobre as questões relevantes aos trampos com os quais me envolvi, na confiança que eu podia estabelecer com as pessoas em volta e, reciprocamente, na confiança que essas pessoas podiam ter em mim. Eu não sei trabalhar de outro jeito e nem quero mudar, pois várias vezes tive o prazer de ver as coisas funcionando/mudando justamente pelas minhas atitudes. Uma metodologia na base do diagrama, na base do analista/deus e programador/vassalo não é só inútil pra mim como simplesmente não me oferece condições de trabalho.</p>
<p>Por outro lado, não me lembro de ter visto esse meu amigo falar com orgulho a respeito de algum projeto do qual tenha participado. Percebo que sua carreira foi marcada por muito trabalho, muito esforço com equipes ruins, muita pedrada de cliente folgado. Chefes ignorantes. Tarefas monótonas. Isso tudo, sem a contrapartida de gostar do que faz, nem de conseguir se motivar observando os próprios sucessos, pode facilmente, na minha opinião, produzir um semeador de waterfall, como meu amigo parece ter se tornado. Para um perpetuador de waterfall, um sistema é uma coisa plana, composta de tarefas registradas em alguma linguagem esquemática pobre, que será transcrita para o computador por pessoas-robôs cujo maior erro é, eventualmente, pensar.</p>
<p>Uma coisa plana sem espaço para a confiança, nem para a imaginação &#8212; origens de todos os males, pelo bate-papo ao pé do bebedouro.</p>
<p>(Parte da motivação para este post veio de &#8220;<a id="z5o_" title="What are the right conditions for agile adoption?" href="http://www.agilemanagement.net/Articles/Weblog/Whataretherightconditions.html">What are the right conditions for agile adoption?</a>&#8220;, de David Anderson.)</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2008/10/a-perpetuacao-da-especie/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

