<?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; Melhores práticas</title>
	<atom:link href="http://www.milfont.org/tech/category/melhores-praticas/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>Palestra Agilidade no Mundo Real</title>
		<link>http://www.milfont.org/tech/2010/07/11/palestra-agilidade-no-mundo-real/</link>
		<comments>http://www.milfont.org/tech/2010/07/11/palestra-agilidade-no-mundo-real/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 11:43:05 +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[Test Driven]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[Agil]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agilidade]]></category>
		<category><![CDATA[Agilismo]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1007</guid>
		<description><![CDATA[Ontem eu palestrei na faculdade IDEZ em João Pessoa &#8211; PB a convite do Dr. Rodrigo Rebouças &#8211; Coordenador e professor de pós graduação em dev de software -  sobre o tema &#8220;Agilidade no Mundo Real&#8221;, que consistiu basicamente em falar sobre minha experiência em implantação, mentoring e treinamento de agilidade em meus clientes nos [...]]]></description>
			<content:encoded><![CDATA[<p>Ontem eu <a href="http://www.faculdadeidez.com.br/noticias/detalhe/?id=68">palestrei</a> na <a href="http://www.faculdadeidez.com.br/">faculdade IDEZ</a> em João Pessoa &#8211; PB a convite do <a href="http://rodrigor.com/">Dr. Rodrigo Rebouças</a> &#8211; Coordenador e professor de pós graduação em dev de software -  sobre o tema &#8220;Agilidade no Mundo Real&#8221;, que consistiu basicamente em falar sobre minha experiência em implantação, mentoring e treinamento de agilidade em meus clientes nos últimos 2 anos.</p>
<p><a href="http://twitter.com/mauriciojr">Maurício Linhares</a> também é professor da IDEZ, o que me deixa particularmente feliz em saber que tem gente capaz dentro da academia que pode fazer diferença. Esse contato entre mercado e academia é importante para todos e creio que os alunos ontem tiveram muito dever de casa para fazer.</p>
<p>Ontem anotei muitas dúvidas discutidas na mesa redonda que fizemos após as palestras e nos próximos dias eu postarei sobre as principais dificuldades em entender o que é agilidade, que TDD não evita equipe de Testes ou QA e nem sequer tem a ver com cobertura de código, que agilidade não é velocidade, inclusive pode ser mais lento em determinados períodos, confusão entre práticas, valores e princípios, entre outras coisas.</p>
<p>Sobre minha palestra eu falei sobre as dificuldades que encontro, como melhorar a adoção dos valores e princípios trabalhando a base. Vocês podem acompanhar nos slides e video abaixo:</p>
<div id="__ss_4728171" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Agilidade no mundo real" href="http://www.slideshare.net/cmilfont/agilidade-nomun-doreal">Agilidade no mundo real</a></strong><object id="__sse4728171" 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=agilidadenomundoreal-100710213154-phpapp01&amp;stripped_title=agilidade-nomun-doreal" /><param name="name" value="__sse4728171" /><param name="allowfullscreen" value="true" /><embed id="__sse4728171" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=agilidadenomundoreal-100710213154-phpapp01&amp;stripped_title=agilidade-nomun-doreal" name="__sse4728171" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/cmilfont">Christiano Milfont</a>.</div>
</div>
<p><a href="http://static.livestream.com/chromelessPlayer/wrappers/TwitcamPlayer.swf?hash=14e6c">Vídeo do Evento</a><br />
<object id="twitcamPlayer" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="320" height="265" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="wmode" value="window" /><param name="src" value="http://static.livestream.com/chromelessPlayer/wrappers/TwitcamPlayer.swf?hash=14e6c" /><param name="name" value="twitcamPlayer" /><param name="bgcolor" value="#ffffff" /><param name="allowfullscreen" value="true" /><embed id="twitcamPlayer" type="application/x-shockwave-flash" width="320" height="265" src="http://static.livestream.com/chromelessPlayer/wrappers/TwitcamPlayer.swf?hash=14e6c" bgcolor="#ffffff" name="twitcamPlayer" wmode="window" allowfullscreen="true"></embed></object></p>
<h2>Referências sobre os slides de minha palestra</h2>
<p>O que é agilidade?<br />
<a href="http://manifestoagil.com.br/">http://manifestoagil.com.br/</a><br />
<a href="http://www.milfont.org/tech/extreme-programming-books/">http://www.milfont.org/tech/extreme-programming-books/</a></p>
<p>Scripts do workflow GIT sobre os slides do &#8220;Merge From Hell&#8221;<br />
<a href="http://reinh.com/blog/2009/03/02/a-git-workflow-for-agile-teams.html">http://reinh.com/blog/2009/03/02/a-git-workflow-for-agile-teams.html</a><br />
<a href="http://reinh.com/blog/2008/08/27/hack-and-and-ship.html">http://reinh.com/blog/2008/08/27/hack-and-and-ship.html</a><br />
<a href="http://gist.github.com/8511">http://gist.github.com/8511</a></p>
<p>Trabalho energizado<br />
Pair Programming<br />
<a href="http://www.milfont.org/tech/2010/06/17/trabalho-energizado-e-a-teoria-das-2-horas-produtivas/">http://www.milfont.org/tech/2010/06/17/trabalho-energizado-e-a-teoria-das-2-horas-produtivas/</a><br />
<a href="http://www.milfont.org/tech/2009/02/03/pair-programming-vs-code-review/">http://www.milfont.org/tech/2009/02/03/pair-programming-vs-code-review/</a></p>
<p>Automação Total<br />
<a href="http://radar.oreilly.com/2009/03/continuous-deployment-5-eas.html">http://radar.oreilly.com/2009/03/continuous-deployment-5-eas.html</a><br />
<a href="http://blog.caelum.com.br/2010/03/01/o-processo-de-deploy-continuo/">http://blog.caelum.com.br/2010/03/01/o-processo-de-deploy-continuo/</a><br />
<a href="http://agilenomundoreal.com.br/2010/07/06/deploy-continuo-entrega-continua-de-valor/">http://agilenomundoreal.com.br/2010/07/06/deploy-continuo-entrega-continua-de-valor/</a></p>
<p><a href="http://railscasts.com/episodes/179-seed-data">http://railscasts.com/episodes/179-seed-data</a></p>
<p>Testes<br />
<a href="http://www.milfont.org/tech/2009/06/01/recomendacao-sobre-tdd/">http://www.milfont.org/tech/2009/06/01/recomendacao-sobre-tdd/</a><br />
<a href="http://www.milfont.org/tech/2009/06/07/quanto-testar/">http://www.milfont.org/tech/2009/06/07/quanto-testar/</a></p>
<p>Sem tempo suficiente<br />
<a href="http://www.milfont.org/tech/2010/06/29/sem-tempo-suficiente/">http://www.milfont.org/tech/2010/06/29/sem-tempo-suficiente/</a></p>
<p>Dar caos a ordem</p>
<p>Destruir arquiteturas de referências<a href=" http://www.milfont.org/tech/2010/01/21/voce-esta-nivelando-por-baixo-eou-nao-conhece-seus-desenvolvedores/"></p>
<p>http://www.milfont.org/tech/2010/01/21/voce-esta-nivelando-por-baixo-eou-nao-conhece-seus-desenvolvedores/</a></p>
<p><a href="http://www.milfont.org/tech/2008/01/20/frameworkstools-caseiros-ou-fechados/">http://www.milfont.org/tech/2008/01/20/frameworkstools-caseiros-ou-fechados/</a><br />
<a href="http://www.milfont.org/tech/2009/06/06/frameworks-caseiros-2-a-missao/">http://www.milfont.org/tech/2009/06/06/frameworks-caseiros-2-a-missao/</a><br />
<a href="http://www.milfont.org/tech/2008/01/21/nao-use-notacao-estranha/">http://www.milfont.org/tech/2008/01/21/nao-use-notacao-estranha/</a></p>
<p>Separar gerenciamento de projetos do processo de desenvolvimento<br />
Pmbok de Jeans<br />
<a href="http://www.milfont.org/tech/2009/03/14/pmbok-de-jeans/">http://www.milfont.org/tech/2009/03/14/pmbok-de-jeans/</a></p>
<p>Software Funcionando<br />
<a href="http://www.milfont.org/tech/2009/09/17/qualidade-interna-vs-qualidade-externa/">http://www.milfont.org/tech/2009/09/17/qualidade-interna-vs-qualidade-externa/</a></p>
<p>Retrabalho e Prejuízo<br />
<a href="http://www.milfont.org/tech/2009/01/08/retrabalho-e-prejuizo/">http://www.milfont.org/tech/2009/01/08/retrabalho-e-prejuizo/</a></p>
<p>Workflow ágil e simples<br />
<a href="http://www.pivotaltracker.com">http://www.pivotaltracker.com</a><br />
<a href="http://github.com/tpope/pickler">http://github.com/tpope/pickler</a><br />
<a href="http://github.com/trydionel/git-pivotal">http://github.com/trydionel/git-pivotal</a><br />
<a href="http://www.pivotaltracker.com/help/api?version=v3#scm_post_commit">http://www.pivotaltracker.com/help/api?version=v3#scm_post_commit</a></p>
<p>Jesus recomendando o trabalho em par<br />
“E depois disto designou o Senhor ainda outros setenta, e mandou-os adiante da sua face, de dois em dois, a todas as cidades  e lugares aonde ele havia de ir.”<br />
<a href="http://www.bibliaonline.com.br/acf/lc/10">Lucas 10:1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2010/07/11/palestra-agilidade-no-mundo-real/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sem tempo suficiente</title>
		<link>http://www.milfont.org/tech/2010/06/29/sem-tempo-suficiente/</link>
		<comments>http://www.milfont.org/tech/2010/06/29/sem-tempo-suficiente/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 19:46:18 +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[Test Driven]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[AvoidNotEnoughTime]]></category>
		<category><![CDATA[NotEnoughTime]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Test Driven Development]]></category>
		<category><![CDATA[test first]]></category>
		<category><![CDATA[teste]]></category>
		<category><![CDATA[testes]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=798</guid>
		<description><![CDATA[Recentemente, em um determinado projeto, tínhamos uma semana para disponibilizar uma versão e uma timeline definida por motivos externos que não poderíamos furar. O problema era que toda modificação gerava ainda mais medo por conta da baixa cobertura de testes, praticamente estavam codificando e corrigindo nessa altura do campeonato. Eu radicalmente sugeri um grande refactoring [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente, em um determinado projeto, tínhamos uma semana para disponibilizar uma versão e uma timeline definida por motivos externos que não poderíamos furar. O problema era que toda modificação gerava ainda mais medo por conta da baixa cobertura de testes, praticamente estavam <a href="http://c2.com/cgi/wiki?CodeAndFix">codificando e corrigindo</a> nessa altura do campeonato.</p>
<p>Eu radicalmente sugeri um grande refactoring para corrigir nossa bateria de testes, uma parada faltando apenas uma semana para entrega, mas só assim voltaríamos a trabalhar na entrega das features.</p>
<p>Nesse momento, o clássico &#8220;<a href="http://c2.com/cgi/wiki?NotEnoughTime">Não temos tempo para isso</a>&#8221; surgiu das profundezas do inferno.</p>
<p>Fiquei sozinho nessa decisão, o time inteiro foi contra. Na defesa da solução apresentada eu falei: &#8220;Vocês podem se enganar imaginando que podem entregar essa release em uma semana com a qualidade do código existente que vocês sabem que vai de mal a pior ou podem trabalhar para corrigir esses problemas e entregar o possível, mas funcionando&#8221;.</p>
<p>Sabemos da importância de testes, todas as metodologias os cobra obrigatoriamente, então se você não testa, você está errado em todas as metodologias. O problema sempre é a desculpa da timeline e quanto mais vai se aproximando mais desculpas procuramos encontrar para esconder as deficiências. Como nesse caso não tínhamos Test First, os problemas vão se empilhando no final e se tornam mais difíceis de serem detectados.</p>
<p>Por sorte, minha sugestão acabou sendo acatada, apesar de ser apenas um consultor no projeto, portanto uma <a href="http://en.wikipedia.org/wiki/The_Chicken_and_the_Pig">galinha e não porco</a>.</p>
<h2>De onde nascem essas desculpas?</h2>
<p>Coragem é um dos valores do XP, é importante enfrentarmos esse tipo de situação que descrevi, na vida real isso quase nunca é possível porque essas arquiteturas flácidas ou códigos mal cheirosos não nascem do dia para o outro e vão se acumulando.</p>
<p>O projeto que descrevi era um projeto novo, tecnologias fresquinhas e um time modernoso. Imagina agora se você está em uma corporação que usa um processo cascata, todo amarrado, criando documentos UML desnecessários no EA, struts 1 como framework, CVS como controle de versão do código [quando há! Sim, em pleno 2010 ainda há quem não use nenhum], o código de banco de dados cheio de procedures e tantas modernidades da década de 80.</p>
<p>Então, acha que só coragem basta?</p>
<p>Em muitas oportunidades o custo de mudanças ou simplesmente &#8220;fazer o que se tem que fazer&#8221; não se pagará nem a médio prazo, nessas horas convencer já não basta. É muito difícil você convencer a alta direção que deve jogar fora um determinado projeto e começar do zero, ou modificar toda a infraestrutura existente.</p>
<p>A degradação de um software nasce de pequenos problemas que se acumulam, no final há tanto para se fazer que ninguém mais tem coragem para isso.</p>
<h2>Socorro, Milfont!</h2>
<p>Recebo constantemente pedido de socorro de pessoas que me conhecem das comunidades que participo como <a href="http://groups.google.com.br/group/xpce/">XPCE</a>, <a href="http://groups.google.com.br/group/guru-ce">GURU-CE</a>, <a href="http://www.javace.org/">JAVA-CE</a>, entre outras. Geralmente são funcionários que se encontram nessa situação que citei anteriormente, com projetos muito defasados e problemáticos.  O pedido é sempre o mesmo, querem que eu vá lá dizer para a alta direção o que eles [funcionários] já sabem. Só que isso não basta, o movimento tem que começar por lá.</p>
<p>Em reunião com a turma da <a href="http://www.triadworks.com.br/">TriadWorks</a>, temos discutido isso já há muito tempo e acabamos preparando um serviço de resgate aos clientes para contornar esse problema. A proposta é envolver as pessoas desses clientes, dar coragem e ânimo nelas para começarem a resolver o problema.</p>
<p>Resolvemos começar com nossos próprios clientes, sim, dá preferência a quem tem contrato conosco e depois verificar como abrir para a comunidade.</p>
<p>Então, esse envolvimento nós demos o codinome de <strong>&#8220;AvoidNotEnoughTime&#8221;</strong> e consiste basicamente em um conjunto de ações/eventos  com os funcionários dessas empresas para dar essa força necessária para anular o NotEnoughTime na base. É um movimento de baixo pra cima, roots, serão desde <a href="http://codingdojo.org/cgi-bin/wiki.pl?WhatIsCodingDojo">Coding Dojos</a>, <a href="http://www.coderetreat.com/">Code Retreat</a>, <a href="http://en.wikipedia.org/wiki/Google_Code_Jam">Code Jam</a>, <a href="http://en.wikipedia.org/wiki/Hack_Day">Hack Days</a>, <a href="http://pt.wikipedia.org/wiki/Lightning_Talk">Lightning Talks</a>, <a href="http://en.wikipedia.org/wiki/Open_Space_Technology">Open Space</a> ou um formato adequado a um determinado problema que identificarmos.</p>
<p>Nós não vamos cobrar a mais dos clientes por isso, aliás, eles nem foram avisados e não terão controle sobre o projeto, nós que decidimos quando, como e com quem faremos justamente para evitar sabotagem ou direcionamento.</p>
<p><a href="http://picasaweb.google.com.br/handersonbf/GitHackDay27Junho2010#5487617659376766882"><img class="alignnone" title="Git Hack Session 2010 - 1" src="http://lh3.ggpht.com/_ixVOzmHRw-A/TCfvL8JQD6I/AAAAAAAAfqk/Pum7iyA53Ek/s640/DSC06462.JPG" alt="" width="512" height="384" /></a></p>
<p>Sem planejamento nem nada, resolvemos iniciar mesmo assim, domingo passado [27/06/2010] realizamos um <a href="http://picasaweb.google.com.br/handersonbf/GitHackDay27Junho2010">Git Session</a> onde eu [@<a href="http://twitter.com/cmilfont">cmilfont</a>], @<a href="http://twitter.com/triadworks">triadworks</a> representada por @<a href="http://twitter.com/handersonbf">handersonbf</a>, @<a href="http://twitter.com/rponte">rponte</a> e @<a href="http://twitter.com/carlosatilabreu">carlosatilabreu</a>, recebemos funcionários de clientes nossos. @<a href="http://twitter.com/jeffersongirao">jeffersongirao</a> da <a href="http://www.grupotubform.com.br/">TubForm</a>, @<a href="http://twitter.com/rodrigogalba">rodrigogalba</a> da <a href="http://www.casamagalhaes.com.br">Casa Magalhães</a> e @<a href="http://twitter.com/rodrigodealer">rodrigodealer</a> da <a href="http://www.fortesinformatica.com.br/">Fortes Informática</a>.</p>
<p><a href="http://picasaweb.google.com.br/handersonbf/GitHackDay27Junho2010#5487617622384050994"><img class="alignnone" title="Git Hack Session 2010 - 1" src="http://lh3.ggpht.com/_ixVOzmHRw-A/TCfvJyVgAzI/AAAAAAAAfqk/HEQ4uc8mtwU/s640/DSC06459.JPG" alt="" width="512" height="384" /></a></p>
<h2>O que vocês ganham com isso?</h2>
<p>Resolvemos fazer um Git Hack Session devido alguns de nossos clientes usarem CVS e SVN. O tempo perdido resolvendo problemas de repositório como merges e bobagens simples causam um prejuízo enorme, as desculpas para mudarem cai sempre no &#8220;não temos suficiente&#8221; ou &#8220;depois fazemos quando terminar esse projeto&#8221;.</p>
<p>Então cada ponto de dificuldade que um time enfrenta e observarmos que se repete nos demais clientes, vamos organizar ações para envolver essa turma afim de anular essas desculpas. Treinar multiplicadores em todos os princípios.</p>
<p>No caso do <a href="http://jefferson.eti.br/tech/">Jefferson Girão</a>, que trabalha também para a <a href="http://hoodiny.com/">Hoodiny</a>, veio mais para nos auxiliar, já que está mestre no uso do git no meu cliente <a href="http://diariodonordeste.globo.com/materia.asp?codigo=802976">Tubform [uma das maiores indústrias do Nordeste]</a>.</p>
<p><a href="http://picasaweb.google.com.br/handersonbf/GitHackDay27Junho2010#5487617567767983810"><img class="alignnone" title="Git Hack Session 2010 - 1 - 1" src="http://lh6.ggpht.com/_ixVOzmHRw-A/TCfvGm4A9sI/AAAAAAAAfqk/g9278Qrqjo8/s640/DSC06455.JPG" alt="" width="512" height="384" /></a></p>
<p>Dessa forma nosso trabalho de consultoria será facilitado e no mínimo já faríamos esses eventos internamente, então unimos o útil ao agradável.</p>
<p>Se você gostaria de participar de algum desses eventos mesmo não sendo funcionário de cliente nosso, mande um email para mim [cmilfont@gmail.com] e tentaremos incluir sempre quando puder. Domingo agora surgiu um desfalque, até <a href="http://twitter.com/cmilfont/status/17157321685">twittei</a> convocando alguém que estivesse disponível, mas foi em cima da hora.</p>
<p><a title="ComeÃ§ou #gitsession on Twitpic" href="http://twitpic.com/20fe7x"><img src="http://s3.amazonaws.com/twitpic/photos/large/121650621.jpg?AWSAccessKeyId=0ZRYP5X5F6FSMBCCSE82&amp;Expires=1277841604&amp;Signature=NHhg8E3GmOduBzRGb9aMOqKmZhc%3D" alt="ComeÃ§ou #gitsession on Twitpic" width="480" height="360" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2010/06/29/sem-tempo-suficiente/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>JQuery e conflitos</title>
		<link>http://www.milfont.org/tech/2010/06/28/jquery-e-conflitos/</link>
		<comments>http://www.milfont.org/tech/2010/06/28/jquery-e-conflitos/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 20:24:18 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jquery]]></category>
		<category><![CDATA[Melhores práticas]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[closure]]></category>
		<category><![CDATA[Currying]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=982</guid>
		<description><![CDATA[Creio que todo mundo já conheça a função noConflict do JQuery para evitar conflitos com outros frameworks que utilizam a variável dóllar ($). JQuery é sem dúvidas o melhor framework javascript para manipulação DOM e não há motivos e nem desculpas para não o usar, principalmente com essa resolução de conflitos. Tenho refatorado alguns códigos [...]]]></description>
			<content:encoded><![CDATA[<br />
<b>Warning</b>:  file_get_contents(http://gist.github.com/456301.json) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: Connection refused in <b>/home/chrismilfont/milfont.org/tech/wp-content/plugins/github-gist-shortcode-plugin.php</b> on line <b>41</b><br />
<br />
<b>Warning</b>:  file_get_contents(http://gist.github.com/456273.json) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: Connection refused in <b>/home/chrismilfont/milfont.org/tech/wp-content/plugins/github-gist-shortcode-plugin.php</b> on line <b>41</b><br />
<p>Creio que todo mundo já conheça a função <a href="http://api.jquery.com/jQuery.noConflict/">noConflict</a> do <a href="http://jquery.com/">JQuery</a> para evitar conflitos com outros frameworks que utilizam a variável dóllar ($). JQuery é sem dúvidas o melhor framework javascript para manipulação DOM e não há motivos e nem desculpas para não o usar, principalmente com essa resolução de conflitos.</p>
<p>Tenho refatorado alguns códigos javascript e o pessoal tem resolvido o conflito de forma confusa e misturando código de dois framework, inclusive código DOM nativo. A documentação recomenda, como uma opção, atribuir o resultado da função noConflict a uma variável e ela será o seu objeto JQuery.</p>
<p>Imagina que você tem <a href="http://www.prototypejs.org/">Prototype</a> e Jquery na mesma aplicação como no codigo abaixo:</p>

<p>A legibilidade vai ser horrível para manutenção desse código porque você vai ficar com códigos misturados com sintaxes e estilos diferentes, a medida que isso vai crescendo a manutenção vai ficando impossível.</p>
<p>Minha sugestão é utilizarem <a href="http://www.milfont.org/tech/2008/03/02/currying-em-javascript/">Closure e Currying</a> para resolver o conflito, isolar o código e deixar bem mais claro. Se ler a documentação lá do <a href="http://api.jquery.com/jQuery.noConflict/">noConflict</a> tem exemplo como o código abaixo.<br />
</p>
<p>Se você preferir deixar claro a diferença entre os frameworks pode continuar a usar outra variável no lugar do $, mas a idéia é isolar o código de cada framework.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2010/06/28/jquery-e-conflitos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trabalho Energizado e a Teoria das 2 horas produtivas</title>
		<link>http://www.milfont.org/tech/2010/06/17/trabalho-energizado-e-a-teoria-das-2-horas-produtivas/</link>
		<comments>http://www.milfont.org/tech/2010/06/17/trabalho-energizado-e-a-teoria-das-2-horas-produtivas/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 15:04:58 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Melhores práticas]]></category>
		<category><![CDATA[mercado]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=958</guid>
		<description><![CDATA[Quando eu trabalhava como funcionário, formulei uma teoria exótica e controversa que se uma empresa tiver em média duas horas produtivas por cada &#8220;recurso&#8221;, essa empresa teria um lucro exorbitante e seria sustentável. Duas horas produtivas para mim é uma licença poética para &#8220;códigos testáveis de forma automatizada, bem escritos, entregues por dia independente de [...]]]></description>
			<content:encoded><![CDATA[<p>Quando eu trabalhava como funcionário, formulei uma teoria exótica e controversa que se uma empresa tiver em média duas horas produtivas por cada &#8220;recurso&#8221;, essa empresa teria um lucro exorbitante e seria sustentável.</p>
<p>Duas horas produtivas para mim é uma licença poética para &#8220;códigos testáveis de forma automatizada, bem escritos, entregues por dia independente de tempo e que não trarão retrabalho&#8221;. Um par evita muito retrabalho, <a href="http://www.milfont.org/tech/2009/01/08/retrabalho-e-prejuizo/">lembrando que retrabalho não é refactoring, é prejuízo</a>.</p>
<p>Claro que não há método científico algum, apenas inferência por observação simples. Dia desses um funcionário de um cliente me disse:</p>
<p>&#8220;- Milfont, essa sua teoria é mais um dos seus exageros&#8221;.  Respondi:</p>
<p>&#8220;- Olha do lado, observe o que todos estão fazendo&#8221;.</p>
<p>Para espanto desse funcionário, ao olhar para o time mais caxias da empresa, aquele time considerado certinho, que ninguém conversa com ninguém, ele tomou um susto e detectou que todos, eu disse T-O-D-O-S, estavam com o cliente de email aberto. Ninguem estava com sua IDE em primeiro plano.</p>
<p>Coincidência?</p>
<h1>Trabalho Energizado</h1>
<p><a href="http://www.amazon.com/gp/product/0201745763?ie=UTF8&amp;tag=milftech-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0201745763"><img class="alignleft" style="margin: 5px;" title="Pair Programming Illuminated" src="http://ecx.images-amazon.com/images/I/51TXKD0A6VL._SL160_.jpg" alt="" width="130" height="160" /></a>Como consultor eu enfrento problemas de coaching e mentoring [adoro buzzwords] em relação a dificuldade da alta gestão não compreender os benefícios de programação em par para o trabalho energizado. Não que programação em par seja o único responsável por um trabalho focado, mas sem essa prática não dá nem para começar a mudar o cenário.</p>
<p>Todos meus clientes dizem em uníssono: &#8220;Até entendo que programação em par é importante, mas não o tempo todo e não para aqueles trabalhos simples&#8221;. Investigaremos essa frase ao final.</p>
<p>Meu trabalho como consultor é transformar galinhas mortas em galos de briga, então não tenho pretensões nem esperança que em um mês meus clientes terão integração contínua, todos seguirão Test First como prática e serão felizes para sempre, no mundo real a coisa é só um pouquinho mais complicada. Enfrento muitos clientes saindo da década de 80 direto para o novo milenio, é uma leva de CVS, Delphi, até clipper, além de vícios provocados por essas plataformas/arquiteturas/whatever.</p>
<h1>Agile Bibas</h1>
<p>Hoje é muito comum meus clientes pedirem planilhas e técnicas para medir velocidade e desempenho de seus &#8220;recursos&#8221; porque leram sobre isso nas revistas da moda. Isso é perda de tempo, vou cair no clichê mas não posso deixar de falar, enquanto voce não tratar seu time como pessoas e que elas não são máquinas controladas, não espere retorno deles.</p>
<p><a href="http://twitter.com/leonardoeloy">Leonardo Eloy</a> cunhou o termo #Agilebibas para representar todos os defensores do <a href="http://www.milfont.org/tech/2009/03/14/pmbok-de-jeans/">PMBoK de Jeans</a> que irão vender métricas e dirão que o time não produz conforme o esperado porque não se comprometem com as planilhas. Apenas comando-controle disfarçado de ágil.</p>
<p>Esqueça métrica de time, concentre-se na métrica do software. Não importa se o membro do time está nu, pulando corda, de cabeça para baixo, lendo emails ou enchendo a cara numa terça de manhã. O que importa é se as features foram entregues e com qualidade.</p>
<p>Parece simples mas não é, a soma &#8220;8 + 8 = 16&#8243; é difícil de ser anulada [imaginar que 8 horas de dois funcionários representam 16 horas de trabalho produzido com qualidade]. Medir tempo por funcionário é um dos maiores erros para tentar aumentar a produtividade do time.</p>
<p>Vou dizer mais uma vez: &#8220;Não meça pessoas, meça e entregue software&#8221;. Então não importa se seu funcionário não trabalha as 6 ou 8 horas que você espera que ele trabalhe, o que importa é se as duas features planejadas para hoje foram entregues com a qualidade esperada.</p>
<h1>Evitar o trabalho chato</h1>
<p>Algumas empresas ainda sonham com a esperança que basta impedir o acesso a redes sociais ou serviços na web, então o funcionário vai parar o &#8220;<a href="http://en.wikipedia.org/wiki/Goofing_off">Goofing Off</a>&#8220;. Existem inúmeros motivos para uma pessoa não estar energizada em seu trabalho, considero o principal como sendo &#8220;fazer trabalho chato&#8221;.</p>
<p>Vamos agora analisar aquela frase do início:</p>
<blockquote><p>&#8220;Até entendo que programação em par é importante, mas não o tempo todo e não para aqueles trabalhos simples&#8221;</p></blockquote>
<p>Observe que essa frase revela duas nuances onde o cliente acredita que trabalho em par não é importante, uma consequência da outra. Trabalho simples que provoca a necessidade de não trabalhar em par o tempo todo.</p>
<p>A primeira coisa como consultor quando sou contratado para mudar a cultura do time é tentar incluir programação em par como algo natural e prática necessária, para tanto preciso anular esse trabalho chato que considero ser basicamente trabalho repetitivo. Observe na frase anterior que meus clientes chamam esse trabalho de &#8220;simples&#8221;.</p>
<p>Não é simples, é chato.</p>
<p>Exemplo que me veio a cabeça agora mesmo, todos os cliente que não tem Test First como prática, então ficam testanto as coisas durante o desenvolvimento na mão, para tanto precisam gerar dados.  Para um desenvolvedor é frustrante ficar fazendo dump e passando para seus colegas de trabalho, porque não automatizar isso?</p>
<p>Todos meus clientes que <strong>não</strong> fazem Test First passam por isso. Ora, se mesmo os que tem essa prática nós enfrentamos desafios de um bom <a href="http://xunitpatterns.com/Fixture%20Setup%20Patterns.html">Setup</a> para garantir a independência no <a href="http://xp123.com/xplor/xp0308/">INVEST</a>, imagina os que não fazem.</p>
<p>Outro erro comum é achar que número de commits é sinal de proficiência ou estar trabalhando mais, em regra, para mim é sinal de muito trabalho repetitivo.</p>
<p>Não vou me prolongar, quero só concluir que evitar trabalho chato ajuda a demonstrar que Pair Programming é sim necessário o tempo todo e que se isso for alcançado a &#8220;morcegação&#8221; tende a diminuir e o reflexo na entrega de funcionalidades se torna positivo. Junte a isso o foco no software ao invés de medir pessoas e esqueça as toneladas de planilhas, na maioria das vezes nem um Burndown seja necessário, apenas trabalho energizado.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2010/06/17/trabalho-energizado-e-a-teoria-das-2-horas-produtivas/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Palestra BDD &#8211; Unifor 2010</title>
		<link>http://www.milfont.org/tech/2010/05/28/palestra-bdd-unifor-2010/</link>
		<comments>http://www.milfont.org/tech/2010/05/28/palestra-bdd-unifor-2010/#comments</comments>
		<pubDate>Fri, 28 May 2010 17:49:21 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Melhores práticas]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[palestras]]></category>
		<category><![CDATA[xpce]]></category>
		<category><![CDATA[DDD]]></category>
		<category><![CDATA[domain driven design]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=941</guid>
		<description><![CDATA[Ontem [27/05/2010] palestrei no evento da JavaCE na Unifor, abaixo estão os slides. Para quem não participou do evento, provavelmente os slides não farão muito sentido por si, mas creio que dá para entender o contexto. O objetivo dessa palestra foi desmistificar um pouco o entendimento sobre Domain Driven Design. O foco foi demonstrar que [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/product/0321125215?ie=UTF8&amp;tag=milftech-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321125215"><img class="alignleft" style="margin: 5px;" title="Domain Driven Design na Amazon" src="http://ecx.images-amazon.com/images/I/31ywgz51v-L._SL160_.jpg" alt="" width="120" height="160" /></a>Ontem [27/05/2010] <a href="http://www.javace.org/evento-javace-especializacao-unifor/">palestrei no evento</a> da <a href="http://www.javace.org/">JavaCE</a> na Unifor, abaixo estão os <a href="http://www.slideshare.net/cmilfont/domain-driven-design-4344612">slides</a>. Para quem não participou do evento, provavelmente os slides não farão muito sentido por si, mas creio que dá para entender o contexto.</p>
<p>O objetivo dessa palestra foi desmistificar um pouco o entendimento sobre <a href="http://en.wikipedia.org/wiki/Domain_driven_design">Domain Driven Design</a>. O foco foi demonstrar que essa abordagem não é sobre padrões, como bem me aconselhou o <a href="http://twitter.com/rodrigoy/status/14864670811">Rodrigo Yoshima</a>. Enfatizei a comunicação como fator importante e comparei arquiteturas existentes por má compreensão não só da &#8220;Orientação a Objetos&#8221;, mas por dogmatismo e ignorância.</p>
<p>Como eu conheço bem o mercado local, enfatizei algumas más práticas que considero o empecilho aos projetos, principalmente as &#8220;arquiteturas de referências&#8221; que se proliferam aqui e impactam na modelagem.</p>
<p>Fizemos um &#8220;Hands On&#8221; rapidinho e não tem como não falar sobre <a href="http://www.amazon.com/gp/product/0321146530?ie=UTF8&amp;tag=milftech-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321146530">TDD</a>, afinal, modelagem ágil passa invariavelmente pelo <a href="http://c2.com/cgi/wiki?TestFirstProgramming">Test First</a>. &#8220;Fizemos&#8221;, porque tive a ajuda do <a href="http://twitter.com/rponte/status/14878430610">@rponte</a>.</p>
<p><a title="27052010265 por chrismilfont, no Flickr" href="http://www.flickr.com/photos/cmilfont/4647510289/"><img src="http://farm5.static.flickr.com/4033/4647510289_b9b0460d69.jpg" alt="27052010265" width="500" height="375" /></a></p>
<div id="__ss_4344612" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Domain driven design" href="http://www.slideshare.net/cmilfont/domain-driven-design-4344612">Domain driven design</a></strong><object id="__sse4344612" 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=domaindrivendesign-100528120249-phpapp01&amp;stripped_title=domain-driven-design-4344612" /><param name="name" value="__sse4344612" /><param name="allowfullscreen" value="true" /><embed id="__sse4344612" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=domaindrivendesign-100528120249-phpapp01&amp;stripped_title=domain-driven-design-4344612" name="__sse4344612" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/cmilfont">Christiano Milfont</a>.</div>
</div>
<p><a href="http://www.submarino.com.br/produto/1/21576488/domain-driven+design?franq=170940"><img class="alignleft" title="Domain Driven Design" src="http://i.s8.com.br/images/books/cover/img8/21576488.jpg" alt="" width="180" height="180" /></a>Descobri só ontem que existe<a href="http://www.submarino.com.br/produto/1/21576488/domain-driven+design?franq=170940"> tradução do livro Domain Driven Design</a> do <a href="http://domaindrivendesign.org/about">Eric Evans</a>, eu recomendo comprarem o original na Amazon, mas se forem comprar em português que seja pelo <a href="http://www.submarino.com.br/produto/1/21576488/domain-driven+design?franq=170940">meu link</a>. <img src='http://www.milfont.org/tech/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>A <a href="http://www.infoq.com">InfoQ</a> publicou um <a href="http://www.infoq.com/minibooks/domain-driven-design-quickly">minibook sobre o tema</a>.</p>
<p>Vou subir a aplicação que codificamos ontem para o <a href="http://github.com/cmilfont">github</a> e atualizo essa página quando estiver disponível. Algumas fotos que foram tirados <a href="http://www.flickr.com/photos/cmilfont/sets/72157624154994090/">voces conferem aqui</a>.</p>
<p>Algumas referências importantes sobre o que falei ontem:</p>
<p><a href="http://blog.aspercom.com.br/2009/08/11/repositorios-ddd/">http://blog.aspercom.com.br/2009/08/11/repositorios-ddd/</a></p>
<p><a href="http://fragmental.tw/2010/02/24/everyday-tales-anatomy-of-a-refactoring/">http://fragmental.tw/2010/02/24/everyday-tales-anatomy-of-a-refactoring/</a></p>
<p><a href="http://fragmental.tw/2010/03/10/everyday-tales-anatomy-of-a-refactoring-%E2%80%93-part-2/">http://fragmental.tw/2010/03/10/everyday-tales-anatomy-of-a-refactoring-%E2%80%93-part-2/</a></p>
<p><a href="http://fragmental.tw/2010/03/10/everyday-tales-anatomy-of-a-refactoring-%e2%80%93-part-3/">http://fragmental.tw/2010/03/10/everyday-tales-anatomy-of-a-refactoring-%e2%80%93-part-3/</a></p>
<p><a href="http://fragmental.tw/2010/03/22/nevermind-domain-driven-design/">http://fragmental.tw/2010/03/22/nevermind-domain-driven-design/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2010/05/28/palestra-bdd-unifor-2010/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Transparência inédita na saúde pública</title>
		<link>http://www.milfont.org/tech/2010/03/07/transparencia-inedita-na-saude-publica/</link>
		<comments>http://www.milfont.org/tech/2010/03/07/transparencia-inedita-na-saude-publica/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 11:13:01 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[crowds]]></category>
		<category><![CDATA[DWR]]></category>
		<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Ext]]></category>
		<category><![CDATA[Frameworks]]></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[Model 3]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Test Driven]]></category>
		<category><![CDATA[web2.0]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[crowd]]></category>
		<category><![CDATA[governo]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[reverse ajax]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=872</guid>
		<description><![CDATA[É com satisfação que vejo o trabalho da Milfont Consulting participando diretamente na transparência da saúde pública no estado do Ceará. O governo do estado inaugurou essa semana &#8220;A Conta do Paciente&#8220;, um projeto inédito no Brasil que vai informar ao paciente quanto foi sua despesa desde a entrada no hospital até sua alta. Esse [...]]]></description>
			<content:encoded><![CDATA[<p>É com satisfação que vejo o trabalho da Milfont Consulting participando diretamente na transparência da saúde pública no estado do Ceará.</p>
<p>O governo do estado <a href="http://diariodonordeste.globo.com/materia.asp?codigo=745869">inaugurou essa semana</a> &#8220;<a href="http://www.ceara.gov.br/noticias/pacientes-poderao-saber-custos-dos-tratamentos">A Conta do Paciente</a>&#8220;, um projeto inédito no Brasil que vai informar ao paciente quanto foi sua despesa desde a entrada no hospital até sua alta. Esse tipo de atuação aproxima o governo da agilidade que a sociedade cobra em relação à transparência nas contas públicas, antes era quase impossível saber o custo real por paciente. Fora que a secretaria vai saber precisamente e em tempo real os custos por unidade, além de facilitar a tomada de decisões que podem salvar vidas.</p>
<p>Esse formulário detalhado com a conta do paciente é possível graças ao <a href="http://pt.wikipedia.org/wiki/Erp">ERP</a> especialista em gestão hospitalar pública da empresa Insystem, nosso cliente e parceiro. A Insytem acreditou em nosso trabalho e é um dos maiores Cases, senão o melhor.</p>
<p>O ERP foi construído 100% com base em <a href="http://www.milfont.org/tech/tag/tdd/">TDD</a> em Java usando DWR, Hibernate e  Spring basicamente. Alguns requisitos necessários de usabilidade utilizam Reverse Ajax com DWR. O sistema é totalmente ajax e utiliza o <a href="http://www.milfont.org/tech/2009/06/29/introducao-ao-ext/">Extjs</a> seguindo a filosofia <a href="http://www.milfont.org/tech/2008/09/08/mvc-model-3-e-camadas/">model 3</a>. Fizemos <a href="http://www.milfont.org/tech/2009/07/02/extjs-e-dwr/">algumas customizações</a> no Extjs para se integrar ao DWR de forma transparente.</p>
<p>Fomos ágeis desde o primeiro momento, mas nunca nos preocupamos em implantação de processo, metodologia ou qualquer coisa que o foco não fosse software saudável. XP foi algo natural, valores e princípios foram assimilados desde o primeiro dia, mas foi e é o software funcionando e livre de erros [o mais livre possível] que nos moveu.</p>
<p>Destaque para o <a href="http://javaneses.wordpress.com/">Felipe Andrade</a>, funcionário da Insystem que se tornou especialista em Extjs com DWR e hoje domina e é talvez o maior conhecedor da união desses Frameworks no estado.</p>
<p>Agradecimentos especiais aos diretores Evando Chaves e Marcelo Meirelles que investiram nessa solução e tiveram a sagacidade de sair na frente da concorrência entendendo que software funcionando é mais importante do que processos bonitos e pomposos, afinal o barco não chega na frente por causa do tambor e sim dos remadores. A Insystem está de parabéns por ter enfrentado todas as correntes contrárias e ter chegado a essa vitória investindo e apostando no fator humano como responsável para a vitória.</p>
<p>Esse é um Case que entrou para a história, estamos procurando outra solução semelhante na saúde pública do Brasil e até agora não encontramos nada.</p>
<p>Orgulhoso por participar dessa conquista.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2010/03/07/transparencia-inedita-na-saude-publica/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>3º Encontro XPCE &#8211; 2º Palestra confirmada</title>
		<link>http://www.milfont.org/tech/2009/09/21/3-encontro-xpce-2-palestra-confirmada/</link>
		<comments>http://www.milfont.org/tech/2009/09/21/3-encontro-xpce-2-palestra-confirmada/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 11:29:35 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Behaviour Driven Development]]></category>
		<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Melhores práticas]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[teste]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[xpce]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[behaviour driven development]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[testes]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=782</guid>
		<description><![CDATA[A grade foi finalizada com a confirmação da segunda palestra para o evento com um profissional experiente falando e demonstrando na prática como desenvolver com Rspec e Cucumber seguindo uma moderna abordagem chamada Behaviour Driven Development. Palestra: BDD prático com Cucumber, Selenium e RSpec Resumo: Palestra na forma de &#8220;hands on&#8221; com a construção de [...]]]></description>
			<content:encoded><![CDATA[<p>A grade foi finalizada com a confirmação da segunda palestra para o evento com um profissional experiente falando e demonstrando na prática como desenvolver com Rspec e Cucumber seguindo uma moderna abordagem chamada Behaviour Driven Development.</p>
<p><strong>Palestra: </strong><strong>BDD prático com Cucumber, Selenium e RSpec</strong></p>
<p><strong>Resumo:</strong> Palestra na forma de &#8220;hands on&#8221; com a construção de uma aplicação utilizando conceitos de BDD. Outside in development visto na prática através da construção e automação de user stories com Cucumber + Selenium e descrição de comportamento com RSpec e Remarkable</p>
<p><strong>Palestrante: Jefferson Jean Martins Girão</strong><br />
Desenvolvedor no Grupo Tubform (<a href="http://www.grupotubform.com.br/" target="_blank">http://www.grupotubform.com.br</a>) atualmente trabalhando na migração de um ERP industrial de MS FoxPro para Ruby on Rails e Javascript com EXTjs. Tem 4 anos de experiência em desenvolvimento de software já tendo passado por áreas como automação comercial, terceiro setor e gestão pública municipal.</p>
<p>Informações sobre o evento:</p>
<h2>Título: 3º Encontro XPCE &#8211; Comunidade eXtreme Programming do Ceará</h2>
<h2>Local: Faculdade FA7</h2>
<h2>Data: 24 de Outubro</h2>
<h2>Agenda</h2>
<ol>
<li>08:30 as 09:30 &#8211; BDD prático com Cucumber, Selenium e RSpec &#8211; Jefferson Girão</li>
<li>09:30 as 10:00 &#8211; Intervalo</li>
<li>10:00 as 11:00 &#8211; Automação de Testes Funcionais de Software com Selenium &#8211; Fabrício Lemos</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/09/21/3-encontro-xpce-2-palestra-confirmada/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qualidade Interna vs Qualidade Externa</title>
		<link>http://www.milfont.org/tech/2009/09/17/qualidade-interna-vs-qualidade-externa/</link>
		<comments>http://www.milfont.org/tech/2009/09/17/qualidade-interna-vs-qualidade-externa/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 13:07:21 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Behaviour Driven Development]]></category>
		<category><![CDATA[Engenharia de Software]]></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[teste]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[scrumbut]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Test Driven Development]]></category>
		<category><![CDATA[testes]]></category>
		<category><![CDATA[xpce]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=764</guid>
		<description><![CDATA[Processos de desenvolvimento de software são quase todos iguais em termos de práticas e todos podem assumir práticas novas de outros processos, até cascata pode aplicar qualquer prática de XP e Scrum em seu modelo naturalmente. O que diferencia esses processos não são as práticas, são os valores. O problema é que entender, compreender e [...]]]></description>
			<content:encoded><![CDATA[<p>Processos de desenvolvimento de software são quase todos iguais em termos de práticas e todos podem assumir práticas novas de outros processos, até cascata pode aplicar qualquer prática de XP e Scrum em seu modelo naturalmente.</p>
<p>O que diferencia esses processos não são as práticas, são os valores. O problema é que entender, compreender e adotar valores é algo subjetivo que varia de pessoa para pessoa por mais que se tenha princípios bem definidos que conectem as práticas a esses valores.</p>
<p>Diante disso, nenhum processo garante que seu projeto será um sucesso por estar o seguindo, mesmo que seja &#8220;By The Book&#8221;.</p>
<p>Há uma preocupação com o chamado Scrumbut, mas eu já vejo e vi projetos Scrum que não são Scrumbut e mesmo assim o software produzido, por mais ágil que seja, não tem qualidade e no primeiro refactoring você já entra no prejuízo similar a um software desenvolvido em Cascata.</p>
<p>Fato é que esses valores e princípios não garantem software com código coeso, desacoplado, limpo, claro e facilmente lido, ou seja, com qualidade interna.</p>
<p>Hoje minha preocupação em todos os projetos é a qualidade interna do software, não importa que metodologia seja adotada. Qualidade interna garante que o software tem boa saúde e é fácil de ser medida.</p>
<p>Saúde do software é o quão rápido e efetivo ele se recupera de mudanças e o quão limpo ele está de defeitos. Para se recuperar de mudanças o software precisa ser limpo e claro, ser facilmente entendível e lido.</p>
<p>Livre de defeitos é ter uma cobertura de testes que explorem e machuquem o código até descobrir falhas que passam despercebidas.</p>
<p>A grande maioria dos processos se preocupa mais com a qualidade externa do que a interna. Não importa se você faz reuniões em pé, tenha o cliente presente ou faça Scrumban ou até mesmo que você esteja entregando software rápido, nada disso vai garantir qualidade e que não vá ter prejuízo no futuro.</p>
<p>Vender qualidade externa tem um apelo comercial fácil porque você não precisa comprovar a qualidade do software e sim do processo, o discurso é sempre mais elegante do que falar em código, principalmente para alta gerência e burocratas, tanto é que todos os modelos de qualidade reconhecidos avaliam o processo e não o produto.</p>
<p>CMMi, ISO ou seja lá que for, não garantem que o produto será de qualidade e sim que o processo seja e se pararmos para pensar um momento, o processo realmente é de qualidade, temos um conjunto de métodos eficazes para produzir&#8230; processo e não produto.</p>
<p>Um exemplo de qualidade interna de um software são os testes automáticos em suas diversas nuances como unitários, aceitação, integração e funcional, mas não apenas isso, métricas de coesão, cobertura, LOC, complexidade e tantas outras.</p>
<p>No Maré de Agilidade eu fiz questão de enfatizar:</p>
<blockquote><p>&#8220;Não importa que processo você siga, se é ágil ou não, se você não faz testes de Software vocês está errado em todos.&#8221;</p></blockquote>
<p>Não existe um software sem bateria de testes automáticos com qualidade, isso é lenda. Em mais de 10 anos de profissão o que tenho notado é que a grande maioria, senão todos, são fortemente acoplados e de baixa coesão como consequência da falta de testes. Aplicar testes nesses softwares é uma tarefa quase impossível e proibitiva em relação a custos, sai mais barato fazer um software novo.</p>
<p>Outra coisa que falei no Maré de Agilidade foi:</p>
<blockquote><p>&#8220;Não seja ágil, seja o melhor possível, porque ao procurar ser o melhor você invariavelmente vai se deparar com práticas que o tornam melhor e aí você se tornará ágil&#8221;.</p></blockquote>
<p>Assim como o lema da Rossi: &#8220;Armas não matam pessoas, pessoas matam pessoas&#8221; podemos induzir que: Processos não desenvolvem software, pessoas desenvolvem software!</p>
<p>Ao trabalhar com pessoas, precisamos entender que modelos de negócios como software são de terceira onda [Alvin Toffler aqui] e não da segunda onda [industrialismo]. Qualquer analogia com modelos de segunda onda provocará insuficiência no trabalho dessas pessoas [por isso Lean faz tanto sucesso hoje] e elas precisam estarem motivadas para produzir qualidade interna, coisa que o trabalho sobre qualidade externa não produz.</p>
<p>Esse tema sobre pessoas e processos [como homem/hora] será escrito em outro artigo.</p>
<p>Resumo desse artigo é: Pessoas são responsáveis por produzirem qualidade interna ao produto e não processo, invista nelas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/09/17/qualidade-interna-vs-qualidade-externa/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Cobertura do Maré de Agilidade</title>
		<link>http://www.milfont.org/tech/2009/08/12/cobertura-do-mare-de-agilidade/</link>
		<comments>http://www.milfont.org/tech/2009/08/12/cobertura-do-mare-de-agilidade/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 01:27:01 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Behaviour Driven Development]]></category>
		<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Maré de Agilidade]]></category>
		<category><![CDATA[Melhores práticas]]></category>
		<category><![CDATA[mercado]]></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>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=737</guid>
		<description><![CDATA[Ainda na ressaca do Maré de Agilidade &#8211; Fortaleza, vou indexar toda a cobertura nesse post, se você conhece mais conteúdo sobre o evento, por favor me avise. Fotos http://picasaweb.google.com.br/lucianobeserra/CursoCaelum http://picasaweb.google.com.br/cmilfont/CursoCaelumRR11 http://picasaweb.google.com.br/handersonbf/MareDeAgilidade http://picasaweb.google.com/maredeagilidade/SwellFortalezaMinicursos http://picasaweb.google.com/maredeagilidade/SwellFortalezaPalestras http://picasaweb.google.com/maredeagilidade/SwellFortalezaConfraternizacoes http://www.manoelpimentel.com/fotos_eventos/72157622015680086/1 Twitter http://twitter.com/#search?q=maredeagilidade Posts http://agiletips.blogspot.com/2009/09/big-agile-wave-in-brazil.html http://pauloigor.blogspot.com/2009/08/mare-de-agilidade-em-fortaleza.html http://www.natanaelpantoja.com/tech/?p=299 http://felipebviana.wordpress.com/2009/08/10/mare-de-agilidade-fortaleza/ http://ialis.wordpress.com/2009/08/09/mais-agilidade-por-aqui/ http://www.handersonfrota.com.br/triadworks-no-mare-de-agilidade/ http://www.milfont.org/tech/2009/08/05/mare-de-agilidade/ http://henriquegogo.wordpress.com/2009/08/04/mare-de-agilidade-em-fortaleza/ http://www.cearaonrails.org/2009/07/29/esta-querendo-ir-ao-mare-de-agilidade-que-tal-concorrer-a-algumas-cortesias/ http://blog.seatecnologia.com.br/2009/07/20/mare-de-agilidade-e-oxente-rails http://iviablog.blogspot.com/2009/07/fortaleza-e-palco-para-o-evento-mare-de.html http://www.igocoelho.com.br/2009/07/14/promocao-para-o-mare-de-agilidade/ http://www.fa7.edu.br/ypiranga/noticia/noticia.php?id=848 http://www.fernandoquadro.com.br/html/2009/07/13/evento-mare-de-agilidade-2009/ http://www.eventosdeti.com.br/2009/07/mare-de-agilidade-fortaleza/ http://www.cejug.org/pages/viewpage.action?pageId=40632324 [...]]]></description>
			<content:encoded><![CDATA[<p>Ainda na ressaca do <a href="http://www.maredeagilidade.com.br/">Maré de Agilidade</a> &#8211; Fortaleza, vou indexar toda a cobertura nesse post, se você conhece mais conteúdo sobre o evento, por favor me avise.</p>
<h2>Fotos</h2>
<p><a href="http://picasaweb.google.com.br/lucianobeserra/CursoCaelum">http://picasaweb.google.com.br/lucianobeserra/CursoCaelum</a><br />
<a href="http://picasaweb.google.com.br/cmilfont/CursoCaelumRR11">http://picasaweb.google.com.br/cmilfont/CursoCaelumRR11</a><br />
<a href="http://picasaweb.google.com.br/handersonbf/MareDeAgilidade">http://picasaweb.google.com.br/handersonbf/MareDeAgilidade</a><br />
<a href="http://picasaweb.google.com/maredeagilidade/SwellFortalezaMinicursos">http://picasaweb.google.com/maredeagilidade/SwellFortalezaMinicursos</a><br />
<a href="http://picasaweb.google.com/maredeagilidade/SwellFortalezaPalestras">http://picasaweb.google.com/maredeagilidade/SwellFortalezaPalestras</a><br />
<a href="http://picasaweb.google.com/maredeagilidade/SwellFortalezaConfraternizacoes">http://picasaweb.google.com/maredeagilidade/SwellFortalezaConfraternizacoes</a><br />
<a href="http://www.manoelpimentel.com/fotos_eventos/72157622015680086/1">http://www.manoelpimentel.com/fotos_eventos/72157622015680086/1</a></p>
<h2>Twitter</h2>
<p><a href="http://twitter.com/#search?q=maredeagilidade">http://twitter.com/#search?q=maredeagilidade</a></p>
<h2>Posts</h2>
<p><a href="http://agiletips.blogspot.com/2009/09/big-agile-wave-in-brazil.html">http://agiletips.blogspot.com/2009/09/big-agile-wave-in-brazil.html</a><br />
<a href="http://pauloigor.blogspot.com/2009/08/mare-de-agilidade-em-fortaleza.html">http://pauloigor.blogspot.com/2009/08/mare-de-agilidade-em-fortaleza.html</a><br />
<a href="http://www.natanaelpantoja.com/tech/?p=299">http://www.natanaelpantoja.com/tech/?p=299</a><br />
<a href="http://felipebviana.wordpress.com/2009/08/10/mare-de-agilidade-fortaleza/">http://felipebviana.wordpress.com/2009/08/10/mare-de-agilidade-fortaleza/</a><br />
<a href="http://ialis.wordpress.com/2009/08/09/mais-agilidade-por-aqui/">http://ialis.wordpress.com/2009/08/09/mais-agilidade-por-aqui/</a><br />
<a href="http://www.handersonfrota.com.br/triadworks-no-mare-de-agilidade/">http://www.handersonfrota.com.br/triadworks-no-mare-de-agilidade/</a><br />
<a href="http://www.milfont.org/tech/2009/08/05/mare-de-agilidade/">http://www.milfont.org/tech/2009/08/05/mare-de-agilidade/</a><br />
<a href="http://henriquegogo.wordpress.com/2009/08/04/mare-de-agilidade-em-fortaleza/">http://henriquegogo.wordpress.com/2009/08/04/mare-de-agilidade-em-fortaleza/</a><br />
<a href="http://www.cearaonrails.org/2009/07/29/esta-querendo-ir-ao-mare-de-agilidade-que-tal-concorrer-a-algumas-cortesias/">http://www.cearaonrails.org/2009/07/29/esta-querendo-ir-ao-mare-de-agilidade-que-tal-concorrer-a-algumas-cortesias/</a><br />
<a href="http://blog.seatecnologia.com.br/2009/07/20/mare-de-agilidade-e-oxente-rails">http://blog.seatecnologia.com.br/2009/07/20/mare-de-agilidade-e-oxente-rails</a><br />
<a href="http://iviablog.blogspot.com/2009/07/fortaleza-e-palco-para-o-evento-mare-de.html">http://iviablog.blogspot.com/2009/07/fortaleza-e-palco-para-o-evento-mare-de.html</a><br />
<a href="http://www.igocoelho.com.br/2009/07/14/promocao-para-o-mare-de-agilidade/">http://www.igocoelho.com.br/2009/07/14/promocao-para-o-mare-de-agilidade/</a><br />
<a href="http://www.fa7.edu.br/ypiranga/noticia/noticia.php?id=848">http://www.fa7.edu.br/ypiranga/noticia/noticia.php?id=848</a><br />
<a href="http://www.fernandoquadro.com.br/html/2009/07/13/evento-mare-de-agilidade-2009/">http://www.fernandoquadro.com.br/html/2009/07/13/evento-mare-de-agilidade-2009/</a><br />
<a href="http://www.eventosdeti.com.br/2009/07/mare-de-agilidade-fortaleza/">http://www.eventosdeti.com.br/2009/07/mare-de-agilidade-fortaleza/</a><br />
<a href="http://www.cejug.org/pages/viewpage.action?pageId=40632324">http://www.cejug.org/pages/viewpage.action?pageId=40632324</a><br />
<a href="http://leonardoeloy.com/2009/05/13/mare-de-agilidade-fortaleza/">http://leonardoeloy.com/2009/05/13/mare-de-agilidade-fortaleza/</a></p>
<h2>Slides</h2>
<p><a href="http://www.slideshare.net/seatecnologia/manifesto-20">http://www.slideshare.net/seatecnologia/manifesto-20</a><br />
<a href="http://www.slideshare.net/seatecnologia/minicurso-ruby-e-rails">http://www.slideshare.net/seatecnologia/minicurso-ruby-e-rails</a><br />
<a href="http://www.slideshare.net/seatecnologia/minicurso-de-testesonrails">http://www.slideshare.net/seatecnologia/minicurso-de-testesonrails</a><br />
<a href="http://www.slideshare.net/fabiokung/onde-mora-a-produtividade-do-ruby-on-rails">http://www.slideshare.net/fabiokung/onde-mora-a-produtividade-do-ruby-on-rails</a><br />
<a href="http://www.slideshare.net/manoelp/gesto-lean-para-o-desenvolvimento-de-softwaremanoel-pimentel-verso-30">http://www.slideshare.net/manoelp/gesto-lean-para-o-desenvolvimento-de-softwaremanoel-pimentel-verso-30</a><br />
<a href="http://www.slideshare.net/cmilfont/mare-de-agilidade-bdd-e-tdd">http://www.slideshare.net/cmilfont/mare-de-agilidade-bdd-e-tdd</a><br />
<a href="http://www.slideshare.net/brunopedroso/curso-xp">http://www.slideshare.net/brunopedroso/curso-xp</a></p>
<h2>Videos</h2>
<p><a href="http://www.youtube.com/watch?v=IG7QzUjl5TM">http://www.youtube.com/watch?v=IG7QzUjl5TM</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/08/12/cobertura-do-mare-de-agilidade/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Slides do Maré de Agilidade Fortaleza &#8211; 2009</title>
		<link>http://www.milfont.org/tech/2009/08/09/slides-do-mare-de-agilidade-fortaleza-2009/</link>
		<comments>http://www.milfont.org/tech/2009/08/09/slides-do-mare-de-agilidade-fortaleza-2009/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 11:57:15 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Behaviour Driven Development]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<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[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Test Driven]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[xpce]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[behaviour driven development]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[maredeagilidade]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[ruby rails]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[teste]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=735</guid>
		<description><![CDATA[Mare de Agilidade &#8211; BDD e TDD View more presentations from Christiano Milfont.]]></description>
			<content:encoded><![CDATA[<div style="width:425px;text-align:left" id="__ss_1832390"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/cmilfont/mare-de-agilidade-bdd-e-tdd" title="Mare de Agilidade - BDD e TDD">Mare de Agilidade &#8211; BDD e TDD</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=maredeagilidademilfont-090809062633-phpapp01&#038;stripped_title=mare-de-agilidade-bdd-e-tdd" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=maredeagilidademilfont-090809062633-phpapp01&#038;stripped_title=mare-de-agilidade-bdd-e-tdd" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<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/08/09/slides-do-mare-de-agilidade-fortaleza-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

