Apresentação realizada em 12 de maio de 2023 para mais de 50 pessoas sobre o tema de Dívidas Técnicas.
Todos os créditos reservados a Felipe Coelho Machado e Warren Investimentos.
Sobre mim: https://www.linkedin.com/in/felipecmachado
2. warren.com.br
O principal objetivo
desta talk é evitar que
o seguinte diálogo
vire realidade:
Software Developer:
- Meu PM não me deixa resolver as dívidas técnicas.
Product Manager:
- Dívida técnica? É de comer? Primeira vez que escuto sobre.
Tech Lead:
- Dívida técnica? Achei que estávamos construindo o
estado-da-arte.
Manager:
- Dívida técnica? Não achei nenhuma cadastrada no backlog
dos times.
Sales:
- Tenho uma meta de triplicar o número de clientes até o fim do
ano. Como assim não posso por causa de dívidas técnicas?
Designer:
- Ué, precisa de três semanas para alterar a cor dos botões?
Qualquer semelhança é mera coincidência.
warren.com.br
Technical Debts 101 | Warren Talks | 2023
4. warren.com.br
O que é?
É uma metáfora para demonstrar o impacto do acúmulo
de deficiências de um software e comunicar a
necessidade de reconstruções.
A dívida técnica é a ideia de que, para entregar o software
no prazo, devem ser feitas concessões, como adiar ou
atrasar certos aspectos da visão final.
É a luta diária dos programadores, desenvolver o
software perfeito e bem projetado, à prova de futuro e que
permitirá que melhorias e extensões futuras sejam
adicionadas sem muito retrabalho, ao mesmo tempo em
que entrega de acordo com o prazo ou sprint.
warren.com.br
Technical Debts 101 | Warren Talks | 2023
5. warren.com.br
warren.com.br
DÍVIDA (e não débito )
👀
É uma analogia envolvendo juros.
Quanto mais tempo leva para atuar, mais caro fica.
Technical Debts 101 | Warren Talks | 2023
É bem comum relacionar dívidas técnicas como ignorar as tarefas de uma cozinha.
https://medium.com/swlh/the-easiest-way-to-describe-tech-debt-44ff84a7cdb7
debit = débito
debt = dívida
6. warren.com.br
warren.com.br
Technical Debts 101 | Warren Talks | 2023
E porque elas acontecem?
Softwares “enferrujam”.
“Technical Debt is rust you can’t see”
Jim Highsmith,
Agile Pioneer & Co-author Agile Manifesto
É inevitável. Semelhante a deixar o carro abandonado no quintal.
Aquela tela que abria quando existiam mil clientes agora com 100 mil não
abre mais, muito devido ao acúmulo de dados e queries pouco
otimizadas.
Novos casos de uso não foram adicionados da melhor forma, causando a
degradação da ideia original do software.
A rotatividade de pessoas no time gerou perda de conhecimento.
Quem entrou no lugar tinha pouca experiência ou qualificação.
Não é sinônimo de incompetência ou falta de capricho.
7. warren.com.br
E porque elas acontecem?
A causa raiz.
Technical Debts 101 | Warren Talks | 2023
Softwares estão rodando desde no seu celular até no telescópio
James Webb. Eles não podem ser fisicamente vistos ou tocados.
É uma abstração.
Quando você escreve uma linha de código, ela não é um tijolo em
uma parede.
Software é intangível. É caro. Vender o custo do desenvolvimento
de software para gerentes e executivos já é bastante difícil. Vender o
custo da redução de “ferrugem” é muito mais difícil.
Infelizmente, no momento em que os problemas são reconhecidos
como graves, todas as soluções disponíveis são ruins.
E porque elas acontecem?
A causa raiz é a
intangibilidade.
8. warren.com.br
Elas podem servir como uma alavanca estratégica para o sucesso.
Rapidez na entrega, ser o primeiro no mercado e constantemente
agregar valor ao produto são coisas que levam à vitória.
Pode fazer sentido acumular dívidas de tecnologia como uma
compensação para obter ainda mais sucesso no curto-prazo ou
conseguir oportunidades que mudam seu negócio de patamar.
O estágio de uma empresa ou produto importa muito nessa
decisão. Não adianta criar o software perfeito sem antes validar o
product-market-fit.
E porque elas acontecem?
Às vezes a dívida é
intencional.
https://www.reforge.com/blog/managing-tech-debt
Technical Debts 101 | Warren Talks | 2023
9. warren.com.br
warren.com.br
Technical Debts 101 | Warren Talks | 2023
E porque elas acontecem?
Alguns casos reais para relacionar.
No final de 2022, uma grande companhia aérea chamada Southwest passou
por problemas durante a semana de natal e ano novo. Funcionários
estavam tão preocupados que pediam para priorizar melhorias do que por
promoções.
O problema ocorreu em um sistema interno utilizado para designar a
tripulação para seu respectivo vôo. Houve relatos de pilotos esperando no
telefone por até oito horas aguardando saber para onde deveriam ir. Em 26
de dezembro, a companhia aérea iniciou uma "reinicialização" massiva do
sistema, cancelando preventivamente milhares de voos e interrompendo a
venda de passagens por preocupações de que os viajantes pudessem
comprar passagens para voos que seriam posteriormente cancelados.
Prejuízo entre USD 725 e 825 milhões.
https://www.forbes.com/sites/suzannerowankelleher/2023/01/09/southwest-meltdown-cost-825-million/?sh=75392e0e466d
Uma situação menor e mais fácil de se relacionar.
Uma empresa construiu um software para clientes locais no Canadá. Foi um
sucesso e após um tempo ela decidiu expandir seu alcance para o resto do
país, entretanto precisaria se adaptar para a província francesa.
Entretanto, o software não permitia trabalhar com múltiplos idiomas e ela
não tinha muito tempo para resolver. Solução? if-then-else por tudo.
Ela assumiu uma dívida técnica para resolver no curto-prazo e o objetivo foi
atingido com sucesso. Porém, um mês depois e antes de pagar essa dívida,
a empresa resolveu vender esse software para clientes no Japão,
imaginando que seria apenas uma semana de trabalho, dado que só levou
isso para adaptar para o idioma francês.
Onde erraram? Principalmente comunicação.
https://www.informit.com/articles/article.aspx?p=2963464&seqNum=3
10. warren.com.br
warren.com.br
Technical Debts 101 | Warren Talks | 2023
Não foi real o suficiente?
@deordines
chegando para
trabalhar no
processamento
de carteiras
uns tempos atrás.
“one of the challenges of software development is that you
can only make decisions based on the imperfect
information that you currently have to hand”
Martin Fowler
11. warren.com.br
Impacto
Dívidas técnicas aumentam a complexidade do trabalho e
reduzem a velocidade do time.
Muitas vezes irão gerar rotinas operacionais, o que em um
curto período pode significar mais esforço em
sustentação do que de fato na evolução do produto.
Usando a analogia com cozinhas, é como se o prato que
você geralmente leva 5 minutos para fazer agora
levasse 20 à 30 minutos. Você fica a maior parte do
tempo procurando os ingredientes certos, lavando as
panelas sujas e ainda escorrega em um ovo no chão.
Technical Debts 101 | Warren Talks | 2023
12. warren.com.br
O impacto negativo do acúmulo de dívidas técnicas pode ir
muito além do código.
Artigos e pesquisas da área apontam uma relação forte
entre dívidas técnicas, estresse profissional e motivação,
contribuindo inclusive para turnover e afastando novos
profissionais.
O problema não é a dívida em si, mas a ignorância sobre e
em como lidar ou quando agir.
Essas dívidas irão afetar a evolução do produto, tornando
mais difícil dar respostas rápidas aos concorrentes. Isso
traz uma gama nova de consequências, o que pode mudar
drasticamente o futuro de uma empresa.
https://stepsize.com/blog/complete-guide-to-technical-debt
https://blog.codacy.com/true-impact-technical-debt/
Technical Debts 101 | Warren Talks | 2023
Impacto
13. warren.com.br
A metáfora foi criada com objetivo de auxiliar
profissionais da área na comunicação sobre os
problemas e riscos.
Embora exista uma discordância na comunidade
científica sobre a definição exata de dívida técnica,
sobre quando um problema é de fato uma dívida ou
não, existem classificações criadas para auxiliar.
Entretanto, é senso comum que dívidas técnicas
concentram-se como itens invisíveis e pouco
palpáveis, e é por isso que trazer para um ponto de
vista econômico tende a auxiliar.
Classificação
Technical Debts 101 | Warren Talks | 2023
https://martinfowler.com/bliki/TechnicalDebt.html
14. warren.com.br
Algumas dicas em como
lidar com dívidas
A responsabilidade pela comunicação pertence ao time de
engenharia. Aprenda a comunicar os tradeoffs das soluções e
consequências, para que melhores decisões sejam tomadas.
Garanta que elas estão sendo geridas em backlog e visíveis.
Ajude a priorizar (cost x value).
Aloque tempo em sprints para resolver alguns casos, diluindo o
peso do backlog.
Vincule dívidas mais complexas com iniciativas maiores ou criar
planos em como pagar.
Ajude a criar uma cultura com foco em qualidade, dando o
exemplo, não deixando para amanhã aquele teste de integração.
Technical Debts 101 | Warren Talks | 2023
15. warren.com.br
Trata-se de uma forma simples e eficaz de melhorar a
qualidade do seu código legado e mitigar dívidas técnicas.
Podemos seguir uma das regras dos escoteiros: sempre deixar
o campo por onde estamos passando mais limpo do que
quando o encontramos.
Não precisamos limpar todo o lixo do campo, apenas deixar o
campo um pouco mais limpo que antes.
Aproveite aquela horinha livre para resolver alguns code smells,
refatorações pendentes, como atualizar aquela biblioteca ou
colocar uma lógica na camada certa.
Outro tema relacionado com frequência é a teoria das janelas
quebradas.
A Regra do Bom Escoteiro
Technical Debts 101 | Warren Talks | 2023
16. warren.com.br
Concluindo
Technical Debts 101 | Warren Talks | 2023
Dívida técnica não é assunto exclusivo para desenvolvedores.
Saber tomar decisões assertivas, como quando assumir ou
pagar uma dívida técnica, é skill estratégica/fundamental para
devs, lideranças, gestores ou executivos da área de tecnologia.
Saber comunicar ainda mais.
Siga as recomendações e boas práticas. Lidere através do
exemplo.
Durante a carreira, iremos perceber que é mais importante
saber dar manutenção ou modernizar soluções já existentes
do que criar novas. Estude sobre.
O tema está em constante evolução. Acompanhe artigos,
publicações e livros.
18. warren.com.br
Disclaimer: Este é um compilado de inúmeros artigos e pesquisas, podendo
haver algum grau de divergência entre os autores.
Technical Debts 101 | Warren Talks | 2023
Livro: Managing Technical Debt: Reducing Friction in Software Development
The Price of Shortcuts: Managing Technical Debt in Software Development
The Engineer’s Complete Guide to Technical Debt
Software ‘rust’ risk to shareholder value
The Cost of Shortcuts
Tech debt — what business leaders need to know
The Easiest Way to Describe Tech Debt
The true impact of technical debt
Technical debt will sink you
Tech Debt Isn't a Burden, It's a Strategic Lever for Success
Bottleneck #01: Tech Debt
A product manager’s perspective on technical debt
Referências