SlideShare uma empresa Scribd logo
1 de 2
Baixar para ler offline
Coding By Example: Tornando-se um desenvolvedor
profissional
Guilherme Lacerda1
, Daniel Wildt2
1
UniRitter/Facensa/Wildtech/TJ-RS
2
uMov.me/Wildtech
guilhermeslacerda@gmail.com, dwildt@gmail.com
Resumo. Este tutorial procura discutir o perfil de um desenvolvedor profissio-
nal, a importˆancia de manter um c´odigo limpo al´em de pr´aticas e ferramentas
podem apoiar neste sentido. Para tanto, ´e proposto um exerc´ıcio focando em
desenvolvimento dirigido por testes, refatorac¸˜ao e baby steps, visando expor de
forma pr´atica os benef´ıcios dessa forma de trabalho.
1. Informac¸˜oes Gerais
Neste tutorial, ser´a apresentado como os princ´ıpios do Lean Software Development fa-
zem sentido na hora de desenvolver software. A partir destes princ´ıpios, ser´a apre-
sentado como a adoc¸˜ao de pr´aticas como refatorac¸˜ao [Fowler et al. 1999], padr˜oes
[Kerievsky 2004], integrac¸˜ao cont´ınua e testes [Beck 2002] podem ajudar a entregar
software com mais qualidade, principalmente atrav´es da escrita de um c´odigo mais
simples, limpo e, consequentemente, mais f´acil de manter [Hunt and Thomas 1999],
[Martin and Martin 2007], [Martin 2008]. Al´em disso, ser˜ao usados exemplos pr´aticos
de c´odigos sujos e como estes princ´ıpios e pr´aticas, com o apoio de algumas ferramentas,
ajudaram a limpar o c´odigo e deix´a-lo mais simples.
Este tutorial ´e direcionado para desenvolvedores, analistas, projetistas, gerentes
de neg´ocios, gerentes de projetos, l´ıderes de equipe. ´E necess´ario ter conhecimento em
pr´aticas ´ageis. Destina-se a participantes do CBSoft, mais especificamente dos eventos
SBES e SBLP. Os interessados em participar do tutorial dever˜ao levar seus laptops com
suas ferramentas de programac¸˜ao de sua preferˆencia (IDEs, linguagens, ferramentas de
teste de unidade) devidamente configuradas.
2. Estrutura e Mecˆanica
A base do Lean Software Development ´e o trabalho padronizado e o kaizen, que s˜ao
um dos primeiros passos para se chegar na padronizac¸˜ao e entender os valores do 5S
[Poppendieck and Poppendieck 2003]. A partir do momento que se compreende estes
valores, fica muito claro como aplicar estes conceitos em qualquer contexto, inclusive
no desenvolvimento de software. Para esta aplicac¸˜ao, as pr´aticas do Extreme Program-
ming (XP) como refatorac¸˜ao, desenvolvimento dirigido por testes, integrac¸˜ao continua e
padronizac¸˜ao de c´odigo s˜ao os nossos melhores aliados para a melhoria cont´ınua.
Mais importante do que usar e conhecer pr´aticas e ferramentas, ´e necess´aria uma
reflex˜ao sobre a necessidade do mercado atual e qual o perfil (competˆencias e habilidades)
necess´ario para ser um desenvolvedor profissional [Martin 2011]. Al´em desta exposic¸˜ao,
ser˜ao apresentados exemplos reais e pr´aticos de c´odigo sujo e como eles foram limpos,
apoiado tamb´em por uso de ferramentas. Ser´a proposto tamb´em um exerc´ıcio pr´atico
de programac¸˜ao, para elucidar o conte´udo apresentado. Os exemplos apresentados ser˜ao
focados em tecnologia Java, por´em ser˜ao comentadas as pr´aticas e ferramentas de apoio
em outras linguagens.
Mecˆanica
1) Proposic¸˜ao de um exerc´ıcio de programac¸˜ao, desenvolvido em pares
2) Apresentac¸˜ao de: princ´ıpios do Lean Software Development e seu alinhamento
com as pr´aticas do XP; exposic¸˜ao de exemplos pr´aticos de c´odigos sujos; um epis´odio de
TDD/refatorac¸˜ao, com discuss˜ao de t´ecnicas e heur´ısticas de limpeza para tornar o c´odigo
limpo e de mais f´acil manutenc¸˜ao
3) Troca dos pares para a segunda parte do exerc´ıcio, onde a dupla alterar´a o
c´odigo desenvolvido por outra, aplicando as t´ecnicas discutidas
4) Discuss˜ao em grande grupo da dinˆamica
5) Apresentac¸˜ao de v´arias ferramentas que ajudam a manter a sa´ude e bem estar
do c´odigo (JUnit, Byke, PMD, Checkstyle, JaCoCo, Sonar e Jenkins)
3. Considerac¸˜oes Finais
Como benef´ıcios esperados deste tutorial, busca-se entender como as pr´aticas do XP po-
dem auxiliar no processo de melhoria da qualidade do c´odigo, como posso ser um desen-
volvedor melhor, adotando algumas ferramentas que apoiam estes princ´ıpios e pr´aticas
para as principais linguagens de programac¸˜ao utilizadas no mercado atualmente. Este
tutorial foi apresentado nos eventos AgileBrazil 2012 1
e Agiles 2012 2
.
Referˆencias
Beck, K. (2002). Test-Driven Development by Example. Addison-Wesley.
Fowler, M., Beck, K., Brant, J., Opdyke, W., and Roberts, D. (1999). Refactoring: Im-
proving the Design of Existing Code. Addison-Wesley.
Hunt, A. and Thomas, D. (1999). The Pragmatic Programmer: From Journeyman to
Master. Addison-Wesley.
Kerievsky, J. (2004). Refactoring to Patterns. Addison-Wesley.
Martin, R. C. (2008). Clean Code: A Handbook of Agile Software Craftsmanship. Pren-
tice Hall.
Martin, R. C. (2011). The Clean Coder: A code of conduct for Professional Programmers.
Prentice Hall.
Martin, R. C. and Martin, M. (2007). Agile Principles, Patterns, and Practices in C#.
Prentice Hall.
Poppendieck, M. and Poppendieck, T. (2003). Lean Software Development: An Agile
Toolkit. Addison-Wesley.
1
Conferˆencia Brasileira de M´etodos ´Ageis, S˜ao Paulo, Brasil
2
Conferˆencia Latinoamericana de Metodologias ´Ageis, C´ordoba, Argentina

Mais conteúdo relacionado

Mais procurados

Microsoft solutions framework
Microsoft solutions frameworkMicrosoft solutions framework
Microsoft solutions frameworkAlbert José
 
Artigo-Alex_Warmling
Artigo-Alex_WarmlingArtigo-Alex_Warmling
Artigo-Alex_WarmlingChaordic
 
Slide sobre o estudo do MPS.BR
Slide sobre o estudo do MPS.BRSlide sobre o estudo do MPS.BR
Slide sobre o estudo do MPS.BRlaisgrazielly
 
Apresentação tcc final
Apresentação tcc finalApresentação tcc final
Apresentação tcc finalJhool Flores
 
Implantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLImplantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLAnnkatlover
 
Desenvolvimento ágil e práticas Lean
Desenvolvimento ágil e práticas LeanDesenvolvimento ágil e práticas Lean
Desenvolvimento ágil e práticas LeanRenan Daré
 
MPS.BR - Melhoria do processo de Software Brasileiro
MPS.BR - Melhoria do processo de Software BrasileiroMPS.BR - Melhoria do processo de Software Brasileiro
MPS.BR - Melhoria do processo de Software BrasileiroPaulo Henrique de Sousa
 
Gerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxGerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxRoberto Nunes
 
Conic 2009 XP - extreme programming
Conic 2009  XP - extreme programmingConic 2009  XP - extreme programming
Conic 2009 XP - extreme programmingJúnior Gonçalves
 
Gerenciamento da Qualidade de Software 5.pptx
Gerenciamento da Qualidade de Software 5.pptxGerenciamento da Qualidade de Software 5.pptx
Gerenciamento da Qualidade de Software 5.pptxRoberto Nunes
 
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixModelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixCris Fidelix
 

Mais procurados (19)

Mpsbr
MpsbrMpsbr
Mpsbr
 
Mps.br
Mps.brMps.br
Mps.br
 
Microsoft solutions framework
Microsoft solutions frameworkMicrosoft solutions framework
Microsoft solutions framework
 
Xpmg
XpmgXpmg
Xpmg
 
Desenvolvimento Ágil
Desenvolvimento ÁgilDesenvolvimento Ágil
Desenvolvimento Ágil
 
Artigo-Alex_Warmling
Artigo-Alex_WarmlingArtigo-Alex_Warmling
Artigo-Alex_Warmling
 
Slide sobre o estudo do MPS.BR
Slide sobre o estudo do MPS.BRSlide sobre o estudo do MPS.BR
Slide sobre o estudo do MPS.BR
 
Apresentação tcc final
Apresentação tcc finalApresentação tcc final
Apresentação tcc final
 
Implantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLImplantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SL
 
Desenvolvimento ágil e práticas Lean
Desenvolvimento ágil e práticas LeanDesenvolvimento ágil e práticas Lean
Desenvolvimento ágil e práticas Lean
 
Cmmi e mps.Br
Cmmi e mps.BrCmmi e mps.Br
Cmmi e mps.Br
 
MPS.BR
MPS.BRMPS.BR
MPS.BR
 
MPS.BR - Melhoria do processo de Software Brasileiro
MPS.BR - Melhoria do processo de Software BrasileiroMPS.BR - Melhoria do processo de Software Brasileiro
MPS.BR - Melhoria do processo de Software Brasileiro
 
MPS.BR
MPS.BRMPS.BR
MPS.BR
 
Gerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxGerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptx
 
Conic 2009 XP - extreme programming
Conic 2009  XP - extreme programmingConic 2009  XP - extreme programming
Conic 2009 XP - extreme programming
 
Pmbok
PmbokPmbok
Pmbok
 
Gerenciamento da Qualidade de Software 5.pptx
Gerenciamento da Qualidade de Software 5.pptxGerenciamento da Qualidade de Software 5.pptx
Gerenciamento da Qualidade de Software 5.pptx
 
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixModelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
 

Semelhante a Descrição Tutorial Coding By Example (CBSoft2013)

Conhecendo o eXtreme Programming
Conhecendo o eXtreme ProgrammingConhecendo o eXtreme Programming
Conhecendo o eXtreme ProgrammingDaniel Wildt
 
MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O MODELO DE QUALIDADE MPS.BR NOS N...
MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O  MODELO DE QUALIDADE MPS.BR NOS N...MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O  MODELO DE QUALIDADE MPS.BR NOS N...
MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O MODELO DE QUALIDADE MPS.BR NOS N...Adson Wendel
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven developmentIzabel Rodrigues
 
Agile from University to the Business World, by Ademar Aguiar
Agile from University to the Business World, by Ademar AguiarAgile from University to the Business World, by Ademar Aguiar
Agile from University to the Business World, by Ademar AguiarAgile Connect®
 
O uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de softwareO uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de softwareEverton vitor
 
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANFernando Palma
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Rennan Martini
 
Leds zeppellin infraestrutura de apoio ao desenvolvimento
Leds zeppellin   infraestrutura de apoio ao desenvolvimentoLeds zeppellin   infraestrutura de apoio ao desenvolvimento
Leds zeppellin infraestrutura de apoio ao desenvolvimentoledsifes
 
SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...
SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...
SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...Kéllyson Gonçalves da Silva
 
Gerenciando Projetos De Software De Forma áGil Utilizando Scrum
Gerenciando Projetos De Software De Forma áGil Utilizando ScrumGerenciando Projetos De Software De Forma áGil Utilizando Scrum
Gerenciando Projetos De Software De Forma áGil Utilizando ScrumRaphael Donaire Albino
 
UM ESTUDO SOBRE ABORDAGENS DE TESTE E SUAS CONTRIBUIÇÕES PARA A QUALIDADE NO ...
UM ESTUDO SOBRE ABORDAGENS DE TESTE E SUAS CONTRIBUIÇÕES PARA A QUALIDADE NO ...UM ESTUDO SOBRE ABORDAGENS DE TESTE E SUAS CONTRIBUIÇÕES PARA A QUALIDADE NO ...
UM ESTUDO SOBRE ABORDAGENS DE TESTE E SUAS CONTRIBUIÇÕES PARA A QUALIDADE NO ...Fábio Pio
 

Semelhante a Descrição Tutorial Coding By Example (CBSoft2013) (20)

Conhecendo o eXtreme Programming
Conhecendo o eXtreme ProgrammingConhecendo o eXtreme Programming
Conhecendo o eXtreme Programming
 
38484931 questionario-es
38484931 questionario-es38484931 questionario-es
38484931 questionario-es
 
MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O MODELO DE QUALIDADE MPS.BR NOS N...
MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O  MODELO DE QUALIDADE MPS.BR NOS N...MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O  MODELO DE QUALIDADE MPS.BR NOS N...
MAPEAMENTO ENTRE A METODOLOGIA ÁGIL FDD E O MODELO DE QUALIDADE MPS.BR NOS N...
 
Artigo corrigido
Artigo corrigidoArtigo corrigido
Artigo corrigido
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven development
 
Agile from University to the Business World, by Ademar Aguiar
Agile from University to the Business World, by Ademar AguiarAgile from University to the Business World, by Ademar Aguiar
Agile from University to the Business World, by Ademar Aguiar
 
O Gerenciamento de Projetos de Software Desenvolvidos à Luz das Metodologias ...
O Gerenciamento de Projetos de Software Desenvolvidos à Luz das Metodologias ...O Gerenciamento de Projetos de Software Desenvolvidos à Luz das Metodologias ...
O Gerenciamento de Projetos de Software Desenvolvidos à Luz das Metodologias ...
 
O uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de softwareO uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de software
 
Metodos ageis
Metodos ageisMetodos ageis
Metodos ageis
 
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)
 
Leds zeppellin infraestrutura de apoio ao desenvolvimento
Leds zeppellin   infraestrutura de apoio ao desenvolvimentoLeds zeppellin   infraestrutura de apoio ao desenvolvimento
Leds zeppellin infraestrutura de apoio ao desenvolvimento
 
Subm_SamuelPereira_FINAL
Subm_SamuelPereira_FINALSubm_SamuelPereira_FINAL
Subm_SamuelPereira_FINAL
 
Métodos Ágeis
Métodos ÁgeisMétodos Ágeis
Métodos Ágeis
 
SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...
SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...
SCRUM: ADOÇÃO DE UM FRAMEWORK ÁGIL NO DESENVOLVIMENTO DE UM SOFTWARE PARA TRA...
 
Gerenciando Projetos De Software De Forma áGil Utilizando Scrum
Gerenciando Projetos De Software De Forma áGil Utilizando ScrumGerenciando Projetos De Software De Forma áGil Utilizando Scrum
Gerenciando Projetos De Software De Forma áGil Utilizando Scrum
 
Métodos ágeis
Métodos ágeisMétodos ágeis
Métodos ágeis
 
UM ESTUDO SOBRE ABORDAGENS DE TESTE E SUAS CONTRIBUIÇÕES PARA A QUALIDADE NO ...
UM ESTUDO SOBRE ABORDAGENS DE TESTE E SUAS CONTRIBUIÇÕES PARA A QUALIDADE NO ...UM ESTUDO SOBRE ABORDAGENS DE TESTE E SUAS CONTRIBUIÇÕES PARA A QUALIDADE NO ...
UM ESTUDO SOBRE ABORDAGENS DE TESTE E SUAS CONTRIBUIÇÕES PARA A QUALIDADE NO ...
 
Trabalho xp
Trabalho xpTrabalho xp
Trabalho xp
 

Mais de Wildtech

Voltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilVoltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilWildtech
 
O que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareO que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareWildtech
 
XP e a Academia
XP e a AcademiaXP e a Academia
XP e a AcademiaWildtech
 
Abordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingAbordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingWildtech
 
TDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TITDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TIWildtech
 
TDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureTDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureWildtech
 
TDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria ContínuaTDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria ContínuaWildtech
 
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...Wildtech
 
Agile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching PatternsAgile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching PatternsWildtech
 
TDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorTDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorWildtech
 
Swarm Debugging
Swarm DebuggingSwarm Debugging
Swarm DebuggingWildtech
 
[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme Programming[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme ProgrammingWildtech
 
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...Wildtech
 
[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de DadosWildtech
 
(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários ComplexosWildtech
 
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...Wildtech
 
5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"Wildtech
 
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Wildtech
 
CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)Wildtech
 
CBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By ExampleCBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By ExampleWildtech
 

Mais de Wildtech (20)

Voltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilVoltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágil
 
O que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareO que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de software
 
XP e a Academia
XP e a AcademiaXP e a Academia
XP e a Academia
 
Abordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingAbordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coaching
 
TDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TITDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TI
 
TDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureTDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion Architecture
 
TDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria ContínuaTDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
 
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
 
Agile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching PatternsAgile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching Patterns
 
TDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorTDC 2016 - O Novo Professor
TDC 2016 - O Novo Professor
 
Swarm Debugging
Swarm DebuggingSwarm Debugging
Swarm Debugging
 
[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme Programming[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme Programming
 
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
 
[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados
 
(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos
 
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
 
5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"
 
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
 
CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)
 
CBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By ExampleCBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By Example
 

Descrição Tutorial Coding By Example (CBSoft2013)

  • 1. Coding By Example: Tornando-se um desenvolvedor profissional Guilherme Lacerda1 , Daniel Wildt2 1 UniRitter/Facensa/Wildtech/TJ-RS 2 uMov.me/Wildtech guilhermeslacerda@gmail.com, dwildt@gmail.com Resumo. Este tutorial procura discutir o perfil de um desenvolvedor profissio- nal, a importˆancia de manter um c´odigo limpo al´em de pr´aticas e ferramentas podem apoiar neste sentido. Para tanto, ´e proposto um exerc´ıcio focando em desenvolvimento dirigido por testes, refatorac¸˜ao e baby steps, visando expor de forma pr´atica os benef´ıcios dessa forma de trabalho. 1. Informac¸˜oes Gerais Neste tutorial, ser´a apresentado como os princ´ıpios do Lean Software Development fa- zem sentido na hora de desenvolver software. A partir destes princ´ıpios, ser´a apre- sentado como a adoc¸˜ao de pr´aticas como refatorac¸˜ao [Fowler et al. 1999], padr˜oes [Kerievsky 2004], integrac¸˜ao cont´ınua e testes [Beck 2002] podem ajudar a entregar software com mais qualidade, principalmente atrav´es da escrita de um c´odigo mais simples, limpo e, consequentemente, mais f´acil de manter [Hunt and Thomas 1999], [Martin and Martin 2007], [Martin 2008]. Al´em disso, ser˜ao usados exemplos pr´aticos de c´odigos sujos e como estes princ´ıpios e pr´aticas, com o apoio de algumas ferramentas, ajudaram a limpar o c´odigo e deix´a-lo mais simples. Este tutorial ´e direcionado para desenvolvedores, analistas, projetistas, gerentes de neg´ocios, gerentes de projetos, l´ıderes de equipe. ´E necess´ario ter conhecimento em pr´aticas ´ageis. Destina-se a participantes do CBSoft, mais especificamente dos eventos SBES e SBLP. Os interessados em participar do tutorial dever˜ao levar seus laptops com suas ferramentas de programac¸˜ao de sua preferˆencia (IDEs, linguagens, ferramentas de teste de unidade) devidamente configuradas. 2. Estrutura e Mecˆanica A base do Lean Software Development ´e o trabalho padronizado e o kaizen, que s˜ao um dos primeiros passos para se chegar na padronizac¸˜ao e entender os valores do 5S [Poppendieck and Poppendieck 2003]. A partir do momento que se compreende estes valores, fica muito claro como aplicar estes conceitos em qualquer contexto, inclusive no desenvolvimento de software. Para esta aplicac¸˜ao, as pr´aticas do Extreme Program- ming (XP) como refatorac¸˜ao, desenvolvimento dirigido por testes, integrac¸˜ao continua e padronizac¸˜ao de c´odigo s˜ao os nossos melhores aliados para a melhoria cont´ınua. Mais importante do que usar e conhecer pr´aticas e ferramentas, ´e necess´aria uma reflex˜ao sobre a necessidade do mercado atual e qual o perfil (competˆencias e habilidades) necess´ario para ser um desenvolvedor profissional [Martin 2011]. Al´em desta exposic¸˜ao, ser˜ao apresentados exemplos reais e pr´aticos de c´odigo sujo e como eles foram limpos,
  • 2. apoiado tamb´em por uso de ferramentas. Ser´a proposto tamb´em um exerc´ıcio pr´atico de programac¸˜ao, para elucidar o conte´udo apresentado. Os exemplos apresentados ser˜ao focados em tecnologia Java, por´em ser˜ao comentadas as pr´aticas e ferramentas de apoio em outras linguagens. Mecˆanica 1) Proposic¸˜ao de um exerc´ıcio de programac¸˜ao, desenvolvido em pares 2) Apresentac¸˜ao de: princ´ıpios do Lean Software Development e seu alinhamento com as pr´aticas do XP; exposic¸˜ao de exemplos pr´aticos de c´odigos sujos; um epis´odio de TDD/refatorac¸˜ao, com discuss˜ao de t´ecnicas e heur´ısticas de limpeza para tornar o c´odigo limpo e de mais f´acil manutenc¸˜ao 3) Troca dos pares para a segunda parte do exerc´ıcio, onde a dupla alterar´a o c´odigo desenvolvido por outra, aplicando as t´ecnicas discutidas 4) Discuss˜ao em grande grupo da dinˆamica 5) Apresentac¸˜ao de v´arias ferramentas que ajudam a manter a sa´ude e bem estar do c´odigo (JUnit, Byke, PMD, Checkstyle, JaCoCo, Sonar e Jenkins) 3. Considerac¸˜oes Finais Como benef´ıcios esperados deste tutorial, busca-se entender como as pr´aticas do XP po- dem auxiliar no processo de melhoria da qualidade do c´odigo, como posso ser um desen- volvedor melhor, adotando algumas ferramentas que apoiam estes princ´ıpios e pr´aticas para as principais linguagens de programac¸˜ao utilizadas no mercado atualmente. Este tutorial foi apresentado nos eventos AgileBrazil 2012 1 e Agiles 2012 2 . Referˆencias Beck, K. (2002). Test-Driven Development by Example. Addison-Wesley. Fowler, M., Beck, K., Brant, J., Opdyke, W., and Roberts, D. (1999). Refactoring: Im- proving the Design of Existing Code. Addison-Wesley. Hunt, A. and Thomas, D. (1999). The Pragmatic Programmer: From Journeyman to Master. Addison-Wesley. Kerievsky, J. (2004). Refactoring to Patterns. Addison-Wesley. Martin, R. C. (2008). Clean Code: A Handbook of Agile Software Craftsmanship. Pren- tice Hall. Martin, R. C. (2011). The Clean Coder: A code of conduct for Professional Programmers. Prentice Hall. Martin, R. C. and Martin, M. (2007). Agile Principles, Patterns, and Practices in C#. Prentice Hall. Poppendieck, M. and Poppendieck, T. (2003). Lean Software Development: An Agile Toolkit. Addison-Wesley. 1 Conferˆencia Brasileira de M´etodos ´Ageis, S˜ao Paulo, Brasil 2 Conferˆencia Latinoamericana de Metodologias ´Ageis, C´ordoba, Argentina