Et bien souvent, comme si l’auteur du message avait honte de me dire qu’il voudrait pouvoir faire correctement son travail, il minore son propos avec quelque chose du style « Est-ce que tu penses que j’en demande trop ? »

Bref, il veut me faire sentir que je lui ai vendu du rêve durant la formation, qu’il est totalement frustré par la réalité de son quotidien, et que par conséquent il n’est pas du tout heureux.

Et je reçois et je comprends très bien ce message, car cela fait 18 ans que je vis cela.

En effet, que ce soit durant les 15 années que j’ai passées chez des éditeurs de logiciel ou bien les 3 années que je viens de passer chez Norsys, je n’ai jamais rencontré un projet qui respectait l’ensemble des bonnes pratiques de développement ou qui correspondait à mes critères de qualité.

Plus fort, si les projets que j’ai fait naître ont pu à une époque être à mes yeux de « qualité », ce n’est plus forcément le cas aujourd’hui !

Toujours plus forts, les développeurs plus expérimentés que je connais ont également ce ressenti !

Je pense donc qu’il est possible d’en conclure que le projet parfait n’existe pas !

Arrivé à ce point de votre lecture, je suis prêt à parier que vous êtes en train de penser que si cela est avéré, c’est d’une tristesse affligeante et qu’il vaudrait mieux changer de métier et devenir (par exemple) charcutier…

C’est effectivement une possibilité… mais ce n’est pas la seule.

En effet, il serait dommage de jeter l’éponge, car c’est un gâchis de vouloir arrêter de faire un travail lorsqu’on sait comment le faire correctement.

C’est peut-être même la pire des décisions possibles, car vous n’apportez aucune valeur…

Mais si au contraire vous suivez le conseil de Gandhi en faisant en sorte d’apporter le changement que vous voulez voir apparaître, vous apportez une valeur énorme, parce que vous savez (ou penser savoir, n’oubliez pas cela) comment faire les choses correctement et que visiblement ce n’est pas forcément le cas des autres autour de vous.

D’un point de vue capitaliste (hum), c’est d’ailleurs ce qui fait votre valeur, car dans notre société, ce qui est rare est cher, donc si vous êtes le seul dans une équipe à savoir comment améliorer les choses, vous êtes un diamant dans un tas de charbon !

Dit autrement, si tout le monde savait développer en suivant les bonnes pratiques, le fait de les connaître et de savoir les appliquer n’aurait quasiment aucune valeur !

Alors oui, ça ne va pas être simple, il va y avoir du sang, des larmes et de la sueur qui vont couler, et il va falloir se salir les mains en utilisant une batte de base-ball ou de la vaseline, en fonction de votre caractère (et les deux ne sont pas forcément incompatibles).

Il vous faudra être pédagogue, être capable de communiquer, expliquer, montrer, faire, démontrer, répéter, évangéliser, à l’aide de méthodes diverses et variées, telles que le « pair programming », le « mob programming », les « meetups », les revues de code, un partage de veille technologique, etc.

Et oui, tout cela représente un travail intellectuel et psychologique de longue haleine qui ne portera ses fruits qu’à long terme ou qui n’aboutira pas.

En effet, comme l’a justement remarqué Forrest Gump, un autre grand philosophe, la merde, ça arrive, ce qui veut dire que vous allez peut-être échouer à porter la bonne parole, mais n’oubliez pas que même Jésus a fini sur une croix en le faisant.

Peut-être qu'à un moment, il faudra donc savoir être lucide et jeter l'éponge avant de faire un burnout en allant travailler pour une entreprise qui correspond mieux à vos attentes.

Cependant, ce n’est pas une raison pour ne pas au moins essayer, d’autant que malheureusement, cela fait aujourd’hui partie intégrante de notre métier.

Le Code, au sens large du terme, a aujourd’hui un passif énorme, et la dette technique à l’échelle mondiale est certainement bien plus importante que la dette financière.

Il repose sur des bases anciennes, à commencer par les systèmes d’exploitation qui ont tous plus de 20 ans et dont la conception est dirigée pour la plupart d’entre eux en fonction de critères économiques, ce qui est loin d’être un gage de qualité.

N’ayez aucun doute que chacun d’eux à des zones d’ombre dans lesquelles vivent des monstres que vous n’imaginez même pas, sans parler des problématiques au niveau du matériel.

Les bases ne sont donc pas saines, et nous avons donc construit notre code sur ce château de cartes, couche après couche, parfois sans même savoir ce que nous faisions exactement, faute de formation adaptée et d’une volonté de simplification des outils qui a pour conséquence que de nos jours, plus personne ne sait exactement ce qui se passe dans un CPU.

De plus, nos pères fondateurs ont aussi une part de responsabilités, même si à leur décharge, ils étaient des précurseurs et étaient donc par nature bien mal armés pour pouvoir concevoir du code destiné à vivre sur le long terme.

La programmation orientée objet a par exemple été inventée dans les années 60 pour répondre aux problèmes posés par la maintenance et l’évolution du code, mais malheureusement, des générations entières de développeurs n’ont pas bien compris le message (la dose d’ironie présente dans cette phrase est phénoménale).

Mais connaître tout ou partie de l’origine de cette dette n’a de toute façon pas beaucoup d’importance, car il est aujourd’hui devenu très difficile d’y changer quoi que ce soit.

La refonte nécessaire pour la réduire et pouvoir ainsi produire du code sur des bases plus saines est bien trop importante pour être rentable économiquement parlant, même si elle implique le sacrifice d’une bonne partie des ressources des ordinateurs d’aujourd’hui pour être tenable.

Si vous voulez être un développeur, vous n’avez donc pas le choix, il va vous falloir vous coltiner beaucoup de merde durant votre carrière.

C’est un peu la même dynamique que pour le changement climatique : La voiture est en train de tomber dans le ravin, mais ça couterait bien trop cher de la transformer en hélicoptère ou bien à minima de lui greffer un parachute pour amortir un minimum la chute, et nous allons donc atterrir très violemment un jour.

Cependant, si je pense qu’en tant qu’individu, il n’est plus vraiment possible d’avoir un impact significatif sur l’évolution du climat, je pense qu’il est encore possible d’améliorer le code localement, car contrairement au climat, le couplage entre les différents composants d’un programme informatique est (censé être) faible (même s’il est probable que dans 50 ans, il n’y aura plus d’électricité pour faire fonctionner les ordinateurs permettant d’exécuter du code).

Alors, comme l’a dit encore un autre grand philosophe, JUST… DO… IT!