Utiliser un framework PHP, est-ce toujours un bon choix ?

CodeIgniterCakePHPSymphony ou encore Zend Framework… Si vous êtes développeur web, vous en avait forcément entendu parler, peut-être même en utilisez-vous un ou plusieurs. Pour ceux qui travaillent en agence, c’est souvent cette dernière qui leur a imposé. Mais pour ceux qui travaillent en solo, les freelances et les étudiants, le choix est libre et reste à faire.

choix-frameworksPHP

Mais déjà, c’est quoi un framework ?

Pour ceux qui l’ignorent encore – ou ne sont pas certains de savoir ce que c’est – un framework est un outil de travail (souvent open source, donc « gratuit ») pour les développeurs web. D’ailleurs, le terme « framework » pourrait être traduit littéralement en français par « cadre de travail », mais avouez tout de même que « framework » est plus agréable :) . De toutes façons, en informatique, l’anglais est toujours de mise :p

Vous devez penser qu’un « cadre », ce n’est pas vraiment un « outil ». En fait, je préfère dire que les frameworks sont des outils de travail, au même titre qu’un marteau vous servira à planter un clou, mais ne le fera pas à votre place. Je dis cela parce que trop de gens pensent à tord qu’un framework, c’est comme un CMS (système de gestion de contenu), mais plus dur à utiliser.

Enfin bref, un framework, c’est un ensemble de composants, ce n’est PAS un générateur de code, et encore moins un atelier de développement rapide (RAD) ! Utiliser un framework, c’est éviter de réinventer la roue.

Pour vous aider à mieux comprendre, je vais reprendre l’exemple du marteau. Avant la venue des frameworks, les développeurs fabriquaient le marteau et le clou, et ils enfonçaient le clou dans le mur. Seulement voilà, chacun a sa façon de faire, alors on voyaient parfois des marteaux qui se cassaient en deux, des clous qui ne tenaient pas ou se brisaient dés le premier coup. Ce n’est pas que le développeur était incompétent, non. En fait, c’était souvent parce qu’il était débutant, sinon parce qu’il n’avait pas assez testé la solidité du clou ou du marteau. Et même si un développeur expérimenté avait bien fait les choses, souvent il était le seul à savoir manier son marteau, ce qui était gênant pour le travail en équipe… Un framework, dans notre exemple, ce serait le marteau et le clou qui auraient été façonnés, non pas par un développeur, mais par toute une communauté de geeks, de développeurs :D .

Si vous regardez les sites web, ils ont tous les mêmes choses : des URL propres (de plus en plus en tout cas), des formulaires, des pages, des rubriques ou des catégories, et ils utilisent quasiment tous une base de données. Avant l’arrivée des frameworks, de nombreux développeurs s’amusaient à faire du copier-coller, ça leur semblait inutile de faire quelque chose qu’ils avaient déjà fait par le passé. En recopiant, ils apportaient souvent des améliorations à leur code, et ça rendait leurs programmes de plus en plus puissants, et de mieux en mieux sécurisés. Un framework, c’est une collection de ces petits bouts de codes. Ne pensez donc pas qu’un développeur gagne plus de temps qu’avant, ce n’est pas forcément la vérité ;-) .

Pourquoi c’est bien d’utiliser un framework PHP ?

Utiliser un framework permet de bénéficier de l’expérience des autres développeurs, mais aussi d’assurer que notre application est mieux structurée, mieux sécurisée, grâce à des composants testés, approuvés et utilisés par beaucoup.

Bien sûr, ce serait mentir de dire qu’un framework ne fait pas gagner du temps au développeur, mais c’est mentir aussi de dire qu’un framework fait tout le travail.

Le gros avantage d’un framework, c’est la réutilisabilité. Il peut servir pour plusieurs projets :) De plus, il contient des composants tout prêts à être utilisés, ce qui évite de faire un site web en partant de zéro. Le développeur peut donc se concentrer uniquement sur les besoins spécifiques du client. Il n’a donc plus à se soucier de la sécurisation des formulaires, du traitement des images… et d’autres fonctionnalités qui reviennent dans quasiment tous les projets.

Un framework n’impose pas autant de limites qu’un CMS, en partie parce que ce n’est pas du tout la même chose. Cette « bibliothèque de composants » permet de produire des sites sur mesure, mais on peut également s’en servir pour faire des CMS. C’est le cas par exemple du CMS Magento, qui est basé sur Zend Framework. Un framework est donc assez souple et laisse de nombreuses libertés au développeur. En effet, libre à lui d’utiliser ou non certains composants du framework :-) .

Autre avantage, c’est l’instauration de bonnes pratiques de codage. Zend Framework par exemple, impose aux développeurs de respecter une convention particulière, fort inspirée de celle de PEAR. Cette convention est une collection de petites règles à respecter. Par exemple, on donnera des indications précises pour nommer les variables, les fonctions et les classes. Le respect de ces règles permet aux développeurs de produire un code propre et compréhensible.

Ceci dit, un framework requiert une certaine maitrise du langage (ici, le PHP). En effet, si vous ne savez pas faire de programmation orientée objet, il vous sera difficile d’utiliser un framework récent. Aussi, en savoir plus sur la méthode MVC (Modèle, Vue, Contrôleur) est plus que conseillé. En bref, les frameworks sont destinés à des développeurs confirmés.

Enfin, dernier avantage et pas des moindres : si toute une équipe utilise le même framework, alors il est plus simple de reprendre le travail d’un autre. En effet, parmi les « pertes de temps inutiles », celle d’essayer de comprendre le code en spaghetti du collègue, est en bonne position. Le framework permettra alors au développeur de se concentrer sur le plus important.

Et pourquoi c’est mal ? Ou plutôt… pourquoi ce n’est pas toujours le bon choix ?

Déjà, l’utilisation d’un framework n’est pas forcément un gage de qualité. On peut très bien développer comme on peut très mal développer un site internet en utilisant un framework. Comme je l’ai dis plus haut, c’est ni plus ni moins qu’un outil de travail. On peut vous mettre un super marteau entre les mains, rien ne garanti que vous ne ferez pas un trou dans le mur en voulant planter votre clou. Dans le développement web, c’est la même chose, vous pouvez imposer à un développeur l’utilisation d’un framework, ça ne voudra pas dire pour autant qu’il en fera bon usage.

Bien sûr, c’est un peu une perte de temps de réinventer la roue. Des tas de développeurs se sont cassés la tête à réunir les éléments répétitifs, pourquoi s’embêter à tout refaire ? On pourrait même aller plus loin et dire que parti comme ça, autant faire du binaire ! (des suites de 1 et de 0).

En fait, certains pensent qu’utiliser un framework, c’est choisir la facilité. Ils appuient leurs arguments sur le fait que ces outils de développement mettent un frein certain à l’apprentissage, à la créativité et à l’innovation. Et vous savez quoi ? Ils ont raison !

Tout d’abord, en ce qui concerne l’apprentissage. Un débutant qui adopte trop vite un framework va manquer de connaissances pratiques. D’ailleurs, certains professeurs invitent les étudiants à essayer de refaire des fonctions natives de PHP. L’intérêt n’est pas de gagner du temps mais bien d’apprendre. Si on incite ceux qui débutent à se former à un framework, ils risquent d’en devenir dépendants, incapables de faire une application web sans y avoir recours. Je le dis et je le répéterai toujours : la théorie pour la connaissance, la pratique pour le savoir-faire. Le pire, c’est qu’il y a des intervenants professionnels qui disent « Ne développez pas ! Utilisez les CMS, apprenez les frameworks ! ». C’est n’importe quoi ! D’une part, utiliser un framework demande obligatoirement de développer, contrairement à l’utilisation d’un CMS. D’autre part, les CMS ne répondent pas à tous les besoins. C’est un discours de commercial où le but est de faire vite et bien. Alors oui, dans le milieu professionnel, il vaut mieux utiliser les ressources dont on dispose au maximum, mais ce n’est pas un conseil à donner à quelqu’un qui apprend, ou qui débute.

Enin, je termine avec la créativité et l’innovation. Utiliser l’existant n’a jamais rien donné de nouveau. Prenez l’exemple d’une simple chaise. Quand on l’a inventé, elle avait peut-être une place assise et 4 pieds (notez que j’ignore complètement l’histoire de la chaise, c’est juste pour la métaphore ;-) ). Avec l’idée d’un framework, on aurait ajouté un dossier, des couleurs, on aurait surement changé la matière, ajouté du tissus. Et on aurait certainement fait de jolies chaises. Mais imaginez qu’on se serait toujours contenter d’adopter ce même concept… Les chaises roulantes sur un pied n’existeraient pas.

Conclusion : Le choix dépend du projet…. et de vous :) !

Au final, on en revient à notre fameuse question, est-ce toujours un bon choix d’utiliser un framework PHP ? La réponse n’est pas « non », mais ce n’est pas « oui » pour autant. C’est d’ailleurs ce qui fait que tant de développeurs en font débat sur la toile. Il n’y a pas de réponse directe à cette question, puisque tout dépend de votre projet… et de vous surtout !

Dans un cadre commercial, il faut tenir compte qu’il y a un client. Vous avez donc tout intérêt à utiliser un framework si vous en maitrisez un. Cela vous aidera à respecter les délais, mais plus important encore, à faire une application optimisée. L’utilisation du framework facilitera le travail en équipe, et vous bénéficierez des dernières avancées en matière de sécurité informatique, et d’optimisation de site web. Parce que oui, un framework connait des mises à jour :) .

Dans le cadre d’un apprentissage, c’est déconseillé d’utiliser un framework ! Je l’ai dis alors je ne me répéterais pas sur le pourquoi du comment. Mais si vous débutez, il est important de passer les étapes dans le bon ordre. Le framework est certainement la dernière étape de votre apprentissage. Vous avez le temps d’apprendre, ce serait idiot de ne pas en profiter ;-) .

Dans un cadre personnel, la décision ne dépend que de vous :) . On a toujours du temps pour un projet personnel. Et l’avantage majeur, c’est qu’on a aucune contrainte. Ce qui nous incite à le faire, c’est parfois l’envie d’apprendre, d’innover, ou simplement l’envie de maitriser son programme à 100 %. Vouloir réinventer la roue n’est pas un mal, c’est parfois un besoin. Celui de comprendre comment ça marche en essayant de le faire soit-même. N’ayez pas honte d’avoir envie de tout refaire à votre idée. Dites-vous que même si votre programme ne révolutionne pas le web, il aura eu le mérite de vous avoir appris pas mal de choses :) .

Chaque cas est différent, personnellement, je pense qu’un framework est un allié pour un développeur, alors je ne refuse jamais son aide, mais je n’ai pas forcément toujours besoin de lui ;-)

 

Un commentaire

  1. Carlos a écrit :

    Merci beaucoup pour tes commentaires, cela m’a permit d’éclairé mes idées sur le sujet.


    Répondre ↓
  2. leclerc web a écrit :

    Article intéressant, je suis d’accord, beaucoup d’écoles de développement en 5 mois utilisent des frameworks sans même enseigner les bases, le langage natif… je trouve ça inutile et surtout, ça donne des incompétents en puissance .


    Répondre ↓
Réagir à cet article



Vous pouvez utilisez les balises HTML suivantes : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>