sudo shutdown -r now

Waw… quasiment deux ans que je n'ai rien rédigé sur ce blog… Il est temps de rémédier à ça. Avant de repartir sur des posts techniques et classique, je vais juste raconter un peu ma vie concernant ces deux années passées.

En Septembre 2016, je démarrais une nouvelle expérience chez Sport Heroes Group, chez qui j'apportais mes connaissances du framework Aurelia afin de remettre à neuf les architectures vieillissantes de leurs sites, basés sur un AngularJS orchestré par Grunt. J'ai conçu plusieurs sites qui ont pivoté très fréquemment en mode agile extreme grâce à Aurelia. Tout n'a pas été simple, il a fallu forker parfois, et la mutualisation des composants n'a pas pu être faite autrement qu'en dupliquant du code entre projets. Cependant, j'ai réussi à obtenir une base de code commune à plusieurs projets clients et un projet en SaaS, ce qui n'était pas une mince affaire compte tenu des spécificités de chaque projet, tant en terme produit qu'en terme d'hébergement.

Expérience très enrichissante, mais assez épuisante de part le nombre de projets à suivre et maintenir en même temps.

Malgré cela, Aurelia n'a pas su convaincre mon équipe avec qui je travaillais à distance à plein temps. C'est probablement ce point qui m'a empêché de suffisamment éduquer et faire adopter ce framework au reste de l'équipe qui est majoritairement resté fidèle (par la force des délais incompressibles aussi) à AngularJS. Ces mêmes délais qui ne me laissaient que peu de temps pour améliorer l'existant, m'empêchant par exemple de migrer les sites Aurelia à webpack, ce qui nous aurait très probablement permis de mutualiser très simplement des composants entre plusieurs projets.

C'est face à cet objectif non atteint que fut décidé en Décembre 2017 que toute l'équipe se mette à React. React, librairie que j'abhorrais depuis toutes ces années pour des principes relatif au respect des standards du web : syntaxe jsx non standard, pattern fonctionnels très éloignés de ce que j'avais eu l'habitude d'utiliser depuis des années : MVC, MVVM… je préférais utiliser des outils se rapprochant au plus des spécifications des web components : aurelia, évidemment, mais aussi vuejs par exemple. Et donc, j'ai été forcé de développer avec cet outil, finalement bien méconnu de ma part.

Et j'ai adoré.

Cela fait maintenant sept mois que je ne fais plus que du React, mon seul regret sera de ne pas m'y être mis bien plus tôt. Sans pour autant renier mes autres frameworks de prédilection, je reconnais sans soucis pourquoi React a réussi à prendre sa place de leader dans l'univers du développement web. Parmi les avantages que je peux retenir, voici les principaux :

  • Réutilisabilité de toutes les parties du code
  • Atomisation des composants à l'extreme
  • Simplicité à personnaliser des composants grâce aux props et aux infinies façons de les utiliser
  • JSX inclus dans Babel : il est plus facile de démarrer un projet React que n'importe quel autre framework
  • REACT NATIVE

Évidemment, tout n'est pas rose : React apporte aussi quelques désagrément qu'il faudra détecter le plus rapidement possible pour éviter de générer des tas de legacy impossibles à maintenir. En effet, l'un des arguments qui me poussaient à utiliser Aurelia plutôt que React était la séparation claire entre la logique et les templates html. Quand l'équipe est constituée de développeurs javascript, ce n'est pas un problème. Mais quand des intégrateurs partagent notre dure tâche, ils ont des réflexes tout à fait justifiables qui ne sont pas possible (et même extrêmement dangereux) en react. Ils vont taper dans le DOM, tenter de le manipuler, intégrer des plugins jquery… Mais attention ! L'intégrateur n'est pas le seul à commettre des erreurs. Le développeur expérimenté trouvera aussi des obstacles à affronter. Il sera coupable de produire des composants beaucoup trop complexes ou trop spécifiques. C'est plus un problème général, certes : le soucis de généricité du code est, à mon avis, l'une des plus grosses lacunes des développeurs. Mais la façon dont React permet de résoudre ces problématique quand on comprend son fonctionnement ne donne plus droit à l'excuse.

Vous aurez donc compris que j'ai véritablement retourné ma veste concernant React et que j'ai rejoint cette communauté avec plaisir. C'est mon blog qui n'est pas très content : j'arrive après la bataille et j'ai la sensation qu'il n'y a plus rien à dire. En effet, si j'ai pu progresser sur cette techno aussi rapidement, c'est aussi parce que je n'ai eu aucune difficulté à trouver de la doc et des tutos sur le web. Ainsi, j'ai beaucoup de mal à trouver des sujets à rédiger sur cette thématique sans passer pour un gros noob 😅 Mais j'ai quand même un sujet qui me semble très intéressant qui arrivera dans les prochains jours.
J'espère aussi pouvoir tester d'autres outils dans le prochain poste que je démarrerais dans un futur proche : vuejs, stenciljs, etc.

Bon allez, j'ai des composants à refacto !

Hadrien

Hi, I'm a french Javascript Lead Developer, Web Architect from Toulouse, France. I've worked for 12 years for many projects with YUI, AngularJS, Aurelia.io and now React and React native.

Toulouse, France https://hadrien.eu