<?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; cascata</title>
	<atom:link href="http://1up4dev.org/category/processos/cascata/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>Thu, 29 Jul 2010 04:27:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Agilidade cascateira</title>
		<link>http://1up4dev.org/2008/12/agilidade-cascateira/</link>
		<comments>http://1up4dev.org/2008/12/agilidade-cascateira/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 13:50:09 +0000</pubDate>
		<dc:creator>Rodrigo Panachi</dc:creator>
				<category><![CDATA[cascata]]></category>
		<category><![CDATA[processos]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[agilidade]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=262</guid>
		<description><![CDATA[Atualmente as metodologias ágeis vêm aparecendo com cada vez mais freqüência nas empresas que desenvolvem software, introduzidas pelos próprios desenvolvedores (o que é mais comum) ou em alguns raros casos pela &#8220;cúpula&#8221; da empresa, na esperança de melhorar a produtividade e/ou o alto tempo de resposta do fracassado processo cascateiro. Porém, esta &#8220;fama&#8221; prematura dos [...]]]></description>
			<content:encoded><![CDATA[<p>Atualmente as metodologias ágeis vêm aparecendo com cada vez mais freqüência nas empresas que desenvolvem software, introduzidas pelos próprios desenvolvedores (o que é mais comum) ou em alguns <span style="text-decoration: line-through;">raros</span> casos pela &#8220;cúpula&#8221; da empresa, na esperança de melhorar a produtividade e/ou o alto tempo de resposta do fracassado processo cascateiro. Porém, esta &#8220;fama&#8221; prematura dos métodos ágeis tem gerado mais resultados ruins do que bons. Sua aplicação na vida real, <span style="text-decoration: line-through;">na maioria</span> em muitos casos, ocorre de maneira equivocada, distorcida e desprezando-se os reais valores e princípios que apoiaram o surgimento desta filosofia.</p>
<p>Um exemplo claro de como os valores ágeis estão sendo <span style="text-decoration: line-through;">desprezados</span> distorcidos é o aumento constante de &#8220;cursos&#8221; e treinamentos de metodologias ágeis. Não é raro eu receber semanalmente vários <span style="text-decoration: line-through;">spams</span> e-mails de escolas de treinamento que ministram cursos de Scrum, XP, preparação para certificação ScrumMaster, técnicas de TDD, DDD, BDD, etc. Infelizmente o que estes cursos não ensinam (como todos os outros) é o verdadeiro significado de &#8220;ser ágil&#8221;. Fazer um curso de 20 horas de Scrum não o torna um ScrumMaster (você pode até ter um certificado, mas se você realmente é &#8220;ágil&#8221;, sabe que um certificado é um mero pedaço de papel sem valor).</p>
<p>E assim chegamos à &#8220;agilidade cascateira&#8221;, onde todos na empresa estufam o peito para falar que seguem práticas ágeis, <a href="http://pindureta.wordpress.com/2008/12/02/dialogo-imaginario-baseado-em-fatos-reais/">desenvolvimento orientados à testes</a>, utilizam <a href="http://fmeyer.org/archives/2008/11/20/o-scrume/">Scrume</a> para gerenciar os projetos, etc. Na verdade estão apenas praticando um <a href="http://1up4dev.org/2008/06/waterfalling/">waterfall incremental</a>, cometendo os mesmos <a href="http://1up4dev.org/2008/10/software-e-sobre-investimento/">erros clássicos da cascata</a>, valorizando os processos ao invés das pessoas, focando em soluções equivocadas ao invés de <a href="http://1up4dev.org/2008/11/foco-no-problema/">resolver os problemas dos clientes</a> e assim, <a href="http://1up4dev.org/2008/10/a-perpetuacao-da-especie/">difamando e denegrindo</a> a reputação e o propósito do <a href="http://agilemanifesto.org/">AgileManifesto</a>.</p>
<p>Esse é o cenário ideal para os <a href="http://1up4dev.org/2008/11/os-guardioes-da-cascata/">guardiões cascateiros</a>. É por estes e outros motivos que vemos &#8220;flames&#8221; oportunistas como <a href="http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html">The Decline and Fall of Agile</a> começarem a fazer sentido na comunidade. Como disse o <a href="http://gc.blog.br/2008/11/22/agile-indo-para-o-buraco/">Guilherme Chapiewski</a>, as pessoas estão querendo ir direto para a sobremesa e esquecendo de comer seus vegetais. Utilizar uma metodologia ágil não é desenvolver software de forma anarquista, existe muito conceito e experiência adquirida para sustentar esta filosofia.</p>
<p>Neste blog você já viu várias maneiras de como ser um verdadeiro cascateiro e de como não ser ágil. Já que estamos falando nisso, vamos tentar resumir alguns pontos e características que tornam um desenvolvedor realmente ÁGIL!</p>
<h3>Estude, mantenha-se atualizado!</h3>
<p>A principal característica de um agilista é sua sede por conhecimento, sua busca incansável por novas técnicas, linguagens, ferramentas, etc. O seguidor ágil lê artigos, revistas, livros e o faz como diversão. Se você não leu pelo menos um livro técnico nos últimos 6 meses, isto é um mal sinal. Faça laboratórios, testes de novos frameworks, bibliotecas, etc. Pet-projects também são uma maneira pragmática de aprender novas formas e técnicas de desenvolvimento. Finalmente, conheça e pratique os princípios e valores do <a href="http://agilemanifesto.org/principles.html">AgileManifesto</a>, tendo-os como seu mantra, seu guia filosófico e seu mentor profissional.</p>
<h3>Entenda realmente o problema do seu cliente</h3>
<p>Isto parece ser óbvio, mas na maioria das vezes não é. Existem vários perfis de clientes, e é claro que você deve lidar de maneiras diferentes com cada um deles.</p>
<p>Alguns são visionários sonhadores e sempre têm necessidades mirabolantes, sem sentido. Outros são simplistas demais e muitas vezes &#8220;ocultam&#8221; detalhes importantes. Também existem os pseudo-técnicos, que acham que sabem fazer seu trabalho e já vêm sugerindo como você deve implementar aquela nova funcionalidade.</p>
<div id="attachment_272" class="wp-caption aligncenter" style="width: 310px"><a href="http://1up4dev.org/wp-content/uploads/2008/12/imagem_spam_problem.jpg"><img class="size-medium wp-image-272" title="Reação comum quando há um problema" src="http://1up4dev.org/wp-content/uploads/2008/12/imagem_spam_problem-300x181.jpg" alt="Reação comum quando há um problema" width="300" height="181" /></a><p class="wp-caption-text">Reação comum quando há um problema</p></div>
<p>Como verdadeiro agilista, saber identificar o perfil de seu cliente é o início para um relacionamento de confiança e transparência. Só assim você será capaz de concentrar esforços para <a href="http://1up4dev.org/2008/11/foco-no-problema/">resolver seu problema</a> e <a href="http://1up4dev.org/2008/10/software-e-sobre-investimento/">agregar valor ao produto</a>.</p>
<h3>Não tenha medo de mudanças</h3>
<p>A única maneira de criar, corrigir ou melhorar algo é com coragem E com mudança. O essencial para mudar algo é saber identificar o que está errado. Por exemplo, você sofre diariamente para fazer o <em>deploy</em> da sua aplicação para homologação. Identificado o problema e uma possível solução, por exemplo, fazer o <em>deploy</em> em .war, você tem duas soluções: ou deixa como está e coloca a culpa na aplicação ou no processo de desenvolvimento (conformismo) ou com muita coragem investe algumas horas e resolve de vez o problema (agilismo).</p>
<p>Quando bater a insegurança, repita: <strong>coragem! coragem! coragem!</strong></p>
<div id="attachment_266" class="wp-caption aligncenter" style="width: 160px"><a href="http://1up4dev.org/wp-content/uploads/2008/12/coragemcaocovarde.jpg"><img class="size-medium wp-image-266" title="Tenha Coragem!" src="http://1up4dev.org/wp-content/uploads/2008/12/coragemcaocovarde.jpg" alt="" width="150" height="150" /></a><p class="wp-caption-text">Coragem: o cão covarde!</p></div>
<h3>Reflita e aprenda com os próprios erros</h3>
<p>Existem várias maneiras de você evoluir seu conhecimento, e a maioria dos programadores utilizam somente uma: tomando na cabeça.</p>
<div id="attachment_268" class="wp-caption aligncenter" style="width: 180px"><a href="http://1up4dev.org/wp-content/uploads/2008/12/fotopregocomcabeca.jpg"><img class="size-medium wp-image-268" title="Prego só toma na cabeça!" src="http://1up4dev.org/wp-content/uploads/2008/12/fotopregocomcabeca.jpg" alt="Prego só toma na cabeça!" width="170" height="170" /></a><p class="wp-caption-text">Prego só toma na cabeça!</p></div>
<p>Como um bom seguidor de práticas ágeis, reflita e aprenda com seus erros. Compartilhar seus problemas é a melhor maneira de escolher um solução adequada e ainda espalhar sua experiência entre a equipe para que outras pessoas não cometam o mesmo erro.</p>
<p>Errar é humano. Persistir no erro é burrice. Se você está com problemas, procure por pessoas que já tiveram um problema parecido e aprenda com ele. Não cometa os mesmo erros, e mais importante, não cometa os mesmo erros dos outros!</p>
<h3>Resumo</h3>
<p>Se tudo que você leu até agora não é novidade, parabéns! Caso contrário comece o quanto antes estudar e principalmente praticar estes conceitos no seu trabalho e na sua vida.</p>
<p>Seja responsável e <a href="http://www.velhosabio.com.br/mensagem.exibir.php?codmsg=297">comprometido</a> com seu trabalho. Esforce-se para fazer o melhor. Faça valer o seu salário. E lembre-se: cuidado com os falsos agilistas!</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2008/12/agilidade-cascateira/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Foco no problema</title>
		<link>http://1up4dev.org/2008/11/foco-no-problema/</link>
		<comments>http://1up4dev.org/2008/11/foco-no-problema/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 21:33:43 +0000</pubDate>
		<dc:creator>Rodrigo Panachi</dc:creator>
				<category><![CDATA[cascata]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[waterfall]]></category>
		<category><![CDATA[agilidade]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[metodologia]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=243</guid>
		<description><![CDATA[Desenvolver software é uma atividade muito gratificante pois sempre podemos (ou deveríamos) exercitar nossa criatividade para solucionar os problemas dos clientes. Isto, apesar de divertido pode ser perigoso e/ou catastrófico se estivermos com o foco errado. Num ambiente cascateiro, onde cada envolvido está comprometido apenas com o processo e não se preocupa verdadeiramente com os [...]]]></description>
			<content:encoded><![CDATA[<p>Desenvolver software é uma atividade muito gratificante pois sempre podemos (ou deveríamos) exercitar nossa criatividade para solucionar os problemas dos clientes. Isto, apesar de divertido pode ser perigoso e/ou catastrófico se estivermos com o foco errado. Num ambiente cascateiro, onde cada envolvido está comprometido apenas com o processo e não se preocupa verdadeiramente com os problemas dos clientes, não é difícil que isto ocorra. Quase sempre o foco acaba sendo direcionado para a solução ao invés do problema.</p>
<p>Mas qual a diferença entre foco no <strong>problema</strong> ou <strong>solução</strong>? Vamos a um exemplo:</p>
<blockquote><p>Quando a Nasa enviou os primeiros astronautas ao espaço, descobriu que as canetas não funcionavam com gravidade zero. Para resolver esse problema, os engenheiros contrataram uma empresa especializada para projetar a caneta espacial.<br />
Dez anos e US$ 12 milhões depois, estava pronta a caneta que podia ser usada no espaço, em qualquer posição. Nem a temperatura poderia atrapalhar: a supercaneta funcionava bem fizesse frio ou calor.<br />
Os russos, que tiveram o mesmo problema, optaram por uma solução mais simples: passaram a usar um lápis.</p></blockquote>
<p><a href="http://1up4dev.org/wp-content/uploads/2008/11/spaceball.gif"><img class="alignnone size-medium wp-image-247" title="spaceball" src="http://1up4dev.org/wp-content/uploads/2008/11/spaceball.gif" alt="" width="1" height="1" /></a>A história acima é bem famosa e mesmo sendo <a href="http://www.e-farsas.com/artigo.php?id=58" target="_blank">falsa</a>, demonstra muito bem o que acontece quando o problema não está em foco. Neste caso, o problema é a impossibilidade de escrever em gravidade zero. Uma das soluções seria uma caneta que escreva nessas condições. Veja que aqui a <strong>solução</strong> já está em foco. Outra solução para o problema seria utilizar algo que escrevesse em gravidade zero: um pedaço de carvão ou um giz já serviriam. Assim, o problema seria resolvido.</p>
<p>Outro exemplo de falta de foco no problema é esta <a href="http://blog.aspercom.com.br/2008/07/21/hierarquias-sao-inteligentes-nas-pontas/" target="_blank">história</a> da fábrica de pasta de dente, onde ocasionalmente algumas caixas da pasta de dente eram entregues vazias. Para eliminar este problema, a empresa <span style="text-decoration: line-through;">gastou</span> investiu milhões para garantir que durante a fabricação, nenhuma caixa ficasse sem o tubo de pasta de dente dentro. Mas o problema foi realmente resolvido depois que um operário deixou um ventilador soprando as caixas vazias para fora da esteira de produção. Simples não?</p>
<p>Na área de desenvolvimento de software não é tão raro acontecer algo parecido, onde o foco está inteiramente na solução. Sabe aquele sistema meio capenga, que funciona e dá dinheiro para empresa mas não é &#8220;web 2.0&#8243; nem utiliza conceitos de &#8220;SOA&#8221;? De repente a diretoria decide que este sistema deve ser &#8220;migrado&#8221; para uma tecnologia <span style="text-decoration: line-through;">da moda</span> mais atual, que o permita &#8220;evoluir&#8221; mais facilmente.</p>
<p>Para atender esta necessidade, normalmente uma equipe nova é contratada, toneladas de <a href="http://blog.fragmental.com.br/2008/07/25/uh-eme-ele/" target="_blank">documentos e diagramas</a> são produzidos até que os programadores comecem a <a href="http://www.martinfowler.com/bliki/CheaperTalentHypothesis.html" target="_blank">codificar</a>. A esta altura, o prazo já está apertado e os &#8220;stakeholders&#8221; ainda não viram os resultados. Depois de muito tempo e dinheiro desperdiçados, um sistema feito às pressas, <em>bonitinho</em> mas meia-boca, é entregue com os mesmos defeitos do anterior. E o problema não foi resolvido&#8230;</p>
<p>Desenvolver software deve ser um investimento <a href="http://1up4dev.org/2008/10/software-e-sobre-investimento/" target="_blank">lucrativo</a>, proporcionando algum ganho às partes envolvidas. Quando uma <strong>necessidade</strong> surgir, o primeiro passo é identificar o <strong>problema</strong> para então encontrar a melhor <strong>solução</strong>, ou seja, foco no problema. Neste exemplo da &#8220;migração&#8221;, o problema é que a manutenção do software atual é muito cara, porém &#8220;migrar&#8221; o sistema inteiro não vai resolver o problema, no máximo criará um novo.</p>
<p>Mas de quem é a culpa quando o foco está na solução? Eu respondo: a <strong>cascata</strong>! Apesar das metodologias ágeis estarem em alta e aos poucos serem adotadas pelas empresas, a maldição do waterfall ainda é está entre nós. Clientes continuam com a mania de pedir tudo no início do projeto. Ao exporem seus problemas, já estão pensando na solução. Fazem questão de engordar o escopo com coisas das quais não têm certeza da utilidade, mas querem que estejam lá pois podem precisar um dia. Os desenvolvedores também não estão isentos dessa culpa. Um legítimo analista cascateiro não se envolve com os problemas do cliente, apenas ouvem suas solicitações e transformam em casos de uso ou diagramas. É aí que uma simples necessidade se transforma numa bola de neve e a lenda da caneta da Nasa se repete&#8230;</p>
<p><a href="http://1up4dev.org/wp-content/uploads/2008/11/software.jpg"><img class="aligncenter size-medium wp-image-249" title="software" src="http://1up4dev.org/wp-content/uploads/2008/11/software-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Um verdadeiro desenvolvedor ágil deve se comprometer com o cliente, ouvir, entender e se envolver com suas necessidades para então sugerir uma solução simples, focada e que resolva o problema. Esta interação é muito importante e deve ser constante, pois o cliente passa a identificar <strong>o que</strong> realmente ele <strong>precisa</strong>, ou seja, o qual seu<strong> problema</strong>! Assim, começa a se concentrar em funcionalidades que realmente serão úteis e agregarão valor ao software e, consequentemente, ao negócio. Feedback é muito importante. O pessoal do Google sabe muito bem disso&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2008/11/foco-no-problema/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Arquiteto Cascateiro</title>
		<link>http://1up4dev.org/2008/11/arquiteto-cascateiro/</link>
		<comments>http://1up4dev.org/2008/11/arquiteto-cascateiro/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 09:44:44 +0000</pubDate>
		<dc:creator>Roger Leite</dc:creator>
				<category><![CDATA[cascata]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[waterfall]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[pragmatic waterfall]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=210</guid>
		<description><![CDATA[Definição do que é um Arquiteto Cascateiro. E leves dicas de como tentar transformá-lo num integrante da equipe de desenvolvimento.]]></description>
			<content:encoded><![CDATA[<blockquote><p>Este post é uma homenagem aos Arquitetos defensores do <em>waterfall</em>/cascata.</p></blockquote>
<p>Recentemente tive o <span style="text-decoration: line-through;">des</span>prazer de conhecer um arquiteto, é isso mesmo, aquele com certificado e tudo, com direito a broche da Sun em seu terninho. Aliás, certificado é um tema polêmico que eu não tenho uma opinião muito certa e/ou formada&#8230; bom, vou deixar esta parte para um próximo post, quem sabe.</p>
<p>Voltando ao assunto, hoje no fretado, comecei a pensar nas semelhanças que um arquiteto de sistemas (certificado que decorou patterns inutéis da Sun) tem com um arquiteto de obras. Só para deixar claro, na tabela abaixo estou usando dois estados: <em><span style="color: #ff0000;">FAIL</span></em> e <span style="color: #008000;">Ok</span>. Fail quer dizer que <span style="text-decoration: line-through;">vai dá merda</span> não vai dar certo e não tem jeito, caso queira uma definição mais formal, o <a href="http://en.wikipedia.org/wiki/Failure">wikipédia</a> ajuda, agora se você prefere imagens, o <a href="http://www.failblog.net/">Fail Blog</a> também serve.</p>
<div id="attachment_235" class="wp-caption aligncenter" style="width: 310px"><a href="http://1up4dev.org/wp-content/uploads/2008/11/soccer_fail.jpg"><img class="size-medium wp-image-235" title="Exemplo de FAIL" src="http://1up4dev.org/wp-content/uploads/2008/11/soccer_fail-300x201.jpg" alt="Exemplo de FAIL" width="300" height="201" /></a><p class="wp-caption-text">Exemplo de FAIL</p></div>
<table style="border: thin solid;" border="0">
<tbody>
<tr>
<th style="width: 60%;">Objetivos</th>
<th style="width: 20%;">Cascateiro</th>
<th style="width: 20%;">De Obras</th>
</tr>
<tr>
<td>Colocam as futuras &#8220;obras&#8221; no papel antes de começar.</td>
<td><span style="color: #ff0000;">FAIL</span></td>
<td><span style="color: #008000;">OK</span></td>
</tr>
<tr>
<td>Ainda no papel, colocam <strong>todas</strong> as necessidades do cliente, do início ao fim.</td>
<td><span style="color: #ff0000;">FAIL</span></td>
<td><span style="color: #008000;">OK</span></td>
</tr>
<tr>
<td>O cliente do Arq. de Obras sabe que depois que começar não pode mudar.</td>
<td><span style="color: #ff0000;">FAIL</span></td>
<td><span style="color: #008000;">OK</span></td>
</tr>
<tr>
<td>O arquiteto de Obras <strong>não</strong> define quais tipos de blocos, cimento e ferro a obra vai usar, o Cascateiro <strong>sim</strong>.</td>
<td><span style="color: #ff0000;">FAIL</span></td>
<td><span style="color: #008000;">OK</span></td>
</tr>
</tbody>
</table>
<p>Parei a tabela por aqui pois já dá pra saber que o <span style="color: #ff0000;">FAIL</span> tende a infinito né.<br />
Pergunta: o que ambos arquitetos estão fazendo!?!<br />
Resposta educada: Estão <strong>fechando o escopo</strong> do projeto.</p>
<div id="attachment_220" class="wp-caption alignleft" style="width: 237px"><a href="http://1up4dev.org/wp-content/uploads/2008/11/construcao-crea.jpg"><img class="size-medium wp-image-220" title="construcao de arquiteto cascateiro" src="http://1up4dev.org/wp-content/uploads/2008/11/construcao-crea-300x225.jpg" alt="Arquiteto Cascateiro trabalhando ..." width="227" height="171" /></a><p class="wp-caption-text">Arquiteto Cascateiro trabalhando ...</p></div>
<p>A resposta acima é uma <span style="text-decoration: underline;">frase chave</span> pra você ter certeza que vive num projeto waterfall cascateiro. Fechar o escopo do projeto inteiro deve ser muito bom para o arquiteto de obras, já para um sistema, o efeito é contrário. Acredito muito na teoria que <a href="http://gc.blog.br/2008/07/20/cuidando-para-que-o-software-nao-apodreca/">desenvolver software não é construir prédios</a>. Livros de renome como <a href="http://1up4dev.org/2008/05/the-pragmatic-programmer-no-ambiente-waterfall-e-claro/">Pragmatic Programmer</a> citam isso.</p>
<p>Sei que este tema de construção civil já está batido. Comecei a escrever este post ao mesmo tempo que o Sr. Panachi publicou o <a href="http://1up4dev.org/2008/10/software-e-sobre-investimento/">anterior</a>, e com a idéia de ficar menos repetitivo, já vou <em>linkar</em> as sugestões dos nossos incríveis leitores:</p>
<ul>
<li>O <a href="http://www.mouseoverstudio.com/blog/">Diego Carrion</a> (grande peruano! <img src='http://1up4dev.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ) cita este <a href="http://agiletips.blogspot.com/2008/07/agile-bridge-analogy.html"><em>link</em></a>, que fala que a engenharia civil também consegue ser ágil em alguns casos.</li>
<li>O <a href="http://witaro.wordpress.com/">Witaro</a>, fez um ótimo post &#8220;<a href="http://witaro.wordpress.com/2008/08/11/desenvolvendo-software-como-uma-rock-band/">Desenvolvendo software como uma Rock Band</a>&#8221; que quebra a barreira da analogia com a engenharia civil. Cara, continue escrevendo, porque a sua visão é muito legal!</li>
</ul>
<p>Bom, agora que acabou o desabafo, vamos as possíveis soluções. O que fazer com o Arquiteto Cascateiro?</p>
<p>Acho que a primeira coisa seria conscientizá-lo de que ele não é o <a href="http://pt.wikipedia.org/wiki/Oscar_Niemeyer">Oscar Niemeyer</a> e que a primeira versão de seu software nunca será completa de uma vez. Você deve conversar sobre iterações com ele e mostrar que o software deve evoluir conforme o cliente também evolui nas descobertas das suas reais necessidades. Sei que o post já está cheio de <em>links</em>, mas este post do Phillip Calçado, <a href="http://blog.fragmental.com.br/2008/08/09/analista-pedreiro/">Analista Pedreiro</a>, resume bem o que quero dizer.</p>
<p><strong>Arquiteto</strong>, este nome ou termo ou cargo ou seja-lá-o-que-for, é coisa de modelo <em>waterfall</em>/cascata. Numa equipe, não deve haver distinção desta maneira. Todos programam, modelam, configuram, trabalham no Banco de Dados quando necessário, ou seja, ninguém deve exercer um papel único. Papéis únicos, representam <a href="http://1up4dev.org/2008/11/os-guardioes-da-cascata/">Guardiões</a> que defendem somente seus interesses e não trabalham em pró da equipe/cliente/projeto.</p>
<p>O Arquiteto deve programar, colocar a mão na massa, assim como toda a equipe, pois UML, Caso de Uso, Diagrama de Sequência, etc. <strong>sempre compilam</strong>! Muito diferente na vida real, onde muitas vezes você é obrigado a implementar uma coisa diferente e torta para acompanhar estes documentos cascateiros. Caso você seja obrigado a gerar a documentação fútil acima, pense em algo que seja automatizado após você ter programado e testado, com certeza você será umas cinco vezes mais produtivo.</p>
<p>E por último e não menos importante, a equipe (inclusive o Arquiteto) tem que conhecer o negócio que implementa. Quando se inicia um novo projeto ou até mesmo decidem reestruturar um existente, o arquiteto cascateiro <span style="text-decoration: line-through;">sempre</span> prioriza novas tecnologias e frameworks, o que na maioria das vezes, não é necessário. Novos projetos ou <em>refactoring</em> em existentes, devem ter um único prioritário objetivo: <a href="http://pt.wikipedia.org/wiki/Keep_it_Simple_Stupid">KISS</a>. Com esta prioridade em mente, novas tecnologias e frameworks serão escolhidos naturalmente, e não somente usar porque é a última moda no estilo SunTechDays.</p>
<p>E vocês leitores?! Sofrem ou já sofreram muito com Arquitetos Cascateiros!?!</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2008/11/arquiteto-cascateiro/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Os guardiões da cascata</title>
		<link>http://1up4dev.org/2008/11/os-guardioes-da-cascata/</link>
		<comments>http://1up4dev.org/2008/11/os-guardioes-da-cascata/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 03:49:11 +0000</pubDate>
		<dc:creator>Rodrigo Panachi</dc:creator>
				<category><![CDATA[cascata]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[processos]]></category>
		<category><![CDATA[resenhas]]></category>
		<category><![CDATA[devaneios]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=228</guid>
		<description><![CDATA[Se você freqüenta este blog já deve ter percebido que nós não gostamos da maldita cascata. Fases bem definidas, detalhamento de requisitos, documentos inúteis, diagramas UML, papéis&#8230; tudo muito lindo na teoria. Eu fico até emocionado quando leio a documentação do RUP. Mas infelizmente a maioria dos profissionais de TI precisam são obrigados a trabalhar [...]]]></description>
			<content:encoded><![CDATA[<p>Se você freqüenta este blog já deve ter percebido que nós não gostamos da <span style="text-decoration: line-through;">maldita</span> <a href="http://pt.wikipedia.org/wiki/Modelo_em_cascata" target="_blank">cascata</a>. Fases bem definidas, detalhamento de requisitos, documentos inúteis, diagramas UML, papéis&#8230; tudo muito lindo na teoria. Eu fico até emocionado quando leio a <a href="http://www.wthreex.com/rup/" target="_blank">documentação</a> do <a href="http://pt.wikipedia.org/wiki/Rational_Unified_Process" target="_blank">RUP</a>. Mas infelizmente a maioria dos profissionais de TI <span style="text-decoration: line-through;">precisam</span> são obrigados a trabalhar nestes ambientes cascateiros, enfrentando chefes sem noção, colegas com <a href="http://www.novacorja.org/" target="_blank">síndrome do funcionário público</a>, <a href="http://desciclopedia.org/wiki/POG#Prazos_de_um_projeto_POG" target="_blank">prazos sem sentido</a>, entre outras <a href="http://1up4dev.org/2008/09/contos-do-programador-pragmatico/" target="_blank">pérolas</a> da <a href="http://1up4dev.org/2008/10/a-perpetuacao-da-especie/" target="_blank">área</a>.</p>
<p>O principal apelo de um processo cascateiro são suas fases e papéis bem definidos, onde cada membro da &#8220;equipe&#8221; é responsável por uma determinada tarefa que é executada em uma seqüência previamente definida. Dentre os <a href="http://www.wthreex.com/rup/process/workers/ovu_works.htm" target="_blank">papéis</a>, pode-se facilmente identificar os especialistas daquela tarefa, que defendem sua <span style="text-decoration: line-through;">necessidade</span> execução com unhas e dentes. Para ilustrar, resolvi chamá-los de <a href="http://pt.wikipedia.org/wiki/Guardi%C3%B5es_do_Universo" target="_blank">guardiões</a>, seja da tecnologia ou da atividade em questão. Um guardião protege sua fase, tarefa e interesses, defendendo-os para que o &#8220;processo&#8221; não seja quebrado. Desta forma, &lt;sarcasmo&gt; a &#8220;equipe&#8221; atinge seu objetivo: o software! &lt;/sarcasmo&gt; Seguem alguns exemplos desses guardiões cascateiros:</p>
<p><strong>O guardião do banco de dados: &#8220;<em>Não rodarás nenhum script na base alheia</em>&#8220;</strong><br />
Começo por este por ser o mais comum dos guardiões. Ele trata o banco de dados como um filho, mesmo que seja um adolescente que não obedeça inteiramente à 3ª regra normal. São vistos como semi-deuses, capazes de transcrever o modelo de negócio da empresa em uma linguagem de alto nível, impossível de ser compreendida por simples programadores. Protejem as tabelas com a própria vida e qualquer alteração na base de dados é motivo para um duelo até a morte! Utilizam um padrão para nomenclatura de campos que somente é conhecido pelo clã dos DBAs. Geralmente são seguidores do Oráculo, o senhor de todos os bancos de dados.</p>
<p><strong>O guardião do projeto: <em>&#8220;Guia-te pelo teu Gantt e serás recompensado&#8221;</em></strong><br />
Este guardião está presente em todos os projetos, garantindo que a palavra do <a href="http://pt.wikipedia.org/wiki/Diagrama_de_Gantt" target="_blank">Gantt</a> seja cumprida, protegendo o escopo do projeto com a própria vida (ou a vida de algum programador). Adicionalmente atua como roteador de atividades: recebe os requisitos pelo email, encaminha para um recurso disponível (programador) que estima o esforço e define uma data de entrega, devolvendo para o guardião que atualiza seu <a href="http://blog.aspercom.com.br/2007/11/15/ganttchartnaofunciona/" target="_blank">Project</a>.</p>
<p><strong>O guardião do framework: <em>&#8220;Venerarás o Struts e nada te faltarás&#8221;</em></strong><br />
O framework é o objeto de adoração deste guardião, nenhum outro framework é tão bom quanto o que ele venera. Ele provê solução para todos seus problemas simplesmente escrevendo um bloco de XML aqui, outro ali, mudando aquela linha acolá e estendendo uma classe X implementando aquela interface Z. Qualquer evolução do framework em questão não passa de uma tentativa frustrada de &#8220;reinventar a roda&#8221;.</p>
<p><strong>O guardião da arquitetura: <em>&#8220;Não usarás a instância do teu objeto em vão&#8221;</em></strong><br />
Uma variação interessante de guardião, que neutraliza seu oponente através de técnicas de tortura e perturbação mental, inundando as sessões de brainstorm com uma enxurrada de DTO&#8217;s, VO&#8217;s, Facades, EJB&#8217;s entre outros patterns que fazem a cabeça dos programadores entrar em conflito, até que seus órgãos faleçam (ou simplesmente se demitam). Geralmente são cúmplices dos guardiões do projeto, conspirando para a dominação do Gannt.</p>
<p><strong>O guardião do root: <em>&#8220;Teu processo não executarás no meu bash&#8221;</em></strong><br />
A jóia mais preciosa da empresa: a senha do root. Seu guardião é o mais honrado dos seres, sendo uma espécie de <a href="http://pt.wikipedia.org/wiki/O_Senhor_dos_An%C3%A9is" target="_blank">Frodo</a>, protegendo-a com a própria vida pois uma vez em mãos erradas pode ser usada para a destruição da humanidade (ou apenas para reiniciar aquela instância do Tomcat travado em produção). Aquele que desafia este guardião perde o direito de executar seus processos como administrador local e fica vagando pelo filesystem eternamente.</p>
<p><strong>O guardião dos guardiões: <em>&#8220;Tua TI é um mal necessário&#8221;</em></strong><br />
Também conhecido como diretor, presidente, CEO, dono, investidor, sócio, etc. É o guardião das decisões, aquele que protege sua riqueza acima de tudo, economizando nos salários, contratando funcionários despreparados e investindo rios de dinheiro em consultorias e licenças de software para garantir seus investimentos.</p>
<p>Enfim, são guardiões dos próprios interesses. A &#8220;equipe&#8221; é apenas uma palavra que usam em discursos mas nunca aplicaram o conceito na prática!</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2008/11/os-guardioes-da-cascata/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Guerrilha agile: a motivação</title>
		<link>http://1up4dev.org/2008/06/guerrilha-agile-parte-1/</link>
		<comments>http://1up4dev.org/2008/06/guerrilha-agile-parte-1/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 03:58:51 +0000</pubDate>
		<dc:creator>Humberto</dc:creator>
				<category><![CDATA[cascata]]></category>
		<category><![CDATA[processos]]></category>
		<category><![CDATA[waterfall]]></category>
		<category><![CDATA[devaneios]]></category>

		<guid isPermaLink="false">http://1up4dev.wordpress.com/?p=41</guid>
		<description><![CDATA[Eu preciso desenvolver uma idéia que vem me provocando ultimamente. Na verdade é menos uma idéia do que um reflexo da situação desoladora em que a maioria de nós está.
Em se tratando de 1up4dev, nem preciso dizer que a situação a que me refiro é a de quase inevitabilidade do waterfall, em que estamos tão [...]]]></description>
			<content:encoded><![CDATA[<p>Eu preciso desenvolver uma idéia que vem me provocando ultimamente. Na verdade é menos uma idéia do que um reflexo da situação desoladora em que a maioria de nós está.</p>
<p>Em se tratando de 1up4dev, nem preciso dizer que a situação a que me refiro é a de quase inevitabilidade do waterfall, em que estamos tão engolidos pelo &#8220;sistema&#8221; que, aparentemente, só nos resta lamentar, se frustrar e eventualmente se acostumar com tudo. Não deduzo, porém, que esses são estágios de uma manifestação de bunda-molice. Do contrário, seria suficiente encerrar o assunto com algo do tipo <em>&#8220;ou somos parte da solução ou do problema&#8221;</em> (doutrina Bush, em pleno 2008). E ainda assim, sem que ao menos sejam esboçados tanto &#8220;o problema&#8221; como &#8220;a solução&#8221;, esse raciocínio binário não serviria para nada.</p>
<p>Antes de continuar com a minha idéia, gostaria de escrever rapidamente sobre o panorama que se desenha para o futuro. Especificamente, o nosso futuro. Nem sempre lembramos dele, mas é lá que vamos viver em breve. E sem querer parecer auto-ajudesco, digo que o futuro do desenvolvimento de software está nas nossas mãos &#8212; e não de forma indireta ou abstrata. É lógico: as mãos que hoje controlam o &#8220;sistema&#8221; vão se aposentar daqui uns anos, e as nossas vão substituí-las. Nessa seqüência, é possível imaginar que, em breve, estaremos perpetuando o waterfall. Pois nesse dia nós é que seremos o status quo, e o status quo, para ser digno do nome, não quer saber de mudar nada.</p>
<p>Software já é estratégico há algum tempo e ocupará cada vez mais espaço na vida das pessoas, das empresas e dos governos. Que qualidade de software será oferecida quando nossa geração estiver no comando? Imagine o alto custo financeiro e social de se manter na periferia de TI. Sub-desenvolvimento passa a ter um novo significado, não é? Temos que assumir a responsabilidade, até porque ela pode significar a existência dos nossos empregos. Ou você vai preferir usar um software made in India?</p>
<p>Nada contra a Índia, claro. Mas o alerta já tinha sido dado por <a href="http://www.agilemanagement.net/" target="_blank">David Anderson</a> no comecinho do livro <a href="http://books.google.com.br/books?id=hawMF31KCRsC&amp;dq=david+anderson+agile+management&amp;pg=PP1&amp;ots=Zj4cGr8IU-&amp;sig=HQVvzFyMrtJ3jPR5TUyqYOYBuFo&amp;hl=pt-BR&amp;prev=http://www.google.com.br/search%3Fq%3Ddavid%2Banderson%2Bagile%2Bmanagement%26ie%3Dutf-8%26oe%3Dutf-8%26rls%3Dorg.mozilla:en-US:official%26client%3Dfirefox-a&amp;sa=X&amp;oi=print&amp;ct=title&amp;cad=one-book-with-thumbnail" target="_blank">Agile Management for Software Engineering</a>. Abaixo traduzo livremente um trecho cujo original você encontra na página xxvi do livro:</p>
<blockquote><p>Se a atividade intelectual de software tiver que permanecer nos países desenvolvidos e se os engenheiros de software americanos, europeus e japoneses quiserem manter o alto padrão de vida ao qual se acostumaram, eles devem aumentar sua competitividade. Há um mercado global de desenvolvimento de software, o que encolheu a distância entre um cliente na América do Norte e um fornecedor na China ou na Índia.</p></blockquote>
<p>Esse medo do sr Anderson tem que ser nosso também (exceto que nós não temos como rebaixar nosso &#8220;alto padrão de vida&#8221;). Sabemos que precisamos melhorar, e muito, a nossa competitividade, e não só individualmente. Agora, a grande questão é: como vamos fazer isso, se não temos suporte para viabilizar novas formas de trabalho sem dispararmos o sinal de pânico no chefe, no cliente?</p>
<p>Pretendo desenvolver a minha sugestão em alguns posts, seguindo alguns princípios:</p>
<ol>
<li>&#8220;Mudança&#8221; é definida como o amplo abandono da mentalidade waterfall no mercado de TI.</li>
<li>Você acredita na mudança e é o maior interessado nela, pois ela representa o futuro que <strong>você</strong> quer.</li>
<li>O risco da mudança é percebido com mais intensidade quanto maior é o poder de quem a observa.</li>
<li>O benefício da mudança é percebido com menor intensidade quanto maior é o poder de quem a observa.</li>
<li>A mudança pode ocorrer de baixo para cima na cadeia de poder.</li>
</ol>
<p>No próximo post, pretenderei detalhar melhor os efeitos desses cinco pontos. Dali em diante, dificilmente irei sugerir uma ação coordenada e planejada &#8212; nada menos ágil que isso! Prefiro apostar no desenrolar natural das coisas, desde que os princípios sejam válidos. No mínimo, vamos avançar o debate. Tomara que eu não escreva muita besteira, e espero ser corrigido a qualquer momento.</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2008/06/guerrilha-agile-parte-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parem o mundo que eu quero descer !</title>
		<link>http://1up4dev.org/2008/06/parem-o-mundo-que-eu-quero-descer/</link>
		<comments>http://1up4dev.org/2008/06/parem-o-mundo-que-eu-quero-descer/#comments</comments>
		<pubDate>Sun, 08 Jun 2008 22:00:41 +0000</pubDate>
		<dc:creator>Roger Leite</dc:creator>
				<category><![CDATA[cascata]]></category>
		<category><![CDATA[processos]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[waterfall]]></category>
		<category><![CDATA[devaneios]]></category>
		<category><![CDATA[paranoia]]></category>

		<guid isPermaLink="false">http://1up4dev.wordpress.com/?p=33</guid>
		<description><![CDATA[Falta pessoal qualificado em TI, diz Assespro
http://www.guj.com.br/posts/list/15/92783.java#497015
Esta discussão está boa, e no meio das chamas levei um &#8220;impacto&#8221; ao ler a frase abaixo.
louds wrote: [...] Não usem a incompetência alheia como desculpa. Se está ruim e você não está ativamente combatendo isso, você é parte do problema e não da solução. [...]
Esta é uma das [...]]]></description>
			<content:encoded><![CDATA[<p><span class="maintitle"><span class="maintitle">Falta pessoal qualificado em TI, diz Assespro</span></span></p>
<p><a href="http://www.guj.com.br/posts/list/15/92783.java#497015" target="_blank">http://www.guj.com.br/posts/list/15/92783.java#497015</a></p>
<p>Esta discussão está boa, e no meio das chamas levei um &#8220;impacto&#8221; ao ler a frase abaixo.</p>
<p><span class="postbody"><strong><cite>louds wrote:</cite></strong> [...] Não usem a incompetência alheia como desculpa. Se está ruim e você não está ativamente combatendo isso, você é parte do problema e não da solução. [...]</span></p>
<p>Esta é uma das frases que eu deveria lembrar toda vez que começo a lamentar sobre o ambiente atual de trabalho, eu tento, me gerencio, mas confesso que é difícil.</p>
<p>Com o diabinho no ombro, logo ouvi um suspiro &#8230; Waterfall é bom ! Não questione &#8230; volte a codificar &#8230; Só que ao olhar pro lado, vi o meu poster do <a href="http://gc.blog.br/2007/09/13/dijkstra-is-watching/" target="_blank">Dijkstra</a> e voltei a realidade. Foi quando me perguntei:</p>
<p><strong>Por que é difícil combater o Waterfall ?!?</strong></p>
<p>Sei que esta é uma pergunta sem resposta direta e que depende de muitos fatores do seu ambiente de trabalho, mas eu numa análise fria e cruel respondo: <strong>Porque a maioria não sabe o que é waterfall</strong>.</p>
<p>No último ano da faculdade (cursei Sistemas de Informação), e sem brincadeira, nas aulas de Engenharia fui obrigado a decorar todas as fases, papéis, artefatos e etc. do <a href="http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process" target="_blank">RUP</a>, e pra fechar com chave de ouro, no segundo semestre veio o famoso Análise de Ponto de Função. Isso somente prova que já aprendemos errado, e sei que muita gente fica nisso. Se hoje tivesse a oportunidade de encontrar este mesmo professor, iria fazer a pergunta acima, e acrescentar com questionamentos como, engenharia de software não é eng. civil e neste processo todo quem está preocupado com o Retorno de Investimento do cliente !?!</p>
<p>Acredito que a chave para combater o Waterfall é conhecimento, temos que trazer questionamentos a quem está do lado e isso não é nada fácil, como você convence os mais de vinte desenvolvedores que estão ao seu redor que eles estão na Matrix !?! O que fazer com o pessoal que não quer sair da Matrix !?! <strong>O Waterfall é uma grande mãe que coloca muitas pessoas (Analistas, Desenvolvedores, Gerentes, Testers &#8230; etc.) numa casca irreal de proteção e que gera um ciclo vicioso que se auto sustenta.</strong></p>
<p>Neste exato momento que sou obrigado a concordar com o grande malucão <a href="http://pt.wikipedia.org/wiki/Raul_Seixas" target="_blank">Raulzito</a>:</p>
<blockquote><p>É pena não ser burro ! Não sofria tanto.</p></blockquote>
<p>As vezes me questiono sobre esta insistência em tentar mudar, nadar contra o Waterfall. Não seria melhor se &#8220;render&#8221; logo e entrar no jogo, sei lá, poder falar, &#8220;Caso de Uso não é comigo, só programação!&#8221; e ver que são 10 pras 18, desligar o computador e sair sem o minimo peso na consciência.</p>
<p>Por que numa equipe de dez desenvolvedores, só eu sinto falta de testes unitários !?! Fico indignado ao receber um caso de uso que não agrega nada ao cliente, somente foi &#8220;inventado&#8221; pra ser cobrado dele, e só eu que vejo isso !?! Sei lá, eu devo estar maluco mesmo com toda esta historia de desenvolvimento ágil, e se preocupar com ROI do cliente, apesar de achar uns <a href="http://queroseragil.wordpress.com/2007/11/08/apresentando-scrum-ao-gerente/trackback/" target="_blank">malucos</a> por ai que sofrem do mesmo &#8220;problema&#8221; que o meu.</p>
<p>Como no filme dos <a href="http://pt.wikipedia.org/wiki/300_(filme)" target="_blank">300</a>, tenho esperanças e sei que poucos enfrentarão muitos, e continuo minha batalha com o Waterfall.</p>
<p>Paz a Todos !</p>
<p>Obs: Sei que o RUP é mal usado, pois uma brecha dele é ser muito <a href="http://blog.fragmental.com.br/2008/02/11/generico/" target="_blank">genérico</a>, e isto cada vez se confirma mais, que o <a href="http://blog.aspercom.com.br/2008/04/23/so-agilidade-funciona/" target="_blank">modelo atual &#8220;tradicional&#8221; está falido</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2008/06/parem-o-mundo-que-eu-quero-descer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>TPW &#8211; Dicas para o Desenvolvedor</title>
		<link>http://1up4dev.org/2008/06/tpw-dicas-para-o-desenvolvedor/</link>
		<comments>http://1up4dev.org/2008/06/tpw-dicas-para-o-desenvolvedor/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 12:30:00 +0000</pubDate>
		<dc:creator>Roger Leite</dc:creator>
				<category><![CDATA[cascata]]></category>
		<category><![CDATA[processos]]></category>
		<category><![CDATA[waterfall]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[pragmatic waterfall]]></category>

		<guid isPermaLink="false">http://1up4dev.wordpress.com/?p=18</guid>
		<description><![CDATA[
Tradução rápida do diálogo:

Chefe (com chifrinhos): Por que você levou seis meses para completar esta simples tarefa ?
Dilbert: Por causa das suas mudanças contínuas, sua comunicação confusa e seu pequeno expediente de trabalho.
Chefe (com chifrinhos): Estou procurando por alguma coisa mais parecida como você sendo preguiçoso.
Hello hello hello ! Estas tirinhas do Dilbert estão de [...]]]></description>
			<content:encoded><![CDATA[<div><a href="http://bp3.blogger.com/_XL8FQmVF9qY/SDya_OnB-kI/AAAAAAAAAGA/PNvOGr9fz1A/s1600-h/dilbert2733310071001.gif"><img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 481px; height: 163px;" src="http://bp3.blogger.com/_XL8FQmVF9qY/SDya_OnB-kI/AAAAAAAAAGA/PNvOGr9fz1A/s320/dilbert2733310071001.gif" border="0" alt="" width="570" height="193" /></a></div>
<div>Tradução rápida do diálogo:</div>
<div>
<p style="font-family:times new roman;">Chefe (com chifrinhos): Por que você levou seis meses para completar esta simples tarefa ?</p>
<p style="font-family:times new roman;">Dilbert: Por causa das suas mudanças contínuas, sua comunicação confusa e seu pequeno expediente de trabalho.</p>
<p style="font-family:times new roman;">Chefe (com chifrinhos): Estou procurando por alguma coisa mais parecida como você sendo preguiçoso.</p>
<p>Hello hello hello ! Estas tirinhas do Dilbert estão de matar ultimamente. E já pra avisar, o TPW significa <em>The Pragmatic Waterfall</em>, um novo termo para o que buscamos aqui neste blog, ajudar quem sofre com o <em>Waterfall</em> ! Ok, isso inclui a mim mesmo.</p>
<p>Quem vive num <span style="text-decoration: line-through;">maldito</span>digno ambiente Waterfall já deve ter vivenciado muito disso que ocorreu acima, o gerente &#8220;junior&#8221; procurando uma desculpa de porque o gant chart está vermelho para repassar ao gerente &#8220;pleno&#8221; que este repassará ao &#8220;senior junior&#8221; e que este repassará &#8220;senior pleno&#8221; &#8230; bom, já entenderam até onde a desculpa vai chegar.</p>
<p>Na tentativa de transformar este post de &#8220;muro das lamentações&#8221; para Pragmatic Waterfall, vamos as dicas didáticas (ou seria um guia de sobrevivência?) de como tentar contornar este tipo de situação frustante:</p>
<p><a href="http://1up4dev.org/wp-content/uploads/2008/06/14-03-06_sharon.jpg"><img class="alignnone size-medium wp-image-31" src="http://1up4dev.org/wp-content/uploads/2008/06/14-03-06_sharon.jpg?w=300" alt="" width="341" height="207" /></a>==&gt;&gt;<a href="http://1up4dev.org/wp-content/uploads/2008/06/waterfall_model.png"><img class="alignnone size-medium wp-image-32" src="http://1up4dev.org/wp-content/uploads/2008/06/waterfall_model.png?w=300" alt="Waterfall Model" width="300" height="230" /></a></p>
<ul>
<li>Gerador de código descartável. Sim, é isso mesmo que você leu, o gerador de código você já sabe o que é, agora o descartável é o que você deve estar imaginando. Isso não tem muito a ver com o Waterfall, mas todo projeto que trabalhei tem aquelas camadas que repassam chamadas e seguem um padrão comum. Logo, você não precisa &#8211; e nem deve &#8211; escrevê-los, para isto inventaram o computador. Se você tem sorte de usar um sistema unix like, se aventure com shell scripts, vale a pena, caso não tenha esta sorte &#8230; err, primeiro sinto muito por ti &#8230; mas você tem opção de linguagens de scripts como Perl, Python e Ruby em suas mãos, aproveite ! Crie estes scripts descartáveis e gere toneladas de código, seu chefe vai ficar feliz da vida com o aumento da produtividade.</li>
<li>Conheça todos os recursos que a sua IDE ou seu editor de texto oferecem. Isso parece ser uma dica besta, mas pode acreditar que não é, já vi muita gente usando um mesmo editor por mais de meses e ficam &#8220;abobados&#8221; ao descobrirem que o Ctrl+H abre a tela de Replace !!! Bom no meu caso que uso Eclipse o dia todo, as dicas são:
<ul>
<li>Aprenda a usar teclas de atalho, elas realmente aumentam a produtividade. <em>Cheat Sheets</em> como <a href="http://www.n0sl33p.org/dev/eclipse_keys.html" target="_blank">este</a>, ajudam no processo de adaptação.</li>
<li>Use e abuse dos Templates, aquelas configurações chatas de xml que toda hora são necessárias, não perca tempo, crie um template para isso e seja feliz. Você pode criar também para aqueles métodos chatos com assinaturas iguais sempre (tipo do Struts mesmo sabe !?!) &#8230; o céu é o limite !</li>
<li>Aprenda a usar as opções do menu Refactor e &#8211; adivinhe! &#8211; Geradores de Códigos.</li>
</ul>
</li>
<li>Mantenha um <em>checklist</em> de documentos a atualizar, aqueles do tipo, Requisitos, Casos de Uso, Arquitetura, Alteração, Instalação &#8230; etc. Com um <em>checklist</em> você não precisa ocupar a cabeça com este passo muito importante do <em>waterfall</em> e lembre-se que neste ambiente o que é valorizado são os documentos e não as pessoas.</li>
<li>Antes de começar a sua nova tarefa que está no Gantt, descubra quem são os envolvidos, neste nosso ambiente temos especialistas para todos os lados, converse com eles e feche pactos, pois é muito comum no final da tarefa você descobrir que a procedure retornará um <a href="http://blogs.ittoolbox.com/oracle/guide/archives/learn-oracle-miscellaneous-user-defined-and-complex-types-17977" target="_blank">tipo complexo</a> e não um cursor como você imaginava.</li>
<li>Sei que isso pode parecer irreal para você que está num <em>waterfall</em> enraízado, porém, tente pelo menos. Tenha um ambiente <a href="http://en.wikipedia.org/wiki/Mock_object" target="_blank">mock</a> para desenvolvimento, isso pode te salvar ao manter sua tarefa &#8220;verdinha&#8221; no Gantt Chart. Sim, todos nos <a href="http://blog.aspercom.com.br/2007/11/15/ganttchartnaofunciona/trackback/" target="_blank">sabemos que o Gantt Chart não funciona</a>, porém eu e você que estamos no <em>waterfall</em> temos que usar e até fingir que <a href="http://gc.blog.br/2007/12/04/cronogramas-nao-funcionam/" target="_blank">funciona</a>.</li>
</ul>
<p>Espero que com essas dicas você consiga se livrar de suas tarefas em menos tempo, e com o tempo que sobrar, aproveite para aprender coisas novas, metodologias novas e descobrir que existe vida fora do <em>waterfall</em> &#8230; e acredite ! Estão documentando, <a href="http://blog.aspercom.com.br/2008/05/29/um-exemplo-a-ser-seguido/trackback/" target="_blank">aqui</a>, <a href="http://gc.blog.br/2008/05/27/como-estamos-indo-com-a-adocao-de-scrum-na-globocom/" target="_blank">aqui</a> e <a href="http://blog.seatecnologia.com.br/articles/2008/05/29/experiencias-%C3%81geis-na-sea-episodio-i-%E2%80%93-a-ameaca-fantasma" target="_blank">aqui</a> !</div>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2008/06/tpw-dicas-para-o-desenvolvedor/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Waterfalling&#8230;</title>
		<link>http://1up4dev.org/2008/06/waterfalling/</link>
		<comments>http://1up4dev.org/2008/06/waterfalling/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 06:40:00 +0000</pubDate>
		<dc:creator>miguelbaldi</dc:creator>
				<category><![CDATA[cascata]]></category>
		<category><![CDATA[processos]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[waterfall]]></category>
		<category><![CDATA[corporativismo]]></category>

		<guid isPermaLink="false">http://1up4dev.wordpress.com/2008/06/01/waterfalling/</guid>
		<description><![CDATA[
Primeiramente tenho que admitir que o termo usado no titulo do post não existe em nenhum dicionário convencional (encontrei apenas no UrbanDictionary, mas não era bem o que queria expressar&#8230;risos).
Mas mesmo assim vou usá-lo livremente, pois acho que não teria nenhum verbete mais adequado para expressar como me sinto atualmente (profissionalmente falando claro!), nada descreve [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:left;">
<div>Primeiramente tenho que admitir que o termo usado no titulo do post não existe em nenhum dicionário convencional (encontrei apenas no <a href="http://www.urbandictionary.com/define.php?term=waterfalling" target="_blank">UrbanDictionary</a>, mas não era bem o que queria expressar&#8230;<span style="font-style:italic;">risos</span>).<br />
Mas mesmo assim vou usá-lo livremente, pois acho que não teria nenhum verbete mais adequado para expressar como me sinto atualmente (profissionalmente falando claro!), nada descreve o fenômeno que é desenvolver software, ou pelo menos tentar, em um mercado onde praticamente 99% das grandes empresas ainda gastam milhares de reais com consultorias <span style="font-style:italic;">especializadas</span> em implementar metodologias e processos que no fundo só servem para gastar tempo, dinheiro e a paciência dos colaboradores envolvidos. O resultado disso é uma empresa certificada(CMM/i, MPS.br e afins) e dezenas de funcionários <span style="font-style:italic;">estressados</span>.</div>
<div style="text-align:left;"><span>É impressionante como a falsa segurança de um processo todo controlado,</span><br />
<span>medido e previsivel (isso é o que os </span><span style="font-style:italic;">chairmen</span><span> ainda pensam!) ainda está</span><br />
<span>presente nos gestores de TI atuais, pelo menos no Brasil.</span><br />
<span>O Waterfall continua enraízado em nossa cultara de gestão por simples</span><br />
<span>jogo de interesses. Essas metodologias (CMM/i e similares&#8230;) só</span><br />
<span>beneficiam pessoas que não querem se comprometer, não estão</span><br />
<span>interessadas na real satisfação do cliente e querem se manter no</span><br />
<span>mercado, muitas vezes sendo incompetentes no que fazem (afinal este</span><br />
<span>tipo de processo permite que as pessoas se escondam atrás desta</span><br />
<span>burocracia). Existem milhares de papéis (analista, projetista, analista</span><br />
<span>de negocios, gerentes e mais gerentes, analista de qualidade&#8230;blah</span><br />
<span>blah blah) a serem desempenhados, mas estes papeis são tratados como se</span><br />
<span>fossem exercidos por robôs. Isso gera o tipo de frase: &#8220;Mas eu faço</span><br />
<span>análise, prazo não é comigo!&#8221;.</span></div>
<p><span>Eu vejo este tipo de metodologia como a velha discussão dos sistemas sócio-politicos. Se analisarmos de forma fria e racional as duas principais vertentes desenvolvidas neste campo, percebemos que de uma lado temos o socialismo com todo seu esforço para ser algo justo e equilibrado, e na outra ponta temos o capitalismo com toda sua desigualdade, agressividade competitiva entre outras coisas.</span></p>
<p style="font-style:italic;text-align:center;"><span>&#8220;O </span><strong>Socialismo</strong><span> é um sistema sócio-político caracterizado pela apropriação dos </span><span>meios de produção</span><span> pela </span><span>coletivadade</span><span>. Abolida a sua </span><span style="font-style:italic;">propriedade privada</span><br />
<span>destes meios, todos se tornariam trabalhadores, tomando parte na</span><br />
<span>produção, e as desigualdades sociais tenderiam a ser drasticamente</span><br />
<span>reduzidas uma vez que a produção, sendo social, poderia ser</span><br />
<span>equitativamente distribuída.</span><span> A proposta de Karl Marx, um dos autores que desenvolveu este tema, é a de que o socialismo fosse um sistema de transição para o </span><span>comunismo</span><span>, que eliminaria de forma integral o Estado e as desigualdades sociais.&#8221; Ver referencias</span></p>
<p><span>Como sabemos atualmente o mundo é capitalista, apesar de algumas exceções. Mas que relação isto tem com processo de desenvolvimento de software??</span><br />
<span>Uma das razões para o capitalismo dar certo é a sua naturalidade, quero dizer com isso que este pensamento/comportamento é intrínseco ao ser humano, todos nós de alguma forma nascemos pensando e agindo assim, uns mais outros menos, e isso acaba refletindo no sucesso que teremos ou não no futuro. Por isso digo que é natural.</span></p>
<div>
<div style="text-align:center;"><span style="font-style:italic;">&#8220;</span><strong>Capitalismo</strong><span style="font-style:italic;"> é comumente definido como um sistema de organização de sociedade baseado na propriedade privada dos meios de produção e propriedade intelectual, e na liberdade de contrato sobre estes bens (livre-mercado</span><span style="font-style:italic;">).</span><br />
<span style="font-style:italic;">&#8220;Capitalismo&#8221; é o nome que se dá às atitudes econômicas decorrentes</span><br />
<span style="font-style:italic;">naturalmente numa sociedade que respeita a propriedade privada e a</span><br />
<span style="font-style:italic;">liberdade de contrato. As pessoas quando sujeitas a estas condições,</span><br />
<span style="font-style:italic;">com o intuito de satisfazer seus desejos e/ou necessidades, tendem</span><br />
<span style="font-style:italic;">espontaneamente a dirigir seus esforços no sentido de acumular capital,</span><br />
<span style="font-style:italic;">o qual é então usado como moeda de troca a fim de adquirir os serviços</span><br />
<span style="font-style:italic;">e produtos desejados.</span>&#8221; Ver referencias</div>
<p>Quando falamos de socialismo, logo percebemos que ele parece muito perfeito, realmente tudo é pensado em prol de todos, todos são uma peça de um esquema muito maior e que tem um plano ideal para todos.<br />
A desigualdade não existe, porém temos que pagar um preço muito alto por isso, ficamos o tempo todo lutando contra nossos instintos, motivações e tudo mais que move o ser humando em sua busca por uma condição melhor pra si. Temos que sempre pensar no coletivo antes do individual, temos que nos conformar em ter as mesmas coisas que todos, perdemos caracteristicas que nos tornam únicos em nome de uma causa maior. Isto é muito legal!! Mas é altruísmo demais até para um monge.</p></div>
<p><span>Apenas para deixar claro, não tenho intenção nenhuma de discutir ciências politicas ou econômia com ninguém, realmente não tenho conhecimento para isso (desconsiderem qualquer bobagem que eu tenha dito, tentem captar a intenção. </span><span style="font-style:italic;">risos</span><span>).</span><br />
<span>Minha intenção desde o inicio é mostrar que os processos e metodologias que conhecemos na vida real como parte do </span><a class="mw-redirect" title="Livre-mercado" href="http://pt.wikipedia.org/wiki/Livre-mercado"></a><a href="http://en.wikipedia.org/wiki/Waterfall_model" target="_blank">Waterfall</a><span> não são naturais ao desenvolvimento de software e muito menos à nós desenvolvedores. Eles parecem maravilhosos em um quadro na parede com todo fluxo do </span><a href="http://en.wikipedia.org/wiki/Project_Management_Body_of_Knowledge" target="_blank">PMBOK</a><span>, por exemplo, mas no dia-a-dia custam muito para serem aplicados e exigem que nademos contra nossos instintos para que cheguemos à algum lugar. </span><br />
<span><br />
Quando falamos de metodologias ágeis, em primeiro momento parece muito vago, o manifesto ágil em sí não se mostra muito técnico, em alguns momentos parece um pouco distante de uma aplicabilidade real. Mas na verdade em sua excência ele tem tudo que nos identificamos. A começar por suas ferramentas, quem na vida nunca se viu praticando </span><a href="http://en.wikipedia.org/wiki/Pair_programming" target="_blank"><span style="font-style:italic;">pair programming</span></a><span>, pois bem isto é uma pratica muito útil de uma coisa maior chamada </span><span style="font-style:italic;">Extreme Programming. </span><span>E não precisamos procurar muito para chegar a conclusão de o </span><span style="font-style:italic;">Scrum</span><span> tem como consequencia uma maior aproximação da equipe e auto conhecimento dentre os participantes, com isso proporciana um maior controle gerencial para quem exercer esta função.</span></p>
<p>Tudo isso natural para nós<br />
programadores e <span style="font-style:italic;">computeiros</span><span>, assim como o capitalismo é para a sociedade e o mercado ecônimico.</span></p>
<p>Reforçando, não quero iniciar nenhum tipo de flamming relacionado à política ou econômia, quero apenas expôr algumas maluquices que venho pensando ultimamente.</p>
<p><span>Bom galera, gostaria de dizer que me motivei a escrever essas idéias depois de ler um excelente post do </span><a href="http://blog.aspercom.com.br/2008/05/27/nao-jogue-dinheiro-fora-com-melhoria-de-processos/" target="_blank">Rodrigo Yoshima</a><span> no Blog Débito Técnico. É bom saber que ainda existem pessoas que tem a capacidade de provocar o pensamento e instigar a busca por explicações.</span></p>
<p><span style="font-style:italic;">Eu sonho um dia poder trabalhar com uma metodologia ágil, enquanto isso não chega vou me lamentando por aí.</span></p>
<p><span>Abraços, e coloquem suas opiniões! Podem esculachar, </span><span style="font-style:italic;">risos&#8230;</span></p>
<p><span>Referências:</span><br />
<a href="http://pt.wikipedia.org/wiki/Socialismo" target="_blank">Socialismo</a><br />
<a href="http://pt.wikipedia.org/wiki/Capitalismo" target="_blank">Capitalismo</a><br />
<a href="http://blog.aspercom.com.br/2008/05/27/nao-jogue-dinheiro-fora-com-melhoria-de-processos/" target="_blank">Débito Técnico &#8211; Não jogue dinheiro com melhoria de processos&#8230;</a></div>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2008/06/waterfalling/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>O paradoxo: iterativo-incremental x confiança</title>
		<link>http://1up4dev.org/2008/05/o-paradoxo-iterativo-incremental-x-confianca/</link>
		<comments>http://1up4dev.org/2008/05/o-paradoxo-iterativo-incremental-x-confianca/#comments</comments>
		<pubDate>Mon, 26 May 2008 18:00:00 +0000</pubDate>
		<dc:creator>Rodrigo Panachi</dc:creator>
				<category><![CDATA[cascata]]></category>
		<category><![CDATA[processos]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[waterfall]]></category>
		<category><![CDATA[corporativismo]]></category>
		<category><![CDATA[metodologia]]></category>

		<guid isPermaLink="false">http://1up4dev.wordpress.com/2008/05/26/o-paradoxo-iterativo-incremental-x-confianca/</guid>
		<description><![CDATA[Recentemente trabalhei em uma empresa de pequeno porte tentando implantar (ensinar, vender, disseminar, ou outro termo que caiba aqui) Scrum na tentativa de organizar e agilizar o processo de desenvolvimento do software da empresa, que até o momento só conhecia (e conhece) Waterfall.
As desculpas da empresa para não adotar Scrum (ou outro processo ágil) são [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente trabalhei em uma empresa de pequeno porte tentando implantar (ensinar, vender, disseminar, ou outro termo que caiba aqui) Scrum na tentativa de organizar e agilizar o processo de desenvolvimento do software da empresa, que até o momento só conhecia (e conhece) Waterfall.</p>
<p>As desculpas da empresa para não adotar Scrum (ou outro processo ágil) são todas apoiadas em confiança (ou desconfiança): como confiar num projeto que não tem tudo detalhadamente especificado desde o início? Era comum ouvir: &#8220;só isso não vai dar certo&#8221;, &#8220;precisamos detalhar todas as funcionalidades primeiro&#8221;, &#8220;não quero chegar lá na frente e ter que mudar alguma coisa hein&#8221;, &#8220;o cliente não vai querer comprar uma coisa que ele nem sabe o que é&#8221;.</p>
<p>Na ocasião, encontrei este <a href="http://www.agileproductdesign.com/blog/dont_know_what_i_want.html">artigo</a> falando sobre desenvolvimento iterativo e incremental, e utilizei estas imagens para (tentar) argumentar meu ponto de vista.</p>
<p>Iterativo:<br />
<a href="http://bp3.blogger.com/_5zxY-DmU9a8/SDr7jaCyLPI/AAAAAAAAAAU/KpwkWCPETcU/s1600-h/incrementing.jpg"><img style="cursor:pointer;" src="http://bp3.blogger.com/_5zxY-DmU9a8/SDr7jaCyLPI/AAAAAAAAAAU/KpwkWCPETcU/s320/incrementing.jpg" border="0" alt="" /></a></p>
<p>Incremental:<br />
<a href="http://bp1.blogger.com/_5zxY-DmU9a8/SDr7b6CyLOI/AAAAAAAAAAM/SAcQqmmkHZA/s1600-h/iterating.jpg"><img style="cursor:pointer;" src="http://bp1.blogger.com/_5zxY-DmU9a8/SDr7b6CyLOI/AAAAAAAAAAM/SAcQqmmkHZA/s320/iterating.jpg" border="0" alt="" /></a></p>
<p>É evidente que ninguém entendeu a mensagem. Para eles, a confiança ainda estava em jogo. Em termos de proteção, o Waterfall ainda garante uma &#8220;falsa segurança&#8221; à empresa: &#8220;estamos entregando apenas o que estava documentado nas especificações&#8221;, &#8220;a documentação nos protege&#8221;.</p>
<p>Bom, tá aí um resumo da minha experiência e tenho certeza que vocês já passaram por algo parecido. Continuamos nos comentários&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2008/05/o-paradoxo-iterativo-incremental-x-confianca/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Error: Access Denied</title>
		<link>http://1up4dev.org/2008/05/error-access-denied/</link>
		<comments>http://1up4dev.org/2008/05/error-access-denied/#comments</comments>
		<pubDate>Tue, 13 May 2008 20:38:00 +0000</pubDate>
		<dc:creator>Roger Leite</dc:creator>
				<category><![CDATA[cascata]]></category>
		<category><![CDATA[processos]]></category>
		<category><![CDATA[waterfall]]></category>
		<category><![CDATA[passando raiva]]></category>

		<guid isPermaLink="false">http://1up4dev.wordpress.com/2008/05/13/error-access-denied/</guid>
		<description><![CDATA[Inicio de nova tarefa:

 Descobrir onde está o documento de requisito.
 10 minutos depois, achei o documento, mas só tem tela.
 Descobrir onde está o outro documento de casos de uso.
 10 minutos, descobri que está em outro documento.
 10 minutos, descobri que este outro documento não tem a funcionalidade que preciso desenvolver, mas tenho [...]]]></description>
			<content:encoded><![CDATA[<p>Inicio de nova tarefa:</p>
<ul>
<li> Descobrir onde está o documento de requisito.</li>
<li> 10 minutos depois, achei o documento, mas só tem tela.</li>
<li> Descobrir onde está o outro documento de casos de uso.</li>
<li> 10 minutos, descobri que está em outro documento.</li>
<li> 10 minutos, descobri que este outro documento não tem a funcionalidade que preciso desenvolver, mas tenho esperanças, pois achei um link pra outro possivel documento.</li>
<li> 10 minutos, realmente desisto, no documento só tem os tópicos, nada de texto.</li>
<li> Pergunto ao lider onde encontrar o documento, e é claro que está no Sharepoint.</li>
<li> Finalmente acesso e ganho um  &#8220;Error: Access Denied&#8221; &#8230;</li>
</ul>
<p><a href="http://bp3.blogger.com/_XL8FQmVF9qY/SCn9d4INJ_I/AAAAAAAAAFw/Q4u_m5onkV0/s1600-h/access-denied.png"><img style="display:block;text-align:center;cursor:pointer;margin:0 auto 10px;" src="http://bp3.blogger.com/_XL8FQmVF9qY/SCn9d4INJ_I/AAAAAAAAAFw/Q4u_m5onkV0/s320/access-denied.png" border="0" alt="" /></a><br />
~40 minutos &#8230; Realmente o <span style="font-style:italic;">Waterfall</span> não tem limites !</p>
<p>obs: Espero que o <span style="font-style:italic;">Request access</span> do Sharepoint realmente funcione !</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2008/05/error-access-denied/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>