O Encontro Ágil 2010 (que merecia seu próprio post) se destacou pelo face-to-face: os open spaces e interações entre participantes foram tão produtivos que a tradicional carência de conectividade sem fio da USP trabalhou a favor. E foi justamente uma dessas interações, o Coding Dojo (saiba o que é um) organizado pelo Bruno Gola (com o forte apoio do Asa) que me inspirou a organizar uma sessão equivalente no Apontador. Segue uma visão geral da experiência:
Preparação
Devido à heterogeneidade do público potencial (e também para levar o ambiente já preparado), era razoável escolher a linguagem com antecedência. Usamos Python por tres motivos: é fácil de aprender na hora para quem nunca viu, o código fica compacto e legível, e a expoisção a uma linguagem nova é um bônus extra (de fato, um dos pontos positivos mais enfatizados na retrospectiva).
A estação de trabalho era o meu Mac do trabalho mesmo, então usei o TextWrangler, um editor básico com sintaxe colorida e que permite alternar facilmente entre o programa e o teste. Deixamos o editor ocupando 2/3 da tela, e o restante dividido entre o console (posicionado estrategicamente para garantir a visibilidade do OK ou FAILED do teste) e o cronômetro – ter as duas coisas na tela dá mais segurança e tranquilidade à dupla.
Eu queria um cronômetro offline – apesar da internet do Apontador ser boa, é sempre bom reduzir riscos. Adorei o Coding Dojo Screenlet, escrito pelo próprio Gola, cuja cor de fundo (vermelho/verde) reflete o status do teste, ajudando a audiência saber quando (não) é apropriado se manifestar, mas ele só existe para Linux. A solução foi o timer do Hora Agora (criado pela Bani), que, aliado à interface minimalista do Chrome, resolveu super bem: o alarme ininterrupto garantia que o piloto, ao sentar no teclado, não esquecesse de reiniciar o timer (usando o parâmetro “?t=05:00″, era só dar reload na página).
Num dojo (e em TDD no geral) é uma boa idéia que, quando viável, o teste seja executado automaticamente sempre que você salva o arquivo. Conseguimos isso graças ao uso de nose + tdaemon (que ainda dá o resultado em popups do Growl), mas tem outras alternativas por aí como o autotest e o watchr. Outra idéia é rodar todo o ambiente do Dojo online, usando o CyberDojo. Opções não faltam: escolha conforme a linguagem, ambiente e gosto – o importante é deixar tudo preparado antes de começar!
No Dia
Após uma rápida introdução ao conceito de dojo e às “regras do jogo” (a Karen recomenda esses dois resumos), compilamos no quadro uma lista ordenada dos participantes – o que evita confusão na hora de trocar a dupla. A lista foi pela ordem em que as pessoas se voluntariaram, mas acho válida também a sugestão do Gola de alternar entre pessoas mais e menos familiarizadas com a tecnologia.
Dojo era novidade para quase todos os presentes, então pareceu razoável começar com um problema introdutório (RandoriKata), e fizemos o RomanNumbers (não por acaso, o mesmo que foi feito no Encontro Ágil). Foi interessante ver como a dinâmica e a técnica de solução de um mesmo problema variam em dojos diferentes.
Conclusão
A retrospectiva foi parte importante da experiência – ajudou a medir o que aprendemos juntos, onde acertamos e onde poderíamos melhorar. E me chamou a atenção ver que, mesmo não sendo o objetivo principal do dojo resolver o problema em si, o pessoal não quis ir pra casa sem ver todos os testes funcionarem. Não tenho dúvidas sobre o impacto positivo que isso terá no dia-a-dia de cada um.
Organizar um dojo não é coisa de outro mundo (gastei mais tempo escrevendo esse post do que preparando) – só é preciso realmente ter um espaço com projetor, comida e interessados. Recomendo reservar entre 1h30 e 2h para a brincadeira, e levar o ambiente pronto, deixando o encontro focado em programar e interagir.
Abrace a simplicidade e ajude as pessoas a seguirem as regras, mas sem pressão. Não perca de vista o aspecto lúdico e não-competitivo do evento, e o resto sai por conta. O pessoal se animou a compartilhar o código e marcar os próximos logo de cara. E o Apontador está considerando promover **dojos abertos para visitantes – interessados, manifestem-se! **
Comments
Vinicius
Podia rolar um dojo aberto, igual rolou na locaweb algumas vezes, eu iria, principalmente se fosse com uma linguagem mais incomum.