sexta-feira, setembro 14, 2007

Scrum e XP...é tudo a mesma coisa?

Primeiramente, por saber que se trata de um post polêmico, gostaria de deixar claro que o seu conteúdo expressa simplesmente a minha opinião sobre o assunto.

Em muitos clientes, palestras e treinamentos, eu sou frequentemente questionado sobre a semelhança de algumas práticas do Scrum com práticas da Extreme Programming. A semelhança existe realmente...mas seriam apenas semelhanças?

Certa vez eu li em algum lugar que, se você utiliza XP, consequentemente já está usando Scrum, o que discordo em gênero, número e grau. Há diferenças, principalmente no comportamento que deve ser exercido em determinadas atividades e práticas.
Para ser claro, para mim, Extreme Programming é engenharia e ponto final! Opa...já estou ouvindo os gritos: Mas e o jogo do planejamento? E a reunião em pé? Isso não é é gerenciamento? Então...XP é gerenciamento e engenharia, certo?
Deixem eu me explicar. Para início de conversa, a maioria das práticas de gerenciamento do XP vieram de onde? Pois é...do Scrum! Então, podemos dizer que muito (quase tudo) que XP faz relativo ao gerenciamento do projeto na verdade é Scrum...só que, por estas técnicas estarem sendo entregues juntamente com uma série de técnicas de engenharia, elas acabam perdendo o brilho.

Eu gosto bastante de algumas práticas de engenharia do XP, principalmente TDD, mas acho que as práticas de gerenciamento que XP "trouxe" do Scrum são melhor abordadas na sua "versão original". Gosto mais do formato de reuniões diárias do Scrum, bem como do planejamento, estimativas, reviews e retrospectivas. Tá, sei que são muito parecidas, é verdade! Mas acho que justamente o foco que Scrum dá nessas atividades faz com que os resultados obtidos por elas sejam mais interessantes. Talvez o motivo disto seja originado na diferença de foco entre os papéis: Coach (XP) e ScrumMaster (Scrum). Nas equipes que conheci (XP ou Scrum) eu sempre vi um papel muito mais atuante do ScrumMaster que do Coach em XP (quanto às tarefas de gerenciamento). Talvez pela importância que Scrum dá a esse papel, sempre os encontrei com mais foco em servir ao time.

Recentemente, ministrando um treinamento de Scrum no Paraná, tive contato com uma equipe que trabalhava há mais de 1 ano com XP, eles inclusive haviam recebido treinamento e coaching em Extreme Programming durante o projeto. Ao me abordarem, percebi que tudo que eles me falavam que "ainda precisava melhorar bastante" nos seus projetos estava diretamente relacionado ao gerenciamento. Confesso que vi poucas equipes no Brasil praticar um TDD e uma pair-programming tão bem quanto eles, o que elimina a possibilidade de faltar-lhes habilidade em XP...mas o planejamento, as retrospectivas, estavam deixando muito a desejar.
Após o treinamento, eles me revelaram que perceberam a necessidade de ter alguém com as características de um ScrumMaster em seu time, e de "deixar" que Scrum cuidasse das práticas ligadas ao gerenciamento. Bem, pode ser apenas um caso, uma empresa (eu tenho certeza que não é)...mas dias atrás recebi um e-mail de um dos diretores de lá me informando que a parte de gerenciamento se tornou mais eficaz após as mudanças adotadas.

Eu particularmente gosto de separar as coisas, vejo que engenharia e gerenciamento de projetos tem muitos interesses em comum, mas por outro lado possuem necessidades bem diferentes (por mais que uma sempre complemente a outra). Não foram poucas as equipes em que, primeiro tive que organizar a parte gerencial e depois a engenharia (ou inverso), ou mesmo lugares que gostariam de manter sua metodologia caseira de engenharia, mas queriam adotar algo para melhorar o gerenciamento de projetos.

Portando pergunto, qual o problema em se dizer: uso XP para engenharia e Scrum para o gerenciamento? Afinal as práticas de gerenciamento de XP já sabemos de onde vieram. Ok...alguém deve dizer, porque em XP precisamos customizar "sensivelmente" algumas práticas para que nos atendessem melhor. Hmmmm...se for assim lançarei aqui a ADPM(aX-Driven Programming & Management), vocês vão se surprender com o que proponho:

# Twins-programming: É uma prática de engenharia semelhante (mas não é) pair-programming;
# Integration Now!: É uma prática de engenharia semelhante (mas não é) integração contínua;
# Wake-up meetings: Não se enganem, é apenas parecido com daily meetings, mas tem detalhes importantes da minha metodologia;
# Planning Party: Também é apenas parecido com a reunião de planejamento, mas há diferenças...eu juro!
# Planning Truco: É uma técnica de estimativas muito interessante.

Mas acreditem...isto não é XP, nem Scrum...é ADPM!

Brincadeiras à parte, na minha opinião isso atrapalha o entendimento dos clientes e talvez principalmente dos que estão iniciando os estudos em agile. Afinal, não parece ser fácil responder à pergunta: qual a diferença entre Scrum Daily Meeting, Standup Meeting, Morning Call e Wake-up meetings?

Finalizando então este post, minha mensagem é: pense em algo para o gerenciamento de seus projetos (Scrum ou não), e em algo para a engenharia deles (XP ou não)...depois pense em como estas duas escolhas podem trabalhar em conjunto, e vá em frente!

Veja um pouco sobre XP @ Scrum clicando AQUI! ou AQUI!

4 comentários:

Leonardo Fernandes disse...

Concordo com vc Alexandre, mas acho que o Vinícius Teles discorda um pouco do que vc falou...

Pablo disse...

"isso atrapalha o entendimento dos clientes e talvez principalmente dos que estão iniciando os estudos em agile."

Eu sou estudante de computação e estou começando a entrar no "mundo ágil" [nem peguei a disciplina eng de soft ainda] mas realmente dá um nó na cabeça de quem ta começando (ou seja, eu me encaixo perfeitamente no comentário parafraseado acima).... ótimo texto cara, deu pra esclarecer bem.

Parabéns pelo blog.

Ricardo Alves Soares disse...

Esclarecedor!

Leandro Siciliano disse...

Muito bom o post. Gostei ! :-)