Quel était le bien le plus précieux que les explorateurs d'autrefois rapportaient de leurs voyages ? De l'or et des épices ? Faux. Des cartes.
Christophe Colomb n'aurait jamais fait son célèbre voyage en 1492 sans un
Comment se fait-il que dans le monde technologique d'aujourd'hui, nous ayons tendance à l'oublier ? En quête d'un succès immédiat, nous sommes souvent réticents à consacrer du temps et des ressources précieuses à la production et à la maintenance de la documentation technique. Pour parler en termes du XVIIe siècle, nous nous précipitons pour récupérer de l'or et des épices sans tracer nos cartes qui, à leur tour, auraient pu nous conduire à beaucoup plus d'or et d'épices. Êtes-vous sceptique ? Ohé, regardons cela de plus près...
« Comme vous vous en souvenez sans doute, la stase hypnoïde des schémas neuronaux du cerveau peut être analysée par un faisceau extra-électromagnétique qui… » « Arrêtez ! » s’impatienta Ard Vark. « Que voulez-vous dire par « comme nous nous en souvenons sans doute ? » Comment pouvons-nous nous en souvenir alors que nous ne l’avons jamais su ? – Cette citation de Wacky World, une histoire d’un grand écrivain de science-fiction Edmond Hamilton, fait référence aux Martiens, pas aux programmeurs. Pourtant, de nombreuses personnes considèrent les développeurs comme s’ils venaient d’une autre planète – en particulier ceux qui n’ont qu’une vague idée du développement logiciel et de ses complexités. Le fait est que les développeurs supposent souvent que les autres connaissent le code aussi bien qu’eux et considèrent souvent la documentation technique inutile. Cet état d’esprit risque de rendre le projet aussi complexe et incompréhensible pour les étrangers qu’une « stase hypnoïde », mettant en péril à terme le succès potentiel du projet.
La réticence à créer de la documentation est souvent due aux mêmes raisons que celles qui poussent les gens à procrastiner dans d’autres domaines : cela nécessite un investissement important en temps et en argent. En d’autres termes, c’est souvent dû à la paresse pure et simple et au désir d’économiser de l’argent, deux obstacles difficiles à surmonter. Cependant, la documentation n’est pas seulement une information redondante qui semble évidente pour tout le monde ; elle contient des détails critiques qui peuvent être indispensables. Souvent, l’absence de documentation complique considérablement la détection et la correction des erreurs, rend la maintenance et les mises à jour plus difficiles et augmente le temps nécessaire à l’intégration des nouveaux membres de l’équipe. Alors que les équipes sans documentation sont contraintes d’effectuer des tâches répétitives, les projets avec une documentation bien structurée font preuve d’une grande efficacité et d’une grande fiabilité – c’est un fait, pas une simple opinion.
Certes, certains programmeurs prétendent que le code qu'ils écrivent est si clair et compréhensible que la documentation est tout simplement inutile. Cependant, en réalité, même le code le plus parfait peut être déroutant pour les autres ou perdre de sa clarté au fil du temps. Ce qui semble clair aujourd'hui peut devenir un casse-tête demain. Par exemple, pourriez-vous facilement gérer une simple carte perforée des années 70 ?
La théorie est bonne, mais la pratique est plus convaincante. Voici quelques exemples, basés sur des faits réels, dont seuls les noms de personnes et d'entreprises sont fictifs. Ces brèves études de cas couvrent les problèmes les plus courants qui surviennent en raison de mauvaises pratiques de documentation technique.
Le projet « NoDocumentationPlease », une start-up de streaming vidéo à succès à l'origine, a rencontré de sérieux problèmes lors de son expansion en raison d'une documentation technique insuffisante. Lorsque l'équipe a dû s'agrandir, les nouveaux employés n'ont pas pu comprendre pleinement leurs tâches et personne n'a pu leur fournir d'explications adéquates. Sans soutien ni formation appropriés, les nouvelles recrues ont rapidement quitté l'entreprise. Cela a non seulement ralenti la progression du projet, mais a également entraîné la perte de talents clés, mettant en péril l'efficacité globale et l'avenir du projet. En conséquence, les streamers ont quitté le chat et le projet a été arrêté.
L'entreprise « IKnowEverything » a développé une plateforme cloud pour la synchronisation et le stockage de données. Au début, le projet a progressé rapidement, mais au fil du temps, ses développeurs ont eu du mal à maintenir et à mettre à jour la plateforme en raison du manque de documentation technique claire et à jour. Cela a entraîné un développement plus lent, davantage de bugs et des clients insatisfaits. Finalement, l'entreprise a commencé à perdre ses anciens clients, et les nouveaux clients ont choisi des concurrents avec des solutions plus stables et plus fiables. Les revenus ont considérablement diminué tandis que le coût de la maintenance inefficace a augmenté. Une documentation appropriée des aspects techniques dès le départ aurait pu leur permettre de se développer avec succès. Cependant, cela n'a pas été fait à temps. Par conséquent, l'entreprise n'a pas pu surmonter les défis techniques et financiers et a dû fermer.
Le projet « SmartestEver » a rencontré de graves problèmes car son développeur principal, Andrew, qui s'occupait de presque tout, a démissionné après avoir été submergé par les nombreuses questions de l'équipe. Si « SmartestEver » avait eu une documentation appropriée, les développeurs juniors auraient pu facilement se référer à la FAQ et résoudre les problèmes courants. Au lieu de cela, ils ont bombardé Andrew de questions, et sans lui et la documentation nécessaire, l'équipe n'a tout simplement pas pu continuer et le projet a été arrêté (appuyez sur F pour Andrew).
Dans la société « NoDocsNeeded », un logiciel prometteur était développé par John, un développeur clé qui détenait toutes les connaissances mais ne s'était pas donné la peine de les documenter. Ses responsables n'ont pas non plus pris la peine de le convaincre. Un jour, John est parti en voyage d'affaires et n'est jamais revenu. Sans documentation ni compréhension de l'architecture et de la logique du produit, les autres membres de l'équipe n'ont pratiquement rien pu faire. Le projet a été gelé et l'argent investi a été gaspillé. La leçon est simple : la documentation et la diffusion des connaissances au sein d'une équipe sont cruciales pour éviter de dépendre d'une seule personne. D'ailleurs, ils recherchent toujours John...
Maria a créé sa première bibliothèque open source mais n'a pas rédigé de documentation pour celle-ci. Personne ne comprenait ce que faisait cette bibliothèque et Maria a décidé qu'elle n'écrirait plus de bibliothèques car cela lui semblait inutile. Le projet de Maria s'est terminé avant même d'avoir commencé et elle a décidé de changer de métier.
Ok, nous avons un peu de théorie et de pratique, plongeons maintenant dans la recherche et les statistiques. Enquête sur les développeurs Stack Overflow 2024
Les principales conclusions sont étonnamment simples : n°1 – Tout le monde a besoin de documentation pour comprendre la technologie et/ou le travail des autres ; mais n°2 – Peu de gens prennent la peine de la rédiger et de la maintenir ; et par conséquent n°3 – Une grande partie de la documentation est mal rédigée, obsolète et généralement inutile. Alors que faut-il faire ? Changer sa motivation à tous les niveaux.
Un groupe de chercheurs de l'Université des sciences appliquées HAN et de l'Université de Groningue (toutes deux aux Pays-Bas)
La documentation informelle souvent utilisée par les développeurs est difficile à comprendre ;
La documentation est considérée comme un gaspillage lorsqu’elle ne contribue pas immédiatement au produit final ;
La productivité du développeur se mesure uniquement par la quantité de logiciels fonctionnels ;
La documentation n’est souvent pas synchronisée avec le logiciel réel ;
Les développeurs ont souvent une vision à court terme, en particulier dans les environnements de développement logiciel continu.
Cela vous semble-t-il familier ? Je suis sûr que la plupart d'entre nous avons rencontré la plupart de ces problèmes, voire tous, au cours de notre travail quotidien. Et cela ne se résume pas seulement à la procrastination ou au manque de ressources. Certains de ces problèmes proviennent d'un manque de gestion adéquate, de planification à long terme et, en fin de compte, de vision stratégique. Et c'est là que vient la partie difficile, car ce n'est pas seulement à nous, les développeurs, de les résoudre. Certains problèmes doivent être traités par les managers, les parties prenantes du produit ou même les propriétaires de l'entreprise. C'est pourquoi il est essentiel qu'une vision appropriée des aspects techniques ne soit pas seulement un accessoire agréable, mais fasse partie des valeurs fondamentales de l'entreprise dans son ensemble, partagées par tous, des fondateurs aux développeurs juniors.