A maioria dos desenvolvedores encara apps financeiros como um problema puramente matemático: minimizar os juros a qualquer custo.
Tecnicamente, esse é o método avalanche. Você ordena as dívidas pela taxa de juros, da maior para a menor, e direciona o dinheiro extra para a primeira. Matematicamente, é o caminho mais eficiente.
No entanto, ao desenvolver o TinyDebt, percebi que um código “matematicamente correto” muitas vezes falha no “teste humano”. Por isso, também implementei o método bola de neve, que ordena as dívidas pelo saldo. A implementação me ensinou muito sobre lógica centrada no usuário.
A lógica: ordenar para avançar
Em um ambiente local-first com React Native, os cálculos precisam ser rápidos e confiáveis no cliente, sem backend. Esta é uma versão simplificada da lógica que permite alternar entre “eficiência matemática” e “impulso psicológico”.
type Debt = {
id: string;
name: string;
balance: number;
interestRate: number;
};
// The "Avalanche" Logic: Maximizing Interest Savings
const getAvalancheOrder = (debts: Debt[]) => {
return [...debts].sort((a, b) => b.interestRate - a.interestRate);
};
// The "Snowball" Logic: Maximizing Psychological Wins
const getSnowballOrder = (debts: Debt[]) => {
return [...debts].sort((a, b) => a.balance - b.balance);
};O desafio técnico: comparação em tempo real
O verdadeiro valor para o usuário não é apenas ver uma lista, mas entender o impacto da escolha. No TinyDebt, criei um mecanismo de projeção que executa os dois algoritmos considerando o pagamento “extra” mensal do usuário para mostrar duas “datas para quitar a dívida”.
Como o app é local-first e usa um modelo de dados simples, com foco na privacidade, esses cálculos acontecem instantaneamente. Não há indicador de carregamento enquanto um servidor calcula o cronograma de amortização. O resultado é uma interface responsiva e motivadora.
Por que a “bola de neve” vence na experiência do usuário
Embora o método avalanche economize mais dinheiro a longo prazo, o método bola de neve tem uma “taxa de conclusão” maior.
Na programação, chamamos isso de reduzir atrito:
- Avalanche é como refatorar primeiro um módulo legado enorme e complexo. É a coisa certa a fazer, mas é exaustivo.
- Bola de neve é como corrigir três bugs simples na segunda-feira de manhã. Isso dá o impulso de motivação necessário para enfrentar as tarefas maiores na terça.
Conclusão: crie para pessoas, não apenas para bancos de dados
Ao criar ferramentas — especialmente na área financeira — precisamos considerar o “fator humano”. Ao oferecer as duas opções em um ambiente minimalista e privado, percebi que os usuários permanecem engajados por muito mais tempo.
Se você está criando um app utilitário, pergunte a si mesmo: minha lógica está otimizada para o processador ou para a pessoa que usa o app?
