- L’auteur explique qu’il a beaucoup parlé de la manière de choisir des programmes durables et de construire une infrastructure fiable, tout en reconnaissant qu’il n’y parvient toujours pas très bien
- Au cours du dernier mois, il a réécrit le cœur d’un programme utilisé depuis deux ans, ce qui l’a amené à revenir sur l’évolution de sa façon de programmer au fil de sa vie
2015
- Il se méfiait des abstractions et accordait une grande importance aux tests et au contrôle de version
- Il pensait que les problèmes venaient d’un usage excessif des abstractions et d’un manque de tests / de gestion de versions
- Il a conçu la plateforme Mu1 en faisant des tests et des couches des contraintes de base
2017
- Début de la refonte de Mu1 vers l’actuel Mu
- Au départ, il a utilisé toutes les nouvelles idées autour des tests et des couches, puis a progressivement cessé de les employer
- Mu contient de nombreux tests, mais selon des méthodes classiques, et l’infrastructure en couches n’a pas été portée
2022
- Début du travail sur Freewheeling Apps
- Il a commencé sans tests, puis a écrit des tests approfondis pour les parties centrales de l’éditeur de texte
- Le reste était difficile à tester, mais fonctionnait bien
2024
- Il a supprimé tous les tests il y a un mois
- Il a radicalement retravaillé l’éditeur de texte d’une manière qui l’inquiétait auparavant à cause des conflits de fusion avec d’autres Freewheeling Apps
- Il a cessé de se soucier du contrôle de version
- En abandonnant les tests et les versions, il a fini par produire un programme bien meilleur
Vision unifiée actuelle d’une programmation durable
- Construire de manière durable pour beaucoup de gens est trop difficile, donc il ne faut même pas essayer
- La plupart des logiciels sont contaminés par l’incitation à servir beaucoup de monde à court terme. Il faut se concentrer sur des logiciels avec peu de logos, faciles à construire, avec peu de dépendances et sans mises à jour automatiques
- De petits changements de contexte peuvent modifier fondamentalement l’adéquation d’un programme à son contexte
- Un nouveau programme s’avance toujours, d’une manière ou d’une autre, vers l’inconnu. Souvent, on ne sait pas exactement ce qu’on fait, quelle que soit la direction prise
- Les types, les abstractions, les tests, les versions, les machines à états, l’immutabilité, l’analyse formelle, etc. sont des outils utilisables sur un terrain peu familier
- Il est inévitable d’abuser de certains de ces outils. Leur usage idéal est bien plus limité que nous le pensons. Leur surutilisation constitue une dette technique
- Une fois la compréhension du contexte stabilisée, il peut être utile de jeter une grande partie du programme et de recommencer depuis zéro
- Avant de réécrire, il faut avoir en tête d’un seul coup tout ce qu’on attend du programme et tous les scénarios qu’il doit gérer
- Il faut tout construire d’un seul tenant
- Les tests et le contrôle de version empêchent d’atteindre la fin de cette évolution
- Les tests font oublier les préoccupations et le contrôle de version pousse à rester attaché au passé
L’avis de GN⁺
- Quand un programme devient trop complexe, il peut devenir impossible de tout garder en mémoire à l’étape 8. Cela vaut pour la plupart des logiciels, surtout ceux écrits par plus d’une personne
- Tous les logiciels n’ont pas nécessairement besoin d’atteindre l’étape 9. Beaucoup de Freewheeling Apps sont suffisamment simples et évoluent assez lentement pour se stabiliser sans bug avec seulement quelques utilisateurs, quels que soient les choix de conception initiaux
- La conception orientée données est clairement utile pour atteindre l’étape 9. Ce n’est pas un outil à appliquer aveuglément, mais une manière de penser qui regarde la vue d’ensemble de la façon dont un programme accède aux données, au-delà des choix immédiats de structures de données
- Ces étapes ne sont peut-être pas entièrement justes. L’auteur sous-estime peut-être des outils avec lesquels il a moins d’expérience
- Il se demande quelles étapes pourraient exister au-delà de celles-ci
1 commentaires
Avis Hacker News
Sans tests, on ne voit pas les problèmes, ce qui donne l’impression qu’ils disparaissent
En renonçant aux tests et aux versions, on a obtenu un meilleur programme
Au départ, je pensais que l’auteur avait tort, mais il y a de bonnes intuitions
La gestion de versions et les tests automatisés résolvent de vrais problèmes
Quand on écrit/refactorise un gros programme, il est important d’écrire, jeter, puis réécrire
Cet article est déroutant
De petits changements peuvent profondément modifier l’adéquation d’un programme
Créer un logiciel seul et le créer en équipe, ce sont deux choses totalement différentes
On a commencé à travailler sur Freewheeling Apps en 2022
Je ne suis pas d’accord avec l’idée que de petits changements peuvent profondément modifier l’adéquation d’un programme
J’aime l’auteur et j’aime le projet Mu
Je suis dépassé par la complexité du génie logiciel