Times para plataformizar a produtividade das pessoas desenvolvedoras
Plataformas Internas de Desenvolvimento (abreviado para IDP em inglês) provavelmente é a palavra-chave que você mais ouviu recentemente, mas por que isso se tornou uma forte tendência para empresas em momento de hiper-crescimento?
Estive no The Developer’s Conference em Florianópolis no começo deste mês (03 de junho), falando um pouco mais sobre as motivações por trás de um IDP e como estamos endereçando esse assunto aqui no PicPay.
Rotatividade e Onboarding
Quando foi a última vez que alguém entrou no time em que você está atuando?
Imagino que o período não passe por mais de 3 meses, sim, estamos em um momento de alta rotação de profissionais de TI, uma pesquisa do Gartner aponta que até o final de 2022, aproximademente 37 milhões de pessoas irão sair voluntariamente da empresa que atuam.
Esse número aumenta a média de demissões voluntárias em 20% ao período pré-pandemia.
É bem provável que você tenha que lidar com as dores do adeus, até logo de um colega de equipe que são:
- Ações promovidas para disseminar a cultura da empresa, equipe, missão e propósito.
- Horas de pair programming, passagem de conhecimento técnico e boas práticas de desenvolvimento.
- Contexto de negócio, esse em particular, quanto mais tempo a pessoa passou pela empresa, mais dolorido pode ser o adeus. As experiências que refletem determinado momento da empresa, nem sempre são documentáveis.
- Investimento em treinamentos, sejam eles de aperfeiçoamento profissional ou regulatórios.
Nessa lista, já percebemos o quanto pode ser impactante a saída de uma pessoa e a pergunta que paira no ar é: Quanto tempo será necessário para que uma nova pessoa seja tão produtiva quanto a que está deixando a equipe?
Pensando na pessoa desenvolvedora, ao chegar em uma nova organização, boa parte dos desafios está relacionado a aprender a stack de tecnologia e boas práticas de desenvolvimento que são adotadas, e é ai que o papel da Plataforma Interna de Desenvolvimento ganha seu destaque.
Plataforma Interna de Desenvolvimento
Quando me perguntam o que é uma IDP (Internal Developer Platform), gosto bastante de usar a definição do site https://internaldeveloperplatform.org/ que é a seguinte:
An Internal Developer Platform (IDP) is a layer on top of the tech and tooling an engineering team has in place already. It helps Ops teams structure their setup and enable developer self-service.
Ou seja, os IDPs se integram aos fluxos de trabalho existentes.
Todo o processo de implantação, está agora à disposição do desenvolvedor. Eles podem solicitar recursos, criar ambientes totalmente provisionados, reverter, implantar e definir regras de forma autônoma.
A pessoa desenvolvedora precisa de três coisas: IDE, Git e um IDP para fazer as suas entregas.
Com isso temos os benefícios:
Fornecer automação — facilitar a complexidade de processos complicados e repetitivos
Experiência Self-service — as equipes sempre podem contar com processo de CI/CD completo, controle de ambientes ou solicitar novos recursos, eliminando a necessidade de gerar tickets de suporte
Maior Integração — integrar com eficiência todos os workflows, ferramentas, e infraestrutura que orbitam a pessoa desenvolvedora, gerando ownership dos times em cada etapa do ciclo de desenvolvimento.
Com tudo isso, no final do dia estamos buscando velocidade sem comprometer a segurança, escala sem comprometer a qualidade e a capacidade, de certa forma, para orquestrar e controlar o caótico ecossistema que estamos inseridos.
Como estamos fazendo no PicPay
Aqui no PicPay, começamos a jornada de estabelecer o IDP depois de uma pesquisa que elencou as principais dores das pessoas desenvolvedoras e então criamos o Moonlight, o nosso Portal Interno de Desenvolvimento.
Entender a visão de todo o ecossistema: As pessoas tinham dificuldade em saber quais micro serviços já existiam, porque eles existiam e qual é o time que mantém as determinadas atividades.
Para isso, estruturamos um catálogo de componentes, que traz de forma fácil e intuitiva quais são os micro serviços, scripts, SDKs, IaC existentes e quem são as pessoas que mantém os mesmos.
Qual a melhor forma de estruturar um micro serviço? No nosso IDP, utilizamos a abordagem de templates de repositórios, com base nas principais linguagens de programação, a pessoa desenvolvedora quando precisa criar um novo micro serviço, se beneficia de um template que gera automaticamente um repositório com a estrutura definida pelas comunidades de cada Skill, esse é um ponto importante, as definições são feitas pela comunidade e não de um time centralizado.
Além dos templates de micro serviços, o Moonlight oferece template de libs e componentes de infraestrutura.
Integração com as principais ferramentas: Para facilitar a operação dos micro serviços, no Moonlight temos integração com ferramentas de observabilidade, Kubernetes e atualmente estamos trabalhando para ter uma maior integração com a nossa pipeline de CI/CD que utiliza o Tekton como engine para o CI e Harness para o CD.
Temos um roadmap bem extenso e estamos continuamente coletando feedback da nossa plataforma para melhorar a experiência e produtividade das pessoas desenvolvedoras. Todo esse trabalho está no ar desde novembro de 2021, optamos por adotar o Backstage por “debaixo dos panos” do Moonlight como um acelerador e é disso que vamos falar em seguida.
Backstage
O Backstage é o motor por de trás do Moonlight, ele surgiu internamente no Spotify e tem tido uma recepção bem positiva da comunidade open-source.
Boa parte do que estamos entregando, como os templates, catálogo de componentes são funcionalidades que foram originadas pelo Backstage.
É uma ferramenta que tem seu ecossistema voltado à plug-ins o que facilita a atender a necessidade de cada empresa e também na colaboração, uma vez que é possível criar o seu próprio plug-in e disponibilizar para ser utilizado por outras pessoas.
A flexibilidade é um ponto de destaque, no Moonlight estamos estendendo as funcionalidades do Backstage, um exemplo é a adoção das 4 métricas chave do accelerate para todos componentes “deployaveis” do catálogo.
Métricas para produtividade
Como medir se todas essas ações que foram elencadas no artigo são efetivas para a experiência e produtividade das pessoas desenvolvedoras?
Recorremos a ciência para responder essa pergunta, o livro Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations escrito pela PhD Nicole Forsgren, Jez Humble e Gene Kim, consolida a analise de 23.000 respostas de diversas empresas, de todos os portes e segmentos, sobre como as empresas lidam com a entrega de software e identificaram uma série de padrões, classificando os participantes em High, Medium e Low Performers.
Para ser considerado um High Performer, é necessário habilitar 24 capabilities entre cinco categorias que são:
- Entrega Contínua
- Arquitetura
- Produto e processo
- Lean Management e Monitoramento
- Cultural
E quais são as métricas que precisamos monitorar para garantir que estamos ativando essas capabilities e tendo de fato resultado na produtividade?
Em um olhar por micro serviço ou time acompanhamos (todas as métricas são consideradas para ambientes em produção):
Frequência de Deploy (Deploy Frequency) — Quantidade de deploys realizados.
Lead time por mudança (Lead time per change) — Tempo para um commit (alteração no código) entrar em produção, estamos trabalhando na unidade de dias, mas vai de acordo com a realidade de cada empresa, poderia ser em horas, minutos ou segundos 🙂.
Índice de falhas em mudanças(Change Failure Rate) — O percentual de falhas por mudança.
Tempo médio de restauração(Mean time to restore) — O tempo médio para restaurar um serviço em produção em caso de incidente.
Olhar para essas métricas garante que tenhamos estabilidade e velocidade.
Como as métricas são visualizadas na nossa plataforma:
Conclusão
O Moonlight está só começando, e estamos buscando melhorar a visibilidade e aprendizagem do ecossistema atual da empresa, aumentar a capacidade de solução de problemas e reduzir a curva de aprendizado, centralizando guias/documentações/práticas para um desenvolvimento sustentável.
Aqui está o link da apresentação: https://speakerdeck.com/matheuspaes/times-para-plataformizar-a-produtividade-das-pessoas-desenvolvedoras