Un développeur Full Stack est un informaticien capable de réaliser des tâches à n'importe quel niveau technique de la pile des différentes couches d'une application. Rigoureusement, dans le monde technologique d'aujourd'hui, il devrait donc être capable :
- configurer l'infrastructure matérielle et le système d'exploitation ainsi que les dépendances entre les différents composants logiciels à utiliser ;
- concevoir, manipuler et interroger des bases de données ;
- concevoir le code de back-end et les API d'accès à ces données sous forme de webservices, en utilisant des langages dit back-end comme Java, Python, Ruby ou PHP ;
- concevoir le code front-end qui est exécuté sur la plateforme de l'utilisateur, le plus souvent un smartphone ou un navigateur Web, dans des langages tels que JavaScript et ses bibliothèques, HTML ou CSS ;
- être capable de gérer et planifier un projet avec des méthodes de développement agiles telles que Scrum ou Kanban, pouvoir interagir avec le client et ses besoins, et documenter l'ensemble des parties du projet.
Pourquoi est-il important ?
De la définition adoptée précédemment, pour le moins qu'on puisse dire, un développeur Full Stack est quelqu'un de familier avec chacune des couches d'une application informatique, même s'il a souvent une affinité ou des compétences plus étendues dans l'une d'elles.
Cette connaissance large devrait donc lui permettre de travailler sur un projet de A à Z sans avoir à recourir à d'autres développeurs - du moins, pour les petits projets. C'est donc ce genre de profils dont rêvent les RH. Après tout, il s'agit d'avoir un seul gars capable de faire le travail de deux ou trois personnes, ce qui est intéressant en termes d'économies. Ce n'est donc pas une surprise de voir de nombreuses offres d'emploi pour ce genre de profil. Il suffit de faire une petite recherche sur le Portail Emploi de Developpez.com. Le fait qu'il soit polyvalent permet en outre de faciliter les remplacements ponctuels ou durables au sein d'une équipe.
Pour un gros projet, le développeur Full Stack est également important. Un lead developer Full Stack par exemple pourrait rendre la vie plus facile aux autres développeurs sur le projet, puisqu'il sait comment les différentes couches communiquent et s'articulent.
Mais qu'en est-il dans la réalité ?
Dans la réalité, il faut reconnaitre qu'il est aujourd'hui difficile, voire impossible, de trouver des profils tels que décrits ici. Pour espérer trouver des développeurs Full Stack, avec l'allure à laquelle les technologies innovantes aujourd'hui deviennent obsolètes demain, il faut commencer par restreindre la définition de Full Stack à : back-end + front-end. Là encore, ça ne nous permettrait pas systématiquement de trouver des développeurs Full Stack à tous les coins de rue. Parce que ce qu'on voit le plus, ce sont des développeurs qui penchent le plus vers l'un ou l'autre, surtout que pour chaque couche, la pile de technologies explose constamment.
De ce fait, existe-t-il des développeurs ou ingénieurs Full Stack aujourd'hui ? Non d'après Robin Rendle, un web designer vivant à San Francisco. « Je ne crois pas à l'ingénierie Full Stack », dit-il dans un billet de blog. « De tous les ingénieurs que j'ai rencontrés au cours des années, un seul s'est approché de ce que ce titre, ingénieur Full Stack, implique : la possibilité de naviguer facilement dans le back-end et le front-end avec un haut niveau d'expertise. Pour le reste d'entre nous, il n'est tout simplement pas possible de faire les deux », a-t-il ajouté.
Partant de cette position, Robin Rendle estime que c'est à tort que les entreprises poursuivent les profils Full Stack, puisqu'il n’en existe pas. Et en le faisant, elles incitent les autres ingénieurs à négliger le développement front-end dans la quête de compétences pour pouvoir se vendre comme des développeurs Full Stack. En résumé, le point central de son billet est que les entreprises sacrifient le développement front-end pour recruter des développeurs se disant Full Stack, mais qui manqueraient en réalité d'expertise dans ce domaine.
Pour lui, le développement front-end, c'est d'abord un balisage sémantique accessible : « Écrire dans une mer de spans et de divs devrait rendre inconfortables », dit-il. Mais c'est aussi : une expérience dans l'écriture de Sass / CSS clair et concis ; et se soucier profondément, même de façon obsessionnelle, de la performance web (ce qui signifie de la connaissance à propos du chargement des polices, des images, des SVG, des animations, de l'audit des scripts de tiers, etc.). Et en fonction de la taille de l'organisation ou du projet, une connaissance approfondie des frameworks comme React ou Angular, entre autres, est nécessaire pour faire des composants abstraits qui peuvent être réutilisés en permanence par différentes équipes.
Robin Rendle
Si l'apprentissage de ces compétences est possible lorsque vous êtes ingénieur, les faire bien ou même à un niveau acceptable exige avant tout du dévouement et de la concentration, estime Robin. « Mais je vois un mauvais design partout sur le web et je pense que c'est dû au manque de ces compétences », dit-il. « C'est parce qu'il y a un ensemble de compétences en développement Web qui sont laissées complètement à l'écart et mises de côté par les gens qui prennent des décisions d'embauche dans les organisations. »
Il estime que le développement front-end est une activité à part entière qui nécessite des efforts à plein temps. Mais ce qu'il voit, c'est que beaucoup d'entreprises embauchent des ingénieurs Full Stack et des designers sans expérience de codage et qui ne comprennent pas la structure HTML de base. « Je vois constamment des interfaces extrêmement inaccessibles », par exemple avec « des formulaires qui ne vous permettent pas de naviguer efficacement avec un clavier », a-t-il ajouté. « Je vois des interfaces mobiles inutilisables et des applications web géantes qui sont lentes et mal fichues parce que personne n'a vraiment pris en compte le fonctionnement des navigateurs au niveau le plus élémentaire. » Non seulement cela, « mais je vois beaucoup d'outils et de processus qui tentent de remplacer le développement front-end et parfois ce remplacement se présente sous la forme d'outils de conception ou de prototypage », dit-il encore.
Pour Robin Rendle, le développement front-end est important aujourd'hui et il sera important dans vingt ans, il ne disparaitrait donc pas de sitôt. « Il sera toujours aussi cool et ennuyeux qu'aujourd'hui, donc tout mettre en JavaScript et changer votre description d'emploi ne changera pas cela. Cela ne fera qu'amener encore plus de confusion sur ce qu'est le développement front-end. » Il pense que les entreprises qui ignorent le développement front-end pour embaucher les développeurs Full Stack le font à leurs risques et périls. « Elles perdront des millions de dollars chaque année parce que leurs sites Web sont lents, elles seront poursuivies en justice pour avoir enfreint les lois sur l'accessibilité, et elles ne seront pas en mesure de livrer de belles interfaces de haute qualité et bien organisées parce que personne ne sera là pour les construire. »
Si une entreprise n'embauche que des ingénieurs Full Stack, elle devrait alors, selon lui, réfléchir sérieusement à la raison pour laquelle c'est le cas et devrait avoir une idée de ce qu'elle sacrifie « pour ce manque d'expertise dans ce domaine », dit-il en faisant allusion à l'ingénierie Full Stack. Pour sa part, il est convaincu que de même que la licorne est une créature légendaire, il n'existe pas d'ingénieur ou développeur Full Stack.
Source : Billet de Robin Rendle
Que pensez-vous du point de vue de Robin Rendle ?
En France, les entreprises sont-elles en train de recruter des développeurs Full Stack au détriment des développeurs front-end ?
L’avenir du développement front-end pur est-il menacé ? Pourquoi ?
Pour vous, c'est quoi un développeur Full Stack ? Une question de développeur expérimenté ? Ou le nombre d'années ne suffit-il pas pour devenir Full Stack ?
Voir aussi :
Existe-t-il encore des développeurs « Full Stack » ? Pour un senior, la pile de technologies utilisées dans des projets est devenue importante
Le développeur full stack est une chimère, selon un senior, car un projet réussi implique absolument une équipe d'experts, qu'en pensez-vous ?
A-t-on besoin d'apprendre la programmation pendant 10 ans avant d'être un développeur accompli ? Partagez votre expérience
Comment devenir un meilleur développeur ? La formation et l'expérience sont-elles suffisantes ? Vous êtes invités à partager votre avis
Y a-t-il une corrélation entre diplôme et succès en tant que développeur de logiciels ? Un acteur de la sphère donne son avis