Estou trabalhando em um projeto na Austrália onde o pessoal adota agile completo com SCRUM, XP, BDD (Business Driven Development) e TDD (Test Driven Development)
Vou escrever esse em portugues porque eu não sei se o pessoal esta usando as mesmas coisas no Brazil. E tambem quero praticar meu portugues já que não falo e nem escrevo em pt_br há bastante tempo.
Ferramentas utilizadas são:
Cucumber: Testes de integração automatizados escritos por QA (quality assurance). Testes são implementados em Ruby e JRuby.
Selenium + Webrat: End-to-end testes totalmente automatizados - acabou aquela época de o tester ficar igual a um macaquinho clicando em todos os links etc...
Agile: stand up meeting todo dia pela manha, Retro meetings no final de cada iteração para discutir o que ocorreu de bom e ruim. É tipo uma lavação de roupa suja por meia hora. Pair programming o tempo todo - eu disse o tempo todo. Nenhum codigo pode ser escrito sem "pair
JBoss ESB: Transformação dos dados e alimentaçao do FAST. A transformaçao é feita usando Smooks e gerando um XML através do Freemaker e entao fornecendo essa XML para armazenamento pelo FAST.
Liquibase: Melhora o controle de mudanças no banco de dados.
MySql: Base de dados de uns 90GB.
FAST ESP: Melhorar performance nas pesquisas e na indexação de documentos. Neste caso FAST e usado como um banco de dados com performance elevada. NÃO ache que documento é um .doc ou .xls. Na minha opinião FAST é um "Elefante branco".
Git: Controle de versoes - tipo SVN.
Hudson: Nosso CI (Continuous integration)
O que eu mais gostei:
Com o pair programming eu aprendi Ruby em um tempo muito reduzido. Tambem aprendi a escrever código curto e fácil de ser testado.
Achei o BDD legal. Outra regra no projeto é: Não se escreve código sem Cucumber test que o justifique. Cucumber testes são escritos no ponto de vista do usuário final e segem todos os critérios de aceitação para aquela implementação. Isso quer dizer que quando você desenvolvedor escreve seu codigo, voce já sabe exatamente o que tem que implementar.
Comunicação constante no stand-up sobre o que voce fez, vai fazer e problemas.
Qualquer pedaço de papel ou rabisco vira documentação.
Também acabou aquela palhaçada de o gerente do projeto ficar enchendo a porra do saco a cada 10 minutos perguntando sobre o andamento da tarefa - é só olhar o card board que está tudo lá (what the fuck???).
Refactoring o tempo todo. Voce se sente seguro em efetuar um refactoring porque o código esta todo coberto por testes unitários.
Trabalhei eu vários projetos onde existiam códigos cheios de gambiarra, ninguém sabia como funcionava e niguém podia alterar nada senao parava de funcionar - eu tinha até medo de tocar naquele código.
Com agile, o codigo fica mais maduro com o passar do tempo porque ele vai ser testado e refatorado centena de vezes.
Abraço a todos!
Leonardo