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

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 poruso 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