CasadoCódigo Prefácio PrefácioporKlausWuestefeld Poucos são os momentos na vida em que ficamos sabendo de uma ideia e dizemos,nahora:“Estaideiavairevolucionaromundo.” AconteceucomigoquandovipelaprimeiravezoOrkut(quedescanseem paz). Caiu um raio na minha cabeça e eu disse: “Este negócio (rede social) vairevolucionaromundo.” Antes disso, em 1999, quando eu ainda chafurdava na burocracia do CMM e do Unified Process, um estagiário da minha empresa me mandou osprimeiroslinkssobreeXtremeProgramming(XP). Aprincípiomepareceubobagem,como“GoHorse”.Logovi,porém,que KentBeck,oautordeXP,easpessoasdiscutindoametodologianoprimeiro wikidomundoeramsériasesabiamdoqueestavamfalando. Eram,naver- dade,osestudiososdesoftwaremaissérios,embasadoseapaixonadosqueeu játinhavisto. Paraentenderoquefoi,paramim,veraspáginasdeXPnoprimeirowiki do mundo, imagine dois raios simultâneos caindo na sua cabeça: senti que tantoowikiquantoosmétodoságeisiriamrevolucionaroconhecimentoeo desenvolvimentodesoftware. Comecei a evangelizar XP pelo Brasil e palestrei em um evento de Java em Porto Alegre, em 2004. Estavam lá o Daniel e o Guilherme, coautores destelivro. CaiuumraionacabeçadeleseelescriaramogrupoXP-RS,que promoveumuitosencontrosdediscussãosobreoassunto. Agora,onzeanosdepois,escrevemestelivro,maisnecessárioquenunca. CanseidevertimestentandofazerScrumeentregandozerosoftwareem produção,durantemeses,sprintapóssprint.Canseidevertimescomquadros deKanbanlindosnaparedemascomtempodeentrega(lead-time)naordem i CasadoCódigo demeses. Éfácil,hoje,fazerumcursinhodefinaldesemanaqualquer,certificar-se emcharlatanismoágildesoftwareesairditandoregrinhasdecerimôniasque aequipededesenvolvimentodeveseguir. ModelosdegestãocomoScrumouKanban(prefiro)sãoúteisparaajudar aescolherashistóriascertasadesenvolvermas,nofimdascontas,oquefaz essashistóriassairdooutroladocomosoftwarerodandosembugsemprodu- çãoéacapacidadeededicaçãodaequipe,usandoboaspráticasdeartesania desoftware,comoasdestelivro. Sugiroàsequipesqueganhemfluência,quedominemXP“bythebook”, antesdeinventarmoda. Otimemaiságil,queproduziuosoftwaredemaior valor,noprazomaisapertado,nascondiçõesmaispoliticamenteadversas,do qualjáparticipei,foiumtimeondeaplicávamosXPàrisca.Pensemuitobem antesdedecidirquenãoprecisadedeterminadaprática. Quandotestarrecursoscarosoucomplicados,utilizeconstantesquesimu- lemocomportamentodessesrecursos(comestratégiasdedummy,stub,spy,fake emock). Nãoconfundaabrevidadedealgunsdeseusitens,comoessafrase,com faltadeimportância.Estelivroéricoeconciso.Cadaparágrafo,seexplorado, dariaoutrolivro. Jáviumaequipededezenasdeprogramadoresatrasarem meses seu projeto, por insistir em depender de ambientes de homologação complexosemvezdeseguiradicaacima. Outro exemplo: já vi uma equipe de uma empresa de software para o mercadofinanceirodesistirdeprogramaçãoemparessemsaberporque.Está numbreveparágrafodestelivroomotivo: Cuide do espaço físico, a mobília pode dificultar ficar lado a lado progra- mando(porexemploemmesasdecantoouemformatode‘L’).Osprogramado- resterãodoresnocorpodepoisdeumdiadeprogramaçãoemparescompouca ergonomia.Umadicaéadaptaroespaçofísico... Porondecomeçar?Éprecisoadotartodasaspráticasdeumavez? Se tiver que escolher alguma prática pra começar, escolha o teste auto- matizado. Testarsoftwaremanualmente,noséculo21,éantiético,comoum cirurgiãooperarsemlavarasmãos. Aprendaosconceitos,aessênciadaau- tomaçãodeteste. Nãopercatempotentandocontrolartelasprafazertestes. ii CasadoCódigo Separedatelatodocódigodenegócioseteste-odiretamente. Programação em pares junto com revezamento são práticas que encon- tramresistênciatantodosgestoresretranqueirosquantodealgunsmembros daequipemaistímidos(respeitar)ouacomodados(incentivar)masnãode- pendem de mais nada para ser implementadas. Já vi pareamento e reveza- mentotransformarumaequipedesmotivada,àbeiradeagressõesfísicas,em umaequipedereferênciadentrodesuaorganização. Porfim,évitalqueaequipeeseugestor,sehouver,reservemumtempo emtornodeumdia(projetonovo)adoisdias(projetocomlegadomacarrô- nico)porsemanacomautonomiaparaaequipeinvestiremmelhorarconti- nuamentesuaprópriaprodutividade,aprendendotécnicascomoTDDere- fatorandocódigo. Senãohouveressetempoalocadoeaequipeficarsócor- rendoatrásdeincêndiosdecurtoprazo,émelhorlargarolivroagoraporque elesóvaitrazerfrustração. Se,poroutrolado,houvertempoparamelhoria,leveestelivrocomoguia, torçaparacairumraionasuacabeçatambémeboasortenocaminho. AprendaaspráticasdeXP,domine-as,entreguesoftwaredocaralhoe,aí sim,adapte-asetranscenda. — Klaus Wuestefeld, pioneiro em eXtreme Programming no Brasil e Key- noteSpeakerdoAgileBrazil(2010) PrefácioporAlexandreFreire Se eu tivesse este livro que você tem em mãos na virada do milênio, e conhecesseaProgramaçãoeXtremanaépoca,provavelmentehojeseriami- lionário,porqueterialançadocomsucessoaprimeiraredesocialdomundo. Estava trabalhando em uma software house multinacional, baseada em Treviso,naItália,construindoumaredesocialdetimesdefuteboldevárzea paraaDiadora.Masfazíamosissotudousandoo“melhor”,emaisdifundido, processodedesenvolvimentodesoftware,oRUP. Issosignificaqueduranteos3anosemquegasteimeusuoresangue,cons- truindooincrívelsoftwaredestaredesocial,nuncativemosnenhumusuário, além da sócia que fazia demonstrações trimestrais para os diretores da Di- adora. E quando toda a diretoria mudou, e a empresa resolveu cancelar o projeto,foifácilfazê-lo,poisnãotinhasidolançado. iii CasadoCódigo Paramimfoiumaexperiênciamuitofrustrante,afinalcomminhaequipe tinha construído um software maravilhoso, uma rede social onde times de futeboldebairropoderiamcriarumapágina,postarfotos,conseguir“likes” deseusfãseatéorganizarcampeonatos.Eosoftwarefuncionavaqueerauma beleza,oupelomenosfuncionavanaminhamáquina. Eraomaiorprojetodaempresa,queacabouindoàfalênciaquandoper- deuessecliente. Deparei-mecomapergunta:Seráquenãoexisteumjeitomelhordefazer software?Deentregarmaisvalor,maisrápido,paraosnossosclientes?.Come- ceiasestudaroquenaépocaeramasmetodologias“leves”eresolvivoltarpara oBrasileparaafaculdade.Noanoseguinte,participeidaprimeiraturmado LaboratóriodeProgramaçãoeXtremadoIME/USP. E aí que minha vida de desenvolvedor de software mudou. Aprender e praticarProgramaçãoeXtremafoiummarcomuitoimportantenaminhacar- reira,eesperoquecomestelivro,sejaummarconasuatambém. Durantemuitosanosapósesseprimeiroencontro,pratiqueiaPrograma- çãoeXtremacomodefinidanoslivrosdoKentBeck.Comoserroseacertos, comeceiaentendercomoametodologiaeracompleta,ecomocadaparteera preciosa. Também aprendi a fazer algumas coisas bem difíceis muito bem, comoestimarempontos, sóparadescobrirnofinalquenãoprecisavareal- mentefazerisso! Mas na sua jornada, recomendo que não pule essa prática no começo, a sinergia entre as práticas de XP e o fato de que seus valores e princípios suportamtodooconjuntosãoumasdasrazõespelasquaismeapaixoneipor essametodologia. Hojeemdia,acomunidadeágiléforte,tempresençamarcantenoBrasil,e somosaindamaisextremos.Pegamosalgumaspráticasenosdesafiamoslevá- lasaindamaisaolimite!Comashistóriasdeusuárioeojogodoplanejamento evoluímos pra criar também o mapa de histórias. Com integração contínua partimosparafazerdeploycontínuo.Comprogramaçãoemparradicalizamos parafazerprogramaçãoemmultirão. Masalgumascoisaspermanecemparasemprevaliosas,comoasRetros- pectivas. Amelhortécnicaqueconheçoparaumaequipeseaprimorarcon- tinuamente. É tão universal que até já usei em outros contextos que não o iv CasadoCódigo desenvolvimentodesoftware. Se você for aprender só uma das metodologias ágeis, recomendo forte- mentequesejaaProgramaçãoeXtrema. Masexperimente-acompleta, per- cebendocomoosprincípiosevaloresapoiamaspráticas,equeestasmuitas vezessófuncionamporquedependemdasoutras.Éumametodologiaholís- tica,ondeasinergiacontamuito,ecomcertezavaimelhoraramaneiracomo vocêdesenvolvesoftware. Você tem em mãos um guia definitivo para começar sua jornada, apro- veitealeitura. —AlexandreFreire,DiretordeProdutosdaIndustrialLogiceKeynotedo AgileBrazil2014. PrefácioporPauloCaroli Desde2000,tenhoutilizado(eabusado)demetodologiaságeis.Aminha primeirasessãoemumaconferênciainternacionalfoinaOOPSLA2000,em que apresentei o resultado da minha tese de mestrado, algo sobre Orienta- çãoeObjetoseDesignPatterns.Apósminhaapresentação,fuifazertietagem comKentBeckporadmirá-lonosassuntosdesmalltalkedesignpatterns,e acabeicomprandoseunovolivrocomotítuloeXtremeProgrammingExplai- ned. Deu-seinícioumcaminhosemvolta–estavaexpostoeinfectadopela primeirademuitasmetodologiaságeis. NaquelaépocaeumoravanoValedoSilícioeestavatrabalhandoemuma start-up bem legal. Voltei empolgado da conferencia e logo mostrei o livro paraomeugerentedaépoca.Eleriuedisse“Extremeprogramming...please donotgetextremeonourcodebase.Beawareofourclientsanddeadlines”.O livroficounomeucubículo(naquelaépocaatéstart-upstinhamcubículos), edetemposemtemposeuomostravaparaalgumcolegadetrabalho. Testesunitáriosesolitários(somenteeuosliaeusava). Integraçãocon- tínuacommeuprópriocódigo(osoutrosdesenvolvedoresestavamemsuas branches).Eassimerammeusdiasdetrabalhoem2000e2001. Mas eu não estava sozinho. Além de Kent Beck, outros conhe- cidos estavam falando e escrevendo sobre suas experiências com XP. Ward Cunningham populava a C2wiki (http://c2.com/cgi/wiki? ExtremeProgrammingRoadmap) , enquanto Martin Fowler compartilhava v CasadoCódigo no seu site (http://martinfowler.com/articles/xp2000.html) . Mais desen- volvedores eram infectados, e compartilhavam suas experiências. E isso se alastrou até os dias de hoje, época em que XP é ensinado em faculdades, e muitasdesuaspráticassãovisíveisemtodosdepartamentosdeTI. Em2006,entreinaThoughtWorksetrabalheicompessoasqueparticipa- ramdoiníciodestemovimentoágil.Porexemplo,ouviashistóriasdoMartin sobreoprimeiroprojetoXP,oC3(ChryslerComprehensiveCompensation). Vivi e ouvi relatos de experiência sobre a implantações de XP ao redor do mundo. Em2008e2009constateiqueatéprojetosdeoutsourcingnaÍndia estavamusandoXP.Bah,maseuseguiareferenciandoaquelelivrode2000! Em2010,euajudeiatrazeraThoughtWorksparaoBrasil,abrindoseupri- meiroescritórioemPortoAlegre. Aescolhadacidadenãofoisomentepelo famosochurrasco,massimporadmiraçãoaomovimentodeXP,eaexcelente comunidadejáexistente. Conhecieaprendicomcadaumdosautoresdeste livro. Daniel, Dionatan, Rafael e Guilherme estão sempre compartilhando conhecimento.Nestaobra,compartilhamosvalores,práticaseprincípiosde XP. Com muito orgulho, informo que este livro é um resumo do que há de melhornomundoatualdedesenvolvimentodesoftware. Boaleitura, —PauloCaroli,cofundadoreagilecoachdaThoughtworksBrasil. vi CasadoCódigo Agradecimentos Antesdetudo,gostaríamosdeagradeceratodaacomunidadeágilbrasileira, queéumadasmaioresemaisparticipativasnomundo.Temosgrandeseven- tosemnossaáreademétodoságeiscomagilistasmuitoexperientesesomos gratos por isso. Obrigado por todas as trocas de experiências durante esses anosdeagilidadenoBrasil! ÀcomunidadedoantigoXP-RS,oatualGUMA-RS GrupodeUsuários deMétodosÁgeisdoRioGrandedoSul(saibamaisemhttp://www.guma-rs. org),onossomuitoobrigadoporserumgrandegrupofomentadordaagili- dadeedoeXtremeProgramming! Obrigado,emuito,aosnossosbetareadersJamileAlves,MaurícioAniche e Rodrigo Pinho! As opiniões e sugestões de vocês foram essenciais para a melhoriadolivro. ObrigadotambématodasaspessoasdaCasadoCódigo. Vocêsnosde- ramumexcelentesuporteesempreestiveramdispostosacontribuircomesta obra! AosagilistasKlausWuestefeld, AlexandreFreireePauloCaroli, anossa gratidãopelosadmiráveisprefácios! Anossosalunoseclientes,quenospermitempraticareaprenderemcon- junto,eavocêleitor,onossomuitoobrigadoporinteressar-senestetrabalho! Esperamosquealeituradestelivrosejaútileagradável!:-) DedicoestelivroaosdesenvolvedoresprofissionaisdoBrasil,quesepreocu- pamementregarsoftwaredequalidadeebuscamexcelênciatécnica!—Daniel Wildt Agradeçoatodosqueveemnosmétodoságeisumcaminhoparaummundo melhor!Dedicoestelivroaosmeuspaiseirmãos! —DionatanMoura vii CasadoCódigo Dedico à minha família: em especial, para meus pais (Paulo e Liberta) e paraminhaesposaefilha(JulianaeIsabella)! —GuilhermeLacerda AgradeçoàCasadoCódigopelaoportunidade,aoKlausWuestefeld,Ale- xandreFreireePauloCarolipelosprefáciosinspiradores,àVivianpeladedica- ção e paciência durante a revisão deste livro, aos meus amigos e parceiros de jornada,Daniel,DionataneGuilherme!AléméclarodaminhaesposaAlinee meufilhoRafaelHelmJunior,comelesaomeuladotudofazsentido.—Rafael Helm viii CasadoCódigo Sobre os autores DanielWildt Fundadorem2004doXP-RS GrupodeUsuáriosdeeXtremeProgramming doRS,quedepoissetransformounoGUMA-RS GrupodeUsuáriosdeMéto- dosÁgeisdoRioGrandedoSul.Desde2003,umpraticanteinteressadopelo desenvolvimentodecomunidades,organizações,equipesepessoasemtorno daagilidade. Trabalhaemprocessosdemelhoriadastécnicasdeengenharia desoftwareeprocessos,sempreembuscadesimplicidadeedoaprendizado. Ajudapessoasatornarem-semelhoresprofissionais,equipesacrescerempor meiodemelhoriacontínuaeprodutos/serviçosaseremformados. Alémda formaçãotécnica,possuiformaçãodeMasterTraineremProgramaçãoNeu- rolinguística. É CTO na uMov.me (http://umov.me) , coach/instrutor pela Wildtech (http://www.wildtech.com.br) e facilitador no Estaleiro Liberdade (http://www.estaleiroliberdade.com.br). DionatanMoura Coach ágil na Companhia de Processamento Dados do Estado Rio GrandeSul(PROCERGS),auxiliandonaentregademaiorvaloraocidadão por meio da agilidade e inovação. Professor visitante na pós-graduação da UniRitter Laureate International Universities. Mestre e bacharel em Ciên- ciadaComputaçãonaUFRGS.CoordenadordoGrupodeUsuáriodeMéto- dosAgeisdoRS(GUMA-RS)edoGrupodeUsuáriosJavadoRS(RSJUG). FoidesenvolvedorJavaporseteanos,ecoordenadordastrilhasJavadoTDC POA 2013 e 2014. Palestrante em eventos ágeis, como: Agile Brazil, TDC e XPConf; e possui as certificações: CSP, SAFe SA, PMP, CSM, PSM I, CSD, CSPO,OCPJP,CTFL,ITILeMPS-BR.PodeserencontradonoTwittercomo @dionatanmouraepossuiumblog:http://dionatanmoura.com. ix
Description: