« Je peux faire sans »


J’aime bien l’ap­pli­ca­tion de l’effet Dunning Kruger à la gestion des dépen­dances externes dans la program­ma­tion.

On commence par inclure un peu tout et n’im­porte quoi sans trop y réflé­chir avant. Avec l’ex­pé­rience on réalise les risques et on se prend quelques méchants murs. À cette étape les plus techos finissent vite avec un « je refais tout moi-même, après tout il n’y a rien de magique et je sais faire ».

Cette phase de crise est appe­lée « vallée de l’hu­mi­lité » dans les graphiques de l’ef­fet Dunning Kruger. À propos de la gestion des dépen­dances c’est tout le contraire : une crise d’égo. On se croit meilleur que tout le monde. On croit pouvoir tout faire soi-même, et que ce sera mieux.

La sagesse vient de se rendre compte qu’on va faire moins bien, pour avoir au final les mêmes problèmes, mais après avoir dépensé tout son temps pour rien. Là on commence alors à réuti­li­ser de nouveau des briques tierces. On fait juste plus atten­tion à quoi, quand, comment, et surtout au cycle de vie de ce qu’on intègre.


Oui vous savez faire, mais vous ne ferez proba­ble­ment pas aussi bien, faute de temps, faute de relec­teurs, faute d’ex­pé­rience. Vous ferez des erreurs. Vous oublie­rez des cas. Vous ne verrez pas certains problèmes de sécu­rité. Vous n’im­plé­men­te­rez pas toutes les fonc­tions utiles.

Ce n’est pas que l’au­teur de la biblio­thèque de code trou­vée sur inter­net est meilleur que vous, c’est qu’il a choisi de se concen­trer sur un ou deux problèmes là où vous en avez bien d’autres à gérer. Ce n’est pas qu’il fera moins d’er­reurs, c’est qu’il béné­fi­ciera des correc­tions de tiers. Ce n’est pas qu’il a plus de temps ou plus de connais­sances, c’est que lui ne sera pas tout seul.

Ce n’est pas forcé­ment vrai aujourd’­hui, mais avec le temps les projets communs gagnent forcé­ment sur les projets indi­vi­duels, pour ces raisons. Et si vous pensez avoir le temps et l’ex­per­tise pour faire mieux ou pour corri­ger le code déjà en ligne, contri­buez afin d’en­ri­chir pour les autres. Ayez juste l’hu­mi­lité de voir que vous ne pouvez le faire que sur un nombre limité d’items. Sur le reste il sera préfé­rable de réuti­li­ser ce que d’autres auront réalisé.


Une réponse à “« Je peux faire sans »”

  1. Globalement, je suis d’accord mais il y a un aspect dont je suis surpris de ne pas avoir apparaître ici : spécifique vs générique. En général, la bibliothèque que l’on trouve sur Internet est beaucoup plus générique que le bout de code que l’on va refaire. Et cette différence peut être vraiment très importante en termes de quantité de code et de complexité. Et parfois, même si l’auteur de la bibliothèque est bien plus calé que soi, on peut faire un meilleur travail en recodant juste pour son besoin (de préférence, en ayant la bibliothèque en question pour bien comprendre le domaine et s’assurer que l’on n’oublie rien).

    Au final, ça ne change pas qu’il y a des cas où il vaut mieux réutiliser des bibliothèques (les primitives de crypto par exemple) et d’autres ont recodé quelques fonctions permettent d’éviter une cascade de dépendances. Mais parfois, quelques fonctions recodées dans un coin seront un meilleur choix que de contribuer à la bibliothèque super géniale qui gère déjà tout plein de cas (même pas le mien). Parce que même si l’auteur est génial, qu’il a plus de temps et d’expertise, il peut se lasser fasse à un projet qui a accepté trop de nouvelles fonctionnalités dans tous les sens et qui est devenu petit à petit trop complexe à maintenir.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.