Ce site est encore en chantier, merci pour votre compréhension !

PHP Vanilla vs Framework vs CMS, mon avis


Après m'être formé à Symfony et avoir cassé le mur de l'imaginaire et de la méfiance concernant les frameworks back-end (les frameworks c'est bien, mangez-en), il m'est venu l'idée de me ré-ouvrir les yeux et me refaire un avis sur Wordpress.
Sous ce titre très provocateur se cache en fait un article orienté "développeur freelance" et s'adresse à des développeurs PHP en apprentissage.

Commençons par le PHP Vanilla et son aspect bac à sable très ludique, qui permet de s'amuser avec des connaissances de surfaces et faire ce qui nous passe par la tête pour peu qu'on en ait l'envie et la motivation.
Le plus intéressant étant d'être émerveillé à chaque nouvelle découverte.
En étant plus poilu, on commence à développer des techniques et des outils qui nous permettent de développer plus vite et plus simplement avec pour objectif d'éviter la duplication de code, le pire ennemi du développeur qui se respecte.
Mais en tant que Freelance, c'est un peu plus compliqué : il faut apprendre à gérer les deadlines sans compromettre la qualité du projet. En gros, faire vite et bien. Vous connaissez la suite...
L'autre problème qui risque de se poser, c'est la réinvention de la roue...

Comme je l'ai dit plus haut, "on commence à développer des techniques et des outils qui nous permettent de développer plus vite et plus simplement" revient à décrire un framework. Pourquoi s'embêter à écrire une quantité de code pour finalement refaire ce qui a déjà été fait ?
Le développeur confirmé vous dira le plus simplement du monde : "C'est complétement con" et il n'a pas tort. Seulement, le fait de réinventer la roue est très formateur et permet de se construire de solides connaissances et de mieux comprendre comment fonctionnent les frameworks ou d'au moins en effleurer l'idée.
Tous les développeurs émérites se sont tôt ou tard créé des outils de développement. Seulement, hors du cadre de l'apprentissage ou des quelques projets de test, le fait de (je me répète) réinventer la roue devient illégitime.
Nous sortons donc du cadre du "petit projet perso" et rentrons dans le domaine du "professionnel".

C'est à cet instant que s'impose l'utilisation d'un framework.
L'avantage, c'est que la plupart des outils que vous auriez développé et dont vous auriez besoin le sont déjà mais encore mieux, ils sont optimisés. J'ajouterai que tout n'est peut-être pas nécessaire dans un framework, cela dépend du projet en question mais le jour où vous en aurez, vous aurez tout ce qu'il vous faut et au pire, la possibilité d'inclure des dépendances facilement.
Tout ça pour dire que tout ce que vous pourriez développer sera toujours soit :
- moins complet;
- moins optimisé;
- moins adaptable;
- moins documenté;
qu'un framework open-source développé par des centaines voire des milliers de développeurs avec une bonne expertise.

Autre gros point sur lequel j'insiste : il se peut qu'en tant que freelance, vous deviez coopérer avec d'autres développeurs. Or, si vous arrivez avec vos outils sans documentations, je vous mets au défie de respecter les points soulevés plus haut. Tout le monde partira dans tous les sens pour respecter la deadline et faire au plus simple sans faire gaffe à ce que le voisin à développé. D'où le fait de parler un langage commun : c'est plus simple de parler Anglais à un Anglais ... ou a défaut, d'avoir une bonne application ou un dico' de traduction.
Dans l'exemple précédent, le langage commun = framework et moyen de traduction = doc'.

Le seul point sur lequel je "cautionne" le PHP Vanilla en tant que pro en poste, c'est la production d'un site vitrine. Vous avez senti venir le "mais" ?

Sauf que concrètement, c'est plus simple d'utiliser un CMS.
Le PHP Vanilla sera très sympa pour un projet perso et un framework sera très adapté à une application (ou tout autre projet de grande envergure développé en équipe). Le CMS sera quant à lui votre meilleure arme pour livrer un projet vite et bien sans réinventer la roue. Votre taux de productivité va exploser.

Prenons un exemple : vous avez un projet qui consiste à développer un site pour une entreprise. Celle-ci désire un site web pour communiquer avec ses clients existants. Elle souhaite renforcer son lien avec ses clients, créer un engagement dans la durée avec eux. Un objectif de communication donc. Ajoutez à cela un peu de marketing pour la marque et vous obtenez un site vitrine avec un blog et peut-être un formulaire de contact.
En faisant, un mini cahier des charges, on peut en déduire qu'il va falloir :
- une ou plusieurs pages de présentation des produits,
- un éditeur pour créer des articles de blog,
- un outil d'upload d'images pour les articles,
- un formulaire de contact,
- des pages diverses pour les mentions légales, présenter l'entreprise, etc.

Je vous laisse maintenant estimer le temps de développement en PHP Vanilla en partant de zéro. On pourrait parier sur une semaine de travail si on raye totalement l'aspect Web Design.
Avec un framework, on pourrait estimer sur quelques jours en prenant son temps.
Avec un CMS ? En prenant Wordpress, vous aurez terminé la configuration en quelques minutes et la création des pages en une demi-journée. L'éditeur est quant à lui déjà inclus ainsi que l'uploader d'image. Concernant le formulaire de contact, un simple plug-in suffira.

L'exemple pourrait ajouter un e-commerce ou un forum au cahier des charges. C'est aussi possible avec des plug-ins bien que d'autres CMS soient plus adaptés. L'important étant que vous ayez compris l'idée.

D'autant plus que, comme je l'ai dit pour les frameworks, Wordpress (pour ne parler que de lui) est open-source et est donc supporté par une communauté de développeurs compétents.
Vite et bien.

A titre personnel, je suis en train de basculer AutoTimer de PHP Vanilla à Wordpress et j'en suis satisfait. J'ai aussi basculé Plumia sous Symfony 3.4 pour créer un mini-écosystème d'application et faire des expériences.

Pour résumer, je dirais qu'il n'y pas de solution universelle et que chaque solution à ses avantages et son contexte de prédilection :
- pour le fun, l'apprentissage ou pour un projet perso -> PHP Vanilla,
- pour un projet de grande envergure en équipe -> Frameworks comme Symfony, Laravel etc,
- un site vitrine, blog ou autre -> CMS comme Wordpress, Drupal etc.

Je conclurais en disant que je ne défends ni telle ou telle techno mais simplement qu'il faut savoir utiliser la bonne techno pour le bon projet.

Merci à Namasi de Modding.fr pour la correction, Artemix du Discord Grafikart pour les conseils en écriture et Sakuto du Discord "NaN Not a Name"