E o manifesto ágil, meu caro CSP
Já faz algum tempo que não tenho tanta paciência para ficar discutindo metodologias ágeis para desenvolvimento de software. A minha cabeça de alguma forma passou a pensar que tudo se resume a aplicar bem o manifesto ágil. E isto, por si só, não é nada fácil. Exige muita disciplina, capacidade, atenção e profissionalismo. Nenhuma metodologia, ferramenta ou gerente vai resolver o real problema do nosso mercado: escrever software útil e de qualidade.
Danem-se os selos CMMI, as certificações do PMI e da Scrum Alliance, os programadores que enchem currículos de siglas e código de sujeira. O que vai resolver o nosso problema é gente competente, disciplinada (no sentido dado pelo Uncle Bob no seu keynote da RailsConf), capaz de ouvir o cliente e criar uma relação verdadeira de parceria com ele, com características para evoluir constantemente. Se você ou a sua empresa são capazes de fazer isso bem, não se preocupe em dar um nome para os métodos que você usa para fazer o seu trabalho. É feio sair por aí dizendo que aplica scrum (ou qualquer outra coisa da moda), encher o bolso de dinheiro e se esquecer os princípios básicos do manifesto ágil.
Esta introdução longa é para desabafar a raiva acumulada pelo monte de besteiras que eu ouvi em algumas palestras no Scrum Gathering 2009. Muita gente já escreveu e/ou tocou em pontos polêmicos sobre o evento. Quero dar os meus pitacos, então vamos ao que mais me irritou naqueles dois dias:
- Times auto-gerenciáveis - pelo menos 2 palestrantes (Ricardo Vargas e Fábio Câmara) afirmaram categoricamente que nunca viram um time capaz de se gerenciar. E somente isso. Não contaram alguma experiência ou analisaram o motivo pelo qual isso é impossível no ambiente deles. Este é um assunto muito interessante e qualquer discussão é válida.
- Ken Schwaber - imagine que você vai ter uma aula de futebol com o Ronaldinho Gaúcho e o cara gasta o tempo falando que no futebol a bola é redonda, os times têm 11 jogadores, o objetivo é fazer o maior número de gols, etc, etc, etc. Pois é, assim foi a palestra de um dos criadores do scrum. O sujeito ficou quase uma hora falando o básico e o óbvio, fez uma brincadeira mais do que manjada para falar de “comando e controle” versus “times auto-gerenciáveis” e finalizou anunciando que a Scrum Alliance vai lançar o treinamento para CSD (Certified Scrum Developer) e que este vai ser baseado em ferramentas da Microsoft. Precisa falar mais alguma coisa?
- Fábio Câmara - a palestra do Fábio foi a mais polêmica, ainda mais sabendo que ele é um CSP (Certified Scrum Practitioner). Li o título “Usando scrum com o Visual Studio Team System” e fiquei curioso para saber o que faz alguém precisar tanto de uma ferramenta para usar scrum. No meio da palestra o Fábio algumas afirmações, dentre elas: “eu questiono o uso de testes, principalmente os unitários, em projetos time-driven”; “eu tinha um estagiário que eu chamava de controller porque ele ia todo dia de manhã de mesa em mesa perguntando para o desenvolvedor se ele estava fazendo a tarefa que ele deveria estar fazendo. O VSTS me diz isso, uma vez que ele cria um link entre o requisito e o pedaço de código que foi escrito para atender aquele requisito. Eu também consigo saber quem escreveu cada linha, porque quando você pergunta numa sala ‘quem escreveu essa linha aqui?’ fica todo mundo assobiando”; “é incrível como o princípio de pareto se aplica em quase todos os projetos de software. 20% das pessoas fazem 80% do trabalho”; “os desenvolvedores, no final do dia de trabalho, fazem check-in do que eles produziram. No VSTS eu consigo ver cada check-in e passar a mão no telefone pra perguntar por cara lá em Recife porque ele subiu só 25 linhas de código quando a média dele era de umas 200″; “o scrum master e responsável por distribuir as tarefas para o time”. Logicamente algumas pessoas começaram a questionar tudo isso e ele descreveu um cenário para ‘justificar’ tudo isso: “imagine uma equipe grande. Eu já gerenciei equipes com 60 pessoas, algumas trabalhando em outros estados, etc …”. As minhas sugestões para o Fábio são as seguintes: 1) demita umas 50 pessoas da sua equipe (olha o problema do princípio de pareto sendo resolvido) e forme um time com os 20% que fazem 80% do trabalho e no qual você possa confiar e não controlar (opa, pode mandar o controller embora também). Pare de procurar culpados, isso não resolve nada, é desperdício. Se alguém fez alguma coisa errada no código, esse alguém foi o time e ele mesmo resolve (você já deve ter ouvido falar de propriedade coletiva do código e programação em par). Você não vai precisar ficar bancando o detetive pra descobrir quem foi o infeliz que escreveu a linha 1567 da classe XXXX ou bancando o leão-de-chácara do repositório. Deixe os seus programadores escreverem muitos testes e automatizá-los. 2) se vocês estão sem tempo para escrever os testes, peça a colaboração do seu cliente; explique que o time precisa escrever testes para entregar um produto de qualidade, trabalhem com ele na priorização das histórias, mostre as vantagens de desenvolver um produto iterativamente, melhorando continuamente, respondendo às mudanças. 3) pare de valorizar mais o Visual Studio do que a sua equipe. 4) nunca, jamais, de forma alguma, esqueça do manifesto ágil 5) e, POR FAVOR, pare de falar que o que você está fazendo é scrum.
Na minha opinião, o evento contou com palestras muito boas (Juan Bernabó, Alexandre Magno e Luiz Cláudio Parzianello), mas estes 3 fatos citados bastaram para fazer do Scrum Gathering 2009 - Brazil e da Scrum Alliance um baita fiasco.
Fala Adolfo, pois é, acho que suas críticas do evento foram mais abertas. Concordo muito com as suas sugestões para resolver os problemas do Fabio Camara. O mais importante é o item 5.
Abraços!
Rodrigo Yoshima
19 May 09 at 8:24 am
Excelentes suas observações, Adolfo.
Eu sabia que a palestra dele ía ser nesse nível, pena que eu perdi o calor da discussão
Acabei assistundo a do Daniel Wildt que, no mínimo, me acrescentou mais. Agilidade é cultura.
Me desapontei o Key Note do Ken Schwaber, também. Primeiro porque eu achei que ele viria pessoalmente…
Abrazzo!
Luciano Coelho
19 May 09 at 12:26 pm
Falou tudo Adolfo, acho que viver atrás de uma máquina e de alguma ferramenta para interagir com as pessoas, controlá-las e achar que não existe time auto-gerenciável, é algo de quem não é usa Scrum e muito menos XP.
Parabéns pelo post, e vamos na prática mostrar que a realidade não é bem assim.
Mauricio Amorim
19 May 09 at 1:17 pm
Eu gostaria de ter estado lá porque até agora eu não sei se isso aconteceu mesmo ou se é uma pegadinha coletiva combinada no evento
Gostaria de saber também se a Scrum Alliance sabe disso tudo e como ela se posiciona a respeito. To pensando em mandar um e-mail pra lá perguntando…
Guilherme Chapiewski
19 May 09 at 2:07 pm
@Guilherme Chapiewski
Infelizmente não foi pegadinha, Guilherme. Tudo isso aconteceu. Preocupante, não?
Mas fiquei curioso para saber a posição da Scrum Alliance. Se você mandar o email e receber alguma resposta, nos deixe informado.
[]s
Adolfo Sousa
19 May 09 at 2:35 pm
@Rodrigo Yoshima
Faltou uma dica: “Test all the fucking time”
Adolfo Sousa
19 May 09 at 3:35 pm
Parabéns pelo desabafo e pela sinceridade. Pessoas como o Fabio Câmara que queimam o filme dos desenvolvedores .NET. O cara propaga a dependência do uso de ferramentas pelos desenvolvedores, como se o Visual Studio fosse solucionar todas as questões dentro de uma equipe. Por conta dessas atitudes há uma legião de “programadores arrastadores e soltadores”, que não conseguem escrever poucas linhas de código sem depender do uso do intellisense. Olha que cenário triste: codificadores que pensam que sabem .NET seguindo (e aplaudindo) o cara que pensa que sabe Scrum.
Prodis
21 May 09 at 6:32 am
Muito bom Adolfo! Parabéns!
Não perdi muita coisa então deixando de ir no Scrum Gathering. Li vários posts sobre o evento, e aparentemente foi um ciclo de palestras sobre “más interpretações de Scrum” e “não entendo o que Scrum e Agilidade tem a ver”.
O importante, pelo que percebo, é começar com o time fazendo uma metodologia estilo XP, enraizando a cultura ágil no dia-a-dia dos desenvolvedores, e só então partir para um Scrum ou outra metodologia ágil de gerência de projeto.
Saroka
31 May 09 at 1:59 pm
@Saroka
Pois é, Saroka. Pra mim, se alguém desenvolve software, tem que usar no mínimo XP. Não dá pra viver sem testes, cliente presente, integração contínua, etc, etc, etc, etc
Adolfo Sousa
2 Jun 09 at 7:16 pm