Engenharia de Software
Nove mulheres não fazem um bebê em um mês: por que times menores entregam mais
Na engenharia de software, escalar um projeto não funciona como escalar uma linha de produção. Contratar mais desenvolvedores pode aumentar a capacidade total, mas não acelera proporcionalmente a entrega de uma única funcionalidade ou projeto.
Fred Brooks capturou essa ideia em The Mythical Man-Month ao observar que adicionar pessoas a um projeto de software atrasado tende a atrasá-lo ainda mais. A conhecida analogia diz que uma mulher pode gerar um bebê em nove meses, mas nove mulheres não conseguem gerar um bebê em um mês. A lei não trata de biologia; trata das restrições inerentes ao trabalho complexo.
Por que adicionar pessoas costuma produzir o efeito contrário
A lei de Brooks aponta três razões fundamentais:
- Tempo de adaptação. Novos integrantes precisam aprender o código, o domínio e o contexto. Pessoas experientes interrompem seu trabalho para apoiar essa adaptação, reduzindo temporariamente a produtividade. Durante esse período também aumenta o risco de defeitos e retrabalho.
- Sobrecarga de comunicação. Os caminhos de coordenação crescem rapidamente com o tamanho do time. Três pessoas possuem três conexões possíveis; seis pessoas já possuem quinze. Mais alinhamentos, reuniões e transferências de contexto consomem o tempo que deveria ser usado para entregar.
- Divisibilidade limitada do trabalho. Nem toda tarefa pode ser dividida em partes independentes. Design, decisões arquiteturais e integração frequentemente exigem uma sequência coerente. Fragmentar um problema complexo em tickets pequenos não garante que uma solução consistente surgirá no final.
Essas forças impõem um limite ao ganho obtido simplesmente adicionando desenvolvedores. Em determinado ponto, o custo de coordenação e integração supera o benefício de ter mais mãos disponíveis.
O caso a favor de times pequenos e focados
Há décadas, práticas ágeis defendem times pequenos e multifuncionais. Jeff Bezos popularizou na Amazon a regra do time de duas pizzas: se duas pizzas não alimentam a equipe, ela provavelmente é grande demais.
A lógica é que times menores reduzem a comunicação, decidem mais rapidamente e preservam responsabilidade clara. O pesquisador J. Richard Hackman também alertava que grupos maiores sofrem mais com problemas de processo e dinâmicas disfuncionais.
Relatos e análises de projetos de software frequentemente colocam quatro ou cinco pessoas como uma faixa eficiente. A conclusão exata varia conforme o domínio, mas a direção é consistente: aumentar o grupo não produz ganho linear e pode elevar defeitos e custo.
Meu número prático: três desenvolvedores
Depois de experimentar diferentes composições de equipe como CTO na EITS, encontrei uma variação pragmática: três desenvolvedores conseguem entregar resultados expressivos durante uma sprint de duas semanas.
Em um trio, existem apenas três caminhos de comunicação. A equipe consegue se organizar sem coordenação excessiva e cada pessoa mantém um senso claro de responsabilidade. É mais simples compartilhar contexto, revisar trabalho e colaborar nas decisões de design.
Adicionar mais pessoas inevitavelmente cria esperas e transferências. O tempo gasto em alinhamento cresce mais rápido que o tempo produtivo acrescentado.
Isso não trata apenas de eficiência, mas também de criatividade. Problemas complexos se beneficiam de foco profundo. Quando muitas pessoas participam, o trabalho tende a ser fragmentado em subtarefas e a visão do todo se perde. Um trio pode colaborar em arquitetura, implementação e testes preservando a coerência da solução.
Restrições externas ao time
Adicionar desenvolvedores pressupõe que exista trabalho paralelo suficiente para todos. Na prática, requisitos de negócio, design de produto e decisões de stakeholders frequentemente limitam o fluxo.
Quando não existem tarefas bem definidas, engenheiros adicionais ficam esperando ou começam a trabalhar sobre premissas frágeis, aumentando o retrabalho. Criatividade e desenho de solução também não escalam de forma linear: alguns problemas exigem ciclos de descoberta e decisão que não melhoram apenas com mais participantes.
Como resistir à vontade de aumentar o time
- Invista cedo. Adicionar pessoas no final é especialmente prejudicial. Se o crescimento será necessário, faça-o quando o custo de adaptação ainda pode ser absorvido.
- Priorize capacidade, não quantidade. Um profissional experiente e adequado ao contexto pode produzir mais impacto que várias contratações sem o repertório necessário.
- Esclareça arquitetura e requisitos. Muitos atrasos nascem de requisitos ambíguos ou limites arquiteturais ruins. Definir o que deve ser construído e como as partes se conectam reduz problemas posteriores.
- Mantenha autonomia. Quando vários times pequenos trabalham em paralelo, estabeleça interfaces claras e minimize dependências entre eles.
Conclusão
A metáfora do bebê permanece porque resume a dinâmica central de projetos de software: nem todo trabalho pode ser comprimido adicionando pessoas. Existe um limite natural de paralelização; depois dele, comunicação, adaptação e carga cognitiva reduzem a velocidade.
Times de quatro ou cinco pessoas aparecem com frequência como uma faixa eficiente, e minha experiência mostra que três desenvolvedores muitas vezes oferecem o melhor equilíbrio entre velocidade, qualidade e criatividade.
Antes de aumentar um time para cumprir um prazo, pergunte se as pessoas adicionais realmente moverão a entrega ou apenas acrescentarão complexidade. Às vezes, a estratégia mais eficiente é dar a um time pequeno objetivos claros, autonomia e confiança para entregar.
O que este artigo provocou?
Você pode marcar mais de uma opção e desfazer quando quiser.
Comentários
Carregando comentários…