Dois movimentos que tem ganhado muita tração nos últimos anos na TI são a Cultura DevOps e o Método Kanban.
Já falei sobre a Cultura DevOps aqui nesse espaço em vários posts organizados nessa página. Mas é sempre bom reforçar o conceito de DevOps. Vamos lembrar dos seus três caminhos essenciais.
O Tao do DevOps
- O princípio do fluxo, que acelera a entrega do trabalho do Desenvolvimento para Operações e então para os nossos clientes
- O princípio do feedback, que nos permite criar um sistema de trabalho cada vez mais seguro;
- O princípio de aprendizado contínuo e experimentação, que promove uma cultura de alta confiança e uma abordagem científica para a melhoria organizacional como parte de nosso trabalho diário.
Já o Kanban é um método de gestão de mudanças que busca promover a melhoria de maturidade para o trabalho do conhecimento. No caso particular da TI, um tipo de trabalho de conhecimento, o método Kanban te ajuda a entregar e sustentar software com menor fragilidade.
Gene Kim, um dos autores do excelente livro e bíblia do DevOps chamado O Manual do DevOps fez uso de várias práticas gerais do método Kanban para definir os princípios e guiar como devemos adotar DevOps na práticas nas nossas organizações.
O purgatório do DevOps
Em algumas empresas onde já rodei diagnósticos de maturidade DevOps vi desenvolvedores muito habilidosos insistindo em implementar ferramentas DevOps pelo culto à tecnologia.
Frases que já ouvi se parecem com o seguinte:
“Temos pipelines de CI implementados para todo o nosso código .NET”
“Temos aqui o JUnit, Jenkins, Terraform e Ansible nos ajudaram em nossos fluxos CI/CD. Nosso DevOps está acelerado”
“Estamos criando automação de testes de unidade em nossos branches. E olhe só, eles são disparados automaticamente quando um commit é feito no branch principal”.
Quando pergunto sobre como isso ajudou a reduzir o tempo de entrega (Lead Time) ou a taxa de defeitos, ouço um silêncio abissal. Os times não tem medições e não tem a mínima preocupação com isso em suas implementações.
DevOps … de verdade
A mensagem é clara. Se alguém ainda acredita estar fazendo DevOps porque apenas criou um pipeline de uma ferramenta CI/CD ou um conjunto de testes automatizados, essa pessoa está equivocada.
Qualquer ação que façamos e que não esteja conectada ao Tao do DevOps é ilusão (ou sendo bem rude; pura masturbação técnica).
Um teste Litmus para você avaliar a saúde da sua implantação DevOps é o seguinte:
- Se você não evidencia como o seu tempo médio de entrega das demandas está sendo reduzido, o seu movimento DevOps está meia boca.
- Se você não evidencia como você está criando sistemas mais seguros (menos frágeis), como por exemplo a redução de problemas graves em produção, o seu movimento DevOps continua meia boca.
- Se você não evidencia como a sua TI está cada vez mais preparada para suportar hipóteses de negócio do conceito à produção, o seu movimento ainda estará meia boca.
O Método Kanban para acelerar Implantações DevOps
O método Kanban tem no seu núcleo as ferramentas conceituais para você acelerar a sua iniciativa DevOps.
Ele se baseia no mecanismo de mudanças evolucionárias, i.e, pequenas mudanças que são aplicadas continuamente sobre um sistema de trabalho para aumentar a robustez desse sistema.
O método Kanban possui seis práticas genéricas. Todas elas são úteis para implantação DevOps, mas destaco três aqui nessa postagem.
1. Gestão do fluxo
O fluxo é o movimento do seu trabalho de TI (demandas, projetos, incidentes, erros). O método Kanban diz que devemos gerenciar o trabalho através de entregas previsíveis e suaves. E sempre usar dados para medir a sua maturidade.
Essa prática Kanban está profundamente conectada com o primeiro caminho do DevOps. E uma métrica central do sistema Kanban, o Lead Time, pode te ajudar claramente a mostrar a eficiência de sua implementação DevOps.
Quando medimos continuamente o Lead Time e a variabilidade dessa medida em nossas implantações DevOps, você passa a ter uma ferramenta poderosa para mostrar valor e agilidade de negócio de forma concreta. No wishful thinking!
Como exemplo, pude acompanhar uma empresa que reduziu o seu lead time das demandas de 30 para 20 dias ao longo de alguns meses com a introdução consistente de estressores DevOps no seu sistema de trabalho. Até o mais céticos dos gerentes envolvidos deu o braço a torcer.
2. Laços de Feedback
O método Kanban estimula que tenhamos cadências específicas para avaliar a nossa maturidade, sempre dirigidas por dados. Essas cadências promovem a colaboração entre as pessoas, aprendizado e melhorias.
Por exemplo, em reuniões como a retrospectiva de time discutimos como está a nossa previsibilidade das nossas demandas, variabilidade do tempo de entrega e taxa de defeitos. Com isso, podemos avaliar, periodicamente, se as nossas ações tecnológicas e ferramentas estão ajudando o nosso sistema a fluir. A colaboração aumenta e isso é pilar central para a criação de uma cultura DevOps.
3. Políticas explícitas
Quando encontramos um sistema de trabalho ruim, podemos descobrir e introduzir políticas que nos ajudam a reduzir as fragilidades nesse sistema.
Por exemplo, pense em algumas dessas ideias DevOps:
- Revisões por pares;
- Git Merge Requests;
- Automação de testes de unidade
- Critérios de aceite para promoção de builds;
- Testes de estresse na infraestrutura.
Essas ideias podem ser representadas no sistema Kanban a partir de políticas de trabalho. Essas e outras políticas podem ser introduzidas sob demanda para eliminar as fraquezas no seu ambiente e criar um organismo cada dia mais forte.
Como um outro exemplo, pude acompanhar um time com baixa maturidade de arquitetura e qualidade que avaliou as fragilidades o seu sistema de fluxo e introduziu uma política de revisão obrigatória do código por pares. Essa política, tornada obrigatória pelo próprio time, conseguiu trazer estabilidade para as decisões arquiteturais e iniciar o pagamento da dívida técnica que esse time introduziu ao longo de seis meses de trabalho indisciplinado. O sistema Kanban ajudou o time a implementar a política e medir o efeito prático dessa política no lead time e taxa de defeitos em produção.
Resumo – Esteróides Naturais
Assim como o hormônio do crescimento ou a testosterona, anabolizantes naturais que ajudam humanos a se tornarem mais fortes e resilientes, podemos pensar que o sistema Kanban introduz formas legítimas de você melhorar a sua implementação DevOps.
Times DevOps que introduzem práticas Kanban no seu sistema de trabalho tem muito mais chance de sucesso. Eles reduzem a resistência à mudança, trabalham em práticas que fazem sentido no seu contexto, criam hipóteses de melhoria dirigidas pelo pensamento científico e operam sob o manto da antifragilidade.