Réinventer la roue
Par Noc le dimanche 8 février 2009, 19:15 - Lien permanent
Il est une tradition dans le monde du développement de clamer haut et fort qu'il ne faut pas réinventer la roue. Que lorsqu'une librairie existe et qu'elle répond au moins partiellement à nos besoins, il est stupide de vouloir écrire sa propre librairie. Mais comme l'a souligné Jeff Atwood dans un récent billet, il faudrait plutôt dire qu'il ne faut pas réinventer la roue, à moins que votre intention est d'en apprendre plus sur les roues. Prenons le cas de Stato, mon framework PHP sur lequel je m'acharne depuis maintenant 5 ans. On pourrait tout à fait me dire (et d'ailleurs on ne s'est pas privé de le faire) : pourquoi fais-tu ça ? Il y a des dizaines de frameworks PHP, pourquoi réinventer la roue ? La réponse est pourtant simple : parce que cela m'a permis d'apprendre énormément, de devenir un bien meilleur programmeur. Et parce qu'aucun outil au monde ne sera jamais parfait, il est toujours possible de faire mieux, ou au moins d'apprendre en essayant. En fait, le seul cas où il vaut mieux ne pas chercher à réinventer la roue, c'est lorsque vous avez des dealines, c'est tout. Et cela s'appelle le pragmatisme. Mais s'il vous vient l'envie le soir au coin du feu de coder quelque chose qui a déjà été fait des millions de fois, juste pour le plaisir de coder ou de chercher à faire un peu mieux que l'existant, pourquoi vous en empêcher ?
Commentaires
Heureusement que les traditions se perdent parfois, ça permet de ne pas rester figé sur un ou quelques modèles, ici les frameworks, qui devraient restés dans un état proche du sacré, intouchables.
Si je comprend bien ta démarche, le temps est comme tu le dis un facteur non négligeable.
Maintenant, c'est aussi le côté _humain_ qui est à prendre en compte dans la conception. Faire un framework seul, je trouverais ça presque égoïste, à défaut d'être présomptueux. Non ?
A l'inverse, faire "quelque chose qui a déjà été fait des millions de fois, juste pour le plaisir de coder ou de chercher à faire un peu mieux que l'existant", mais à partir d'un framework, c'est différent.
Parce qu'encore une fois c'est le facteur humain qui est présent : on ne fait pas "que" pour son plaisir, on fait améliorer l'expérience utilisateur.
Merci,
ça me rassure de lire ce billet et de savoir que je ne suis pas le seul à coder des trucs qui existent déjà juste pour m'enrichir et m'améliorer...
Bonjour Raphaël,
et tu en es où de la version 1.0 de Stato ? il me semble qu'il est opensource et disponible sur le net en téléchargement cet oiseau ?
Vive le code libre ;)
@Julien : En fait, je travaille depuis plusieurs mois sur la version 2 de Stato, que j'espère publier d'ici 2 ou 3 mois. Concernant la branche 1.0, la dernière version releasée est la 0.9.1, et je pense backporter certaines améliorations de la 2.0 pour releaser une 1.0 dans quelques semaines. Plusieurs personnes m'ont contacté afin de me proposer leur contribution, je ne suis donc plus tout à fait tout seul ;) Si tu es intéressé, n'hésite pas à me contacter par mail (g o l d o r a f [at] g m a i l . c o m).
Ouah c'est cool ça comme nouvelle ! Bientôt une nouvelle version de Stato :D
Plus sérieusement, après plusieurs années de développement web (perso), je me suis dis il y a 1 an qu'il fallait que je regarde du côté des framework PHP pour étendre mes connaissances. J’ai alors testé une bonne dizaine de framework pour finalement garder Stato, car c’est celui que j’ai trouvé le plus facile à utiliser et compréhensible (j’aime fouiller dans le code et comprendre tout ce qu’il se passe). Depuis ce temps, je ne conçois plus la programmation web sans Stato, mais je commençais à m’inquiéter du manque de mises à jour.
Donc pour résumer : félicitation pour votre travail et bon courage pour la suite ;-)
Nico
Judicieux article qui tombe vraiment à point nommé. J'expliquais encore hier à un stagiare cet idiome "ne pas réinventer la roue" au sujet de MVC parallèlement à cela je me trouvais confronté à une contradiction :
J'utilisais django faute de mieux en php. je me trouve forcé de migrer vers php que j'avais abandonné il y a quelques années. après avoir étudié symphony, vraiment pas mal mais un peu lourd à mon gout, puis l'horrible cake puis quelques autres ... je m'apprétais la mort dans l'âme à réinventer la roue, pour les mêmes raisons que vous évoquez sur ce billet. Pas fous je m'oriente vers ezComponents ou zendFramework, et je me souvient d'un bon viel article sur l'ORM de PHP Solutions (fevrier 2007 page 40). Et là je me dis voilà c'est exactement ce qu'il me faut (une roue de 19 pouce avec de la bonne gomme). L'article date un peu et je prie pour que le projet ai une vraie page, une vraie doc. Et c'est le cas.
En googlant votre nom et stato je tombe sur ce billet. Donc je dois juste dire merci surtout pour stato.
Juste une ombre au tableau, je dispose d'un serveur mutualisé, et je n'ai pas de ligne de comande ce qui me force à avoir un serveur de production dans mon réseau local. Je me demande si il ne serait psa judicieux d'offrir une interface dans le module admin pour créer les controleurs et autres. Je me dis qu'il y a une raison à ce choix (la ligne de commande) mais que ce fut plus pratique autrement.
En tout cas stato est magique enfin un django like ! BRAVO