Большинство разработчиков подходят к финансовым приложениям как к чисто математической задаче: минимизировать проценты любой ценой.
С технической точки зрения это метод «лавины». Вы сортируете список долгов по убыванию процентной ставки и направляете свободные деньги на самый верхний. Математически это самый эффективный путь.
Однако, когда я создавал TinyDebt, я понял, что «математически правильный» код часто не проходит «проверку людьми». Поэтому я реализовал метод «снежного кома» — сортировку по размеру остатка, — и техническая реализация многому меня научила в области логики, ориентированной на пользователя.
Логика: сортировка ради успеха
В локальной среде React Native, где нет backend, клиентская логика расчётов должна быть быстрой и надёжной. Вот упрощённая версия логики, которую я использовал, чтобы пользователь мог переключаться между «математической эффективностью» и «психологическим импульсом».
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);
};Техническая задача: сравнение в реальном времени
Настоящая ценность для пользователя не просто в списке, а в понимании последствий его выбора. В TinyDebt мне пришлось создать механизм прогнозирования, который запускает оба алгоритма с учётом ежемесячного «дополнительного» платежа пользователя и показывает две разные «даты освобождения от долгов».
Поскольку приложение работает по принципу local-first и использует простую модель данных с упором на приватность, расчёты выполняются мгновенно. Нет индикатора загрузки, пока сервер считает график погашения. В результате интерфейс отзывчивый и вдохновляющий.
Почему «снежный ком» выигрывает в битве за UX
Хотя метод «лавины» в долгосрочной перспективе экономит больше денег, у метода «снежного кома» выше «доля завершения».
В программировании мы называем это снижением трения:
- Лавина похожа на рефакторинг огромного сложного устаревшего модуля в первую очередь. Это правильно, но изматывает.
- Снежный ком похож на исправление трёх «лёгких» багов в понедельник утром. Это даёт заряд дофамина, необходимый, чтобы взяться за серьёзные задачи во вторник.
Вывод: проектируйте для людей, а не только для баз данных
Создавая инструменты, особенно финансовые, мы должны учитывать «человеческий фактор». Предложив оба варианта в минималистичной приватной среде, я обнаружил, что пользователи остаются вовлечёнными гораздо дольше.
Если вы создаёте утилиту, задайте себе вопрос: моя логика оптимизирована для процессора или для человека, который ей пользуется?
