Qualité des développements: l’artisanat du code à l’heure de l’innovation numérique
Il n’échappe à personne que l’informatique est en train de dévorer le monde et qu’elle change notre paysage industriel, domestique, culturel et social. Pour l’entreprise, elle est le terrain de la course à l’innovation : usages et relations aux clients transformés, efficacité redoublée, nouveaux produits et services. Pour le consommateur elle constitue une partie non négligeable de l’image même de l’entreprise. Pour le citoyen, elle est au coeur des évolutions sociétales du 21ème siècle. Au coeur de l’informatique et de toutes ses merveilleuses applications, il y a le code. Une automobile de 2016 peut embarquer 100 millions de lignes de code. C’est 20 fois plus que le Boeing 777 créé en 1995, et à coup sûr bien plus que le code embarqué par le module lunaire Apollo 11 en 1969. Au cours des années une chose cependant n’a pas changé radicalement: c’est la façon dont ce code est produit pour l’essentiel, à savoir qu’il est toujours écrit ligne après ligne par des développeurs travaillant en équipe.
L’essor des méthodologies Agiles a montré quelle place la communication tient dans le succès d’un projet informatique. L’approche Agile vise à réduire voire éliminer les fossés de communication qui séparaient les équipes techniques de leur client et utilisateurs. Cette démarche de rapprochement se poursuit aujourd’hui dans l’approche DevOps. L’idée-force qui sous-tend ces améliorations est la notion de Feedback (retour d’information).
Cette idée est également présente dans le mouvement Software Craftsmanship (une autre émanation de la mouvance Agile), et pourrait même en être le coeur : à savoir que la communication et le feedback sont des conditions essentielles pour créer et maintenir un code de bonne qualité. Feedback du code vers les développeurs, communication des développeurs autour du code qu’ils produisent, mais aussi capacité intrinsèque du code à exprimer l’intention du développeur.
Puisque le code prend une importance croissante dans notre économie comme dans nos existences individuelles, le problème de sa qualité devient de plus en plus préoccupant. La question du code “legacy” (comment maintenir en toute sécurité et faire évoluer à coût raisonnable un code aussi indispensable qu’incompréhensible ?) ne va pas disparaître avec chaque nouvelle technologie qui s’annonce, bien au contraire. Certaines applications web qui ne datent que de 2010 requièrent déjà leur géologues.
Il paraît difficile de croire qu’une amélioration soit possible dans ce sens, et pourtant les remèdes existent, qui concernent à la fois le code et la communication, par et autour du code: ce sont les pratiques qui ont pour nom Test Driven Development, Behavior Driven Development, Revue de Code, Pair Programming, Mob Programming.
Attardons-nous sur deux d’entre elles :
La revue de code par les pairs est une pratique recommandée depuis des décennies. Si j’en crois les jeunes ingénieurs que je rencontre, elle n’est toujours pas enseignée en école.
La technique de développement par les tests (TDD) formulée par Kent Beck à la fin des années 90, permet de produire du code simple, flexible, et hautement maintenable. Une minorité de jeunes ingénieurs la connaissent à leur entrée dans le monde du travail.
Ces deux techniques, dont l’acquisition peut se faire en quelques jours de formation et quelques semaines de pratique, peuvent améliorer durablement la qualité de vos développements. Elles représentent une voie alternative simple, sinon aisée, à cette entropie du code legacy qui menace l’entreprise dans sa capacité à innover. Et bien qu’elles concernent en premier lieu l’activité “purement technique” des développeurs, leur influence sur les performances IT de votre entreprise et son time to market constitue un atout crucial. Réjouissons-nous: l’ère des projets en cascade, des recettes litigieuses et des applis inutilisables est révolue. La transformation digitale impose aux acteurs présents de faire mieux pour moins cher et dans de meilleurs délais.
La proposition de développer un code de meilleure qualité à un moindre coût et dans de meilleurs délais pourra paraître une gageure, voire une plaisanterie d’amateur aux yeux de vos prestataires habituels. Il n’en est rien. Capers Jones, dont l’activité consiste à étudier des projets informatiques de toutes tailles et de toutes natures depuis 40 ans, et qui publie régulièrement à ce sujet un rapport sur l’état de l’art, affirme:
For software, not only is quality free but it leads to lower costs and shorter schedules at the same time. Cette observation, tout développeur avec un tant soit peu d’expérience en entreprise, et qui par conséquent, s’est déjà retrouvé aux prises avec une “dette technique” insurmontable, pourra la confirmer: en développement comme dans tant d’autres domaines industriels: il revient moins cher de prévenir nos erreurs que de les corriger.