Ganhar não é possível. Você só decide o quão rápido perderQual é o próximo passo?Muitas pessoas gostam de tetris, eu também. Lembro-me de jogar pela primeira vez com meu amigo no Nintendo Game Boy. Talvez essa música também tenha ficado na sua cabeça. Tetris não é apenas um dos melhores jogos de todos os tempos, mas também uma ótima analogia para dívidas técnicas. Ele fornece uma compreensão geral da dívida técnica e seu impacto.
Vou contar uma história da experiência pessoal de como minha equipe reduziu sua dívida técnica em algum tipo de código de cobrança e, ao mesmo tempo, corrigiu o
erro em um milhão de dólares por ano .
No início, as tarefas são mais simples, com um baixo nível de dificuldadeNas empresas de software, os gerentes de produto / projeto, juntamente com os desenvolvedores, determinam qual código será gravado e enviado aos clientes no próximo lançamento.
Completar uma linha no tetris é como liberar uma função.Funções complexas são totalmente viáveis com quase nenhum aumento na dívida técnica.A emissão de uma função
complexa requer a conclusão de
várias linhas .
Freqüentemente, as necessidades comerciais (novos recursos, novos produtos) levam a comprometimentos no código (hacks, soluções alternativas) para não atrasar o prazo. Ou as mudanças na estratégia do produto são incompatíveis com o design anterior, exigindo esforços adicionais para migrar clientes ou oferecer suporte à lógica "nova" e "antiga".
Pequenas dívidas técnicas são normais e gerenciáveis.Tais cenários criam dívida técnica dentro do código.
Um passe oculto no Tetris é um dever técnico.Qualquer código tem um dever técnico. Isso é normal. Você pode continuar jogando com alguns passes.
Enterrado em dívida técnicaMuita dívida técnica não permite um tempo razoável para liberar uma nova função ou corrigir um bug.
Esse problema não pode ser resolvido com a adição de novos desenvolvedores ou, de forma mais dramática, substituindo os existentes. Isso é chamado de
dívida técnica: em algum momento, terá que ser pago.
Pagar sua dívida técnica o torna competitivo. Mantém você no jogo.Fim do jogoAssim como o gerenciamento de negócios, no Tetris, a complexidade aumenta com o tempo. As formas se movem mais rapidamente e são mais difíceis de acompanhar.
Como nos negócios, é impossível vencer aqui. Não existe uma linha de chegada real. A única questão é quanto tempo você vai perder.
Como nos negócios, muitas lacunas no tetris levam a uma perda.
Bug de um milhão de dólares
Há pouco tempo, minha equipe foi instruída a atualizar a lógica de cobrança / fatura em nosso código de produto para oferecer suporte a novos planos de preços, um novo processador de pagamento e melhorar todo o processo de cobrança como um todo. Alguns detalhes ainda estavam sendo esclarecidos, então usamos esse tempo para nos aprofundarmos no código existente para fornecer estimativas mais precisas das próximas alterações.
A principal tarefa desse código era percorrer as contas de todos os clientes, calcular cada um e enviar informações à API para faturamento. O sistema foi escrito com muito cuidado e boas intenções - não tanto desleixado quanto inflexível. Função
monolítica . Sem testes. Muito poucos logs. Praticamente não havia documentação. Houve alguma randomização inexplicável. Um dos fundadores escreveu o sistema há mais de cinco anos. As únicas mudanças desde então foram feitas por um dos primeiros funcionários que já estava ausente da empresa.
Houve algum problema? As faturas foram faturadas. A empresa ganhou dinheiro. Não havia sinais de um problema. Tudo isso falou contra a refatoração, mas sabíamos que grandes mudanças estavam chegando: essa função não poderia ser dimensionada para nossas necessidades e seria muito mais fácil seguir em frente se simplificássemos essa parte.
Em um sprint, redesenhamos a função e adicionamos alguns logs muito necessários. Foi então que descobrimos que realmente o consertamos. Um dos contadores parou em nossas mesas e perguntou por que o número de faturas enviadas inesperadamente aumentou. O código antigo caiu silenciosamente no timer - e alguns clientes não foram processados. Randomização estranha? Ela ocultou quaisquer modelos que deixassem claro que algum cliente não recebeu uma fatura. Quando realizamos a avaliação, calculamos as faturas perdidas em mais de US $ 1 milhão por ano.
O pagamento nem sempre compensa
Embora a história seja completamente verdadeira, o pagamento de dívidas técnicas nem sempre tem um efeito tão dramático. Temos sorte.
Encontre o saldo certo da dívida técnicaGostaria de dar conselhos sábios quando precisar pagar dívidas técnicas. Infelizmente, a resposta é que é difícil - e
sempre se resume ao equilíbrio . Você pode ter o código mais limpo e bem testado do mundo, mas não possui clientes. E vice-versa, sua empresa pode trabalhar com códigos realmente sujos, mas que agrada aos clientes e o dinheiro flui como um rio.
Só posso dizer que tanto os proprietários quanto os desenvolvedores do produto precisam entender a essência da dívida técnica e que ela não pode ser evitada para sempre. No final, como em Tetris, aqui você nunca pode vencer.