Sébastien Castiel

Est-il utile d’apprendre React ?

Wed Oct 03 2018FR 6 comments

Plusieurs tweets m’ont interpelé récemment, par rapport au fait que l’écosystème JavaScript s’est dégradé, car concentré autour de plus en plus d’outils pas forcément utiles. React en prend notamment pour son grade.

Ça me rend triste quand même tout ce tooling et cette complexité pour faire des webapps JavaScript. Les sites ne sont pas mieux qu'à l'époque de Backbone mais si tu n'utilises pas moins de 5 outils et un transpileur et des types, tu n'es plus crédible ... M'enfin où va-t-on ?!

– Ph. Charrière sur Twitter

Cela me désole un peu bien que je comprenne les arguments adressés. Voici ce que j’en pense… (Je prends l’exemple de React, mais en fait ça peut s’appliquer à Angular, Vue, etc.)

Juste le nouveau framework à la mode

C’est un argument que l’on entend beaucoup: React n’est qu’un nouveau framework comme un autre, il a l’air super à première vue, mais dans deux ans tout le monde l’aura oublié et des heures de formation et d’expérience pourront être jetées à la poubelle.

Entre apprendre Elm et la programmation fonctionnelle, OU apprendre React + Webpack + npm + Babel +… + … qui seront tous obselètent un jour ou un autre, je préfère miser sur quelque chose d’utile, qui m’enrichit intellectuellement et qui me servira plus tard :-). Mon avis :-).

– Ivan Enderlin sur Twitter

Peut-être que c’est vrai, mais pour ma part mes expériences web professionnelles et personnelles ont suivi un chemin relativement classique: du PHP, puis du front-end à l’aide de jQuery, puis du AngularJS, puis du React. Est-ce que pour autant je regrette de m’être formé à PHP, jQuery et AngularJS? Heureusement non. Je n’en serais pas au même niveau aujourd’hui si je n’avais que mes deux ans d’expérience React derrière moi.

Ces derniers temps je suis beaucoup ce qui se passe autour de Reason, langage qui semble apporter des réponses élégantes à ce qu’il manque à JavaScript. Pour autant je n’abandonne pas JavaScript. J’ai découvert la programmation fonctionnelle grâce à JavaScript, et Reason est une bonne opportunité d’aller plus loin.

Alors peut-être que React (ou JavaScript) sera oublié dans deux ans, mais ce sera pour quelque chose de mieux, plus moderne, plus performant, etc., mais je ne peux pas croire que ce que l’on aura appris sur/de React sera bon à jeter.

Trop d’outils nécessaires

Pour utiliser pleinement React (mais ça vaut aussi pour Angular, VueJS…), passer par la case transpilation Babel est plutôt sympa. De même que builder son appli avec un Webpack, Parcel ou autre Create React App c’est plutôt cool aussi. Et ajouter une couche de formatage automatique avec Prettier et de lint avec ESLint, ça peut aider aussi. Encore mieux: ajouter du typage avec TypeScript ou Flow, ça peut sauver des heures de debug. Ça fait beaucoup d’outils. Et alors?

En quoi s’entourer de bons outils devrait-il être un mal? Vous pouvez décider de n’en utiliser aucun (il est possible de faire du React sans JSX), vous passeriez à côté de fonctions bien pratiques, mais c’est possible. Et certes d’autres langages font tout cela nativement, mais on peut se demander ce qui se passe si on souhaite implémenter ces fonctions autrement que dans ces langages. Au moins avec JavaScript (et donc React), vous avez le choix.

C’était mieux avant

Avec jQuery? Quand on avait une usine à gaz de fonctions utilitaires tout ça pour faire deux requêtes dans le DOM, et que les plugins poussaient partout sur le web, chaque développeur ayant ses propres conventions, faisant naître un écosystème bordélique et hétérogène?

Ou sans JavaScript? Quand le concept d’application web existait à peine, puisque chaque chargement de données nécessitaient un rechargement de la page?

Les sites étaient sans doute aussi bien voire mieux qu’aujourd’hui (moins pollués de trackers en tout genre), mais les web apps? Pas si sûr… Et autant du point de vue utilisateur que de celui du développeur.

En conclusion?

Pour moi oui il est encore utile d’apprendre React ou n’importe que framework qui vous aidera au quotidien. Si vous souhaitez vous perfectionner dans le JavaScript pur (vanilla), c’est très bien aussi, cela vous aidera. De même si vous souhaitez expérimenter d’autres langages pourvus d’autres avantages, ou permettant d’autres paradigmes. Mais penser que si une technologie est temporaire cela signifie qu’elle ne vaut pas le coup d’être apprise, ce serait je pense une erreur. Surtout, il n’y aurait plus grand chose à apprendre…

Note: on peut évidemment penser que mon avis est biaisé dans la mesure où j’écris actuellement un livre consacré à React. Je dirais plutôt que je n’aurais pas ce projet si je pensais que React était déjà démodé 😉


Comments

machinator Thu Oct 04 2018

Ton annalyse est caduque, tu es trop jeune et comme les jeunes de maintenant, tu as beaucoup trop de certitudes...le javascript a contribué à pourrir les applications WEB, le JS c'est du vaporware !

Le justicier Mon Oct 08 2018

Merci machinator pour ton commentaire constructif et plein d'arguments.

Simon Mon Oct 08 2018

De mon point vue, je trouve que ça devient vraiment la misère d'avoir un environnement de développement qui vie correctement dans le temps. C'est d'ailleurs très complexe de le faire vivre momentanément. Y'a un pas un outil qui utilise la même version de librairie ou d'interpréteur. Quelle version de node js utilisée ? la 6 ? la 8 ? la 10 ? C'est aussi la merde pour déployer ça sur des serveurs, sans parler des questions de sécurité. Quand on sort de la partie "environnement", on a la question de l'outil lui-même : faut utiliser quoi ? webpack, babel, gulp, whatever ? Ah et quid de yarn, npm only ou bower il n'y a pas si longtemps ? Y'en a tellement qu'on est pas capable de faire un choix potable et durable. D'ailleurs, c'est tellement une partouze d'outils que personne ne sait vraiment quoi sert à quoi. Les configs sont de vraies plaies et la majorité des gens font du copier/coller depuis des threads stack overflow. C'est au petit bonheur la chance pour avoir un truc qui fonctionne… Enfin, faire du `du -hs node_modules` et voir 300Mo de fichiers pour générer un fichier javascript, ça me fait mal au cul. J'ai des projets écrits il y a 10 ans que je peux encore faire tourner aujourd'hui. Quand ça sera le cas des frameworks js, je me poserai la question de choisir react ou pas.

Morgan Thu Oct 11 2018

Bonjour, j'ai un point de vue tout à fait différent. Pour moi les languages au typage dynamique tels que javascript ne sont tous simplement pas adapté au monde des webapps. Comme tu l'as si bien souligné, le front-end a beaucoup évoulué, on est très loin d'un seul développeur travaillant dans sont coin sur le front. Maintenant, il n'est pas rare d'avoir des équipes d'une dizaine de personne travaillant ensemble sur le même front. Forcément les usages évoluent, il faut s'outillé : outils de build, suivit des convention de developpement, les test, les log, le debug, les point d'arret, etc ... Enfaîte on ramène toutes les bonnes pratiques du backend sur le front. Maintenant le problème est le language en lui même, si on veux qu'une application dure une dizaine d'année, il n'y a pas de secret, il faut enrobé la webapp de teste fonctionelle et ... il faudra surtout REFACTORER. Comme on peut oublié le ctrl + clique pour acceder à une fonction en javascript, alors refactorer automatiquement une fonction ... outch !!!! C'est la qu'interviens angular, et sont typescript. ça apporte un peut plus de stabilité ... mais c'est pas encore ça.

A Thu Oct 11 2018

Je rejoins complètement Simon. J'aurais pas dit mieux... Après il ne faut pas être réfractaire aux nouveaux outils, mais je pense qu'il ne faut pas se jeter dessus tête baissée et attendre. Nos projets sont truffés d'outils/libs/frameworks qui sont morts au bout 3 à 12 mois... Mais il faut continuer à jongler avec ces cadavres...

ThomasG77 Sat Oct 13 2018

Quelques saines lectures (prenez/jetez ce que vous voulez) http://bdavidxyz.com/blog/my-beloved-low-tech-stack/ https://sonniesedge.co.uk/talks/dear-developer https://dev.to/jerodsanto/why-we-chose-turbolinks-instead-of-building-an-spa-21o0 Mon avis personnel: React (ou autre framework genre Vue, Angular) peut être nécessaire mais il y a plein de cas où c'est complètement inutile car pas besoin de SPA, le projet n'est pas assez gros sauf à devoir maintenir un budget alors que le client n'est pas dans une logique long terme mais one-shoot donc maintenance, refactoring = rêve.


Leave a comment