Débito Técnico E a Perca De Produtividade.

Photo by Luke Chesser on Unsplash

Photo by Luke Chesser on Unsplash

Pesquisando uma imagem para a capa do tema de hoje encontrei essa de Luke Chesser na qual mostra um gráfico em queda. Talvez o contexto do gráfico não seja sobre débito técnico, mas diz muito sobre o início de um projeto de software.

Assim que o projeto se inicia, todo o time se empenha o máximo possível para a entrega, cada sprint é visto as entregas do time, cheio de funcionalidades novas e a primeira entrega para o cliente. Contudo, ao passar do tempo o time começa perceber alguns problemas e dúvidas como, “será que o framework X vai funcionar para a funcionalidade que o cliente pediu?”, “a biblioteca X não suporta as cores e o layout que o cliente pediu”, “a versão do framework de testes atualizou, vamos atualizar?”, além disso o débito técnico pode ser “essa nova funcionalidade do cliente pode ser implementado depois”, “esse bugzinho não é critico pode deixar para depois”. Tenho certeza você já ouviu algumas dessas frases e dúvidas.

Essas frases mostram um comportamento que é o seguinte, quanto mais o débito técnico se acumula, torna-se cada vez mais difícil de pagar, pois os desenvolvedores são forçados a lidar com problemas urgentes, deixando pouco tempo para resolver questões fundamentais, e assim os bugs vão crescendo, problemas aparecendo e aquela produtividade que vimos no começo vai se exaurindo, chegando no final do projeto (se é que vai chegar rsrs) um time esgotado e com vários problemas no sistema entre elas instabilidade, retrabalho constante e a dificuldade de manutenção.

Nós como QA ou de engenharia devemos sempre procurar meios de conter essas dívidas e gerar estratégias para pagar o mais rápido possível. Alguns textos podem dizer que o planejamento é o grande herói dessa história, contudo, mesmo com muito planejamento, vivemos em constante evolução e uma hora ou outro irá surgir um débito, o mais importante de tudo é estarmos preparados e com estratégias criadas.

Assim, uma das formas de criarmos estratégias é pesquisar como as grandes empresas buscam diminuir o débito técnico, por exemplo o artigo Definindo, Medindo e Gerenciando Dívida Técnica , os autores mostram como o Google realiza a contenção das dívidas, lá utilizam de um quadro faseado que apresenta desde dívidas técnicas que são reativas (passíveis de bug) até a fase estrutural que é quando a maturidade do projeto está muito fraca e estruturalmente o projeto se tornou uma dívida técnica.

Já no Departamento de Defesa dos EUA em 2022 desenvolveram um estudo para aprofundar em como resolver os débitos técnicos dentro da organização e principalmente dentro de sistemas intensivos e altamente críticos para o sistema de defesa do país. Após o estudo geraram 5 recomendações para os times, sendo:

  1. Compartilhe melhores práticas — As organizações de desenvolvimento devem capacitar os desenvolvedores para incorporarem a gestão técnica da dívida nas atividades do ciclo de vida de desenvolvimento de software como uma das principais práticas de engenharia de software. Dentre esse tópico deve criar etapas com metas pré-estabelecidas para a conclusão do débito técnico.
  2. Atualizar a política existente para incluir práticas técnicas de gestão da dívida — As organizações que desejam controlar a dívida técnica devem continuar a atualizar suas diretrizes e recomendações, políticas e orientações de melhores práticas de desenvolvimento de software existentes para incluir práticas de gestão de dívida técnica.
  3. Incentive o treinamento técnico em gestão da dívida — A formação pode ajudar a sua organização a institucionalizar práticas importantes de dívida técnica, tornando a questão visível para mais partes interessadas e garantindo que estas partes interessadas estejam munidas das práticas e estratégias necessárias para gerir eficazmente a dívida técnica.
  4. Exigir coleta contínua de dados e métricas técnicas relacionadas à dívida — Os sistemas que gerenciam dívidas técnicas usando com sucesso métricas de gerenciamento de defeitos e vulnerabilidades, tempo médio para resolução, duração aberta, taxa de recorrência e densidade, criam softwares bem-sucedidos.
  5. Garantir maior acesso a ferramentas e práticas modernas de desenvolvimento, análise e CI/CD — Para garantir que todas as etapas anteriores sejam feitas com sucesso é importante que haja automações e ferramentas que possam mostrar que o fluxo de desenvolvimento e de entrega está numa cadência esperada e que mitigue que os erros não chegue no final do processo.

Bom, no texto de hoje quis trazer um pouco mais sobre como as dívidas técnicas surgem em um projeto e como nós QA podemos mitigar a resolução dessas dívidas encontrando na literatura cases de sucesso. A dívida técnica não é uma tarefa fácil de solucionar, deve ser um papel de todos do time, deve se criar estratégias e metas para que consiga resolver o mais breve possível. Um exemplo em minha carreira, participei de um projeto que todas as sextas-feiras era o dia de pegar uma dívida técnica para resolver, durante algum tempo conseguimos zerar a dívida.

Espero que tenham gostado do tema e espero Espero vocês no próximo artigo. Para ter conteúdos semanais sobre Tecnologia e Qualidade de Software, assine minha newsletter Tech & Quality 🚀.