Esta semana aconteceu a Agile Trends 2014, e junto da mesma a Agile Week, composta por cursos sobre o assunto com boas promoções. Escolhi fazer o curso "Test Driven Development e Behaviour Driven Development" nos dias 22 e 23, ministrado pela Lambda3 em seu escritório na Consolação (SP). Escrevo aqui um relato e comentários.

Terça-feira de manhã, um trânsito absurdo indo para São Paulo seguido de um metrô cheio. Ao chegar ao prédio da Lambda3 na Av Angélica, Consolação, me perguntava se veria o mesmo nível que encontrei na QCon. De certo, encontraria com o William e o Breno, ambos da Lambda3 que conheci no evento, mas será que os instrutores do curso teriam o nível que eu esperava, e que o Eduardo Carrara (Intel) havia me vendido? Até o fim deste dia, tive a certeza que sim. Os instrutores Giovani Bassi e Victor Hugo Germano se mostraram não só grandes conhecedores do assunto, mas com muita experiência prática, paixão pelo desenvolvimento de software como prática e negócio, e também ótimos professores.

A Lambda3 - Impressão Pessoal

A Lambda3 tem um escritório agradável. Mais ou menos como eu pensava que um bom "ateliê de software" (como eles dizem) deve ser: sem divisórias entre as mesas, informal, com um clima de cobrança pela excelência técnica e responsabilidade por gerar valor que só pode existir pela transparência dentro da empresa e uma visão desenvolvida do nosso mercado. Claro que em 2 dias na Lambda3 não deu para confirmar isso, mas os indícios e as conversas que tive com algumas pessoas de lá, como o Juliano Alves e o Victor Germano, me deram essa impressão. Uma informação que me surpreendeu foi sobre o escritório não ter gerentes, hierarquia, e todos os colaboradores terem acesso às propostas e contratos firmados com o cliente. Conversando sobre tal com o Victor, o mesmo me disse que dessa forma cada um sabe se está gerando valor ou prejuízo para a empresa, e isso tem funcionado por 4 anos. Como empresário (ex-empresário) sei que isso só é possível com muita maturidade das pessoas envolvidas.

A sala de treinamentos tem 1 computador para cada 2 estudantes, onde é recomendado que se pratique Pair Programming durante as atividades práticas do curso, revezando a cada 10-15 minutos. Bem iluminada, com lousa e projetor, e com uma sala de recreação com coffee breaks bem abastecidos.

O Curso sobre TDD e BDD

Com 16h de duração, o curso abrangeu muitos assuntos: Testes Automatizados, TDD, Patterns para TDD, Code Smells (com uma atividade muito legal no segundo dia), Continuous Integration e processos de integração com Version Control, e o incrível Behavior Driven Development. O curso é ministrado em 3 dias normalmente, e foi encurtado para a Agile Week, mas o material impresso fornecido contém o conteúdo completo, e pude ver que nenhum conteúdo fundamental foi retirado.

O ritmo do curso é acelerado e preciso. Apesar disso, perguntas são respondidas na hora e de forma completa, mostrando a preparação e experiência dos professores (muito diferente de um curso tradicional mais acadêmico). Os exemplos são dados em C#, e as atividades práticas também. Apesar do Giovanni Bassi mostrar excelente conhecimento da plataforma, senti dificuldades em relação a isso - o curso poderia ser um pouco menos dependente da linguagem. Porém, consegui aproveitar o curso, e conversando com dois outros alunos que não tem largos conhecimentos de C#, os mesmos também ficaram satisfeitos.

Antes do curso eu acreditava saber o que era o Test Driven Development, mesmo tendo usado-o em apenas um projeto. E estava enganado. Lendo sobre o assunto, vendo artigos, etc, não me deram a visão real do que era o TDD. Logo no primeiro período do primeiro dia já percebi que o que julgava como TDD estava errado. Os exemplos codificados na hora, a abordagem de padrões vermelhos e padrões verdes, e o discurso dos professores foram muito valiosos. Inclusive, conversando com o Pedro (um dos alunos que veio do RJ para o curso), acreditamos que o objetivo máximo do primeiro dia citado pelo Victor foi atingido: entender a importância de se testar software, e entender como fazê-lo através de um processo de design (TDD) é interessante.

Para mim, o melhor lab foi o de Code Smells. Alguns eu já conhecia, mas em especial a "intimidade inapropriada" foi nova para mim. Dá vergonha de admitir, mas com certeza já cometí esse erro diversas vezes em projetos anteriores. E aí vem mais uma vantagem do curso: dicas de design de software são dadas e discutidas ao longo dos dois dias. Os professores não se limitam a ensinar as duas práticas TDD e BDD. Eles se extendem para passar conceitos de design, ferramentas relacionadas, experiência, comentários sobre SCRUM e Continuous Integration, etc.

Conclusão

Fiquei muito satisfeito com o curso. O conteúdo é ótimo e o retorno é grande. Percebi que para realmente absorver o conhecimento é necessário praticar bastante e utilizar as práticas em projetos, mas me sinto bem preparado para iniciar esse processo. E mais que isso, algumas visões minhas sobre as práticas e sobre design melhoraram após o curso. Recomendo a todos.