Explorando devex e o papel da tech lead
Olá, Tech Lead! Nesta aula vamos falar sobre o universo da engenharia moderna e algumas métricas que são usadas atualmente em equipes como DevEx (Experiência da Pessoa Desenvolvedora), DORA e Platform (Plataforma). Veremos isso de forma prática para que possamos, a partir de hoje, começar a implementar em sua equipe.
O que é o Developer Experience (experiência da pessoa desenvolvedora), o famoso DevEx, que tem sido muito comentado em grandes equipes de tecnologia? DevEx é criar um fluxo organizacional focado na experiência da pessoa desenvolvedora, metrificando quais são os impactos e, sobretudo, a produtividade dessa pessoa no dia a dia.
Por que implementar DevEx? Ao implementar DevEx, podemos reduzir a fricção no ciclo de desenvolvimento. Também podemos prever quais ferramentas, decisões e processos realmente funcionam na equipe. E não apenas isso: há impacto direto na velocidade e na qualidade das entregas.
Atualmente, o Tech Lead (liderança técnica) funciona como o centro de pensamento cognitivo da equipe. É quem vai tomar decisões e definir as trajetórias que essa equipe vai construir. No entanto, há uma grande carga cognitiva. Por quê? Porque será necessário decidir sobre o estado do fluxo, como esse fluxo será estruturado, quais frameworks (estruturas de desenvolvimento) serão implementados e como isso pode gerar fricção na equipe. Também será preciso cuidar do ciclo de feedbacks (retornos), que é extremamente importante. Como vimos ao longo desta trajetória de construção de cursos voltados à pessoa com papel de Tech Lead, é essencial implementar esse ciclo. E não só isso: é fundamental criar uma cultura de feedback na equipe, o que reduz fricções e fornece diversos dados para você também, Tech Lead. Com isso, reduzimos fricções e aportamos mais qualidade às entregas.
Definindo e detalhando as métricas dora
O que são as métricas DORA? As métricas DORA são quatro pontos essenciais que definem a qualidade e o alto desempenho de equipes de tecnologia.
A primeira é o Lead Time (tempo de ciclo), que cria uma métrica do ciclo completo, desde o início até a entrega desse produto, tarefa ou ticket (item de trabalho). Assim, podemos criar uma tabela e um fluxo dinâmico de cada função que a equipe desempenha e teremos uma ideia aproximada de em quanto tempo a equipe pode entregar com qualidade. Também começamos a avaliar de forma singular e individual — e não se trata de microgestão. Isso está orientado à parte técnica, permitindo avaliar individualmente como a equipe está rendendo no desenvolvimento técnico.
Também temos o MTTR (Mean Time to Recovery, tempo médio de recuperação), que mede a velocidade de recuperação após incidentes, war rooms (salas de crise), grandes bugs (defeitos) e outros problemas no sistema. Podemos medir quanto tempo a equipe levou para se recuperar daquele problema, daquele momento em que o sistema caiu e voltou a operar. Assim, já podemos prever erros futuros e como vamos evitar que isso ocorra.
Também temos o Deploy Frequency (frequência de deploys), que é a regularidade de deploys (publicações). Equipes de elite realizam vários por dia.
Temos vários exemplos de grandes empresas de tecnologia e de produtos tecnológicos que realizam ciclos extensos de implantação, e passamos a ver como isso é importante para a escalabilidade do nosso produto. O Change Failure Rate (taxa de mudanças com falha) é o percentual de mudanças que causam falhas, seja no código, nos testes ou em uma automação. Isso nos fornece um indicador de qualidade.
Orientando o uso estratégico e não punitivo das métricas
Como vamos usar essas métricas de forma estratégica, de acordo com as necessidades do nosso time? Não se trata apenas de adotar um framework (estrutura de trabalho) ou escolher uma arquitetura. Não é porque “o mercado faz isso” que vamos implementar no nosso time. Em primeiro lugar, precisamos adotar um pensamento analítico sobre por que escolhemos tal métrica ou tal framework (estrutura de trabalho) e qual é a necessidade de implementá-lo no nosso time.
O objetivo dessas métricas, especialmente as de DORA (métricas de DevOps), não é vigiar o time. Como mencionamos anteriormente: essas implementações não servem para microgestão. Não é para ficarmos em cima da pessoa desenvolvedora ou das pessoas colaboradoras. Elas servem para diagnosticar gargalos, obter previsibilidade no longo prazo e, sobretudo, orientar melhorias sistêmicas e entregas de qualidade.
Por quê? O diagnóstico, a implementação e, principalmente, o rollback (reversão) que obtemos disso — o retorno e os relatórios que levamos tanto ao nosso time quanto a outras pessoas que consomem esses dados — servem para identificar pontos de atrito e, além disso, criar um pipeline (esteira) de entrega e de qualidade. A evolução também ocorre: orientamos nosso time com base em dados e, sobretudo, em relatórios técnicos do que está sendo implementado. Reforçando: não se trata de microgestão, uma visão associada a concepções antigas de liderança. O foco está em decisões estratégicas que farão diferença na qualidade do nosso time.
Implementando engenharia de plataforma e exemplificando na prática
O que é, então, engenharia de plataforma? Engenharia de plataforma consiste em criar um fluxo organizado que trata os times internos de produto como pessoas consumidoras. Com isso, oferecemos ferramentas, ambientes e pipelines (esteiras) prontos para uso. Um exemplo de empresa que faz isso muito bem é a Nubank.
Quais são os benefícios de incorporar a função de platform engineer (pessoa engenheira de plataforma) ao nosso time? Reduzimos a carga cognitiva do time de produto, pois essas pessoas passam a ser consumidoras daquela informação e daquela usabilidade. Trazemos padronização em escala, criamos um fluxo linear e, além disso, damos autonomia às pessoas que consomem o trabalho de platform engineer (pessoa engenheira de plataforma).
Um exemplo prático: é fundamental definirmos métricas continuamente. Diante de uma implantação lenta, realizamos o diagnóstico, identificamos a causa raiz e criamos uma solução. Por quê? As métricas revelam frequências. Elas revelam dados que precisaremos tratar com uma carga cognitiva adequada, o que é o papel principal de uma pessoa tech lead (pessoa líder técnica): conduzir essa análise de forma completo, desenhar um pipeline (esteira) complexo e desenvolvê-lo com o nosso time de maneira integrada. Além disso, a solução pode simplificar etapas e, sobretudo, entregar um resultado com qualidade.