Développeur est un job de fainéant maniaque
— Bienvenue à cet entretien d'embauche pour le poste de Développeur Fullstack JS Go Oracle MongoDB Imprimante HP, tout d'abord cette question : quel est votre plus grand défaut ?
— Je suis vraiment très maniaque : j'aligne les couverts aux bords de la table et du set, je repère les cadres muraux qui penchent, mais surtout je verifie les indentations, les points-virgules, les conventions typographiques des noms des variables. Et cela, je m'en soucie même quand il faut coder à l'arrache et qu'« on verra plus tard ».
— Bien, mais alors quelle est votre plus grande qualité ?
— Je suis un fainéant hors pair : je passe des heures à réfléchir à la façon d'économiser mon énergie, et c'est un véritable travail éreintant !
Ce dialogue a été créé de toute pièce, mais je reste convaincu qu'il devrait être une sorte de norme, de gimmick qui doit s'appliquer à tout développeur professionnel.
La maintenance
Avec le Web, on le voit : la partie la plus coûteuse d'un projet informatique est sa maintenance.
Créer un site Wordpress pour couvrir sa nouvelle passion se fait en quelques heures. Maintenir ce site à jour, continuer de l'enrichir, en améliorer son design, etc. est un travail digne de Sisyphe.
Et parce que la maintenance nous coûte, il faut la prendre en compte dès le début du projet :
Quoi de plus simple que de maintenir 100 lignes de code plutôt que 1000 ?
Quoi de plus simple que de maintenir du code simple plutôt que du code compliqué ?
Quoi de plus simple que de maintenir un projet structuré plutôt qu'un gros Capharnaüm.
Minimiser au strict minimum l'ajout de code, la modification de la codebase, est indispensable.
Le travail en équipe
Seul on va plus vite, ensemble on va plus loin
En équipe, on s'organise, on met en place des règles, certaines organisations, des recommandations et des consensus. Autrement, difficile de partager le travail. Si chaque matin on doit chercher où la personne avec qui on travaille a rangé la clef de 12, on n'a pas fini de perdre du temps.
La vérité est ailleurs, comme disait la costumière.¹
Dans ce cadre, la maniaquerie est une belle qualité. Déterministe, prévisible et constante, elle permet d'éviter les surprises.
D'aucun l'appelle la règle du scout, rappelée dans le livre indispensable de Robert C. Martin : en partant, le campement doit être au moins aussi propre que lorsque vous êtes arrivé.
Boy scout rule. Leave the campground cleaner than you found it. – Summary of 'Clean code' by Robert C. Martin
Dans une codebase, on s'appliquera à n'ajouter que le strict nécessaire et suffisant.
Note : chez soi, sur ses projets persos, on fait ce qu'on veut, mais en équipe on respecte le civisme (qui est une contrainte) du travail en groupe.
Maniaque et fainéant
Faire attention au moindre détail.
Ne faire que le strict minimum.
Ne mélangeons pas tout, il n'est pas question ici de reprocher les erreurs (tout le monde en fait et elles sont importantes) ou de se limiter aux cas d'usage (le monde est divers et tous doivent être pris en compte).
Prendre soin de proposer à son équipe (voire son future self) quelque chose de solide, réfléchi, et organisé selon les conventions en place. Lui donner suffisamment d'informations pour qu'elle comprenne l'intention, le chemin de pensées et les choix faits. Tout cela sans ajouter des concepts compliqués, trop de détails ou des non-dits.
Si une personne a pris soin de faire attention au moindre détail tout en n'ajoutant que le strict minimum (nécessaire et suffisant), alors vous saurez, à votre tour, par quel bout prendre la codebase pour n'ajouter que le nécessaire et suffisant en respectant les conventions en place. C'est un cercle vertueux, mais un système dynamique : il est sensible à chaque étape de s'effronder, un peu de laisser-aller et c'est la foire.
Maintenir un système dynamique stable, c'est un concept qu'on retrouve dans beaucoup de jeux de gestion comme Sim City : le système est stable lorsque la partie démarre. On va y ajouter des zones urbaines, des zones industrielles puis des zones commerciales, tout cela va déséquilibrer le système telle une tour Jenga.
note 1
Je n'ai pas retrouvé l'origine de cette image, pardon à l'auteur et n'hésitez pas à me le signaler si vous la connaissez. ↑