Bonjour à tous,

Depuis toujours, je fais du PHP (au travail ou à côté). C'est le premier langage de programmation que j'ai appris, et je le trouve peu polyvalent pour atteindre mes objectifs personnels/professionnels. Dans le cadre de mon travail, on bosse beaucoup avec les services d'AWS (des lambdas, et bientôt CDK). PHP étant le seul langage avec lequel j'ai beaucoup travaillé, c'est donc celui que j'ai maximisé et sur lequel je suis maintenant très à l'aise.

PHP n'est qu'assez peu supporté par les services AWS, ni fait pour de toute façon.

Je pense alors me tourner vers Node.js, parce que :

- C'est du JS (j'ai pas un gros niveau mais je vais m'y remettre)
- Du coup, JS se complète toujours bien avec PHP, les truc que j'apprends en Node.js pourront toujours servir
- Node.js est bien supporté sur de nombreux services tiers, notamment chez AWS
- Et ça ne devrait pas être trop difficile de l'apprendre et de mettre en pratique

Est-ce que vous avez des retours ou des conseils à me donner là-dessus ?
Je pense que c'est un bon moove pour ma carrière, pour moi ainsi que pour la boite où je bosse (on aurait clairement besoin d'une deuxième personne qui sache faire du Node)

Vous en pensez quoi ?

Merci pour votre aide Smiley smile
Bonjour,

Puisque nous sommes le weekend et que personne n'a encore répondu (et donc que potentiellement personne ne répondra avant lundi), je m'y colle. Mais avant tout il faut savoir que cette réponse sera celle d'un amateur, pas d'un professionnel...

Un point pour vous en faveur de cette approche et qui pourra vous faire gagner beaucoup de temps : il y a déjà quelqu'un dans votre entreprise qui connaît cet écosystème, il pourra donc vous guider dans ses méandres.

Car en effet, apprendre un nouveau langage c'est entrer avant tout dans un nouvel écosystème (vous l'avez suggéré vous-même en parlant de node.js). Un écosystème avec son environnement de développement, ses configurations qui lui sont propres, ses librairies, ses framework, ses outils, etc...

Comme vous êtes un professionnel, il sera important à terme d'envisager de coder avec la surcouche TypeScript (ce que je ne fais pas), qui palie aux défauts originels de JavaScript **. Il vous faudra aussi comprendre la subtilité entre un langage orienté objet basé sur les classes, tel que PHP, et un langage orienté objet basé sur les prototypes tel que JavaScript. Je n'en suis pas encore là, je laisse donc la place à vos confrères qui s'exprimeront bien mieux que moi à ce sujet, en attendant vous pouvez lire cette meilleure réponse sélectionnée sur StackOverflow.

Pour ce qui est de node.js par lui-même, il faudra se familiariser avec son gestionnaire de packages, npm, de très loin le plus utilisé. Il existe deux autres alternatives :
- Yarn, de Facebook, un must, mais don la rétrocompatibilité vient d'être cassé récemment avec la v2 et la v3, avec un système Plug'n'Play incompris par la communauté, celle-ci ayant du mal à passer sur ces deux dernières versions majeures. La première version est désormais considérée comme obsolète mais est pourtant celle qui est utilisée majoritairement par la communauté Yarn.
- pnpm, un gestionnaire de bagages récent qui corrige un certain nombre de défauts de npm, mais à sa manière qui n'est pas celle de Yarn. Je vous laisse découvrir les tenants et les aboutissants si ça vous intéresse. Personnellement c'est celui que j'utilise désormais, après être passé de npm à yarn.

Notons qu'après l'arrivée de ces packages alternatifs, npm à corrigé quelques-uns de ses défauts.

Pour ce qui est des packages par eux-mêmes maintenant : il faut savoir que l'offre est riche mais aussi qu'il y a du grand n'importe quoi. Il y a des packages qui ne servent absolument à rien, qui pourraient avantageusement être remplacés par une fonction native de node.js, mais non : la communauté node.js s'empresse de télécharger ces packages à grand coup de milliers - voir millions - de téléchargement par mois... Un exemple parmi d'autres : rimraf. Et il n'y a qu'à voir comment de tels packages sont eux-même utilisés par d'autres paquets ! C'est démentiel...

Il y a une raison à cette ineptie : tous ces développeurs n'ont souvent pas commencés par la base qu'est node.js mais sont entrées via un framework tel que React ou Vue.js. Là est l'origine du mal.

Je conseillerais donc de se familiariser un minimum avec node.js vanilla avant d'embrayer sur une surcouche. S'entraîner à créer un petit serveur avec quelques routes par exemple. J'enchaînerais ensuite avec la connaissance d'Express.js, le framework historique de node.js. Il stagne depuis de nombreuses années mais il est de loin le framework le plus utilisé sur l'écosystème node (comme vous pouvez le voir sur le lien, j'ai utilisé NPM trends pour évaluer la popularité des packages... à connaître). Et encore, là j'ai comparé des pommes et des poires en introduisant React qui est un framework front uniquement, enlevez-le de l'équation et vous verrez l'écrasante utilisation d'Express encore à ce jour pour ce qui est des frameworks back-end.

Mais alors pourquoi les articles des blogs ne reflètent-ils donc pas cette réalité ? Cela m'amène à une autre considération : les effets de mode et de hype dans la communauté liée à cet écosystème. Je ne saurais trop vous recommander de faire attention à vos investissements sur telle ou telle solution. Attention à ne pas papillonner de droite et de gauche, attention à la "framework fatigue". Fin de la parenthèse.

Après s'être familiarisé avec node.js puis Express, vous pourrez appréhender du front, avec par exemple React, Vue.js, dernièrement Svelte, et/ou leur pendant côté back-end (Next.js, Nuxt.js...). Personnellement, en tant que codeur en dilettante, je suis resté très basique je ne suis pas allé jusque là.

Voilà pour un premier jet.

___
** Il y a bien sûr le typage, mais aussi bien d'autres étrangetés. Exemple : JavaScript a tendance à convertir les valeurs en string dans certains contextes. Vu sur le forum très récemment :
2 * 2 = 4
2 + 2 = 22 (!!!!)
Ça s'explique historiquement, mais c'est assez insupportable aujourd'hui, surtout lorsque le dev' vient d'un langage bien foutu tel que python.
Modifié par Olivier C (02 Jul 2023 - 07:33)
Administrateur
Bonjour,

On ne peut pas se tromper avec JavaScript Smiley sourire Ce langage est partout. Bon je travaille dans une agence web aussi...
Parmi les applications de JavaScript, Node.js est un écosystème, le front (API HTML 5, DOM, CSSOM, etc) en est un autre. Comme d'hab', trouve-toi un petit projet qui t'intéresse pour appliquer ce que tu apprends et ça devrait aller tout seul. Si c'est du Node.js parfait.

+1 pour TypeScript, j'y avais pas pensé (mon collègue va m'en vouloir Smiley murf ). Pas pour démarrer, 1 difficulté à la fois mais ensuite oui ! Un outil qui détecte les erreurs à ta place ou avant qu'elles arrivent, je prend !

Retour d'expérience d'au moins 2 de mes (ex-)collègues : ils ont beaucoup apprécié les vidéos de Grafikart (JS et front en tout cas, serveur je sais pas) https://grafikart.fr/tutoriels/nodejs
Si le média vidéo c'est ton truc, il semble un bon choix en français.
Merci beaucoup à vous deux pour vos conseils et avis sur le sujet. Smiley smile
Merci également pour les ressources et les infos sur ce nouvel écosystème que je commence à peine à découvrir !

Je ne doutais pas vraiment du fait que JS/Node.js soit un bon choix ou un mauvais choix Smiley lol
Je me questionnais plutôt à propos de la cohérence de ce choix par rapport à mon envie personnelle de trouver un langage plus "global" qui permette de faire d'autres choses que ce que permet PHP (qui lui est peu polyvalent).
Avec JS, je me rends compte que je vais par exemple pouvoir écrire des stacks AWS CDK et donc faire du déploiement, ce qui pourrait me permettre de m'orienter vers un profil un peu plus DevOps, un sujet qui m'intéresse énormément !
JS permet de sortir un peu du développement web "pur" et donc d'ajouter d'autres cordes à son arc, ce que ne permets pas PHP je trouve.

Je me lance et n'hésiterai pas à poster ici si besoin. Si d'autres ont des ressources d'apprentissage à partager sur le sujet (français ou anglais même), je prends Smiley lol

Bon début de semaine à tous Smiley smile
Alors moi j'aime bien JS, et comme je suis un amateur et que je ne code que sur mon temps libre j'évite de me disperser, donc je reste sur JS.

Mais je trouve tout de même que son intérêt premier est d'être disponible avant tout pour le WEB. Pour d'autres domaines j'aurais tendance à m'orienter sur d'autres langages, à commencer par Python. Enfin... tout dépend des besoins futurs à prendre en compte bien sûr.

Quoi qu'il en soit je suis d'accord avec Felipe : avec JS, lorsqu'on fait du WEB, on ne peut pas se tromper, il restera dans le top des langages WEB pendant encore un bon moment.
Modifié par Olivier C (03 Jul 2023 - 13:34)