<?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; TDD</title>
	<atom:link href="http://www.milfont.org/tech/tag/tdd/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 TDD com Javascript na FA7</title>
		<link>http://www.milfont.org/tech/2011/04/10/palestra-tdd-com-javascript-na-fa7/</link>
		<comments>http://www.milfont.org/tech/2011/04/10/palestra-tdd-com-javascript-na-fa7/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 22:33:23 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>
		<category><![CDATA[palestras]]></category>
		<category><![CDATA[Test Driven]]></category>
		<category><![CDATA[palestra]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Test Driven Development]]></category>
		<category><![CDATA[test first]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1223</guid>
		<description><![CDATA[Amanhã, 11/04/2011, palestrarei no evento &#8220;8.ª Jornada CETI &#8211; Cursos de Extensão em Tecnologia da Informação&#8221; na FA7, sede do BrazilJS. Titulo: Test Driven Development com Javascript Resumo Original:  Entenderemos que só TDD é o caminho e a luz da escrita de um bom software, será demonstrado como até em plataformas difíceis se pode praticar [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.milfont.org/tech/2011/04/10/palestra-tdd-com-javascript-na-fa7/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><p>Amanhã, 11/04/2011, palestrarei no evento &#8220;<a href="http://www.fa7.edu.br/jornadaceti/2011/">8.ª Jornada CETI &#8211; Cursos de Extensão em Tecnologia da Informação</a>&#8221; na <a href="http://www.fa7.edu.br/">FA7</a>, sede do <a href="http://braziljs.com.br/2011/#!/home">BrazilJS</a>.</p>
<p><strong>Titulo</strong>: Test Driven Development com Javascript<br />
<strong>Resumo Original</strong>:  Entenderemos que só TDD é o caminho e a luz da escrita de um  bom software, será demonstrado como até em plataformas difíceis se pode  praticar essa metodologia, admitir que testes em TDD é apenas um  benefício e não a causa, além de códigos e mais códigos.</p>
<p>Ah, será duas vezes:</p>
<h4>Manhã</h4>
<p><strong>Data:</strong> 11/04/2010, segunda-feira<br />
<strong>Horário:</strong> 07h30<br />
<strong>Local:</strong> Auditório do Curso de Direito</p>
<h4>Noite</h4>
<p><strong>Data:</strong> 11/04/2010, segunda-feira<br />
<strong>Horário:</strong> 19h<br />
<strong>Local:</strong> Auditório do Curso de Direito</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2011/04/10/palestra-tdd-com-javascript-na-fa7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Think.net</title>
		<link>http://www.milfont.org/tech/2011/03/30/think-net/</link>
		<comments>http://www.milfont.org/tech/2011/03/30/think-net/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 09:21:47 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Test Driven]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test Driven Development]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1207</guid>
		<description><![CDATA[Palestra sobre TDD na comunidade Dotnet amanhã, qual linguagem eu devo demonstrar TDD? Vamos lá, inscreva-se:]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.milfont.org/tech/2011/03/30/think-net/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><p>Palestra sobre TDD na comunidade Dotnet amanhã, qual linguagem eu devo demonstrar TDD?</p>
<p>Vamos lá, <a href="https://spreadsheets.google.com/viewform?hl=en&amp;formkey=dGwxd3hQaHlTNVpJbDNRTGlNdE9vbnc6MQ#gid=0">inscreva-se</a>:</p>
<p><a href="http://www.milfont.org/tech/wp-content/uploads/2011/03/266726997.jpg"></a><a href="http://www.dotnetbr.com/2011/03/29/evento-think-net/"><img class="alignleft size-full wp-image-1208" title="Think.net" src="http://www.milfont.org/tech/wp-content/uploads/2011/03/266726997.jpg" alt="" width="560" height="800" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2011/03/30/think-net/feed/</wfw:commentRss>
		<slash:comments>1</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>Na teoria, é você quem não conhece a prática</title>
		<link>http://www.milfont.org/tech/2009/09/18/na-teoria-e-voce-quem-nao-conhece-a-pratica/</link>
		<comments>http://www.milfont.org/tech/2009/09/18/na-teoria-e-voce-quem-nao-conhece-a-pratica/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 12:43:40 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[mercado]]></category>
		<category><![CDATA[CMMi]]></category>
		<category><![CDATA[Mps.Br]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Test Driven Development]]></category>
		<category><![CDATA[teste]]></category>
		<category><![CDATA[testes]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=776</guid>
		<description><![CDATA[O Dr Alan Kelon [ou quase dr., não sei se já terminou] com a arrogância clássica da academia deu uma aula de engenharia de software a esse pobre AMADOR SEM EDUCAÇÃO que vos escreve. Se eu fosse um novato, recém integrado na faculdade, sem base acadêmica para duvidar de um Dr. [ou quase] eu estaria [...]]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://buscatextual.cnpq.br/buscatextual/visualizacv.jsp?id=K4737108H3">Dr Alan Kelon</a> [ou quase dr., não sei se já terminou] com a arrogância clássica da academia <a href="http://alankelon.posterous.com/cmmi-testes-automaticos-pessoas-processo-e-qu">deu uma aula de engenharia de software</a> a esse pobre AMADOR SEM EDUCAÇÃO que vos escreve.</p>
<p>Se eu fosse um novato, recém integrado na faculdade, sem base acadêmica para duvidar de um Dr. [ou quase] eu estaria destruído com minha ignorância.</p>
<p>Esse é o temor que tenho da academia, a sua falta total de pé-no-chão ou conhecimento real daquilo que ensina, é o que me fez abandoná-la e nunca mais pisar por lá.</p>
<p>Tantas citações a obras importantes é típico da academia, mas o discurso que eu gostaria de ouvir não existe:</p>
<p>&#8220;Quando eu implantei CMMi na XPTO&#8230;&#8221;</p>
<p>&#8220;Quando eu trabalhava com RUP, nós&#8230;&#8221;</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;"><span class="profile_header_username">Alan Kelon</span></div>
<h2>Na prática a teoria é outra</h2>
<p>Caro Dr., eu estudei muito sobre isso, li todos esses documentos e até cheguei já a acreditar que eram válidos para garantir a qualidade de um produto. Claro, isso no início desse século quando eu era estagiário e sem conhecimento real.</p>
<p>Depois de passar por implantação de CMMi mais de uma vez, ISO e Mps.Br, foi que aprendi o valor da teoria e como aquilo que está escrito não reflete a realidade na &#8220;engenharia de software&#8221;.</p>
<p>Talvez o que mais me marcou em verificar que não existe engenharia de software [ou ela é ainda muito incipiente] foi ter participado de avaliações ISO em outros setores como indústria, imobiliária e serviços. Fica evidente para todo mundo que a avaliação nesses setores é de processo e não de produto e serviço porque eles tem métricas reais e aplicáveis em suas industrias.</p>
<p>Quando CMMi ou ISO falam em qualidade de produto eles não dizem como fazer e sim o que fazer, essa é a diferença básica entre processo e produto, caro Dr.</p>
<p>Essa bobagem semântica  faz toda a diferença, quando eu avalio a qualidade de um produto como uma garrafa PET, existem métricas reais para testar a qualidade [como por exemplo durabilidade], existe um processo normatizado por órgãos [como ANATEL, ANVISA, e tantos outros] que garantem a qualidade mínima do produto ou serviço.</p>
<p>Esse foi o seu primeiro erro conceitual, dizer que tem que fazer é diferente de dizer &#8220;como&#8221; tem que fazer. &#8220;O que&#8221; é processo, DR. &#8220;Como&#8221; é produto, Dr.</p>
<h2>Testes de Software</h2>
<p>Vou fazer um mea-culpa porque quando escrevo eu sempre esqueço que meus leitores não me conhecem e não podem advinhar o que fica nas entrelinhas, eu não gosto de citar referências por preguiça de sair catalogando nomes de livros e autores [só quando lembro na integra de cabeça e acho importantissimo] e espero que as pessoas não acreditem em uma só linha sem verificar. Como vão verificar, eles acham a referência por si só, não preciso colocar bibliografia nos meus textos.</p>
<p>Esse trecho fica evidente que falho por omissão:</p>
<blockquote><p><span>Há controvérsias sobre testes automáticos garantirem qualidade interna, na verdade, não vejo onde há relação direta. Testes são sim de suma importância, independentemente de serem automatizados ou não, que fique claro, mas não garantem totalmente a qualidade, nem externa e muito menos interna (em breve explicarei o porquê), muito menos é o único método para se conseguir qualidade. Inspeções e revisão de software (e especificações associadas), juntamente com analisadores estáticos, são tão efetivos quanto testes na detecção de defeitos e tem possibilidade maior de melhorar a qualidade interna de produtos de software.</span></p></blockquote>
<p>Quando falo em testes, é óbvio para quem me conhece que estou me referindo sobretudo a TDD e também BDD. Testes por si só não garantem nada, nem sequer que as falhas estão cobertas.</p>
<p>O processo de TDD é que fortalece a qualidade interna do software porque ao você aplicar as práticas desse processo, você se torna minucioso na verificação de coesão, complexidade, acoplamento sem precisar de ferramentas de análise de código.</p>
<p>Eu não estou afirmando que não use ferramentas de análise de código, longe disso, só que essas ferramentas não verificam qualidade real no código, no máximo elas avaliam erros clássicos e mau cheiro no código. É perfeitamente possível escrever um código horroroso e ilegível e passar por todas as ferramentas de análise de código facilmente, isso acontece na prática no cotidiano.</p>
<h2>Como testar?</h2>
<blockquote><p><span>Antes de me dizer, responda-me: Você faz que tipo de teste? Unitário, integração, sistema, aceitação? Testes funcionais, estruturais ou baseados em defeitos? Para testes funcionais, você utiliza classes de equivalência, análise de valor limite, grafo causa-efeito e ainda tenta error-guessing? Para testes estruturais, você aplica grafos de fluxo de controle? Como define seu critério de cobertura de instruções, decisões, condições e caminhos? E quais das métricas já citadas ou quaisquer outras tem adotado? (Zhu, Hall and May, 1997) Se você não tiver uma boa estratégia para cada uma destas táticas, sinto muito informar-lhe, mas VOCÊ NÃO SABE TESTAR SOFTWARE.</span></p></blockquote>
<p><span>Eu não sigo as estratégias do Zhu &#8220;Who?&#8221;, eu sigo um AMADOR SEM EDUCAÇÃO chamado Kent Beck que não é nada científico mas funciona. Sim, eu faço testes unitários, integração, aceitação, stress, carga e o que der mais para fazer com o tempo disponível para entregar o software o mais saudável possível. As ferramentas de análise de cobertura são frágeis e deixam escapar a real cobertura, da qual temos que aplicar triangulação e outras práticas não-acadêmicas criadas por AMADORES SEM EDUCAÇÃO.</span></p>
<p><span>O bacana de tudo são esses números:</span></p>
<blockquote><p><span>Ou seja, mesmo que você tenha 100% de cobertura, você terá apenas garantia de detecção de defeitos em 25% dos casos (Glass, 2002).</span></p></blockquote>
<p><span>Minha vó dizia que os números quebrados tem mais credibilidade, se fosse pelo menos um 25, 37%&#8230; vá lá.</span></p>
<blockquote><p><span>Não estou a par de nenhum estudo rigoroso que mostre relação positiva entre presença de testes automáticos e código mais coeso, desacoplado, limpo, claro e legível também. </span></p></blockquote>
<p>Dr. o mundo não vive de Papers apenas, saia da academia e visite uma empresa que faça TDD e outra que não, o senhor avaliará por si só. Alias, quem deveria fazer esses estudos era a academia, não? Como farão se não saem às ruas?</p>
<blockquote><p><span>Caso alguém tenha, por favor, entre em contato.<span> </span>Gostaria de saber também, se possível, quais processos preocupam-se com qualidade externa em detrimento de qualidade interna. Seriam os processos ágeis?</span></p></blockquote>
<p><span>Todos os processos avaliam qualidade externa pelo que escrevi acima.</span></p>
<p><span>O seguinte trecho quase me faz não responder esse artigo:</span></p>
<blockquote><p><span>Por fim, o PROJETO é a quarto e última variável necessária para construir software, porque planejamento e gerenciamento são nossas únicas armas para controlar a complexidade</span></p></blockquote>
<p><span>O que diabos complexidade tem a ver com planejamento e gerenciamento? </span></p>
<p><span>Desde quando voce planeja a complexidade de um software?</span></p>
<p><span>Fazendo notação matemática do algoritmo?</span></p>
<p><span>Desculpe, mas nem todo mundo tem o tempo do Dr. Knuth para entregar software, precisamos de verificação rápida e não notação matemática e não existe um mecanismo que faça isso antes de ter um software escrito.</span></p>
<blockquote><p><span>Novamente, o projeto pode ser tão detalhado e formal quanto se queira.</span></p></blockquote>
<p><span>Não, DR. O projeto não pode ser tão detalhado e formal quanto o queira, isso eu acreditava antes de fazer coisas reais e ficava apenas em cima de livros, se a engenharia de software realmente existisse, eu tinha mecanismos reais para fazer esse detalhamento, mas hoje esses mecanismos reais não existem.</span></p>
<p><span>Cada vez mais me convenço de que a academia está morta e não produz nada de real, apenas papers repetitivos de bobagens que ninguem lê. </span></p>
<p><span>Deveriam ter terminado a notação formal da orientação a objetos mas estão preocupados demais com &#8220;modelos de qualidade&#8221; [sic] que nunca avaliaram na prática e não fazem idéia de como mensurar.</span></p>
<p><span>Isso não é científico, Dr.<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/09/18/na-teoria-e-voce-quem-nao-conhece-a-pratica/feed/</wfw:commentRss>
		<slash:comments>22</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>
		<item>
		<title>Recomendação sobre TDD</title>
		<link>http://www.milfont.org/tech/2009/06/01/recomendacao-sobre-tdd/</link>
		<comments>http://www.milfont.org/tech/2009/06/01/recomendacao-sobre-tdd/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 11:05:25 +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[Test Driven]]></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[TDD]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Test Driven Development]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=644</guid>
		<description><![CDATA[O Bruno Pereira comentou em post passado sobre a dificuldade que ele teve em adotar TDD: &#8220;Já tentei algumas vezes escrever os testes unitários no começo, mas simplesmente prefiro a abordagem de escrever os testes posteriormente, preferencialmente acompanhando o desenvolvimento das funcionalidades de negócio.&#8221; Notei em diversas consultorias que isso é muito comum por diversos [...]]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://brunopereira.org/">Bruno Pereira</a> <a href="http://www.milfont.org/tech/2009/02/03/pair-programming-vs-code-review/#comment-2176">comentou em post passado</a> sobre a dificuldade que ele teve em adotar TDD:</p>
<blockquote><p>&#8220;Já tentei algumas vezes escrever os testes unitários no começo, mas simplesmente prefiro a abordagem de escrever os testes posteriormente, preferencialmente acompanhando o desenvolvimento das funcionalidades de negócio.&#8221;</p></blockquote>
<p>Notei em diversas consultorias que isso é muito comum por diversos motivos, o principal a meu ver é justamente entender como começa o código do teste, em dois extremos: se depois que definiu o fluxo de processo de negócio de alguma forma [como UML, <a href="http://www.c2.com/doc/crc/draw.html">CRC</a> ou mesmo apenas com UC] ou se já começa algum esboço em código sem ter discutido bem como funciona totalmente o negócio.</p>
<p>A primeira abordagem, definir todo o processo primeiro, deixa a grande maioria dos desenvolvedores confortáveis já que é algo tradicional que vinhamos fazendo, mas o problema é que invariavelmente descamba para <a href="http://en.wikipedia.org/wiki/Big_Design_Up_Front">BDUF</a>.</p>
<p>A segunda abordagem, que está ligada ao desenvolvimento iterativo e incremental, já deixa um sentimento de que &#8220;algo está faltando&#8221; em grande parte dos times que tenho trabalhado. A resistência maior é deixar um sentimento de que não preparamos a arquitetura adequadamente e essa pode sofrer um revés num futuro próximo, claro que isso é uma bobagem para quem conhece como TDD funciona, mas é algo comum que tenho notado e precisa ser desmistificado.</p>
<p>Note que não estou falando aqui do sistema inteiro, apenas uma funcionalidade, mesmo assim a mudança cultural de quebrar uma funcionalidade em tarefas e ir desenvolvendo com &#8220;<a href="http://improveit.com.br/xp/principios/passos_bebe">passos de bebê</a>&#8221; é algo que dificulta a adoção.</p>
<h3>Como sanar essas deficiências?</h3>
<p>Precisamos de uma forma que conversassemos sobre a funcionalidade inteira mas que me permita ir avançando e atualizando conforme eu vá entendendo melhor como funciona.</p>
<p>Tenho trabalhado essas deficiências nos últimos times que peguei com <a href="http://dannorth.net/introducing-bdd">BDD</a> [Behaviour Driven Development] , iniciando a escrita das histórias [descrição daquela funcionalidade na visão de uma pessoa] seguindo o modelo de template que o <a href="http://dannorth.net/whats-in-a-story">Dan North sugeriu</a>. O resultado é que os times avançaram porque eles notaram como iniciar satisfatoriamente com testes sem comprometer a velocidade do desenvolvimento.</p>
<p>O BDD nos trouxe os testes para o inicio de qualquer código, praticamente sem distinguir que se está testando antes e associado com outras práticas como &#8220;<a href="http://improveit.com.br/xp/praticas/programacao_par">Programação em Par</a>&#8221; facilitou a <a href="http://c2.com/cgi/wiki?UbiquitousLanguage">linguagem ubíqua</a> do time.</p>
<p>Independente se é ágil ou tradicional eu tenho notado uma deficiência na coleta de informações, seja como User Stories ou Use Cases, onde os analistas de negócio, ou seja lá como são chamados nos times, não sabem pensar em negócio. Uma das coisas mais ridículas que vejo é o sujeito explicar para seu time uma funcionalidade com base em um DER ou outra estrutura técnica, dizendo coisas como: &#8220;a tabela tal, associada a entidade x&#8221;.</p>
<p>Tenho tentado corrigir isso nos times que enfrento como princípio básico, antes de qualquer coisa eu tento disciplinar a pensarem em negócio. Faço exercícios simples como questioná-los com &#8220;esqueçam de qualquer termo técnico&#8221; e &#8220;como essa funcionalidade é no papel?&#8221; ou &#8220;se não tivesse computador, como fariam isso?&#8221;, perguntas simples para instigar o raciocínio sobre a funcionalidade. Após esse exercício, escrevemos essa história em um arquivo e partimos para sua implementação.</p>
<p>Em março desse ano eu palestrei no primeiro encontro da <a href="http://groups.google.com.br/group/xpce/">XPCE</a> sobre BDD, <a href="http://www.milfont.org/tech/2009/03/29/palestra-behaviour-driven-development/">vejam os slides</a>. Em termos de ferramentas você pode conferir como temos trabalhado em um projeto recente seguindo os posts do Jefferson Girão:</p>
<p>Parte 1 <a href="http://jefferson.eti.br/?p=96" target="_blank">http://jefferson.eti.br/?p=96</a><br />
Parte 2 <a href="http://jefferson.eti.br/?p=105" target="_blank">http://jefferson.eti.br/?p=105</a><br />
Parte 3 <a href="http://jefferson.eti.br/?p=139" target="_blank">http://jefferson.eti.br/?p=139</a></p>
<p>Enfim, acredito que BDD seja um caminho natural para adoção de TDD por seu time já que eles terão código de teste, antes de qualquer coisa, na forma de negócio e o TDD já florescerá quando forem testar o modelo criado ou sugerido pelo código BDD. Ainda tem uma vantagem adicional, terão a documentação do sistema executável e comprovável.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/06/01/recomendacao-sobre-tdd/feed/</wfw:commentRss>
		<slash:comments>7</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>Extreme Programming no Ceará</title>
		<link>http://www.milfont.org/tech/2009/03/08/extreme-programming-no-ceara/</link>
		<comments>http://www.milfont.org/tech/2009/03/08/extreme-programming-no-ceara/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 14:43:23 +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>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Test Driven]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[xpce]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test Driven Development]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=546</guid>
		<description><![CDATA[Em virtude da crescente adoção de metodologias ágeis no Ceará e a carência de informações sobre a situação real nas empresas assim como o mau conhecimento de profissionais sobre métodos e práticas, criei uma lista sobre XP, específica para o Ceará, afim de sanar essas principais dificuldades. A lista tem menos de um mês e [...]]]></description>
			<content:encoded><![CDATA[<p>Em virtude da crescente adoção de metodologias ágeis no Ceará e a carência de informações sobre a situação real nas empresas assim como o mau conhecimento de profissionais sobre métodos e práticas, criei uma lista sobre <a href="http://groups.google.com.br/group/xpce">XP, específica para o Ceará,</a> afim de sanar essas principais dificuldades.</p>
<p>A lista tem menos de um mês e já conta com cerca de 120 membros e uma boa movimentação, por volta de 500 emails, se mantivermos essa média seremos uma das mais movimentadas do Brasil.</p>
<p>A idéia é fortalecer o XP, mas não em detrimento de outras metodologias ágeis, pelo contrário, teremos sempre o prazer em discutir e divulgar outras iniciativas.</p>
<h2>Mas XP?</h2>
<p>Sim, XP porque tenho um carinho especial e por considerar que é a metodologia mais madura no Ceará.</p>
<p>Segundo dados do <a href="http://xpce.googlegroups.com/web/JOAO+BARROS+-+Artigo+MBA+em+Gerenciamento+de+Projetos.pdf?gda=CrXlm24AAAAFL2lML4BueXv7SFjVzG4Xxcg1olNHxdcLky8iivjTH7ByMy-n80bnR8nRGpZxUWlcKFh1aT5UvCbiADJmwcZ60pmOdp2raT-rULQyKCTQEVHnslpMnRRROBE3O7QtcLeBZNCXir3gl7c57VG3Km7D">artigo do João Barros</a> [membro do grupo], XP aparece empatado com Scrum com 30% de adoção, mas as experiências públicas mais conhecidas e profissionais mais experientes são com XP. Destaque para a <a href="http://www.fortesinformatica.com.br/">Fortes Informática</a> e o <a href="http://www.cejug.org/display/~tales">Clavius Tales</a> &#8211; confiram esse <a href="http://blog.improveit.com.br/articles/2007/08/10/improvecast-16-entrevista-clavius-tales-serie-experiencias-ageis">Podcast com ele</a>.</p>
<p>Nada impede discussões sobre outra metodologias, lembrando somente que o foco é XP. Se criqrem outros grupos eu terei o prazer de participar também, só não tenho tempo para administrar e focar várias iniciativas e pessoalmente prefiro XP por motivos que ficarão para um post futuro.</p>
<p>É interessante observar no artigo do João que já há uma crescente adoção por parte das principais empresas do Ceará &#8211; ele listou 24 das mais conhecidas e importantes do estado. Todo trabalho de pesquisa é uma fotografia de um momento e nos fornecem estatísticas de avaliação, pode parecer alguns dados muito otimistas, mas precisamos ter uma base para trabalhar as ações e direcionar os esforços.</p>
<p>É impressionante como o XP sem divulgação e apelo de marketing conseguiu empatar com Scrum e com modelos mistos cada qual com 30%. Outro fato interessante é a baixa representação de outros modelos fora Scrum e XP.</p>
<h2>Porque do Ceará?</h2>
<p>O Anderson Fabiano <a href="http://twitter.com/andersonf_78/status/1215414463">fez uma pergunta</a> pertinente no twitter:</p>
<blockquote><p><span class="status-body"><span class="entry-content">@<a href="http://twitter.com/cmilfont">cmilfont</a> me juntei ao grupo. perguntinha basica: qual o ponto de limitar o grupo geograficamente (ce) na era da internet?</span><span class="meta entry-meta"><a class="entry-date" rel="bookmark" href="http://twitter.com/andersonf_78/status/1215414463"><span class="published">12:42 PM Feb 16th</span></a> <span>from web</span> <a href="http://twitter.com/cmilfont/status/1215408766">in reply to cmilfont</a></span></span></p></blockquote>
<p>E ele mesmo deu uma boa definição:</p>
<blockquote><p><span class="status-body"><span class="entry-content">@<a href="http://twitter.com/cmilfont">cmilfont</a> saquei. +- o principio do craigslist (de 4 anos atras)&#8230; limitar para conquistar <img src='http://www.milfont.org/tech/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span><span class="meta entry-meta"><a class="entry-date" rel="bookmark" href="http://twitter.com/andersonf_78/status/1215430471"><span class="published">12:48 PM Feb 16th</span></a> <span>from web</span> <a href="http://twitter.com/cmilfont/status/1215423987">in reply to cmilfont</a></span></span></p></blockquote>
<p>Tenho notado que grupos menores e com pessoas que se conhecem tem melhores discussões porque inibe mais flamewars e ataques pessoais devido ao conhecimento do &#8220;humor&#8221; nos emails de caras conhecidas.</p>
<p>Criar uma lista exclusiva e focada no estado ajuda a direcionar esforços, não só discussões. Um dos grandes objetivos da lista &#8211; grupo- é fortalecer a adoção de XP e para tanto organizaremos eventos e pesquisas nesse intuito.</p>
<p>Já dei início ao <a href="http://spreadsheets.google.com/viewform?formkey=cEJnLWd2SmlXZGtIRTlkSi1YZGtEZGc6MA..">censo ágil de 2009 com um questionário</a> para colher informações macros sobre adoção de metodologias ágeis, após essa primeira pesquisa entrerei mais a fundo em questões específicas. A idéia é realizar um censo a cada semestre.</p>
<p>Enfim, vale a pena a participação mesmo de quem não é do estado, as <a href="http://groups.google.com.br/group/xpce">discussões</a> estão &#8220;quentes&#8221; e boas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/03/08/extreme-programming-no-ceara/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Pair Programming vs. Code Review</title>
		<link>http://www.milfont.org/tech/2009/02/03/pair-programming-vs-code-review/</link>
		<comments>http://www.milfont.org/tech/2009/02/03/pair-programming-vs-code-review/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 17:34:33 +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[Scrum]]></category>
		<category><![CDATA[Test Driven]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[Code Review]]></category>
		<category><![CDATA[FDD]]></category>
		<category><![CDATA[Pair Programming]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Test Driven Development]]></category>
		<category><![CDATA[teste]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=520</guid>
		<description><![CDATA[Uma das grandes brigas do momento entre FDD e XP seria sobre qual a melhor maneira de trabalhar em conjunto, os XPers sempre fizeram Pair Programming [PP daqui pra frente] e alegam que o processo de Code Review [CR daqui pra frente] já é algo intrínsico ao processo, já coberto pelas práticas como TDD e pelo próprio [...]]]></description>
			<content:encoded><![CDATA[<p>Uma das grandes brigas do momento entre FDD e XP seria sobre qual a melhor maneira de trabalhar em conjunto, os XPers sempre fizeram Pair Programming [PP daqui pra frente] e alegam que o processo de Code Review [CR daqui pra frente] já é algo intrínsico ao processo, já coberto pelas práticas como TDD e pelo próprio PP.</p>
<p>Existe uma diferença básica entre as duas formas, enquanto o PP trabalha com código em edição, a CR trabalha com código já pronto. Um é durante, o outro depois.</p>
<p>Como eu sou XPer, você deve pensar que vou escolher PP em detrimento a CR. Você está certo e errado.</p>
<p>PP é muito importante em um processo de desenvolvimento mas não é perfeito &#8211; como tudo nessa vida, existem sim GAPs encontrados em códigos, até porque não existiria Refactoring se não houvesse, isso é natural e esperado.</p>
<p>Uma prática bacana em um dos meus clientes [adoro escrever assim, parece que tenho vários clientes] foi a adoção de revisão de código entre a &#8220;troca de pares&#8221; [Moving People Around, uma prática do XP]. Isso já era natural mas na forma de uma espécie de Standup Meeting [prática do XP] com Brainstorm e dificilmente descia até o código, fizemos algo melhor:</p>
<p>Durante a troca dos pares, fizemos com que o navegador fosse trocado pelo condutor do mesmo par onde ele iria e revisariam o código do período anterior como prática institucionalizada. Os caras trocados revisariam o código anterior e discutiam entre os 4.</p>
<p>Dessa forma a oxigenação com uma nova mente [a terceira nesse caso] no mesmo código gerado consegue um ganho excepcional na cobertura dos testes, já pegamos várias coisas que passariam [principalmente em testes de integração] e evitamos voltar tarefa já concluída para refactoring.</p>
<p>Enfim, são eXperiências e nada de eXcepcional. Eu não tenho compromisso em agradar um ou outro, apenas a meu cliente e a única coisa que ele quer é software funcionando e saudável, para isso precisamos sempre evoluir as práticas adotadas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/02/03/pair-programming-vs-code-review/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

