Article

Les mathématiques de la motivation : boule de neige ou avalanche avec React Native

Comment TinyDebt m’a appris qu’un code mathématiquement optimal peut échouer face aux réalités humaines, et pourquoi j’ai implémenté les deux stratégies de remboursement.

Les mathématiques de la motivation : boule de neige ou avalanche avec React Native

La plupart des développeurs abordent les apps financières comme un problème purement mathématique : réduire les intérêts à tout prix.

Techniquement, c’est la méthode avalanche. On trie les dettes par taux d’intérêt décroissant et on affecte l’argent supplémentaire à la première. Mathématiquement, c’est la méthode la plus efficace.

Mais en développant TinyDebt, j’ai compris qu’un code « mathématiquement correct » échoue souvent au « test humain ». J’ai donc aussi implémenté la méthode boule de neige, qui trie les dettes par montant. Sa mise en œuvre m’a beaucoup appris sur une logique centrée sur les utilisateurs.

La logique : trier pour réussir

Dans un environnement React Native local-first, sans backend, les calculs doivent s’effectuer côté client rapidement et de manière fiable. Voici une version simplifiée de la logique permettant de choisir entre « efficacité mathématique » et « élan psychologique ».

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);
};

Le défi technique : comparer en temps réel

La vraie valeur pour l’utilisateur ne consiste pas seulement à voir une liste, mais à comprendre l’impact de son choix. Pour TinyDebt, j’ai créé un moteur de projection qui applique les deux algorithmes au paiement supplémentaire mensuel et affiche deux « dates de remboursement complet ».

Comme l’app est local-first et repose sur un modèle de données simple qui respecte la confidentialité, ces calculs sont instantanés. Aucun indicateur de chargement pendant qu’un serveur calcule le tableau d’amortissement : l’interface reste réactive et motivante.

Pourquoi la « boule de neige » gagne la bataille de l’UX

La méthode avalanche permet d’économiser davantage sur le long terme, mais la méthode boule de neige présente un meilleur « taux d’achèvement ».

En programmation, on appelle cela réduire les frictions :

  • Avalanche c’est comme refactoriser en premier un énorme module historique complexe. C’est la bonne chose à faire, mais c’est épuisant.
  • Boule de neige c’est comme corriger trois bugs faciles dès le lundi matin. On obtient le petit élan de motivation nécessaire pour s’attaquer aux gros problèmes le mardi.

Conclusion : concevoir pour les personnes, pas seulement pour les bases de données

Quand on crée des outils, surtout dans le domaine financier, il faut tenir compte du « facteur humain ». En proposant les deux options dans un environnement minimaliste et privé, j’ai constaté que les utilisateurs restent engagés plus longtemps.

Si vous développez une app utilitaire, demandez-vous : ma logique est-elle optimisée pour le processeur ou pour la personne qui l’utilise ?