Ludovic Frank - Développeur indépendant

En tant que développeur, Symfony est mon framework de prédilection

ionicons-v5-k Ludovic Frank 2 mai 2022
Logo vague
2887 lectures Niveau :

Bonjour bonjour 🙂,
On se retrouve comme chaque semaine pour un petit article, cette semaine je vais rédiger un article que j’ai en tête depuis bien longtemps.
On va parler de Symfony et pourquoi, c’est mon framework de prédilection en tant que développeur web.
Vous êtes prêt ? C’est parti ! 😁

Ma découverte de Symfony

En fait, dans ma vie de développeur, ma première rencontre avec Symfony s’est très mal passée … Ce n'était pas sa faute ni la mienne.

La première fois que je l’ai rencontré, j’étais un étudiant, déjà bien geek, je codais en PHP, Delphi… Mon OS était Debian, bref vous voyez le tableau.
Du coup en cours, on nous montre Symfony et nous explique à quel point c’est révolutionnaire, le "MVC" tout ça, tout ça, oui pourquoi pas…

Le problème ? Le seul projet que nous avons réalisé avec Symfo était un “Hello World”. 
Du coup vous imaginez bien ma réaction à l’époque : “ Pourquoi charger tout ce m****”, alors qu’un simple fichier « .php » avec “echo ‘hello world’;” et voilà fini …

Ce n’était pas le bon usage, pour comprendre son utilité, il aurait fallu quelque chose de plus complexe à se mettre sous la dent, rien que par exemple, a l’époque, créer une mini-app avec la gestion des utilisateurs et là, ça aurait été clair que c’était “génial”.

Quelques mois plus tard, pour un projet perso, j’ai retenté l’aventure, le projet étant bien plus complexe, je me suis dit “Ah oui… En effet 😮…” à l'époque dans l’application il y avait des Bundles inutiles mais c’e n’était pas grave, le temps qu’il me faisait gagné, c’était ça que je voyais moi.

Depuis je suis passé sur plein d’autres Tech, en fonction des besoins des projets et surtout, car il faut souvent faire avec l’existant… mais j’y reviens toujours.

Un framework Open Source

Évidemment, je ne peux pas faire un article sur Symfony sans mentionner le fait qu’il soit Open Source, il est donc possible d’aller voir comment il fonctionne, proposer des modifications… etc.
Le problème avec l’Open Source est de trouver un modèle économique viable, une des méthodes permettant à Symfony de vivre est SymfonyCast, évidemment j’y ai mon petit abonnement 😁.

Symfony, le framework pour une personne

Pour être franc avec vous, j’ai repris cette phrase de DHH, mais je l’utilise aussi pour Symfo.

L’idée est très simple en fait, avec Symfony, vous pouvez assez facilement parvenir à vos fins sans avoir une équipe de 10 développeurs, contrairement à d'autres technologies, qui se veulent très difficiles d’accès, de plus ces développeurs doivent être très spécialisés. 
Par exemple, Redux demande beaucoup de compréhension avant d’être utilisé proprement, bien sûr, Symfony et Redux ne sont pas là pour résoudre le même problème, mais quand je pense à une technologie complexe, je pense tout de suite à Redux, c’est comme ça.

Symfony n’est pas complexe à mon sens. On peut facilement les mettre en œuvre des choses avant de tout savoir de Symfony, vous ne connaissez pas le SQL ? Eh bien, pas grave… Vos pages complexes feront 300 requêtes, mais ça marchera et quand vous serez en mesure de créer vos propres requêtes DQL (surcouche doctrine à SQL), vous pourrez optimiser ça (s’il y a une réelle nécessité).

L’idée ici, c’est tout simplement que vous n’avez pas à maîtriser tous les aspects du framework et à comprendre comment tout fonctionne pour bosser, en fonction de votre besoin vous pourrez aller fouiller et comprendre, néanmoins je profite de cet article pour vous donner une info qui selon moi est crucial, prenez le temps de vous intéresser au système d'événement de Symfony, “EventSubscriber” et “EventListener”, perso je suis plus fan des “Subscriber’, je vous laisse parcourir la doc et comprendre pourquoi 😁.

La compression de concepts

Encore une fois, ça me vient de DHH et de sa conférence sur rails de 2018, l’idée de la “Conceptual compression” est qu’il faut simplifier les choses avec le temps.

Prenons un exemple très parlant :
Dans les années 2000, dans les entreprises, il y avait des personnes qui avaient pour job de protéger et maintenir l'intégrité des bases de données.
Aujourd’hui, ce métier existe de moins en moins, car les choses ont évolué.

Déjà nous tournons plus sur un SSD que sur un disque à plateau, ce qui est quand même bien plus fiable, on ne va pas se mentir, ensuite les systèmes de gestion de base de données ont bien évolué également et sont plus fiables que jamais. 
Enfin, aujourd’hui, les entreprises délèguent de plus en plus cette partie-là à des fournisseurs de service dans le “cloud”, comme “AWS”, “Google Cloud” ou encore “Microsoft Azure”.

En fait, la compression de concept, c’est ça.
Pouvoir en faire plus, avec moins, il faut comprendre que le cerveau humain a ses limites, on ne peut pas être expert dans toutes les technologies hyper complexes, en étant spécialiste dans ce genre de technologie, la seul issue à terme et très simple : faire carrière dans de très grandes entreprises, car seules elles ont les moyens de payer ces spécialistes. 

Personnellement, cela ne m'intéresse absolument pas, je préfère maîtriser un bon Symfony qui me permet de faire des tas de choses plutôt qu’être hypra spécialisée dans React / Redux. Après, chacun voit midi à sa porte 😛.

Se concentrer sur ce qui compte réellement

Après le paragraphe précédent, je pense qu’il est de bon ton de prendre des exemples de ce que je raconte, personne ne s'est endormi, ça va ? 🤣.

Un CMS “SEO Friendly”

Allez, maintenant je vous raconte l’histoire du site sur lequel vous êtes, et le CMS qui le fait tourner, non, ce n’est pas Wordpress.

Lorsque j’ai décidé de me lancer complètement dans le freelancing et l’entrepreneuriat la première chose sur laquelle j’ai travaillé, c’est ce site.

Je voulais avoir mon CMS, très léger; qui me permet de me concentrer sur l’essentiel : le contenu et le SEO.
Voilà ce que j’avais en tête :

  • Doit bien se référencer sur les moteurs de recherche
  • Doit être ergonomique
  • Doit charger très rapidement

Le troisième était primordial, mais pouvait attendre, en fait il est primordial, car vous, mes lecteurs, avez la gentillesse de me donner de votre temps. En lisant mes bêtises chaque semaine, du coup, il est tout à fait hors de question de vous faire perdre votre temps avec des pages qui mettent 5 secondes à charger… Vous avez d’autres choses bien plus intéressantes à faire 😁. Mais cette feature pouvait attendre, car à l'époque … PERSONNE ne lisait mes bêtises.

La toute première version de ce site est sortie de terre en 3 - 4 jours, j’ai utilisé Symfony et Bootstrap pour le thème (que j’ai réduit depuis).

C’était loin d’être parfait, mais voilà, en 3 jours j’avais un site modulable, déjà en ligne, ce qui me permettait de commencer tranquillement le travail de SEO, car le SEO c’est très long, surtout avec un domaine fraîchement acheté.

Ensuite en parallèle de mes projets clients, je déployais des petits patchs, pour améliorer le SEO ainsi que l'expérience utilisateur, mais à l’époque, je n’avais quasiment personne qui passait me voir donc, ça pouvait tranquillement attendre.

Mes bases pour un SEO solide étaient là, mais j’avais encore un score naze sur PageSpeed, ce n’était pas grave, car je savais comment l’améliorer, et que, quand j’aurais le temps, je le ferais. 

Un jour… le temps était venu.  Ce jour, c’est quand plus de 90% de mon trafic qui venait de Google Search et autre moteur de recherche, vous commenciez à être beaucoup à me lire.

Du coup, j’ai pris deux semaines, et j’ai tout modifié… de sorte à exploser les temps de chargements (par exemple, en chargeant cet article, le serveur répond à la première requête en moins de 40 ms).
Je me suis concentré uniquement sur ce dont j’avais besoin pour avoir de bonnes perfs et être bien « SEO Friendly » (sachant que pour ça, la technique ne suffit pas).

Bref, aujourd’hui j’ai mon CMS et je l’aime bien, il est rapide et se référence très bien sur les moteurs de recherche (essayez par vous-même 😁).

Pour résumer, ce site tourne sur : 

  • GNU/Linux : Ah, parce qu’il y a d’autres OS ? Je ne suis pas au courant 🤣
  • Symfony : Le framework derrière le CMS, forcément, il y a donc du PHP. 
  • NGINX : Mon Web Serveur de cœur depuis 2013
  • Varnish : Une autre tech de fou du monde Unix / Linux tient … 😍

Symfony + Sylius = Une boutique e-commerce sympa

Après avoir parlé du CMS basé sur Symfo, on va parler d’un autre projet que j’ai réalisé avec Symfony et son copain Sylius

Enfin un de ceux auxquels je peux librement parler (NDA tout ça, tout ça…).

Mes partenaires voulaient une boutique en ligne, mais quelque chose de sympa. Et surtout, ils avaient des besoins bien particuliers, on parle d’une entreprise qui n’est pas du tout dans la Tech, donc tout doit fonctionner et rester simple, voici les feature que j’ai imaginés : 

  • Un bon SEO (et oui, encore !)
  • Expérience client normalement hors du commun pour une PME
  • Automatisation de l’envoi de commande aux personnes qui les prépare
  • Automatisation de la création des étiquettes de livraison (pour que les personnes qui préparent les commandes n’aient qu’à les coller)
  • Rapport comptable chaque début de mois (on sait quelle TVA collectée, tout ça, tout ça)

Comme vous l’avez compris, encore une fois je me suis plus concentré sur ce qu’il fallait que ce soit plutôt que “comment allais-je le faire”, dans le monde de Symfony il y a un framework e-commerce nommé Sylius. 

J’y ai donc jeté un œil… Il suit les principes de Symfony, il est propre … ALLEZ HOP, viens par ici toi 😁.

Il m’a fallu une petite semaine pour me familiariser avec Sylius, en fait, c’est Symfony avec une surcouche, par exemple au niveau du templating, ils ont leurs propres systèmes de blocs qui utilisent le système d'évent de Symfony, c’est malin !

Alors Sylius, n’est pas un CMS, c’est un framework, il faut comprendre qu’il n’est pas clef en main. Il faut savoir coder pour l’adapter et l’utiliser. 
Par défaut il y a le minimum vital pour créer un e-commerce (et c’est très bien comme ça 😍).

Perso je l’ai repris, j’ai importé mes modules SEO Friendly (vous savez d'où du coup maintenant).

Ensuite, j’ai commencé à me concentrer sur les choses qui avaient vraiment de la valeur (le problème de l’e-commerce est un problème résolu depuis longtemps !).

Passé du temps sur l'expérience utilisateur, nous, dans la Tech, nous avons l’habitude de toutes ces interfaces… et comprenons comment les utiliser, or sur cette plateforme e-commerce là il y a des gens qui n’ont pas l’habitude d’internet… 

Je peux même vous donner un exemple :
Quand vous sélectionnez le « Click & Collect » et que sur l’écran d’après le site affiche une adresse de facturation, certaines personnes prennent peur et pensent que le « Click & Collect » n’a pas été validé. Alors que c’est bien afficher “adresse de facturation”.

C’est ce genre de petit détail, qui vous RUINE une expérience utilisateur.
Et c’est sur ce genre de choses que je devais me focus. Pas sur des problèmes techniques hyper complexes.

Par la suite, j'ai codé les modules pour l’automatisation de tous les processus dont je parle plus haut.

Peut après la sortie de la boutique, on s’est dit “tient, si on acceptait les crypto”, bon bah … c’est parti un petit module pour intégrer « UTRUST » et on est bon … (codé en une après-midi).

Encore une fois ici j’ai pris plaisir, car il m'a permis de bosser sur ce qui compte réellement, l’app finale. Est-ce simple à utiliser ? Est-ce que ça donne envie ? Est-ce que ça met en confiance ?

Par la suite, bosser les performances (de ce côté là j’aurais des modifications encore à faire).

Parlons de PHP

C’est ici que les plus puristes d’entre vous vont m’attendre au tournant.
C’est vrai que Symfony est un framework PHP, un langage de programmation qui a la base est un gros bricolage … mais, en informatique, qu’est-ce qui n’est pas à la base un gros bricolage ? JavaScript ? C’est pareil, voire pire.
Je suis d’accord, il y a encore des trucs super chelous dans PHP, par exemple le fait de mettre “<?php” au début de chaque fichier de code, ou encore que pour l'incrémentation on utilise un “+” et pour la concaténation un “.”.

Et le pire de tous, le “$” pour les variables 🤣.
Mais, depuis quelques années, le travail réalisé sur ce langage est simplement stupéfiant…

En fait j’ai commencé à me réintéresse réellement a PHP quand le cache Opcode a été mis en place, les perfs sont devenues folle...

À chaque nouvelle mise à jour, des trucs nazes sont supprimés.
Là dernière claque, PHP 8.0 et les attributs (non, parce que… du code dans les commentaires, on vous voit hein).

PHP 4 était une catastrophe, mais le langage ne fait que s’améliorer depuis, et aujourd’hui ce n’est vraiment pas désagréable de bosser avec et je n’ai plus grand-chose à lui reprocher.

Ah bah si, forcément … pour rester rétrocompatible, il y a encore des trucs chelous, mais, on ne peut pas tout avoir.

Conclusion

Et voilà, mon petit article touche à sa fin.

En fait, vous l’aurez compris, ce que j’aime avec Symfony, c’est qu’il me permet de me concentrer sur ce qui est réellement important quand je fais du développement.

Sur ces bonnes paroles, je vous dis à la semaine prochaine 🙂.