Ingénieur Full Stack : mythe ou réalité aujourd'hui ?
Peut-on vraiment avoir un haut niveau d'expertise du back-end au front-end ?

Le , par Michael Guilloux, Chroniqueur Actualités
Qu'est-ce qu'un développeur Full Stack ?

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


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de Neckara Neckara - Expert éminent sénior https://www.developpez.com
le 03/07/2018 à 9:20
En gros une personne qui ne fait que A, sera toujours meilleure pour faire A qu'une personne qui fait A, B, C, et D.

Donc demander à ce qu'un "ingénieur full stack" soit aussi performant qu'un ingénieur A pour A, aussi performant qu'un ingénieur B pour B, etc., c'est juste débile. C'est comme demander un ingénieur de 25 ans avec 30 ans d'expérience en JavaScript.

Après, faut-il vraiment être aussi performant en tout, pour se prétendre "full stack" ? Être capable de maîtriser toute la chaîne peut être un plus, si, sur des projets donnés, on n'a pas suffisamment de ressources pour y mettre plusieurs personnes. Personnellement, je suis seul sur un développement, je suis bien obligé d'être "full stack", et pire que cela, je ne peux même pas me consacrer au développement à plein temps.

Après, faut-il vraiment maîtriser le dernier framework à la mode, en changeant de framework chaque semaine ? Bonjour la maintenance derrière .
Si derrière HTML5/CSS3/JS/JQuery/Node/Webpack/NPM/PHP7/PDO/SQL suffisent, pourquoi s'enquiquiner ? N'est-ce pas suffisant pour se prétendre "full stack" ?
Avatar de GLDavid GLDavid - Membre expert https://www.developpez.com
le 03/07/2018 à 9:30
Bonjour

Les développeurs 'full stack' existent: ce sont ceux qui se retrouvent dans des 'embryons' d'équipe, bien souvent pour initier un projet ou mieux une entreprise. Comme dirait Richard Dreyfus dans Jaws: "Je suis mousse, matelot, lieutenant et capitaine sur mon bateau". Bien sûr, nul n'est parfait dans les divers domains et c'est là que nlous rentrons dans l'élaboration d'une équipe.
Après, des entreprises demandent des développeurs full-stack pour rejoindre des equips existantes: c'est là que ça blesse ! Imagines une équipe de football (coupe du monde oblige) où tu n'as que des attaquants, c'est le meilleur moyen pour que tout le monde se marche sur les pieds ! Tout le monde voudra tout faire et trouvera que ce que fait le collègue est hérétique à ses yeux ! Croyez moi, j'en sors d'une telle équipe.
Si je suis chef d'équipe, je recherché un profil et une ou des competences qui me manqué. Demander que l'on soit parfait partout est 1) utopique; 2) idiot comme chercher un mouton à 5 pattes.
Je me dis que les entreprises qui ne demandent que de tels profils ne cherche qu'à syphonner ou à alimenter ce genre de buzz-word et/ou recrutent de parfaits usurpateurs.

@++
Avatar de Beowulf59 Beowulf59 - Membre actif https://www.developpez.com
le 03/07/2018 à 9:47
De mon point de vue, le terme FullStack est sujet à interprétation...
Je travaille en back sur du .Net CORE pour faire des APIs, et en front avec AngularJS ou React suivant les projets sur lesquels je travaille en entreprise. Ayant une connaissance en ALM, sachant commencer un projet à partir d'un repo local Git pour ensuite faire de l'intégration continue jusqu'à un serveur de production en agilité, je m'estime comme un profil FullStack, mais je ne m'estime pas expert car je ne me consacre pas suffisament aux différentes briques :

  • Un profil Front End saura toujours mieux optimiser son code JavaScript que moi, ne serait-ce que par une connaissance plus poussée des frameworks/packages npm à la mode
  • Un profil Back End aura peut être plus d'affinité avec certains concepts (les micro services, les bus, l'architecture par domaine par exemple, etc)
  • Même si je manipule des bases de données, un DBA sera toujours plus compétent que moi
  • Niveau ALM, je n'ai pas une expertise très poussée par manque de temps : d'autres personnes se focalisant dessus peuvent faire des merveilles (j'ai assisté à une AWSome day, et ça faisait rêver)


Je ne suis pas un cas isolé, la plupart des ingénieurs que je connais sont dans la même situation.
Je pense que les profils Full Stack existent mais qu'il faut être conscient qu'ils ont une expertise moins élevée, ou alors que ce sont des perles rares...
Avatar de Bousk Bousk - Rédacteur/Modérateur https://www.developpez.com
le 03/07/2018 à 10:28
Je pense que oui des ingénieurs fullstack existent, mais ce ne sont pas les juniors qui l'écrivent sur leur CV qui le sont.
Avec l'expérience, en pratiquant un peu de tout, tu finis forcément par avoir des compétences partout, voire une maîtrise correcte et suffisante de l'ensemble des éléments impliqués (langages, OS, ..).
Peut-être que tu ne seras jamais un guru ultime de la techno X, mais tu auras une maîtrise de X, Y et Z te permettant d'être (très) bon dans ton travail - et c'est déjà plus que certains ne le seront jamais.
Avatar de micka132 micka132 - Membre expert https://www.developpez.com
le 03/07/2018 à 10:47
Citation Envoyé par Bousk Voir le message
Avec l'expérience, en pratiquant un peu de tout, tu finis forcément par avoir des compétences partout, voire une maîtrise correcte et suffisante de l'ensemble des éléments impliqués (langages, OS, ..).
Sauf que ça évolue tellement vite, surtout en front, que tes compétences d'il y a 5 ans ont de grandes chances de ne pas t’être utile (même si toute experience est forcément utile!).

Pour le reste devops, fullstack et tout les mots à la mode sont le quotidien de quasi tout développeur dans des petites structures. Ce sont les grosses boites qui se sont amusés à segmenter les roles. L'agilité c'est la meme chose, dans beaucoup de petite structure il n'y a même jamais eu de waterfall...
Avatar de CaptainDangeax CaptainDangeax - Membre confirmé https://www.developpez.com
le 03/07/2018 à 10:52
On se demande ce qui est enseigné dans les cursus DRH. C'est marrant, on ne demande jamais à un DRH d'être en même temps avocat et comptable. Et lui, quand il recrute, il veut la personne unique qui va tout faire, et bien...
J'ai connu dans une entreprise où j'ai travaillé, le nouveau DG a cherché à passer de 2 postes à 1 seul avec ma collègue de bureau. Elle s'occupait de la facturation et du bon fonctionnement du logiciel ERP sur l'AS400. Je m'occupais du réseau, du parc informatique, des interconnexions entre sites... quand j'ai été embauché, il n'y avait même pas de réseau local, preuve que la micro-informatique ce n'était pas du ressort de ma collègue. Et j'aurais été bien incapable de m'occuper de la facturation sur l'AS400, avec toutes les conséquences fâcheuses en terme de chiffre d'affaire. Mais pour le DG, nous étions tous les 2 informaticiens, donc interchangeables... Il lui a fallu du temps pour l'admettre. J'ai fini par partir, la gestion de la micro a été externalisée, et ça a été beaucoup plus coûteux pour eux à terme, quand plus personne ne s'occupe de configurer les boîtes email, quand plus personne de fait les sauvegardes du serveur de fichiers, quand plus personne ne s'occupe de mettre à jour les catalogues Bosch, Valeo, Bendix, Lucas, Hella, rust'Oleum sur les postes des commerciaux, quand les nouveaux ordinateurs sont des fujitsu P4 à chipset Sis qui crament au bout de 3 ans... Ces coûts sont en temps perdu ou en affaires perdues, c'est saupoudré, masqué, contrairement au salaire d'un admin système-réseau. Tant pis pour eux.
Avatar de Bousk Bousk - Rédacteur/Modérateur https://www.developpez.com
le 03/07/2018 à 10:58
Citation Envoyé par micka132 Voir le message
Sauf que ça évolue tellement vite, surtout en front, que tes compétences d'il y a 5 ans ont de grandes chances de ne pas t’être utile (même si toute experience est forcément utile!).
Si tu ne fais que du backend pendant 5 ans, comment pouvoir encore se prétendre full stack ? Tu es maintenant un développeur backend.
Avatar de Gulien Gulien - Membre régulier https://www.developpez.com
le 03/07/2018 à 11:20
Il ne faut quand même pas exagérer la difficulté à apprendre un framework (front ou back) ...
A ce moment là qu'est ce qu'on peut dire d'un mec qui sait à la fois programmer en assembleur, et connaît SQL...
(Compétences prises au hasard, vous pouvez créer un couple de votre choix) ...

Surtout si on se focalise sur 1 Framework & langage en particulier pour chaque type, il n'y a là rien d'impossible.
Avatar de sergio_is_back sergio_is_back - Membre expérimenté https://www.developpez.com
le 03/07/2018 à 12:21
Citation Envoyé par Michael Guilloux Voir le message
Ingénieur Full Stack : mythe ou réalité aujourd'hui ?
Peut-on vraiment avoir un haut niveau d'expertise du back-end au front-end ?

Qu'est-ce qu'un développeur Full Stack ?

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.
Voici une définition bien étriquée du "Full stack" :
Déjà au niveau du "backend" on ne se limite pas à Java, Php, Ruby, etc... on aussi du .NET, du C++, etc... etc...
Y'a pas non plus que des webservices pour échanger des infos...
Le plus souvent sur un smartphone ? Les PC n'existent plus ?
"concevoir, manipuler et interroger des bases de données" ? A mon sens tout développeur aujourd'hui doit être capable à tout le moins de manipuler et d'interroger des bases de données... c'est pas l’apanage du "Full stack" et
la conception doit être partagée avec l'équipe (quand équipe il y a)

Le "Full stack" c'est le chef d'équipe, c'est lui qui connait les tenants et les aboutissants du projet et la façon dont l'ensemble est structuré, bref qui trace la route à suivre... Après on mélange beaucoup la connaissance "fine" d'un framework avec les aptitudes à la programmation. Si vous savez écrire un algorithme dans un langage X, c'est juste un problème de syntaxe pour le traduire dans le langage Y, tout développeur doit savoir "lire" du code informatique même s'il n'est écrit pas dans un langage qu'il pratique fréquemment... Aujourd'hui on se concentre souvent sur un, deux langage à la mode, avec 1 ou deux frameworks à la mode aussi sans prendre la distance nécessaire par rapport à un projet dans son ensemble. Le "Full stack" c'est celui qui sait appréhender le projet dans sa globalité même si il maitrise pas à la ligne de code près, il est capable de voir ce qui va et ce qui pêche avec justesse et capable de donner la direction pour corriger même s'il n'écrit lui même les lignes de code.
Avatar de sinople sinople - Membre chevronné https://www.developpez.com
le 03/07/2018 à 12:43
Surtout si on se focalise sur 1 Framework & langage en particulier pour chaque type, il n'y a là rien d'impossible.
Exactement,

J'admet volontiers qu'il est impossible de maîtriser toutes les compétences possible et imaginable de l'informatique (ni même du domaine particulier du développement). C'est tout à fait possible de répartir ces "capacités" sous un angle vertical (une techno de front-end, de back end et une DB) au lieu de viser une maîtrise du maximum de Framework front-end possible.

D'ailleurs lorsqu'on parle de "haut niveau d'expertise", vu que ce mot figure dans l'énoncé, on se retrouve souvent positionné sur un Framework (ou techno, produit) bien spécifique et non pas sur une "couche". Pas certains qu'un expert DBA Oracle soit beaucoup plus au taquet sur un projet SQL Server qu'un full stack .Net qui n'a jamais vu un pingouin de sa vie.

Toutes les structures n'ont pas la possibilité, ni le besoin d'avoir des experts ultra certifiés à chaque niveau non plus. Doit avoir beaucoup de projet qui serait heureux de n'avoir que la navigation à la tabulation qui est bancale...
Contacter le responsable de la rubrique Accueil