Curso "XP na prática" refactored! 2
No inicio de Agosto estivemos participando do Maré de Agilidade, swell Fortaleza, como já não deve ser novidade.
Nesse evento, nos dias 6 e 7, eu e o Willi realizamos duas turmas do XP na Prática. Mas dessa vez, fizemos uma modificação no curso, cujos resultados foram mais que satisfatórios.

Nosso maior problema com esse curso é seu enfoque prático e realista. Achamos que os aspectos mais valiosos do XP são muito difíceis de entender apenas com explicações e exemplos metafóricos. Por isso, desde a primeira turma, quisemos dar a ênfase na parte prática, executando um micro-projeto real, com programação, entrega e tudo.
Desde o início ficou claro pra nós que precisaríamos de uma equipe grande de instrutores, pra ajudar as turmas de perto nas atividades de programação. Foi assim que estruturamos o curso original - com 4 instrutores!
Ainda assim, descobrimos rapidamente que o tamanho das turmas não podia passar de umas 16 pessoas, formando 3 ou 4 grupos que durante o mini-projeto atuam como se fossem 3 ou 4 pares de uma equipe real. Acaba ficando uma proporção meio inviável: 1 instrutor pra cada 4 alunos.
Outra limitação dessa configuração vem do fato de que a grande maioria dos participantes nunca teve contato com TDD. Então, mesmo com uma pessoa dedicada a orientar cada grupo, é difícil vencer as dificuldades iniciais e chegar ao que é realmente valioso da prática.
O contato superficial com o TDD muitas vezes não leva a situações interessantes, que possam dar margem à discussão sobre os princípios do XP. Muita coisa passava despercebida e apenas os benefícios mais superficiais eram notados.
Mesmo quando algumas situações legais se apresentavam durante o projeto, envolviam apenas 2 ou 3 pessoas que estavam atentas ao código naquele momento. Isso se agravava pelo curto espaço de tempo que tínhamos pro projeto, que levava o pessoal a codificar com um pouco de pressa.
O novo formato do curso
Basicamente, a mudança que fizemos no curso foi a de trocar o formato do “Dojo” de Randori Kata para Prepared Kata. Ou seja, ao invés de simularmos uma equipe com 3 ou 4 pares, formamos uma equipe com apenas um par formado por mim (piloto) e pela turma (copiloto). Em outras palavras: o código foi sendo escrito por mim e acompanhado pela turma no telão, interrompendo, sugerindo e discutindo.

Foi no avião, indo pra Fortaleza, que eu experimentei o que viríamos a apresentar nas duas turmas do Maré. Implementei o projeto sozinho durante o vôo, terminei na casa do meu pai (que mora em Fortaleza), e depois ainda implementei de novo.
Da segunda vez, criei uma solução totalmente diferente da primeira, e segui por um caminho completamente diferente. Em cada uma das turmas de Fortaleza o mesmo se sucedeu: solução, código e caminho diferentes. Ou seja: não adiantou nada ensaiar! :-P
A segunda turma terminou no meio de um refactoring que substituia o mecanismo de persistência do programa de arquivos para banco de dados. Foi uma pena não termos conseguido terminar, pois foi tão rico que estou pensando seriamente em torna-lo parte integrante do curso.
Além disso, trocamos o planejamento com post-its por um mind-map projetado na tela, pois notamos que com turmas grandes (>16) muita gente não consegue acompanhar o planejamento direito, por causa do tamanho dos cartões grudados no quadro. A ferramenta certa para cada situação, não é?
Novo problema
Pra terminar, outra mudança feita foi a do problema trabalhado. Na versão original, o projeto implementado era o controlador de uma impressora de cheques fictícia, que envolvia basicamente leitura e escrita de arquivos e a solução de problemas pontuais relacionados à escrita de valores por extenso e codificação de números em um “display”.
O problema atual é a construção de um sistema de informações que permite a administração de reservas em um hotel. O sistema, aparentemente mais simples, é mais realista, e permite que se discutam algumas questões interessantes como o mecanismo de persistência e interface com usuário, levando em consideração as restrições do projeto e o retorno de investimento para o cliente - ainda representado pelo Willi, com ajuda de “sócios” voluntários da turma ;-)
O balanço da mudança
A modificação do curso, como não poderia deixar de ser, teve ganhos e perdas.

Por um lado, perdemos um pouco do caráter participativo do curso, que dava à atividade uma dinâmica incrível, com todo mundo levantando, falando, rabiscando - do jeito que um projeto XP deve ser. Embora não tenha perdido tanto. As duas turmas de Fortaleza foram super participativas!
Perdemos também a oportunidade de exercitar as StandUpMeetings e a integração do código entre várias equipes.
Por outro lado, do ponto de vista técnico, o curso ganha muito! Programando juntos, mantemos todos concentrados numa coisa só, e discutimos cada passo do projeto. Nas duas turmas que fizemos, percebemos uma densidade muito maior de conceitos e princípios abordados. Cada vez que precisamos tomar uma decisão, inicia-se uma discussão com toda a turma que leva a reflexão e aprendizado de verdade!
A discussão é a parte mais valiosa! É o que tenho preferido fazer nas palestras ultimamente: apresento só o essencial em 30min e aproveito o resto do tempo respondendo perguntas e discutindo. Vale muito mais a pena!
Com um único foco, é possível também apresentar com mais calma o TDD, fazendo refatorações sistemáticas e indo bem mais fundo nos princípios da simplicidade e foco no retorno de investimento.
A mudança, originalmente motivada pelo tamanho das turmas (30) e da quantidade de instrutores (2) - estávamos com turmas com o dobro do tamanho e com a metade dos instrutores -, acabou se mostrando uma alternativa melhor em termos didáticos.
Terminamos por adotar de vez esse novo formato para o mini-curso de um dia.
Dois formatos do curso
A sugestão mais recorrente que aparece nas retrospectivas é a organização do curso num formato maior. Embora esse curso tenha sido criado com o intuito de atender ao publico de eventos - no máximo 8h - entendemos a demanda de um curso maior.
Com essa reestrutuação do mini-curso, e com a perda da experiência “mão-na-massa”, estamos criando o curso (não mais mini-curso) “XP na Prática”, com uma carga horária maior (20 a 30 horas) com espaço para uma parte teórica mais detalhada e para executar um projeto maior, com todo mundo participando.
Estamos abrindo mais turmas do mini-curso em Brasília. Se alguém tiver interesse em qualquer um dos cursos é só nos procurar.
Muito bacana Bruno. Parabéns por ensinar toda essa garotada a trabalhar de forma eficiente! Gostei do formato. Abraço
Brunão, gostei do refactoring. ;-) Que saudade do dojo da SEA, camarada!
Bem, falando do curso, como vc disse, tudo tem vantagens e desvantagens. Que pena que a turma agora só fica de co-piloto. A experiência de ser piloto pela primeira vez numa dupla é ótima para iniciantes!
Será que não dá p/ encaixar alguma sessão dessas mesmo no mini-curso?
Que tal iniciar com uma sprint (ou tarefa) pequenininha, sendo vc o piloto e, numa atividade posterior, alguém da turma passa a ser o piloto e vc vai pra galera?
Seria um desafio e tanto pro piloto, hein. rsrs
– Abraço. Vinicius Assef.