Times para plataformizar a produtividade das pessoas desenvolvedoras

Matheus Paes Pereira
Inside PicPay
Published in
6 min readJun 29, 2022

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.

Exemplo de tela para criar um novo micro-serviço, após selecionar o Modelo Base (template), preencher informações basicas para alimentar o catálogo, com um clique a pessoa desenvolvedora receber seu repositório + CI/CD configurado

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

--

--

Matheus Paes Pereira
Inside PicPay

Head of Technology - Developer Experience and Productivity. I’m a reader addicted, used to letting curiosity move me forward.