governança ágil
Publicado: 01/05/2009 Filed under: principal 2 comentáriosAlém de outras atividades, dirijo algumas equipes de desenvolvimento. Por conta disso, a governança é um tema que me é caro. Ou seja, como saber se minhas equipes estão melhorando. E já que acreditamos no modelo ágil, como saber se minhas equipes estão se agilizando.
Uma crítica habitual – e pertinente, de certa forma – que se faz a XP e Scrum é a falta de um sistema de governança. Ou seja, como definir um mecanismo que direcione as equipes a trabalhar com desenvolvimento ágil. Falo apenas de XP e Scrum pois não sei se as demais metodologias ágeis têm mecanismos de governança.
A ideia desse post é mostrar um exemplo de sistema de governança ágil. Esse exemplo se foca apenas nos aspectos práticos, sem entrar diretamente nas searas filosófica, psicológica e sociológica do manifesto e do movimento.
Já utilizamos a maior parte das ideias que vou expor aqui na Fortes. Algumas estão bem no início.
política de cargos, salários e benefícios
Estabeleça uma política agressiva (acima da média do mercado) de cargos, salários e benefícios. Nessa política, lembre-se de considerar características não-técnicas, como habilidade de trabalhar em equipe. Sei que esse é um tema difícil, que muitas vezes requer um trabalho de longo prazo, mas ter as melhores pessoas invariavelmente esbarra em ter melhores salários.
- value individuals
- value interactions
seleção de profissionais
Estabeleça um bom processo de recrutamento e seleção de profissionais. Realize diversas entrevistas, observe os aspectos pessoais, técnicos e interpessoais, aplique testes e dinâmicas. Selecione os melhores profissionais. Uma dica: se você ainda não tem uma política agressiva de salários, lembre-se dos profissionais inexperientes e estagiários, observando as características pessoais (vontade de aprender, autodidatismo, iniciativa, boas notas nas disciplinas que interessam, etc.) e interpessoais (negociação, comunicação, solidariedade, etc.).
- value individuals
- value interactions
treinamentos
Estabeleça uma política de treinamentos. Isso pode ser feito de várias formas: estimulando grupos de estudo e coding-dojos, treinamentos formais, leitura de livros, etc. Aqui na Fortes temos um evento anual de integração. Esse evento serve também para rememorarmos o que fizemos durante o ano. Um dos tópicos deve ser “treinamentos realizados”. Se não se quiser fazer esse evento, pode-se elaborar um relatório simples contendo o mesmo tópico. Ou até uma prosaica atividade anual na sua agenda: “Que treinamentos fizemos?” Obs.: na política de treinamentos, lembre-se de incluir disciplinas de habilidades interpessoais.
- value individuals
- value interactions
diminuição da documentação
Estabeleça as seguintes atividades mensais:
- Verificar se há documentação legada que pode ser descartada;
- Verificar se há documentação que pode ser descartada do processo;
- Verificar se há documentação que pode ser simplificada (desformalizada) no processo.
Documentação em excesso desestimula os relacionamentos e supervaloriza os processos.
- value interactions
- over processes
- Simplicity–the art of maximizing the amount of work not done–is essential.
contratos
Estabeleça contratos em que o cliente se obriga a participar pelo menos das reuniões de planejamento e de entrega. Insira ainda as condições de mudança de requisitos. Mantenha esse modelo bem simples, como normalmente as metologias ágeis pregam, de simples reordenação de histórias. Estabeleça ainda a seguinte atividade mensal: perguntar ao cliente em que você deve melhorar.
- value customer collaboration
- value responding to change
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
montando equipes
Monte equipes multifuncionais. No template do plano de projeto, na seção de equipe, coloque o seguinte comentário: “[montar equipe multifuncional, incluindo analistas de negócio]”. Lembre-se ainda de colocar todos os membros juntos, na mesma sala. Essa proximidade favorece a comunicação.
- value interactions
- Business people and developers must work together daily throughout the project.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
relatório mensal
Peça que cada equipe elabore um relatório mensal com as seguintes informações:
quantidade de versões disponibilizadas
Quantidade de versões disponibilizadas para o cliente. Pode-se ainda diferenciar os releases de experimentação dos releases de produção.
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
satisfação dos colaboradores
Colete a nota de satisfação de cada colaborador de forma anônima e tira uma média. Se houver uma queda nesse valor, investigue para descobrir o problema e encaminhar uma solução.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
satisfação do cliente
Da mesma forma que com os colaboradores, monitore a satisfação do cliente.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
progresso do projeto
Meça o progresso do projeto. Uma tabela simples com as colunas história, tamanho e o indicador de conclusão é o suficiente. Veja o exemplo abaixo:
história tam concl ---------- --- ----- história 1 15 sim história 2 8 sim história 3 10 não ... história N 12 são percentual de conclusão do projeto: 23%
- Working software is the primary measure of progress.
relação entre o tempo gasto com desenvolvimento, correções e outras atividades
Idealmente as equipes devem trabalhar apenas desenvolvendo novas funcionalidades. Mas há necessidade de trabalharem também em correções de defeitos e em outras atividades como suporte. Portanto, monitore o tempo gasto pelas equipes nessas atividades extras. Veja o exemplo abaixo:
desenvolvimento ..... 65%
correções ........... 15%
outras atividades ... 20%
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
qualidade do código
Informações como:
- Cobertura do código por testes unitários;
- Código duplicado;
- Classes longas;
- Métodos longos e complexos.
Nesse caso, não tem jeito: vai ter de recorrer a ferramentas mais sofisticadas. Dê uma olhada nesses links aqui:
http://josepaulopapo.blogspot.com/2008/04/qualidade-cdigo-manutenibilidade.html
Essas ferramentas devem idealmente ser disparadas pelo servidor de build, gerando relatórios de métricas automaticamente.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity–the art of maximizing the amount of work not done–is essential.
ações de melhoria
Lista de ações de melhoria. É uma forma de saber se a equipe está melhorando continuamente. Se achar esse modelo excessivamente burocrático, você pode simplesmente pedir para informarem a quantidade de retrospectivas realizadas.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
metas
Estabeleça metas claras – e deixe que as equipes escolham seus processos e ferramentas. Você pode estabelecer essas metas para os indicadores numéricos presentes no relatório mensal que citei acima. Dependendo da senioridade da equipe, essa liberdade pode não ser tão benéfica. Nesse caso, estabeleça um padrão de referência (isso é um pleonasmo?) de processos e ferramentas e administre a rigidez com que induz a equipe a utilizá-lo. A falta de metas claras amplifica a necessidade por maior comando-e-controle, supervalorizando ainda os processos.
Além dessas metas numéricas, peça também para cada equipe um relatório por iteração, indentificando as histórias planejadas e as concluídas, monitorando assim o nível de eficiência do planejamento. Essa é uma forma indireta de estabelecer metas.
- The best architectures, requirements, and designs emerge from self-organizing teams.
As ideias acima já garantem um bom nível de governança. Mais algumas ações podem reforçar o trabalho:
reporte para a diretoria
Aqui na Fortes, condensamos todos os dados numéricos presentes no relatório mensal, de todas as equipes, e calculamos indicadores gerais do setor de desenvolvimento. Reportamos esses valores para os demais diretores da empresa.
monitoramento das práticas
No relatório mensal, pode-se estabelecer um checklist para monitorar o andamento das práticas. Ex.:
[ ] ambiente informativo
[ ] build de dez minutos
[ ] TDD
[ ] integração contínua
[ ] programação em par / inspeção / revisão
[ ] código coletivo
[ ] reuniões diárias
Na integração contínua, pode-se ainda solicitar a quantidade de integrações realizadas.
equipe de QA
Estabelecer uma equipe de QA para fazer incursões nas equipes para saber se as informações reportadas condizem com a realidade.

Olá Clavius!
Muito bacana o que li aqui.
Sobre o que você escreveu: “… Ou seja, como saber se minhas equipes estão melhorando …”.
Acredito que nesse ambiente, elas estão, sim, melhorando. Mas é necessário provar isso quantitativamente. Por tudo o que você está fazendo ai e é fascinante, só vou deixar algo escrito sobre como eu levo essa questão:
– Seria interessante que essas ações implementadas na Fortes pudessem contar com métricas e indicadores para testes estatísticos;
– Daí, cada ação deveria ter uma cadeia de hipóteses de melhoria (pelo menos uma hipótese para cada);
– Essas hipóteses seriam testadas estatísticamente;
– Contaria com testes de regressão, correlação, Qui-quadrado, t-student, Análise de variância e assim por diante dependendo do tipo de métrica e indicador avaliado.
– Você poderia contar com testes de hipóteses com 95% de confiança indicando que suas ações de processo estão melhorando as equipes.
Para essa idéia usamos o Lean Six Sigma, ágil com o Lean e fortemente focado em dados e fatos com o Six Sigma.
– Você poderia usar eventos kaizen, que são rápidos (1-3 semanas) usando o DMAIC (Definição, Medição, Análise, Implementação de Melhorias e Controle), ou algo parecido.
Eu utilizo o Lean Six Sigma, mas sei que qualquer iniciativa que tenha algo bastante parecido com o apresentado na metodologia Lean Six SIgma deve apresentar resultados semelhantes ou até melhores, ou seja, depende da equipe.
Abraços e é empolgante todo esse trabalho na Fortes! Sucesso para vocês!
Oi, Marcelo.
Mas provamos. Observamos a evolução numérica de itens como quantidade de versões disponibilizadas, satisfação dos colaboradores e dos clientes, progresso do projeto, esforço gasto com desenvolvimento em si, cobertura do código, código duplicado, classes longas, métodos longos e complexos.
Cada indicador desse tem uma meta anual estabelecida. Como em muitos deles estamos no início, essas metas foram definidas na base do chute (ou o belo “opinião dos especialistas”). A ideia é posteriormente observar as tendências e definir as metas através de mecanismos de projeção.
Estudar Six Sigma está no meu backlog. Um dia chego lá. E quando chegar, certamente reportarei aqui.
No mais, muito obrigado pelos elogios. São absolutamente estimulantes.