Aller au contenu

Quicken dirty

Pour suivre mes comptes, j’utilise HomeBank.

Un jour, le programme a cessé de fonctionner sur mon iMac 2011 sous High Sierra – la dernière version de l’OS que je peux installer sur ce matériel. Depuis, j’utilise la virtualisation pour exécuter HomeBank et cela dégrade en partie l’UX.

Pour saisir mes dépenses au quotidien au format Quicken sans exécuter HomeBank, j’ai besoin d’une application ultra-simple. Dans ce contexte, j’ai partagé du code dans le dépôt quicken-dirty. J’ai publié un démonstrateur.

J’ai basé certains choix sur le SLOC, en évitant de dépasser un certain seuil.

SLOC

Dans le cadre professionnel, nous travaillons entre autres sur la collecte de données de dépôts de code source. Une des métriques que nous calculons est le compte des lignes de code – SLOC. Nous utilisons cloc.

J’ai été surpris de constater qu’il y avait un débat concernant le SLOC. Une célèbre phrase d’Edsger Dijkstra le résume:

Ce que je veux dire aujourd’hui, c’est que si nous voulons compter les lignes de code, nous ne devrions pas les considérer comme des “lignes produites” mais comme des “lignes dépensées” : la sagesse conventionnelle actuelle est assez stupide pour saisir ce compte du mauvais côté du registre.

Le registre en question sert à la comptabilité. Il y a deux colonnes: les débits et les crédits. Dijkstra dit simplement que c’est stupide de considérer le SLOC comme un crédit. Au contraire, c’est un débit.

Ceux qui considèrent le SLOC comme un crédit, comme une preuve de travail, favorisent la duplication, la verbosité. Ce sont autant de défauts qui entraînent des coûts supplémentaires.

Le SLOC est un débit. Chaque nouvelle ligne de code entraîne potentiellement une maintenance supplémentaire, un nouveau bug. Jeff Atwood le résume dans un autre célèbre article:

Chaque nouvelle ligne de code que vous amenez sciemment dans le monde est du code qui doit être débuggé, du code qui doit être lu et compris, du code qui doit être maintenu.

Pour en revenir à Quicken dirty, j’ai souhaité maintenir le SLOC à son minimum. Cela n’est pas sans conséquences.

L’ergonomie est un investissement

Quicken dirty permet de saisir plusieurs dépenses dans un formulaire pour les exporter dans un fichier Quicken. Pour avoir des coûts de maintenance quasiment nuls, j’ai pris tous les choix économiques:

  • Application web responsive pour la compatibilité mobile/desktop du formulaire de saisie.
  • Au lieu d’une liste éditable de dépenses, plutôt un textarea – oui, ça permet aussi l’édition des dépenses, de facto.
  • Utilisation de jQuery et Bootstrap, téléchargés depuis leurs CDN respectifs. ça évite de mettre en place Webpack.
  • Tests automatisés sans test runner.

Un des résultats de ces économies, c’est l’ergonomie moyenne de la page. La saisie dans le textarea n’est soumis à aucun contrôle. Rien ne garantit que le fichier produit sera exploitable.

Pourtant, peut-être par caprice, j’ai codé une véritable fonctionnalité pour adapter l’UX: un champ numérique reproduisant l’usage d’un terminal de carte bancaire.

Vous savez, pour saisir 129,87€ par exemple, vous saisissez en fait 12987. Le champ ajoute automatiquement la virgule entre la partie entière et la partie décimale. ça évite de saisir la virgule, car nous savons dans ce cas particulier qu’elle sera toujours placée avant deux décimales.

Testez.

Le coût de cette fonctionnalité est énorme: entre les tests automatisés et l’implémentation, il représente plus de la moitié du code dépensé, mesuré avec le SLOC.

L’ergonomie demande un investissement – ce n’est pas une découverte.

Un choix que je fais pour préserver SLOC dégrade l’ergonomie. J’ai choisi de faire payer l’utilisateur au lieu du développeur. C’est acceptable car ça reste un usage personnel. ça serait inacceptable pour vendre un produit.

L’ignorance se paie

Avec ma connaissance actuelle de Webpack 4, je juge que l’utiliser sera avantageux si j’exige d’avoir du code javascript minifié et un hash pour gérer le cache.

L’estimation des avantages se base sur notre connaissance des outils. Plus elle est grande, plus notre estimation est précise. Adopter un outil en totale ignorance est toujours un pari. Nous devons expérimenter pour augmenter nos chances qu’il soit gagnant.

L’ignorance entraîne des pertes. à la différence de l’ergonomie, ce n’est pas un investissement. Cultivons-nous.

comments powered by Disqus