Como lidamos com débito técnico

Rafael Goulart
Aurum Tech
3 min readJul 26, 2018

--

Por Gustavo Maestri.

Todos os times de tecnologia que eu já trabalhei conviveram com algum débito técnico, e não é diferente aqui na Aurum. Mas a gente tem trabalhado forte para "pagar" cada um desses débitos e mantermos tudo sob controle. Antes de mostrar como estamos atuando nisso vamos colocar todo mundo na mesma página.

O que é um débito técnico?

Débito técnico é qualquer parte do seu software que cause uma perda de performance, estabilidade, dificuldade de manutenção ou dificuldade de evolução do seu software. Esses débitos podem acontecer por escolhas erradas nas tecnologias, arquiteturas do software, não utilizar as boas práticas de desenvolvimento ou muitas vezes são colocados devido a pressão dos prazos.

O termo vem muito ligado ao setor financeiro já que ele se comporta muito semelhante a um empréstimo bancário, quanto maior o tempo você leva para "pagar" mais caro ele vai ficando.

Como fizemos

A primeira ação que tomamos para nos livrarmos dos nossos débitos foi deixa-los aparentes, afinal você precisa saber dos seus problemas para poder resolve-los. Então começamos a buscar ferramentas que conseguissem trazer alguma métrica que indicasse a saúde do nosso código.

Testamos algumas ferramentas e acabamos optando pelo Codebeat que é uma solução SaaS na qual eu conecto meu repositório, e ele avalia cada um dos meus arquivos, dando uma nota para cada arquivo que pode variar de A até F e uma nota por projeto que vai de 0 até 4(GPA) sendo que tudo abaixo de 2.8 é relativamente ruim. Em nossa primeira medição tínhamos 4 projetos sendo que 3 estavam a baixo de 2.5. Nesse momento nosso código também tinha uma cobertura de teste bem baixa, apenas 15% da nossa base de código era testada.

Agora que já estavamos cientes da nossa situação, juntamos o time, conversamos sobre nosso processo e adicionamos uma pequena alteração por vez. Começamos incluindo code review e testes unitários em todo o código que entrasse na nossa base.

Engajamos o time, criamos metas de melhoria do GPA e da nossa cobertura de teste, nossa revisão de código ficou cada vez mais criteriosa e começamos a discutir com mais frequência sobre o que seria nosso padrão de código. Integramos o Codebeat no github e ele nos informava em cada pull request(PR) se o código estava melhorando ou piorando, e claro todo PR que piorava o código tinha que voltar.

Isso já resolvia o problema do código novo, mas ainda tínhamos alguns débitos legados que precisávamos resolver, criamos uma squad para cuidar dos débitos que afetavam nossa performance e atacar os pontos críticos, além disso discutimos com as outras squads quando seria o momento de refatorar um código legado que estivesse no caminho.

Dois anos depois a evolução da nossa base de código é impressionante, hoje temos nove projetos no codebeat sendo que oito deles estão muito saudáveis e nossa cobertura de teste subiu para 60%.

Esse processo todo não foi simples, mas valeu muito, não só para Aurum como empresa, mas para a evolução do time e de cada desenvolvedor. Hoje com muito menos débitos técnicos na nossa base de código o time conseguiu aumentar a qualidade e velocidade nas entregas.

--

--