Réinventer la roue

Je suis tombé récemment sur cet article initialement intitulé « Quand ne devrait-on pas utiliser WordPress ? ». J’ai d’abord cru à un article satirique, puis j’ai vite réalisé que l’auteur était sérieux. Parmi les arguments avancés pour justifier une utilisation systématique de WordPress, j’ai sursauté sur le suivant.

  • Il ne sert à rien de réinventer la roue.

Non merci ! Trop occupés

C’est un argument que je n’aime pas trop, mais que j’ai déjà entendu de la part de clients. Pour commencer, je n’aime pas la comparaison avec la roue. Je ne suis pas un travailleur à la chaîne qui assemble des pneus. Je suis intégrateur. Je me vois plus comme un artisan que comme un ouvrier sur une chaîne de montage.

Alors prenons une autre métaphore. Par exemple, la cuisine. Si vous allez dans un supermarché, vous trouverez certainement de quoi vous nourrir jusqu’à la fin de vos jours sans avoir jamais à cuisiner. Plats préparés, surgelés, conserves. Rien de telle qu’une bonne ratatouille surgelée, non ? Non ? Non ?

Mais alors, à quoi bon réinventer la ratatouille ?

Le premier argument qui me vient à l’esprit, c’est bien entendu la qualité. En cuisinant moi même une ratatouille, je connais la qualité de mes ingrédients.

Le second argument, c’est la facilité de personnalisation. Vous n’aimez pas les poivrons ? Aucun problème, je vous fait une ratatouille sans poivron.

Le dernier argument, c’est le plaisir. Découper soi même amoureusement ses aubergines, courgettes et tomates, et les faire revenir langoureusement à la poêle, c’est quand même autre chose que jeter un sachet plastique surgelé dans le micro-onde.

La ratatouille du film ratatouille, cuisinée par… Rémy

Le parallèle avec l’intégration, ou même le développement au sens large, n’est pas bien difficile à faire. Je suis un codeur dans l’âme. J’aime savoir comment fonctionne quelque chose avant de l’utiliser. J’ai besoin de m’assurer de la qualité de ce que j’utilise. J’aime aussi concevoir des pages et interfaces sur mesure, correspondant à un besoin précis. Et j’éprouve beaucoup de plaisir à faire tout ça, même si ça nécessite que j’y passe beaucoup de temps ou que j’y laisse quelques cheveux.

De la même manière que je pourrais me contenter de manger du surgelé tous les soirs, je pourrais me contenter de claquer du WordPress sur tous mes projets. Mais j’y perdrais surement vite goût.

Toute la subtilité de mon métier réside alors mon propre jugement de ma capacité à réinventer la ratatouille. Si on est vendredi à dix-sept heures et qu’il faut impérativement que je livre une page avec un carousel en 3D pour dans trente minutes, il y a des chances pour que je me jette sur la première bibliothèque faisant ça proprement que je trouverais.

Et ça ne signifie pas non plus que je vais systématiquement réessayer de réinventer la roue. J’aurais peu d’intérêts à créer mon propre pré-processeur CSS, mon propre langage de programmation, mon propre système d’exploitation, etc.

Pour citer Carl Sagan (dans un moment de télévision tel qu’on ne ferait plus de nos jours) :

Carl Sagan: If you wish to make an apple pie from scratch, you must first invent the universe.

Si vous souhaitez faire une tarte aux pommes à partir de zéro, vous devez d’abord inventer l’univers.

La semaine dernière, je suis tombé sur cet autre article intitulé « Je sais comment programmer, mais je ne sais pas quoi programmer ». Ce passage m’a apporté un autre argument pour réinventer la roue :

Dans la communauté du logiciel, l’attitude générale est de ne pas réinventer la roue. C’est presque mal perçu si vous réécrivez une bibliothèque quand une option mature et stable existe. Si c’est une bonne règle en général, les débutants ne devraient pas avoir peur de réinventer la roue. Quand c’est fait pour apprendre et pour s’entraîner, c’est très bien de faire une roue. C’est une partie importante de l’apprentissage. Par exemple, écrivez votre propre version de ls, mv, wget ou cowsay. Si vous souhaitez partir sur un jeu, alors faites un clone de Pong, Tetris ou Space Invaders. Vous n’avez pas besoin de reprendre toutes leurs fonctionnalités ou d’en faire une réplique exacte, mais vous démarrez avec votre objectif et une feuille blanche, et vous faites en sorte d’y arriver.

Il s’avère que Jeff Atwood avait écrit sur ce thème en 2009 :

« Ne réinventez pas la roue » devrait être utilisée comme un appel aux armes pour s’enrichir de toutes les solutions existantes, et pas comme une matraque pour affaiblir ceux qui voudraient légitimement construire quelque chose de mieux ou améliorer ce qui existe déjà. De ma propre expérience, malheureusement, c’est plus souvent ce dernier cas que le premier.

Donc, non, vous ne devriez pas réinventer la roue. À moins que vous ne prévoyiez d’en savoir plus sur les roues.

Les métiers du Web nécessitent un constant réapprentissage (« Les bonnes pratiques d’aujourd’hui seront les mauvaises pratiques de demain », disais-je il y a quatre ans). Réinventer la roue, c’est aussi une façon de s’assurer de rester dans la course plutôt que de regarder la roue tourner.

  1. Deloo, le

    Le parallèle entre le développement et ratatouillement est inattendu, mais convaincant. Bravo!

  2. Cyril, le

    Le comparatif entre la ratatouille et la roue est intéressant mais faux selon moi.

    Tu dis que tu n’utilises pas forcément WordPress parce que tu aimes voir ce que tu fais et ce qu’il se passe dans ton code.

    Le parfait contre-argument, selon moi, c’est que derrière le code WordPress, il y a plusieurs dizaines de professionnels qui maintiennent le code, qui testent le code du CMS entre-eux, tout le temps. Tout est réfléchi par des experts qui savent, eux, exactement ce qu’il se passe à l’intérieur du CMS.

    Toute la partie réapprentissage le font eux de leur côté et utiliser WordPress c’est utiliser cette expertise sans avoir à le faire toi-même.

    Donc bon, voilà. Selon moi ton article n’est pas un très bon argument.

    Voilà.

    Ton dévoué,

  3. Benoit, le

    C’est comme fabriquer sa voiture parce que l’on ne comprend pas comment elle fonctionne. À moins d’être ingénieur dans l’automobile (et encore), je vois mal comment l’on pourrait faire pour se déplacer aussi efficacement.

    Et pourtant, je n’aime pas trop les CMS et autres bibliothèques souvent mal adaptés aux besoins. Mais on doit faire avec certaines fois (pas tout le temps donc).

  4. Laurent, le

    Bonjour Rémi,

    Si je suis d’accord avec toi sur le fait que WordPress n’est pas la solution à tout (loin de là!), je ne suis pas tout à fait d’accord sur la vision que tu exprimes dans ton article.

    Je comprends ton point de vue dans le cadre d’un projet « from scratch », mais dans le cas de WordPress ou d’un CMS Open Source, c’est justement tout leur intérêt que de pouvoir capitaliser sur les développements réalisés par la communauté.

    Pour moi s’il existe des solutions stables, solides, codées dans le respect des standards de qualité et d’accessibilité, et évolutive, je ne vois pas l’intérêt de les réinventer, juste pour le plaisir de maîtriser le code.

    Je rejoins Cyril dans son argument sur le fait que derrière WordPress (ou certains plugins) tu as des dizaines, voire des centaines de personnes, qui le maintiennent, en assurent la sécurité et la maintenance et le font évoluer.

    Alors que quand toi tu développes quelque chose, ton équipe et toi êtes les seuls à en maîtriser les rouages et a en assurer la maintenance.

    Après c’est un débat philosophique sans fin :)

  5. Nico, le

    @Cyril > Le parfait contre-argument, selon moi, c’est que derrière le code WordPress, il y a plusieurs dizaines de professionnels qui maintiennent le code, qui testent le code du CMS entre-eux, tout le temps. Tout est réfléchi par des experts qui savent, eux, exactement ce qu’il se passe à l’intérieur du CMS.

    Je pense que Rémi fait allusion à certains thèmes pourtant allègrement vendus comme étant de qualité (et dont la qualité du code front laisse franchement à désirer) ?

  6. Rémi, le

    @Cyril : Je ne nie rien de la qualité de WordPress, tout comme je ne dénigre absolument pas les plats surgelés. Si ça existe, et si ça rencontre du succès, c’est que ça répond bien à un besoin précis. Par contre, ça ne veut pas dire que ça doit être la réponse à tout. Et surtout, ce n’est pas pour autant que ça va me faire plaisir.

  7. Quentin AZEMA, le

    Article très intéressant, avec des parallèles bien formulés (les plats surgelés, une pépite).

  8. mh_nichts, le

    Bonjour Rémi,
    Merci pour cet article.

    C’est intéressant car je suis allée lire l’article sur WordPress que tu cites, et je ne l’ai peut-être pas interprété comme toi, car pour moi il n’est pas là pour justifier une utilisation systématique de WordPress, mais plutôt pour contrer certains arguments souvent entendus contre ce CMS.
    Je sais que la différence est très fine, mais du coup je n’y vois pas une injonction à prendre du tout-prêt tout le temps, plutôt une explication que ce n’est pas du tout-prêt « tout-simple », mais une base qui permet de multiples choses (et que justement il ne faut pas se contenter de la partie toute prête).
    Après il y a un petit côté évangéliste mais personne n’est parfait.

    Dans tous les cas, cela n’enlève pas de valeur à ton texte, et je ne les vois même pas comme opposés.
    J’apprécie ta métaphore des plats préparés, et je comprends ta réflexion surtout d’une manière plus globale : selon les contextes et les besoins, savoir utiliser les outils adéquats, comprendre comment ils fonctionnent, les améliorer, innover…
    Je trouve dommage que les commentaires puissent réduire ce texte à un simple argumentaire contre WordPress !

  9. Zelena, le

    Pour les anglophones, un article de Lea Verou qui apporte de l’eau au moulin d’ici… :
    http://lea.verou.me/2012/04/in-defense-of-reinventing-wheels/
    Notez le WordPress en bas de la page…