{"id":26,"date":"2007-06-18T22:22:42","date_gmt":"2007-06-18T21:22:42","guid":{"rendered":"http:\/\/www.dtsato.com\/blog\/default\/Agile\/XP\/?permalink=XP-2007-Dia-1.html"},"modified":"2007-06-18T22:22:42","modified_gmt":"2007-06-18T21:22:42","slug":"xp-2007-dia-1","status":"publish","type":"post","link":"https:\/\/www.dtsato.com\/blog\/2007\/06\/18\/xp-2007-dia-1\/","title":{"rendered":"XP 2007 &#8211; Dia 1"},"content":{"rendered":"<p>Apesar de ler e concordar com o <span class=\"nobr\"><a href=\"http:\/\/thiagoarrais.wordpress.com\">Thiago<\/a><\/span> que <span class=\"nobr\"><a href=\"http:\/\/thiagoarrais.wordpress.com\/2007\/04\/11\/blogs-diario-blogs-opiniao-e-minha-tentativa-como-entrevistador\">esse tipo de post<\/a><\/span> n\u00e3o \u00e9 o ideal, meu blog se encaixa nessa categoria a maioria das vezes, portanto por que n\u00e3o continuar mais um pouco? :-) Prometo tentar melhorar depois dessa s\u00e9rie. Al\u00e9m disso, sei que algumas pessoas v\u00e3o se beneficiar desses relatos (me incluo nessa lista, pois esse tipo de registro j\u00e1 me foi \u00fatil em outras ocasi\u00f5es e agora eu terei que escrever um relat\u00f3rio de qualquer jeito). Ent\u00e3o, aproveitem os meus coment\u00e1rios sobre a <span class=\"nobr\"><a href=\"http:\/\/www.xp2007.org\">XP 2007<\/a><\/span>, diretamente de Como, na It\u00e1lia.<\/p>\n<h3 class=\"heading-1-1\">Selling: How to Effectively Communicate the Value of Agility? &#8211; Joshua Kerievsky<\/h3>\n<p class=\"paragraph\"\/>Quem nunca teve problemas &#8220;vendendo&#8221; ou apresentando algumas das pr\u00e1ticas \u00e1geis para outras pessoas? Na <span class=\"nobr\"><a href=\"http:\/\/www.agilcoop.org.br\">AgilCoop<\/a><\/span> eu me vi nessa situa\u00e7\u00e3o diversas vezes: <i class=\"italic\">&#8220;Programa\u00e7\u00e3o Pareada? Metade da Produtividade?&#8221;<\/i>, <i class=\"italic\">&#8220;Parar para escrever testes e refatorar? N\u00e3o posso parar, preciso entregar novas funcionalidades!&#8221;<\/i>, e por a\u00ed vai. Por causa dessas e outras pr\u00e9-concep\u00e7\u00f5es (n\u00e3o estou dizendo preconceito, muitas vezes eles s\u00e3o infudados), muitas pessoas resistem a mudan\u00e7as.<\/p>\n<p class=\"paragraph\"\/>No tutorial, Joshua, fundador da <span class=\"nobr\"><a href=\"http:\/\/www.industriallogic.com\">Industrial Logic<\/a><\/span> e escritor do \u00f3timo livro <span class=\"nobr\"><a href=\"http:\/\/www.amazon.com\/exec\/obidos\/redirect?link_code=as2&#38;path=ASIN\/0321213351&#38;tag=danilosato-20&#38;camp=1789&#38;creative=9325\">Refactoring to Patterns<\/a><\/span> (que, por sinal, estou lendo agora), nos fez passar pela experi\u00eancia da mudan\u00e7a atrav\u00e9s de uma pequena simula\u00e7\u00e3o, mostrando como mudar \u00e9 anti-natural para as pessoas e como geralmente associamos mudan\u00e7a com a perda de alguma coisa (ao inv\u00e9s de ganho). Uma das discuss\u00f5es foi sobre a <span class=\"nobr\"><a href=\"http:\/\/stevenmsmith.com\/articles\/satir_change_model.htm\">curva de mudan\u00e7as<\/a><\/span> de <span class=\"nobr\"><a href=\"http:\/\/en.wikipedia.org\/wiki\/Virginia_Satir\">Virginia Satir<\/a><\/span>, que diz que toda mudan\u00e7a leva um tempo para surtir efeito, passando por uma fase de caos antes de atingir um novo patamar, melhor que o anterior:<\/p>\n<p class=\"paragraph\"\/><a href=\"http:\/\/www.flickr.com\/photos\/dtsato\/565934876\"><img loading=\"lazy\" decoding=\"async\" class=\"flickr_photo\" src=\"http:\/\/farm2.static.flickr.com\/1110\/565934876_6fc0334c90_m.jpg\" width=\"160\" height=\"240\" alt=\"Virginia Satir Change Curve\"\/><\/a><\/p>\n<p class=\"paragraph\"\/>Atrav\u00e9s de algumas hist\u00f3rias sobre vendas bem e mal sucedidas, ele apresentou algumas das caracter\u00edsticas de uma boa venda:<\/p>\n<ul class=\"star\">\n<li><b class=\"bold\">Venda apenas o necess\u00e1rio<\/b>: Isso inclui conhecer muito bem o problema e o contexto do seu cliente. Muitas vezes a solu\u00e7\u00e3o para um problema pode ser obtida com custo reduzido se o verdadeiro problema \u00e9 identificado. Quando a \u00fanica ferramenta dispon\u00edvel \u00e9 um martelo, todos os problemas se parecem com um prego.<\/li>\n<li><b class=\"bold\">Venda riscos<\/b>: ao inv\u00e9s de enfatizar os benef\u00edcios de uma pr\u00e1tica ou outra, discuta com os interessados quais os riscos associados a n\u00e3o implement\u00e1-las.<\/li>\n<li><b class=\"bold\">Compartilhe experi\u00eancias<\/b>: um gerente ou executivo n\u00e3o vai entender os benef\u00edcios dos testes automatizados, pois essa n\u00e3o \u00e9 a linguagem que ele entende. Procure compartilhar v\u00eddeos, fotos e experi\u00eancias de equipes que obtiveram sucesso, para que ele vivencie os benef\u00edcios.<\/li>\n<\/ul>\n<p>Diversos outros assuntos e hist\u00f3rias foram compartilhados nesse tutorial, al\u00e9m de algumas boas recomenda\u00e7\u00f5es de leitura: <span class=\"nobr\"><a href=\"http:\/\/www.amazon.com\/exec\/obidos\/redirect?link_code=as2&#38;path=ASIN\/1587990660&#38;tag=danilosato-20&#38;camp=1789&#38;creative=9325\">Selling the Invisible<\/a><\/span> e <span class=\"nobr\"><a href=\"http:\/\/www.amazon.com\/exec\/obidos\/redirect?link_code=as2&#38;path=ASIN\/0932633013&#38;tag=danilosato-20&#38;camp=1789&#38;creative=9325\">The Secrets of Consultancy<\/a><\/span> (esse eu j\u00e1 ouvi falar muito bem em diversos outros lugares).<\/p>\n<h3 class=\"heading-1-1\">Coder&#39;s Dojo: Acceptance-Test Driven Development in Python &#8211; Emily Bache and Geoff Bache<\/h3>\n<p class=\"paragraph\"\/>Nessa apresenta\u00e7\u00e3o, em formato de <span class=\"nobr\"><a href=\"http:\/\/www.codingdojo.org\">Dojo<\/a><\/span>, resolvemos parte de um problema do <span class=\"nobr\"><a href=\"http:\/\/www.rubyquiz.com\">Ruby Quiz<\/a><\/span> (Texas Hold&#39;em) em Python, usando uma varia\u00e7\u00e3o um pouco diferente de <span class=\"nobr\"><a href=\"http:\/\/www.dtsato.com\/blog\/default\/Agile\/XP\/?permalink=TDD-em-Combate-Parte-1.html&#38;smm=y\">TDD<\/a><\/span>, escrevendo os testes de aceita\u00e7\u00e3o antes. Nesse caso, o teste de aceita\u00e7\u00e3o final seria a sa\u00edda esperada do programa, conforme a <span class=\"nobr\"><a href=\"http:\/\/www.rubyquiz.com\/quiz24.html\">p\u00e1gina de descri\u00e7\u00e3o<\/a><\/span> no Ruby Quiz. Ao partir de cen\u00e1rios mais simplificados (por\u00e9m ainda de aceita\u00e7\u00e3o) e utilizando o <span class=\"nobr\"><a href=\"http:\/\/texttest.org\">TextTest<\/a><\/span> como ferramenta de teste, resolvemos parte do problema (infelizmente, o problema era grande demais para o tempo dispon\u00edvel). Algumas das minhas impress\u00f5es da experi\u00eancia:<\/p>\n<ul class=\"star\">\n<li>Como o exerc\u00edcio era relativamente simples comparado a um cen\u00e1rio real, os testes de aceita\u00e7\u00e3o, que escrev\u00edamos incrementalmente, eram muito parecidos com testes de unidade. Apesar disso, os exemplos ainda estavam na &#8220;linguagem de neg\u00f3cio&#8221; do poker. Isso pode ter confundido um pouco algumas pessoas da plat\u00e9ia que n\u00e3o tinham experi\u00eancia com TDD.<\/li>\n<li>Para quem tem experi\u00eancia com TDD os passos pareciam um pouco grandes demais, apesar de ainda pequenos. Muitas vezes precisamos implementar muita coisa para fazer um teste de aceita\u00e7\u00e3o passar. Uma discuss\u00e3o interessante que tive depois da sess\u00e3o, com o Emmanuel Gallot (fundador do <span class=\"nobr\"><a href=\"http:\/\/www.bossavit.com\/dojo\">Dojo de Paris<\/a><\/span>, o mais antigo Dojo em funcionamento) e os apresentadores, percebemos que existem duas abordagens para aplicar TDD: enquanto alguns preferem escrever diversos testes de aceita\u00e7\u00e3o para &#8220;pedir&#8221; por uma implementa\u00e7\u00e3o, outros preferem quebrar as necessidades que v\u00e3o surgindo ao longo do caminho, e aplicar TDD separadamente para cada parte antes de integrar tudo no cen\u00e1rio de aceita\u00e7\u00e3o inicial. A primeira abordagem tem a vantagem de conectar toda funcionalidade com um teste de aceita\u00e7\u00e3o, enquanto a segunda acaba gerando diversos passos intermedi\u00e1rios que, em muitas situa\u00e7\u00f5es, s\u00e3o mais f\u00e1ceis de acompanhar e fazem o design surgir da necessidade. Eu me identifiquei mais com a segunda abordagem, apesar de entender que \u00e9 poss\u00edvel seguir outro caminho.<\/li>\n<li>O <span class=\"nobr\"><a href=\"TextTest\">&#84;extTest<\/a><\/span> \u00e9 uma ferramenta de teste em Python baseada na compara\u00e7\u00e3o de texto ou, em outras palavras, um teste baseado em diffs da sa\u00edda do programa. Eu n\u00e3o conhecia a ferramenta e achei interessante duas pr\u00e1ticas aplicadas pelos apresentadores (que estavam seguindo a primeira das abordagens que apresentei acima): em primeiro lugar, a ferramenta permite salvar a sa\u00edda esperada de acordo com o que aconteceu (resultado da execu\u00e7\u00e3o do teste). Isso permite que voc\u00ea diga que o resultado do teste que acabou de falhar, na verdade est\u00e1 correto. A princ\u00edpio, isso me pareceu &#8220;roubar&#8221;, mas como a abordagem deles era diferente, permitiu que eles convivessem com a implementa\u00e7\u00e3o atual, podendo refatorar no verde (no final da sess\u00e3o, algumas pessoas disseram preferir uma cor amarela para essa situa\u00e7\u00e3o. Eu concordo). A segunda pr\u00e1tica \u00e9 a utiliza\u00e7\u00e3o de logs nos cen\u00e1rios de teste. Como a ferramenta se baseia na sa\u00edda de texto do programa, os apresentadores puderam testar passos intermedi\u00e1rios com logs que &#8220;explicam&#8221; o que o programa est\u00e1 fazendo. Eu pessoalmente batizei a t\u00e9cnica de printf-debugging automatizado :-)<\/li>\n<\/ul>\n<p>Bom, por hoje foi isso. Continuo com os relatos com o passar da semana. Se estiverem interessados em fazer alguma pergunta para algu\u00e9m importante aqui na confer\u00eancia, deixem um coment\u00e1rio que eu tentarei entrar em contato. Alguns dos nomes que podem interessar est\u00e3o dispon\u00edveis no <span class=\"nobr\"><a href=\"http:\/\/www.xp2007.org\/index.php?option=com_wrapper&#38;Itemid=88\">website da Confer\u00eancia<\/a><\/span>.<\/p>\n<p class=\"paragraph\"\/>\n","protected":false},"excerpt":{"rendered":"<p>Apesar de ler e concordar com o Thiago que esse tipo de post n\u00e3o \u00e9 o ideal, meu blog se encaixa nessa categoria a maioria das vezes, portanto por que n\u00e3o continuar mais um pouco? :-) Prometo tentar melhorar depois dessa s\u00e9rie. Al\u00e9m disso, sei que algumas pessoas v\u00e3o se beneficiar desses relatos (me incluo [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[6,14,19,24,72,82,94,95],"class_list":["post-26","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-agile","tag-change","tag-conference","tag-dojo","tag-selling","tag-tdd","tag-xp","tag-xp2007"],"_links":{"self":[{"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/posts\/26","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/comments?post=26"}],"version-history":[{"count":0,"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/posts\/26\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/media?parent=26"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/categories?post=26"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/tags?post=26"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}