Réinventer la roue

La roueL’un des arguments principaux justifiant le recours à un framework (par exemple, au hasard, Symfony), contrebalançant le fait qu’il est un peu « lourd »[1], est que puisqu’il prend en charge un grand nombre des tâches répétitives de bas niveau, il évite au développeur d’avoir, selon l’expression consacrée, à réinventer la roue à chaque fois qu’il entame une nouvelle application ou une nouvelle interface.

« Réinventer la roue » (ou « rihinveinte zeu ouhile », pour les bilingues), c’est perdre du temps sur quelque chose qui a déjà été fait, bien fait, mieux fait, bref, faire un travail inutile. En programmation, c’est même un antipattern célèbre. Si on peut lui reconnaitre dans une certaine mesure un intérêt pédagogique (l’impétrant développeur, en passant du temps sur une fonctionnalité déjà réalisée, s’initie au code et à sa logique – pour peu qu’il soit guidé), il est clair qu’on déconseille fortement de réinventer la roue. Si ça a déjà été inventé, coco[2], pourquoi perdre du temps à le refaire, d’autant qu’il y a fort à parier que tu le referas moins bien. En effet, non seulement la roue a déjà été inventée, mais depuis le temps, elle a été perfectionnée.

La bonne pratique est donc de capitaliser, comme on dit, sur ce que les autres ont déjà fait, testé et éprouvé.
En programmation, où l’Histoire est encore fraiche et où tout va très vite, ces « autres » sont parfois des contemporains (voire sont plus jeunes que vous ; sales jeunes), mais pour généraliser on peut dire que cette bonne pratique consiste à apprendre de ce qui a été fait, donc apprendre du passé, des générations précédentes, en d’autres termes : de ses aînés. Ce passé qu’on peut plus ou moins consciemment faire fructifier a un nom : la tradition.

L’Histoire se répétant, chaque nouvelle génération a une tendance plus ou moins forte à vouloir se défaire de la tradition, comme une transposition à l’échelle socio-culturelle de la crise d’adolescence, où le besoin de conquérir son individualité se traduit parfois par des chocs violents (tant il est évident que pour chaque jeune, les vieux n’ont vraiment rien compris, et ne peuvent de toutes façons pas le comprendre lui).

Il y a pourtant une réalité douloureuse, c’est que globalement, vu que l’Histoire n’a pas exactement commencé hier, ni même à la naissance de Bill Kaulitz/Brian Molko/Kurt Cobain/Robert Smith/John Lennon (choisissez pour votre génération ou celle qui vous suit), vu que l’humanité, donc, a quelques heures de vol derrière elle, excusez du peu, il y a de fortes chances que tout ait déjà été fait.

Connais tes classiques

Bien sûr, l’accélération (on va appeler ça comme ça) de l’Histoire dûe à la technologie au sens très large, donc depuis la fin du XIXème siècle, fait que dans pas mal de domaines, le passé est bref. Ça a un côté assez sympathique, on peut croire un peu qu’on défriche des choses — et ça n’est en partie pas faux —, mais il ne faut pas non plus se faire avoir par une courante illusion d’optique : même si concrètement le contenu du savoir/de la technologie en question est « différent », dans l’histoire du savoir, on n’invente que très rarement quelque chose. Pour ne pas dire jamais. La plupart du temps, on repasse en fait par des chemins qui ont déjà été empruntés, même si on ne le sait pas (et dans ce cas, en un sens, on peut se retrouver à réinventer la roue).

Cette illusion repose principalement sur un aveuglement, dû à un manque de connaissance du passé, et la bonne pratique qui préconise de ne pas réinventer la roue exhorte donc à ouvrir les yeux. Mais pour ça, comme on dit, il faut connaître ses classiques. Lire, écouter. Plus tu connais le passé, plus tu maîtrises le présent, plus tu façonnes le futur comme tu le veux (je devrais écrire des slogans pour ERDF, moi).

Ça peut avoir l’air déprimant comme ça, mais ça ne l’est que si l’on se berce de l’illusion (une autre) qu’on est le premier de l’espèce humaine et que tout nous a attendu. Il faut se réveiller. Personne ne nous a attendu, et les morts sont plus forts que les vivants.
Mais en fait, c’est très bien, et ça laisse quand même de la place. Parce que l’histoire est une perpétuelle redigestion, qu’elle engendre quand même du nouveau, et qu’emprunter un chemin qui a déjà été foulé est toujours un nouveau périple.

La morale de cette histoire (qui n’en est pas une), c’est que quand l’ego a réussi à faire le deuil de sa toute-puissance, à entrer dans son humilité, et pas au sens chrétien du terme, alors les choses intéressantes peuvent éventuellement commencer.
J’aborderai probablement une autre fois le rapport à la tradition, qui n’est évidemment pas univoque et ne doit pas consister en une soumission absolue (car, comme disait l’autre, la tradition ça peut aussi être de la paresse ou de la négligence. Mais pour contester ou dépasser, il faut connaître ce qu’on prétend dépasser.

__________________________

Illustration fort à propos trouvée fortuitement ici : http://plennevaux.be/alexandre/general/monocycle-par-ben-wilson/

________________________________________________
  1. Puisqu’on ajoute des couches, c’est forcément plus lourd qui si on n’en ajoute pas, merci pour la lapalissade. []
  2. Oui, j’appelle souvent les développeurs « coco », ils aiment beaucoup. []

Tags : , , ,

4 commentaires sur “Réinventer la roue”

  1. mobilo :

    très bien

  2. LaurentLC :

    Trop aimable :)

  3. Martin :

    Je pense qu’en programmation il est important de réinventer la roue.

    En repassant par des chemins que d’autres ont déjà pris, on comprends certaines problématiques, et on comprends les solutions proposées par les frameworks.

    L’innovation viendra d’une approche différente. Il faut comprendre le fonctionnement de la roue pour pouvoir l’améliorer.

    Je pense qu’il faut utiliser les frameworks, mais sans hésiter à découvrir leur fonctionnement. Il faut savoir si la roue qu’on nous propose nous convient vraiment, si on n’ a pas besoin de la modifier ou de la réinventer… Ou pas…

  4. LaurentLC :

    @Martin : c’est bien ce à quoi je pensais en parlant d’une vertu pédagogique du réinventage de roue. Un développeur qui n’aura jamais regardé comment son framework fonctionne risque de n’être qu’à moitié efficace, on n’est bien d’accord.
    Mais au quotidien il faut trouver la bonne mesure, selon le projet, les délais, le contexte…