O que é o MMM
Primeiro, quero explicar o contexto da lei de Brook. Qual foi a suposição que o fez criá-lo em 1975?
Um mês-homem é uma unidade hipotética de trabalho que representa o trabalho realizado por uma pessoa em um mês; A lei de Brooks diz que é impossível medir o trabalho útil em homens-mês.
fonte: https://en.wikipedia.org/wiki/The_Mythical_Man-Month
No passado, projetos de programação complexos significariam grandes sistemas de monólitos. E Brooks afirma que isso não pode ser perfeitamente particionado em tarefas discretas que podem ser trabalhadas sem comunicação entre os desenvolvedores e sem o estabelecimento de um conjunto de inter-relações complexas entre as tarefas e as pessoas que as executam.
Isso é verdade em monólitos de software altamente coesos. Independentemente da dissociação, o grande monólito exige o tempo necessário para que os novos programadores aprendam sobre o monólito. E maior sobrecarga de comunicação que consumirá uma quantidade cada vez maior do tempo disponível.
Mas realmente tem que ser assim? Temos que escrever monólitos e manter canais de comunicação para n(n − 1) / 2
onde n
está o número de desenvolvedores?
Sabemos que existem empresas em que milhares de desenvolvedores estão trabalhando em grandes projetos ... e funciona. Portanto, deve haver algo que mudou desde 1975.
Possibilidade de mitigar o MMM
Em 2015, o PuppetLabs e o IT Revolution publicaram os resultados do 2015 State of DevOps Report . Nesse relatório, eles se concentraram na distinção entre organizações de alto desempenho e não-alto desempenho.
As organizações de alto desempenho mostram algumas propriedades inesperadas. Por exemplo, eles têm o melhor desempenho de prazo de entrega do projeto em desenvolvimento. Melhor estabilidade operacional e confiabilidade nas operações. Além do melhor histórico de segurança e conformidade.
Uma das coisas surpreendentes destacadas no relatório são as métricas de implantações por dia. Mas não apenas as implantações por dia, elas também mediram a implantação / dia / desenvolvedor e qual é o efeito de adicionar mais desenvolvedores em organizações de alto desempenho versus baixo desempenho.
Este é o gráfico desse relatório -
Enquanto as organizações de baixo desempenho estão alinhadas com as premissas do Mythical Man Month. As organizações de alto desempenho podem escalar linearmente o número de implantações / dia / dev com o número de desenvolvedores.
Uma excelente apresentação no DevOpsDays London 2016 por Gene Kim fala sobre essas descobertas.
Como fazer isso
Primeiro, como se tornar uma organização de alto desempenho? Existem alguns livros que falam sobre isso, não há espaço suficiente nesta resposta, então vou apenas vincular a eles.
Para organizações de software e TI, um dos fatores críticos para se tornar uma organização de alto desempenho é: foco na qualidade e velocidade .
Por exemplo, Ward Cunningham explica Dívida técnica como todas as coisas que deixamos sem correção. Isso é aceito pela gerência porque sempre vem com a promessa de que será corrigido quando houver tempo.
Nunca há tempo suficiente e a dívida técnica se torna cada vez pior.
Quais são essas coisas que causam o crescimento da dívida técnica?
- código legado
- configuração manual de ambientes
- teste manual
- implantações manuais
Código legado Conforme definido em Trabalhando efetivamente com o código legado de Michael Feathers, qualquer código que não tenha testes automatizados.
Sempre que atalhos são usados para obter o código para produção; as operações estão sobrecarregadas com a manutenção dessa dívida para sempre. Então, o processo de implantação se torna cada vez mais longo.
Gene conta uma história em sua apresentação sobre uma empresa que tem implantações de seis semanas. Envolvendo dezenas de milhares de etapas tediosas e extremamente propensas a erros, atando 400 pessoas, e elas o faziam quatro vezes por ano.
Um dos princípios do DevOps é que a confiabilidade advém de implantações menores com mais frequência.
Exemplo
Essas duas apresentações mostram tudo o que a Amazon fez para diminuir o tempo necessário para implantar o código na produção.
Segundo Gene, a única coisa que muda ao longo do tempo nessas organizações de alto desempenho é o número de desenvolvedores. Assim, pelo exemplo da Amazon, você poderia dizer que em quatro anos eles aumentaram suas implantações dez vezes apenas adicionando mais pessoas.
Isso significa que, sob certas condições, com a arquitetura certa, as práticas técnicas corretas, as normas culturais corretas, a produtividade do desenvolvedor pode aumentar à medida que o número de desenvolvedores aumenta. E o DevOps está definitivamente no meio de tudo isso.