“Je suis Fullstack JS” – “Ok mais concrètement tu fais quoi ?”
24 mars 2021
Dans le bestiaire des offres d’emploi, on vous parle aujourd’hui de la chimère qu’est la·le “FullStack JS” : mais qui se cache vraiment derrière cette appellation buzzword adaptée du poste “Développeur·se FullStack” si longtemps controversé ? C’est la question à laquelle Damien Tivelet, notre expert lead dev et expert FullStack JS s’est collé lors d’un Meetup en ligne le 17 février dernier. Retour sur les points clés de cette webconférence.
Tout d’abord, que signifie réellement “fullstack” ?
Stack est un terme anglais se traduisant par une pile, un empilement de couches. On parle donc de « pile complète » pour le terme fullstack. Mais de quoi parle-t-on au juste ? Une pile équivaut en fait à un composant d’un système informatique pris dans son intégralité. Autrement dit, de la conception du système à sa logique, ses applications, ses interfaces utilisateurs et ses outils de visualisation.
En y regardant de plus près, tout en essayant de conserver une explication relativement simple de la pile, nous pouvons identifier les couches suivantes :
- la logique système, les langages, la mise en réseau au niveau des serveurs et l’hébergement ;
- les modèles de données et la logique applicative ;
- les systèmes de bus de transport de données et les API ;
- la visualisation et l’interface utilisateur graphique (GUI) ;
- les expériences utilisateur et les fonctionnalités ;
- les impératifs logiciels et la gestion de projets.
Être “fullstack”, donc, implique de pouvoir intervenir dans tous ces domaines, toutes ces piles ; dans tous les métiers de la chaîne de conseil et de production, mais aussi y être pleinement compétent. Si nous y réfléchissons à deux fois, cette notion a finalement toujours existé sans vraiment porter de nom officiel, non ? Après tout, nous connaissions déjà tous la notion d’”homme/femme à tout faire” et avons déjà tous entendus parler de “compétences transversales” ou de “profil polyvalents” ; des termes très appréciés des recruteurs IT.
Dans les faits, soyons pragmatiques et appliquons cette notion aux métiers du développement web : beaucoup s’accorderaient à dire que cela est purement impossible de maîtriser autant de couches. Si un tel profil existait, il serait tellement rare que ça prendrait un temps infini pour le trouver et tellement plébiscité que les GAFA lui proposeraient 80K€ de prime à l’embauche tant il serait dispendieux.
Alors concrètement, qu’est-ce qu’il se passe quand on dit “fullstack” en 2021 ?
Et bien nous devons comprendre le terme comme décliné par sous-ensembles de compétences !
Un développeur qui travaille dans un environnement MeteorJS/React et maitrise les deux compétences est dit fullstack. Mais, et là est toute la subtilité, si ce même développeur change d’entreprise et en rejoint une nouvelle où l’existant web est principalement en DotNet, mais où on cherchait des profils compétents en React, le développeur ne sera plus considéré comme FullStack. Car ses compétences ne correspondent pas aux technologies utilisées par l’entreprise. Fullstack n’est donc pas un attribut qui suit le développeur mais une définition qui dépend de l’alignement de ses compétences à celles requises par son environnement de travail à un instant-T.
Comment ce terme s’applique-t-il dans l’univers JavaScript ?
JavaScript existe depuis plus de 20 ans (le langage a été créé en 10 jours en mai 1995 et est sorti en décembre 1995, mais c’est une autre histoire…) et c’est aujourd’hui le langage de programmation dominant du développement Web. À ses débuts, JavaScript était un langage uniquement dédié au client Web (le navigateur) mais la possibilité de l’utiliser directement sur un serveur web (avec l’aide de Node.js.) est vite apparue. De ce “chamboulement” est né, parmi beaucoup d’autres, le terme tant connu et marketé par l’industrie du web, nous avons nommé le FullStack JavaScript.
L’idée derrière cette notion est simple : elle “unifie” les logiciels d’une application web, à la fois côté client et côté serveur, et leur “impose” donc de devoir être écrits dans le même langage : le JavaScript.
Un·e développeur·se FullStack JS est donc une personne qui peut développer des logiciels client et serveur. Et pour cela, elle se doit d’être plus bien que “polyvalente” et maîtriser de nombreux outils, concepts et notions :
- backend (Node.js, Express.js, REST, SQL, MongoDB, Firebase, Kuzzle, Sass, Less, PaaS, FaaS, server-side rendering…) ;
- frontend web (HTML, CSS, Bootstrap, JavaScript, ES5, HTML DOM, JSON, XML, jQuery, Angular, React.js, Vue.js, Backbone.js, Ember.js, Redux, Storybook, GraphQL, Meteor.js, Grunt, Gulp, webpack, service workers, HTTP…) ;
- mais aussi cross-platform mobile (PWA, React Native, Ionic, Cordova, Native Script…) ;
- ou encore qualité (ESlint, prettier, Jest, Mocha, Chai…) ;
- ou connexes (SEO, RGAA, tracking…).
Là encore, les domaines sont très vastes et il serait utopique de se dire qu’une personne peut être complètement fullstack dans sa première définition et tous les connaître. Maîtriser correctement tous ces concepts, ces technologies, ça demande d’abord quelques années d’expérience, de séniorité mais c’est avant tout beaucoup d’entraînement ! Faire des requêtes SQL complexes, réfléchir à des solutions de fragmentation horizontale à base d’algèbre relationnelle… C’est comme un sport : il n’y a qu’avec une pratique régulière qu’on arrive à maintenir un certain niveau. Ne me dites pas que ça ne pique pas à la salle après quelques mois d’arrêts ? Et attention, ces disciplines ne peuvent s’apparenter au vélo : les automatismes ne reviennent pas aussi facilement qu’on le souhaiterait… Même combat pour l’intégration, le Flexbox, le CSS… Et je ne parle pas des évolutions et nouveautés technologiques..
Les journées ne durent que 24h et on ne peut pas maintenir un niveau d’expertise surélevé et stable sur Sass, Vue.js, React Native, Node.js, SQL, GraphQL, Kubernetes… en jonglant de compétences plusieurs fois dans la même journée. Alors qu’en est-il des FullStack JS en entreprise ? S’ils ne peuvent pas tout faire à la fois, que font-ils concrètement ?
Entre posture et imposture : le rôle de la·du développeur·se FullStack JS dans l’entreprise
En fait, au-delà du terme appliqué stricto sensus, être fullstack c’est avant tout une envie : celle d’aimer toucher à tout !
Pour ma part, j’ai commencé mes études il y a plus de 20 ans (double effet kiss cool : ça amène l’expérience… mais ça fait prendre un sacré coup de vieux) en IUT Informatique de gestion. Nous apprenions alors à développer de bons vieux logiciels compilés pour un OS avec des interfaces graphiques très figées dans les standards. Nous avions commencé avec du C puis du C++ et enfin du Java (les premiers codes sources étaient même en Assembleur pour la culture G). La “facilité” aurait pu me faire poursuivre cette voie et je ferais peut-être encore du Java à l’heure actuelle avec encore beaucoup de plaisir et d’employabilité mais je fais partie de ces profils qui s’ennuient… et qui s’ennuient vite. Je fais partie des personnes qui se demandent ce qui se cache derrière (pas au niveau atomique forcément, mais conceptuellement). Je fais partie de ces gens qui sont tout excités en début de projet par la nouveauté (que ce soit dans le domaine applicatif, les langages ou les frameworks utilisés, le type d’architecture appliqué…) mais qui terminent le projet sans passion car ils ne se sentent que dans de l’exécutif, sans forcément avoir de réflexion ou de challenge derrière.
Pour cela, le monde actuel du travail qui en demande toujours plus intellectuellement à quelqu’un me convient. Une gestion de projet agile dans laquelle je gère une User Story, voire même une Epic, que je dois mener jusqu’à son aboutissement, l’état « done » me satisfait ; et encore plus si cet état “done” correspond à “déployer en production” car cela inclut même des notions de DevOps. Nous sommes donc bien sur un état d’esprit où tout notre univers peut être remis en question d’un projet à l’autre et où on ne conserve comme fondation que notre séniorité pour bâtir à nouveau.
Le prix du parcours : l’expertise !
Aujourd’hui, la place du FullStack peut être remise en question et qualifiée « d’imposture » car elle incombe d’intervenir sur toute la chaîne de développement avec une vision 360° sans pour autant pouvoir agir directement de manière efficace sur tous les aspects atomiques. Être FullStack JS en entreprise amène à prendre des décisions impactantes comme le choix le choix d’un framework ou d’une librairie, le design d’une architecture, la mise en place de conventions et bonnes pratiques, la prise en charge d’une fonctionnalité dans son intégralité… Et tout cela nécessite des niveaux de connaissance dédiés et spécialisés. Et heureusement, nous ne sommes pas seuls pour mener à bien un projet. Pouvoir mener un projet abouti et livré dans les échéances requiert les compétences et la disponibilité de chacun. Il est important de savoir s’entourer d’experts dans leurs domaines et d’avoir un fort team spirit. Car un vrai FullStack ne saurait exister sans l’expertise de ceux qui l’entourent.
Les compétences attendues du FullStack
Je vais d’abord me pencher sur l’aspect technique du poste et comme JavaScript évolue très très vite, nous allons voir apparaître beaucoup de choses :
- Maîtrise de la POO par prototypage ;
- Maîtrise de ES6 ;
- Maîtrise du HTML DOM ;
- Maîtrise des concepts API REST ;
- Connaissance des principaux frameworks/librairies frontend JS (React, Vue.js, Angular, jQuery, Svelte.js…) ;
- Connaissance des principaux frameworks/librairies backend JS (Node.js, Express.js, Meteor.js…) ;
- Connaissance en base de données (SQL, NoSQL, GraphQL…) ;
- Connaissance en CSS et pré-processeur CSS (Less, Sass, Stylus…) ;
- Connaissance en Cloud computing (SaaS, FaaS, PaaS…) ;
- Notion de sécurité ;
- Notions de SEO ;
- Notions d’accessibilité.
Mais ce n’est pas fini. Au-delà des qualifications, le profil FullStack JS doit être, « de nature » :
- Polyvalent : pouvoir démontrer qu’on ne s’est pas enfermé dans une seule compétence (projets pro, side-projects, formations…) ;
- Rigoureux : pouvoir expliquer ce qu’une une qualité de code et une bonne organisation de projet ;
- Curieux : savoir expliquer la veille technique et montrer que l’on en a une en place ;
- Innovant : s’initier à une techno, un langage, un outil… qui ne soit pas un des standards du marché ;
- Bon relationnel : avoir le sourire qui passe au travers du masque.
De nos jours la compétence ne suffit pas, le génie encore bien moins ; il faut se vendre.
Andrée Maillet – Artiste, écrivaine, Poétesse, Romancière