Aula de TDD

Quais exercícios para estudar TDD? (ou: Minicurso de TDD no Open Sanca)

Quais exercícios são bons para começar a estudar TDD? Essa dúvida paira na cabeça de muitos estudantes e professores!

Se você for professor, eu sugiro fortemente: escolha alguns exercícios, resolva-os você mesmo e veja o que acha. Só mesmo resolvendo um exercício é que você consegue ter noção de se ele é apropriado ou não para passar aos alunos!

No dia 17/10/2015, ministrei um minicurso de TDD num encontro do grupo Open Sanca, em São Carlos-SP. Foi muito legal! Dificilmente, pessoas que não conhecem TDD se dão bem com a técnica nas primeiras tentativas. Mas, dessa vez, senti que o pessoal realmente conseguiu isso nas apenas 4h de minicurso.

Resolução de problema de TDD em grupo
Pessoal firme no dojô

Os exercícios que eu preparei foram estes e fizemos alguns poucos dessa lista. Normalmente, não sou muito fã de exercícios viajados e pouco práticos, como o FizzBuzz. Mas, recentemente, concluí que esse tipo de exercício pode ajudar a entender a mecânica do TDD, porque é fácil manter o foco no processo, em vez de no problema. Ajuda muito quando o estudante é mais iniciante. Não foi o caso desse encontro, em que a maioria das pessoas já tinha experiência profissional com desenvolvimento de software. Por isso, esse exercício não foi necessário. Mas essa questão desperta a seguinte reflexão:

Mecânica ou motivação: qual é mais importante, especialmente em um minicurso? Esse é um grande dilema ao ensinar TDD. A técnica é muito legal para problemas complexos, mas também é muito estranha à primeira vista. Para facilitar o entendimento da mecânica (ex: ciclo vermelho-verde-refatora), o professor normalmente passa um problema simples (ex: FizzBuzz). E aí o uso de TDD parece totalmente descabido, porque o problema é muito simples… Em outras palavras, ou você motiva bem, ou você facilita o entendimento da mecânica. É preciso fazer a balança pender para um dos lados. Com o tempo e mais exemplos, inverte-se a balança algumas vezes e aí o pessoal consegue obter as duas coisas.

Para você determinar que exercício é mais adequado, faça-se as seguintes perguntas:

  • Qual é o público-alvo? Alguém experiente em programação? Alguém iniciante?
  • É mais importante ensinar a mecânica (entender como funciona) ou motivar o estudo (apresentar os benefícios)?
  • É mais importante ser realista e detalhado, ou didático e menos detalhado?
  • Quanto tempo se tem disponível? 1h? 2h? 4h?

O exercício do intervalo eu recomendo ser feito quando houver, no mínimo, 2h disponíveis. Ele parece simples, mas não é, exige muito raciocínio. O da busca incremental eu acho bem elucidativo e bem realista. Porém, adote-o somente se quem for resolvê-lo tiver bastante familiaridade com manipulação de listas. Senão, a pessoa pode se perder (o oposto do objetivo do TDD!). O fraseador de itens é realista (tirei de um projeto real de que participei), porém tem vários pequenos detalhes, podendo complicar o entendimento e/ou a implementação.

Resumindo, não tem segredo! Determine suas prioridades, experimente os exercícios que achar mais interessantes e mande ver!

Você pode consultar o material do minicurso aqui. Fique à vontade para usá-lo como quiser, peço apenas a gentileza de dar os devidos créditos.

E você? Já teve dúvidas quanto ao estudo de TDD? Quais foram suas experiências?

Anúncios

3 comentários sobre “Quais exercícios para estudar TDD? (ou: Minicurso de TDD no Open Sanca)

  1. Fala André! Aproveitei para usar TDD em um teste de programação para uma vaga de desenvolvedor Python. Acabei tendo mais facilidade em solucionar o problema e fui selecionado para a vaga. Obrigado novamente pelo tempo que dedicou a nos ensinar. Um abraço.

    Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s