Descrição Tutorial Coding By Example (CBSoft2013)

2
Coding By Example: Tornando-se um desenvolvedor profissional Guilherme Lacerda 1 , Daniel Wildt 2 1 UniRitter/Facensa/Wildtech/TJ-RS 2 uMov.me/Wildtech [email protected], [email protected] 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,

description

Descrição do tutorial Coding By Example, apresentado na CBSoft 2013.

Transcript of Descrição Tutorial Coding By Example (CBSoft2013)

Page 1: Descrição Tutorial Coding By Example (CBSoft2013)

Coding By Example: Tornando-se um desenvolvedorprofissional

Guilherme Lacerda1, Daniel Wildt2

1UniRitter/Facensa/Wildtech/TJ-RS

2uMov.me/Wildtech

[email protected], [email protected]

Resumo. Este tutorial procura discutir o perfil de um desenvolvedor profissio-nal, a importancia de manter um codigo limpo alem de praticas e ferramentaspodem apoiar neste sentido. Para tanto, e proposto um exercıcio focando emdesenvolvimento dirigido por testes, refatoracao e baby steps, visando expor deforma pratica os benefıcios dessa forma de trabalho.

1. Informacoes GeraisNeste tutorial, sera apresentado como os princıpios do Lean Software Development fa-zem sentido na hora de desenvolver software. A partir destes princıpios, sera apre-sentado como a adocao de praticas como refatoracao [Fowler et al. 1999], padroes[Kerievsky 2004], integracao contınua e testes [Beck 2002] podem ajudar a entregarsoftware com mais qualidade, principalmente atraves da escrita de um codigo maissimples, limpo e, consequentemente, mais facil de manter [Hunt and Thomas 1999],[Martin and Martin 2007], [Martin 2008]. Alem disso, serao usados exemplos praticosde codigos sujos e como estes princıpios e praticas, com o apoio de algumas ferramentas,ajudaram a limpar o codigo e deixa-lo mais simples.

Este tutorial e direcionado para desenvolvedores, analistas, projetistas, gerentesde negocios, gerentes de projetos, lıderes de equipe. E necessario ter conhecimento empraticas ageis. Destina-se a participantes do CBSoft, mais especificamente dos eventosSBES e SBLP. Os interessados em participar do tutorial deverao levar seus laptops comsuas ferramentas de programacao de sua preferencia (IDEs, linguagens, ferramentas deteste de unidade) devidamente configuradas.

2. Estrutura e MecanicaA base do Lean Software Development e o trabalho padronizado e o kaizen, que saoum dos primeiros passos para se chegar na padronizacao e entender os valores do 5S[Poppendieck and Poppendieck 2003]. A partir do momento que se compreende estesvalores, fica muito claro como aplicar estes conceitos em qualquer contexto, inclusiveno desenvolvimento de software. Para esta aplicacao, as praticas do Extreme Program-ming (XP) como refatoracao, desenvolvimento dirigido por testes, integracao continua epadronizacao de codigo sao os nossos melhores aliados para a melhoria contınua.

Mais importante do que usar e conhecer praticas e ferramentas, e necessaria umareflexao sobre a necessidade do mercado atual e qual o perfil (competencias e habilidades)necessario para ser um desenvolvedor profissional [Martin 2011]. Alem desta exposicao,serao apresentados exemplos reais e praticos de codigo sujo e como eles foram limpos,

Page 2: Descrição Tutorial Coding By Example (CBSoft2013)

apoiado tambem por uso de ferramentas. Sera proposto tambem um exercıcio praticode programacao, para elucidar o conteudo apresentado. Os exemplos apresentados seraofocados em tecnologia Java, porem serao comentadas as praticas e ferramentas de apoioem outras linguagens.

Mecanica

1) Proposicao de um exercıcio de programacao, desenvolvido em pares

2) Apresentacao de: princıpios do Lean Software Development e seu alinhamentocom as praticas do XP; exposicao de exemplos praticos de codigos sujos; um episodio deTDD/refatoracao, com discussao de tecnicas e heurısticas de limpeza para tornar o codigolimpo e de mais facil manutencao

3) Troca dos pares para a segunda parte do exercıcio, onde a dupla alterara ocodigo desenvolvido por outra, aplicando as tecnicas discutidas

4) Discussao em grande grupo da dinamica

5) Apresentacao de varias ferramentas que ajudam a manter a saude e bem estardo codigo (JUnit, Byke, PMD, Checkstyle, JaCoCo, Sonar e Jenkins)

3. Consideracoes FinaisComo benefıcios esperados deste tutorial, busca-se entender como as praticas do XP po-dem auxiliar no processo de melhoria da qualidade do codigo, como posso ser um desen-volvedor melhor, adotando algumas ferramentas que apoiam estes princıpios e praticaspara as principais linguagens de programacao utilizadas no mercado atualmente. Estetutorial foi apresentado nos eventos AgileBrazil 2012 1 e Agiles 2012 2.

ReferenciasBeck, 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 toMaster. 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 AgileToolkit. Addison-Wesley.

1Conferencia Brasileira de Metodos Ageis, Sao Paulo, Brasil2Conferencia Latinoamericana de Metodologias Ageis, Cordoba, Argentina