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

<channel>
	<title>Blog de desenvolvimento da Milfont Consulting, Client e Server-side &#187; Metodologia</title>
	<atom:link href="http://www.milfont.org/tech/tag/metodologia/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.milfont.org/tech</link>
	<description>Blog da Comunidade Milfont Consulting, uma empresa especializada em desenvolvimento Web, principalmente Javascript, node.js e muito Javascript.</description>
	<lastBuildDate>Thu, 26 Jan 2012 11:30:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Defesa Tardia do RUP</title>
		<link>http://www.milfont.org/tech/2010/03/08/defesa-tardia-do-rup/</link>
		<comments>http://www.milfont.org/tech/2010/03/08/defesa-tardia-do-rup/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 17:29:39 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[Agil]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Agilismo]]></category>
		<category><![CDATA[cascata]]></category>
		<category><![CDATA[rup]]></category>
		<category><![CDATA[scrumbut]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=881</guid>
		<description><![CDATA[Eu ia escrever um post gigantesco sobre o porquê do RUP ter morrido mas vou tentar ir direto pro cerne da questão. Ultimamente eu vejo muita gente dizer que RUP não deu certo por culpa humana e que só existem 3 caras no Brasil inteiro que entendem como a mágina do RUP funciona, entre outros [...]]]></description>
			<content:encoded><![CDATA[<p>Eu ia escrever um post gigantesco sobre o porquê do RUP ter morrido mas vou tentar ir direto pro cerne da questão. Ultimamente eu vejo muita gente dizer que RUP não deu certo por culpa humana e que só existem 3 caras no Brasil inteiro que entendem como a mágina do RUP funciona, entre outros argumentos desse estilo.</p>
<p>É muito fácil defender RUP hoje em dia depois de toda evolução do mercado [que diga-se de passagem o RUP só ajudou sendo a antítese do caminho correto], duvido que esses 3 únicos caras que supostamente conhecem a pedra filosofal do RUP fizessem o que fazem [ou devem fazer] hoje antes desses últimos 15 anos de discussão e experimento ágil.</p>
<p>É difícil imaginar que Kent Beck, Martin Fowler e tantos outros que começaram a propagar o agilismo após o manifesto ágil não conhececem RUP a ponto de,  como os defensores atuais do RUP afirmam: &#8220;renomearam práticas antigas com nomes novos&#8221;.</p>
<p>Meus caros, práticas não são o coração do agilismo, são os valores e princípios. RUP sempre valorizou os itens à direita em detrimento aos itens à esquerda no manifesto ágil, então não me venham com essa de que seguir o plano nunca foi prioritário do RUP. RUP é uma metodologia que não deu certo porque foi uma tentativa de taylorizar o desenvolvimento de software.</p>
<p>ps. Notaram que não linkei nada? Preguiça de responder esse tipo de coisa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2010/03/08/defesa-tardia-do-rup/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Palestra Test Driven Development</title>
		<link>http://www.milfont.org/tech/2009/03/29/palestra-test-driven-development/</link>
		<comments>http://www.milfont.org/tech/2009/03/29/palestra-test-driven-development/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 10:58:46 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Linguagens]]></category>
		<category><![CDATA[Melhores práticas]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[palestras]]></category>
		<category><![CDATA[Test Driven]]></category>
		<category><![CDATA[teste]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[xpce]]></category>
		<category><![CDATA[Agil]]></category>
		<category><![CDATA[Agilismo]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[behaviour driven development]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[palestra]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=600</guid>
		<description><![CDATA[Palestra realizada no evento do grupo XPCE em 28/03/2009. Test Driven Development View more presentations from Christiano Milfont.]]></description>
			<content:encoded><![CDATA[<p>Palestra realizada no evento do grupo <a href="http://groups.google.com.br/group/xpce">XPCE</a> em <a href="../2009/03/27/primeiro-encontro-xpce-mudancas-na-grade/">28/03/2009</a>.</p>
<div id="__ss_1216427" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Test Driven Development" href="http://www.slideshare.net/cmilfont/test-driven-development-1216427?type=presentation">Test Driven Development</a><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" 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://static.slidesharecdn.com/swf/ssplayer2.swf?doc=testdrivendevelopment-rev2-090329051331-phpapp01&amp;stripped_title=test-driven-development-1216427" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=testdrivendevelopment-rev2-090329051331-phpapp01&amp;stripped_title=test-driven-development-1216427" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/cmilfont">Christiano Milfont</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/03/29/palestra-test-driven-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Palestra Behaviour Driven Development</title>
		<link>http://www.milfont.org/tech/2009/03/29/palestra-behaviour-driven-development/</link>
		<comments>http://www.milfont.org/tech/2009/03/29/palestra-behaviour-driven-development/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 10:52:56 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[palestras]]></category>
		<category><![CDATA[xpce]]></category>
		<category><![CDATA[Agil]]></category>
		<category><![CDATA[Agilismo]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[behaviour driven development]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>
		<category><![CDATA[palestra]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=596</guid>
		<description><![CDATA[Palestra realizada no evento do grupo XPCE em 28/03/2009. Behaviour Driven Development View more presentations from Christiano Milfont.]]></description>
			<content:encoded><![CDATA[<p>Palestra realizada no evento do grupo <a href="http://groups.google.com.br/group/xpce">XPCE</a> em <a href="http://www.milfont.org/tech/2009/03/27/primeiro-encontro-xpce-mudancas-na-grade/">28/03/2009</a>.</p>
<div id="__ss_1216414" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Behaviour Driven Development" href="http://www.slideshare.net/cmilfont/behaviour-driven-developmentrev2?type=powerpoint">Behaviour Driven Development</a><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" 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://static.slidesharecdn.com/swf/ssplayer2.swf?doc=behaviourdrivendevelopment-rev2-090329050610-phpapp01&amp;stripped_title=behaviour-driven-developmentrev2" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=behaviourdrivendevelopment-rev2-090329050610-phpapp01&amp;stripped_title=behaviour-driven-developmentrev2" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/cmilfont">Christiano Milfont</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/03/29/palestra-behaviour-driven-development/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Primeiro Encontro XPCE &#8211; Mudanças na grade</title>
		<link>http://www.milfont.org/tech/2009/03/27/primeiro-encontro-xpce-mudancas-na-grade/</link>
		<comments>http://www.milfont.org/tech/2009/03/27/primeiro-encontro-xpce-mudancas-na-grade/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 17:28:47 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Melhores práticas]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>
		<category><![CDATA[palestras]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Test Driven]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[xpce]]></category>
		<category><![CDATA[Agil]]></category>
		<category><![CDATA[Agilismo]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Test Driven Development]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=592</guid>
		<description><![CDATA[Devido a problemas de saúde do palestrante Igo Coelho, sua palestra foi cancelada e vai ser realizar no próximo evento provavelmente. A programação continua apenas com uma palestra: 09:00 &#8211; 10:20 Palestra: Começando a usar BDD e TDD Resumo: Se você nunca entendeu como é que se escreve testes antes do código ou ainda não [...]]]></description>
			<content:encoded><![CDATA[<p>Devido a problemas de saúde do palestrante <a href="http://www.igocoelho.com.br/">Igo Coelho</a>, sua palestra foi cancelada e vai ser realizar no próximo evento provavelmente. A <a href="http://www.milfont.org/tech/2009/03/16/primeiro-encontro-xpce/">programação continua</a> apenas com uma palestra:</p>
<p>09:00 &#8211; 10:20</p>
<p><em>Palestra</em>: <strong>Começando a usar BDD e TDD</strong><br />
<em>Resumo</em>: Se você nunca entendeu como é que se escreve testes antes do código ou ainda não conseguiu uma forma satisfatória de seguir essa prática, aproveite essa oportunidade onde dissecaremos Test Driven Development até convencê-lo de que essa é a abordagem profissional adequada, além disso facilitaremos a compreensão em um nível mais abstrato com Behaviour Driven Development agilizando o mergulho de cabeça nessa forma de modelar código saudável e eficiente.<br />
<em>Palestrante</em>: <strong>Christiano Milfont</strong>, coordenador do grupo XPCE e um cara que gosta de programar.</p>
<p><strong>Local</strong>: <a href="http://www.grupofortes.com.br/">Fortes Informática</a>.</p>
<p><strong>Endereço</strong>: Rua Antônio Fortes, 330, Bairro Edson Queiroz, próximo ao antigo Hiper Mercantil da Washington Soares. Localização com o <a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;ll=-3.773091,-38.475966&amp;spn=0.018842,0.040169&amp;t=k&amp;z=15&amp;om=1&amp;msid=118046180333911632049.0004346aca4990deed4ba">Google Maps</a>.</p>
<p><strong>Data</strong>: Dia 28/03/2009 [sábado] das 09:00h as 12:00h na sala de treinamentos 1.</p>
<p><strong>XPCE </strong>- Grupo de Extreme Programming do Ceará.</p>
<p>[<a href="http://groups.google.com.br/group/xpce">http://groups.google.com.br/group/xpce</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/03/27/primeiro-encontro-xpce-mudancas-na-grade/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Primeiro Encontro XPCE</title>
		<link>http://www.milfont.org/tech/2009/03/16/primeiro-encontro-xpce/</link>
		<comments>http://www.milfont.org/tech/2009/03/16/primeiro-encontro-xpce/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 18:16:43 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Melhores práticas]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>
		<category><![CDATA[palestras]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Test Driven]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[xpce]]></category>
		<category><![CDATA[Agil]]></category>
		<category><![CDATA[Agilismo]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Test Driven Development]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=557</guid>
		<description><![CDATA[Primeiro encontro XPCE XPCE - Grupo de Extreme Programming do Ceará. [http://groups.google.com.br/group/xpce] Local: Fortes Informática. Endereço: Rua Antônio Fortes, 330, Bairro Edson Queiroz, próximo ao antigo Hiper Mercantil da Washington Soares. Localização com o Google Maps. Data: Dia 28/03/2009 [sábado] das 09:00h as 12:00h na sala de treinamentos 1. Palestras 09:00 &#8211; 10:20 Palestra: Começando [...]]]></description>
			<content:encoded><![CDATA[<h2>Primeiro encontro XPCE</h2>
<p><strong>XPCE </strong>- Grupo de Extreme Programming do Ceará.</p>
<p>[<a href="http://groups.google.com.br/group/xpce">http://groups.google.com.br/group/xpce</a>]</p>
<p><strong>Local</strong>: <a href="http://www.grupofortes.com.br/">Fortes Informática</a>.</p>
<p><strong>Endereço</strong>: Rua Antônio Fortes, 330, Bairro Edson Queiroz, próximo ao antigo Hiper Mercantil da Washington Soares. Localização com o <a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;ll=-3.773091,-38.475966&amp;spn=0.018842,0.040169&amp;t=k&amp;z=15&amp;om=1&amp;msid=118046180333911632049.0004346aca4990deed4ba">Google Maps</a>.</p>
<p><strong>Data</strong>: Dia 28/03/2009 [sábado] das 09:00h as 12:00h na sala de treinamentos 1.</p>
<h3>Palestras</h3>
<p>09:00 &#8211; 10:20</p>
<p><em>Palestra</em>: <strong>Começando a usar BDD e TDD</strong><br />
<em>Resumo</em>: Se você nunca entendeu como é que se escreve testes antes do código ou ainda não conseguiu uma forma satisfatória de seguir essa prática, aproveite essa oportunidade onde dissecaremos Test Driven Development até convencê-lo de que essa é a abordagem profissional adequada, além disso facilitaremos a compreensão em um nível mais abstrato com Behaviour Driven Development agilizando o mergulho de cabeça nessa forma de modelar código saudável e eficiente.<br />
<em>Palestrante</em>: <strong>Christiano Milfont</strong>, coordenador do grupo XPCE e um cara que gosta de programar.</p>
<p>10:40 &#8211; 12:00</p>
<p><em>Palestra</em>: <strong>Integração Contínua</strong><br />
<em>Resumo</em>: Descubra o que projetos ágeis fazem para possibilitar que diversos desenvolvedores trabalhem juntos em um mesmo projeto, integrando suas contribuições de forma harmônica e segura.<br />
<em>Palestrante</em>: <strong>Igo Coelho</strong>, fanático por desenvolvimento de software, novas tecnologias, internet, eletrônicos e tudo mais que um geek pode gostar. Com mais de 9 anos de experiência em desenvolvimento de Software trabalha atualmente na <a href="http://www.fortesinformatica.com.br/" target="_blank">Fortes Informática</a> como arquiteto de software com XP e Java. Casado, pai de dois filhos e mantem um blog em <a href="http://www.igocoelho.com.br/" target="_blank">www.igocoelho.com.br</a>.</p>
<p>Sorteio de livros e revistas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/03/16/primeiro-encontro-xpce/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Retrabalho e prejuízo</title>
		<link>http://www.milfont.org/tech/2009/01/08/retrabalho-e-prejuizo/</link>
		<comments>http://www.milfont.org/tech/2009/01/08/retrabalho-e-prejuizo/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 15:17:07 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Certificações]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Melhores práticas]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Test Driven]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[domain driven design]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=488</guid>
		<description><![CDATA[Em todos os projetos que trabalhei até hoje no mercado local [Ceará] existem profissionais mais ou menos qualificados a partir de uma base mínima de qualidade que um profissional tem que possuir dentro do modelo &#8220;Enterprisey&#8221; &#8211; que estamos acostumados e que responde pela quase totalidade dos projetos de software. Essa base mínima eu proponho [...]]]></description>
			<content:encoded><![CDATA[<p>Em todos os projetos que trabalhei até hoje no mercado local [Ceará] existem profissionais mais ou menos qualificados a partir de uma base mínima de qualidade que um profissional tem que possuir dentro do modelo &#8220;Enterprisey&#8221; &#8211; que estamos acostumados e que responde pela quase totalidade dos projetos de software.</p>
<p>Essa base mínima eu proponho que seja &#8211; dentro do modelo exposto -  raciocínio lógico. O resto ele pode aprender.</p>
<p>Raciocínio lógico está ligado diretamente a noção de avaliar a situação, encontrar um padrão, investigar soluções existentes e implementar a solução, além claro de bom senso.</p>
<p>Não adianta pregarmos que os profissionais deveriam ser melhor escolhidos assim ou assado porque a realidade é que as empresas não tem como medir satisfatoriamente quem é ou não competente e mais cedo ou mais tarde você se deparará com indivíduos em sua equipe vindos por diversas nuances administrativas, seja aquele superqualificado cheio de títulos ou o primo do diretor da empresa.</p>
<p>Aonde quero chegar com essa história?</p>
<p>Precisamos avaliar os riscos necessários com bastante antecedência para que toda a equipe e consequentemente o projeto não sejam lesados e paguem o preço da incompetência às vezes de um único elemento. Parece óbvio? Acredite, não é!</p>
<p>Temos um projeto em um cliente &#8211; uma Alfândega &#8211; que precisamos refatorar todo o código criado por um determinado profissional com apenas dois ou três meses pronto. O projeto ainda está no início e já temos que refazer código.</p>
<p>Convenhamos, tudo bem que o código de meia hora atrás já é legado, mas código tão recente não deveria já ser refatorado sem mudança na lógica de negócio ou arquitetural. Algo muito errado aconteceu.</p>
<p>Mudanças não funcionais acontecem, surge um novo paradigma ou framework que reduz o tempo de desenvolvimento e convenientemente é adequado sua mudança, isso é comum durante a manutenção de um software já em produção com um meio século de uso &#8211; que em informática dura cerca de 4 ou 5 anos.</p>
<p>O nosso em questão não há motivos. Projeto novo, sem restrição ou adequação à &#8220;Arquitetura de Referência&#8221;, Frameworks de última milha na plataforma Java como JSF, Spring e Hibernate. Testes unitários &#8211; mas não TDD.</p>
<p>Como dito, separei um exemplo em código para demonstrar aonde quero chegar. Tem uma lógica bastante simples, existe um processo de apreensão de mercadorias na alfândega e liberação dessa mercadoria.</p>
<p>Há 3 tabelas que representam isso no modelo E/R: TB_DEVOLUCAO, TB_ITEM_APREENSAO, TB_ITEM_DEVOLUCAO. Segundo a lógica relacional, a TB_ITEM_DEVOLUCAO é uma tabela de junção entre a devolução e os itens apreendidos para indicar que item será devolvido.</p>
<p>Seguindo minha definição, um profissional com raciocínio lógico encontraria fácil a solução do mapeamento entre essas entidades apenas lendo a documentação, ele saberia que o <a href="http://www.hibernate.org">Hibernate</a> tem um mapeamento de <a href="http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/#entity-mapping-association-collections">OneToMany com Join Table Uni ou Bidirecional</a>.</p>
<p>Mas não, ele criou essa bizarrice:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">@<span style="color: #003399;">Entity</span>
@Table<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;TB_DEVOLUCAO&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Devolucao <span style="color: #009900;">&#123;</span>
&nbsp;
	@OneToMany<span style="color: #009900;">&#40;</span>fetch<span style="color: #339933;">=</span>FetchType.<span style="color: #006633;">LAZY</span>, cascade<span style="color: #339933;">=</span>CascadeType.<span style="color: #006633;">ALL</span><span style="color: #009900;">&#41;</span>
	@JoinColumn<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;SEQ_ITEM_DEVOLUCAO&quot;</span><span style="color: #009900;">&#41;</span>
	@Cascade<span style="color: #009900;">&#40;</span>org.<span style="color: #006633;">hibernate</span>.<span style="color: #006633;">annotations</span>.<span style="color: #006633;">CascadeType</span>.<span style="color: #006633;">DELETE_ORPHAN</span><span style="color: #009900;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">private</span> List<span style="color: #339933;">&lt;</span>ItemDevolucao<span style="color: #339933;">&gt;</span> itensDevolucao <span style="color: #339933;">=</span> 
		<span style="color: #000000; font-weight: bold;">new</span> ArrayList<span style="color: #339933;">&lt;</span>ItemDevolucao<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
@<span style="color: #003399;">Entity</span>
@Table<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;TB_ITEM_DEVOLUCAO&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ItemDevolucao <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">//Para que essa entidade?</span>
&nbsp;
	@Id
	@GeneratedValue<span style="color: #009900;">&#40;</span>strategy <span style="color: #339933;">=</span> GenerationType.<span style="color: #006633;">IDENTITY</span><span style="color: #009900;">&#41;</span>
	@Column<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;SEQ_ITEM_DEVOLUCAO&quot;</span>, columnDefinition<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;NUMERIC&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">Integer</span> codigo<span style="color: #339933;">;</span>
&nbsp;
	@OneToOne
	@JoinColumn<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;SEQ_ITEM_APREENSAO&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">private</span> ItemApreensao itemApreensao<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Esse profissional em questão é graduado em computação, tem mestrado em uma federal, certificação como arquiteto Java e diversas outras certificações e pasme, anos de experiência em projetos. Mas não tem o básico, raciocínio lógico. Não investiga e não sabe desenvolver software de qualidade.</p>
<p>O código em questão pode parecer bobagem até mas isso se repete em todo o código criado por esse profissional.</p>
<p>Um profissional responsável em refatorar o código com apenas curso técnico e uma mísera certificação de programador java refatorou assim [como deve ser]:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">@<span style="color: #003399;">Entity</span>
@Table<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;TB_DEVOLUCAO&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Devolucao <span style="color: #009900;">&#123;</span>
&nbsp;
	@OneToMany<span style="color: #009900;">&#40;</span>fetch<span style="color: #339933;">=</span>FetchType.<span style="color: #006633;">LAZY</span>, cascade<span style="color: #339933;">=</span>CascadeType.<span style="color: #006633;">ALL</span><span style="color: #009900;">&#41;</span>
	@JoinTable<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;TB_ITEM_DEVOLUCAO&quot;</span>,
		joinColumns <span style="color: #339933;">=</span> @JoinColumn<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;SEQ_ITEM_DEVOLUCAO&quot;</span><span style="color: #009900;">&#41;</span>,
		inverseJoinColumns <span style="color: #339933;">=</span> 
				@JoinColumn<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;SEQ_ITEM_APREENSAO&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#41;</span>
	@Cascade<span style="color: #009900;">&#40;</span>org.<span style="color: #006633;">hibernate</span>.<span style="color: #006633;">annotations</span>.<span style="color: #006633;">CascadeType</span>.<span style="color: #006633;">DELETE_ORPHAN</span><span style="color: #009900;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">private</span> List<span style="color: #339933;">&lt;</span>ItemApreensao<span style="color: #339933;">&gt;</span> itensDevolvidos <span style="color: #339933;">=</span> 
				<span style="color: #000000; font-weight: bold;">new</span> ArrayList<span style="color: #339933;">&lt;</span>ItemApreensao<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ad Hominem da minha parte? Tomar uma exceção pela regra? nada disso, eles são legião! Isso é meu cotidiano.</p>
<p>O prejuízo que esse profissional acarreta a todos os envolvidos é enorme e até difícil de ser mensurado porque envolve custos e humor da equipe que impacta em outros custos imperceptíveis na conta final que é a &#8220;fodisse&#8221; dos caras que tiveram que refatorar, ou seja, fizeram o seu e o trabalho alheio.</p>
<p>Ah, mas XP não prega o código coletivo? ir lá e consertar? Mas quebra o principal valor que é &#8220;Respeito&#8221;. Além do mais o projeto em questão seque o velho Cascata &#8211; mas culpa do cliente que exigiu ser assim, exigiu não, obriga.</p>
<p>Pela minha experiência de nada adianta você jogar um <a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882">Clean Code</a> nas mãos dele e pedir para estudar, ele vai continuar escrevendo nmDesc em uma propriedade ou IRepository em uma Interface. Ele foi treinado assim e sem raciocínio lógico no máximo que voce vão conseguir é retreiná-lo para conseguir comer a banana por outro túnel.</p>
<p>Um projeto sem um líder técnico responsável com aptidão e experiência necessária aliado a método baseado em BDUF sem um processo restritivo [como TDD] com modelagem ultrapassada com papéis de analista de sistemas &#8220;UMLizados&#8221; deixa esse tipo de profissional cometer esses pecados e prejudicar a todos os envolvidos retrabalho desnecessário.</p>
<p>É fácil resolver isso? É! O problema maior é que não podemos simplesmente aceitar que &#8220;o cliente quer assim&#8221;, temos um dever ético com nossa profissão de não permitir que o paciente escolha como ele quer ser operado e ceder médicos que não tenham capacidade de operá-lo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/01/08/retrabalho-e-prejuizo/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Existem balas de prata!</title>
		<link>http://www.milfont.org/tech/2008/12/10/existem-balas-de-prata/</link>
		<comments>http://www.milfont.org/tech/2008/12/10/existem-balas-de-prata/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 09:12:18 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Linguagens]]></category>
		<category><![CDATA[Melhores práticas]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>
		<category><![CDATA[Bala de prata]]></category>
		<category><![CDATA[Silver Bullet]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=434</guid>
		<description><![CDATA[Existe um tipo de falácia bem comum que está crescendo ultimamente se aproveitando da célebre frase: Não existe bala de prata! Quando invocamos a necessidade de não considerar todos os problemas como um prego e a única arma um martelo, não estamos fornecendo a chave da irrestrita flexibilidade irresponsável. Quando assumimos que em tudo depende, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.milfont.org/tech/wp-content/uploads/2008/12/silverbullet1.jpg"><img class="alignleft size-medium wp-image-435" title="silverbullet1" src="http://www.milfont.org/tech/wp-content/uploads/2008/12/silverbullet1.jpg" alt="" width="133" height="138" /></a></p>
<p>Existe um tipo de falácia bem comum que está crescendo ultimamente se aproveitando da célebre frase: <a href="http://en.wikipedia.org/wiki/No_Silver_Bullet">Não existe bala de prata</a>!</p>
<p>Quando invocamos a necessidade de não considerar todos os problemas como um prego e a única arma um martelo, não estamos fornecendo a chave da irrestrita flexibilidade irresponsável.</p>
<p>Quando assumimos que em tudo depende, não estamos dizendo que não há uma fronteira. O avanço significativo do cálculo só foi possível com o advento do limite matemático.</p>
<p>Fazer ciência é investigar e fazer a pergunta certa ao contrário da resposta certa. Para isso identificamos padrões e formulamos teorias.</p>
<p>Antes de abandonar uma teoria devemos substituí-la por outra mais apropriada. Isso soa conservador mas é preciso para se fazer ciência, propor o abandono de uma determinada teoria sem a substituição por outra mais adequada é leviano.</p>
<p>Para entender como algo funciona não podemos simplesmente achar que qualquer solução é válida e sim descobrir qual a solução adequada.</p>
<p>Entender que existem soluções mais apropriadas &#8211; e que sim, existe um jeito certo ou um modo melhor de se fazer algo &#8211; não quer dizer que outras abordagens simplesmente estão erradas,  podem ser apenas incompletas e/ou inviáveis.</p>
<p>Em muitas discussões que tenho travado ultimamente sempre quando tento argumentar que uma solução específica é melhor do que determinada outra, ouço:</p>
<p>&#8220;Não existem balas de prata&#8221;. Bingo!</p>
<p>Essa pessoa não entende ou não quer aceitar por motivo qualquer que a solução dela está errada ou não satisfaz.</p>
<p>Aqui a proposta é pontual, para determinado conjunto de fatores existe uma solução mais adequada, isso é fato.</p>
<h2>Existem Balas de prata!</h2>
<p>Mas como somos fans de <a href="http://en.wikipedia.org/wiki/Supernatural_(TV_series)">Supernatural</a>, sabemos que o que mata é acertar no coração. O trabalho deve ser direcionado a combater a complexidade no coração do problema e não simplesmente num jogo de escolher a ferramenta certa.</p>
<p>Na área de desenvolvimento de software a maioria dos desenvolvedores se apegam a uma metodologia/ferramenta/arquitetura e tentam encaixá-la para a construção de qualquer sistema. Não entendem que aquela solução não vai resolver todos os problemas.</p>
<p>Até aqui tudo bem, o problema é aproveitar a defesa de que não existe uma ferramenta para todos os propósitos e considerar que &#8220;não existe o melhor&#8221; ou a &#8220;forma apropriada&#8221;, quando justamente por não existir ferramenta universal é que devemos usar algo por sua especialidade.</p>
<p><a href="http://www.milfont.org/tech/wp-content/uploads/2008/12/silverbullet2.jpg"><img class="alignright size-medium wp-image-441" title="silverbullet2" src="http://www.milfont.org/tech/wp-content/uploads/2008/12/silverbullet2.jpg" alt="" width="139" height="139" /></a></p>
<p>O <a href="http://www.manifestoagil.com.br/">manifesto ágil</a> tem um trecho que diz:</p>
<blockquote><p>&#8220;Estamos descobrindo maneiras <strong>melhores de desenvolver software</strong> fazendo-o nós mesmos e ajudando outros a fazê-lo.&#8221;</p></blockquote>
<p>Observe que ele diz &#8220;<strong>melhores</strong>&#8221; e não &#8220;<strong>diferente</strong>&#8221; ou &#8220;<strong>de outra forma</strong>&#8220;.</p>
<p>No final diz:</p>
<blockquote><p>&#8220;Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda.&#8221;</p></blockquote>
<p>Aqui reconhece que os itens à direita não estão errados, apenas que os da esquerda levam a uma melhor forma de tratar o campo específico que é desenvolver software.</p>
<p>Tentar levar o manifesto ágil para gestão de projetos, construção civil ou limpeza da sua casa o faz ser uma bala de prata e que não vai matar nada porque você não está atigindo o coração, apenas tentando criar um martelo genérico para um uso universal.</p>
<p>Todo o &#8220;KnowHow&#8221; associado ao manifesto ágil se refere única e exclusivamente ao processo de desenvolver software da melhor forma, atinge o pontual.</p>
<p><em>Agiletards </em>sabem ser chatos também quando seguem metodologias de caixinhas e querem criar um novo dogma de desenvolvimento de software.</p>
<p>Existe o melhor e a forma mais adequada, procurar é nosso dever!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2008/12/10/existem-balas-de-prata/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

