Pourquoi il ne faut pas apprendre NestJS à des débutants
Je n'ai rien contre NestJS, mais voilà pourquoi il ne faut pas l'enseigner à des développeurs débutants.
Article publié le 28/09/2020, dernière mise à jour le 22/09/2023
Il y a un peu plus d'un an, j'ai suivi une promotion d'étudiants en développement web et après avoir pris l'un d'entre eux en stage, j'ai remarqué quelque chose :
Beaucoup avaient des difficultés à comprendre le cycle de vie d'une donnée au travers du code de leur stack. Et parfois même ils avaient du mal à différencier où s'arrêtait leur back-end et où commençait leur front-end.
Mais ce n'est qu'en me plongeant dans les technologies pour aider mon étudiant que j'ai compris d'où venaient leurs difficultés !
La stack en question était celle-ci : Typescript, Angular, NestJS, MySQL
Quel est le problème de cette stack ?
Ne me faites pas dire ce que je n'ai pas dit, je n'ai rien contre NestJS, ni Angular, mais je pense sincèrement que former des développeurs web débutants sur ces technos n'est pas une bonne idée.
NestJS (et Angular) sont des frameworks que l'on appelle "enterprise", c'est à dire des frameworks conçus avant tout pour créer de gros projets, avec une architecture complexe.
Ces outils sont pensés pour faire gagner du temps, réduire la taille de la codebase et éviter un maximum de problèmes aux développeurs expérimentés. Et voilà justement où est le problème.
En tant que développeur, on ne comprend réellement l'ampleur d'un problème que lorsqu'on y a déjà été confronté.
En ce qui concerne l'abstraction du code, il en va de même, notamment pour les développeurs débutants.
Si l'on commence à apprendre du Typescript à un développeur avant même qu'il n'ait expérimenté quelques problèmes causés par du JavaScript au typage dynamique, ce dernier n'aura pas toutes les clés pour exploiter Typescript et l'utilisera simplement par habitude.
En ce qui concerne NestJS, l'utilisation de certains décorateurs comme @Post implique tant de choses dans un contrôleur :
- Génération d'une nouvelle route
- Parsing du corps de la requête en JSON
- Le code http de réponse sera automatiquement mis à 200
- N'importe quelle valeur retournée par la fonction sera contenue dans la réponse de la requête
- Le header "Content-Type" sera calculé en selon le type de la valeur de retour
- ...
Toutes ces notions ne seront donc pas assimilées par le développeur débutant et bien qu'il puisse devenir "opérationnel" sur cette technologie, il ne comprendra jamais vraiment toutes les conséquences de ce qu'il programme.
Je sais que le but des formations est de sortir des étudiants directement employables et que dans cette optique ces derniers sont parfois formés sur des technologies directement utilisées en entreprise.
Mais de mon expérience, la compréhension profonde d'un développeur débutant prime largement sur sa capacité à produire du code fonctionnel mais dont il ne comprends pas les tenants et les aboutissants.
Mon conseil : si vous êtes formateur ou responsable de formation, formez d'abord vos étudiants sur des technologies avec moins d'abstraction.
Express est un bon compromis par rapport à NestJS, car même si beaucoup de features sont gérées par des middleware, il faut au minimum les ajouter et les paramétrer correctement, ce qui permet d'ouvrir la discussion sur ces sujets évoqués précédemment.
Pour des frameworks front, par pitié commencez par le DOM, et ensuite vous pourrez passer sur des librairies comme Vue ou React, mais quand les bases auront été comprises !
Aucun commentaire pour l'instant