En développement logiciel (et notamment web), on entend souvent l'expression « développeur full stack », comme dans « Je suis développeur full stack » ou « Nous recherchons un développeur full stack ». Eh bien, figurez-vous que ça n'existe pas.
L'expression « Full Stack » est en réalité un simple terme à la mode dans le monde de l'entreprise, et non une désignation technique. Les vrais développeurs ne se demandent pas entre eux : « Tu es full stack ? Je suis full stack… et toi ? » L'expression « full stack » est juste un mot que les développeurs emploient pour faire plaisir aux recruteurs, qui, généralement, n'en ont aucune idée. C'est ce que les recruteurs utilisent pour faire plaisir aux managers, mais eux-mêmes n'en comprennent généralement pas le sens. C'est ce que les managers emploient car, évidemment, personne ne veut d'une équipe de développeurs « à moitié stack » ; ce serait absurde. Avez-vous déjà vu une équipe « à moitié stack » ? C'est catastrophique.
Alors d'où vient cette phrase ?
Cette expression malheureuse a évolué à partir d'un descripteur technique qui désigne l'ensemble complet des technologies primaires qui composent une solution technique complète. Cela signifie généralement la base de données et le système d'exploitation (également appelé "back-end") et y compris l'interface utilisateur (également appelée "front-end"). Entre ces deux points se trouve le contrôle et la logique métier. Cette solution de bout en bout s'appuie sur de nombreuses technologies auxiliaires telles que la mise en réseau, le matériel, les équilibreurs de charge, les pare-feu, etc., mais généralement "la pile" se réfère uniquement à la base de données, au système d'exploitation et aux langages nécessaires pour créer un logiciel complet. solution (généralement un ou plusieurs langages back-end et un ou plusieurs front-ends). Apparemment, il semble logique que si "la pile" est l'ensemble des technologies nécessaires pour construire une solution de bout en bout, alors vous aimeriez un ingénieur qui soit un "ingénieur full stack". En d'autres termes, vous voulez un technicien qui peut compléter une solution de bout en bout. Cela semble logique. Ce n'est pas. C'est très faux (avec quelques exceptions notables expliquées ci-dessous).
Ainsi, lorsque vous demandez à un développeur : « Êtes-vous un développeur full stack ? », vous lui demandez en réalité : « Maîtrisez-vous la base de données, le système d’exploitation et au moins deux langages de programmation ? » Bien sûr, il répondra par l’affirmative. Cependant, la question elle-même est totalement dénuée de sens. Être « full stack » est la définition même d’un ingénieur/développeur logiciel. Il n’existe pas d’autres types d’ingénieurs logiciels. Aucun.
Si vous êtes un expert technique mais pas un développeur « full stack », vous n'êtes pas un ingénieur logiciel. C'est la définition même d'un ingénieur logiciel. Il existe de nombreuses autres professions hautement techniques qui ne sont pas « full stack » et qui portent des noms spécifiques. Les administrateurs de bases de données sont spécialisés dans les bases de données ; ils ne sont pas « full stack », d'où leur appellation. Les administrateurs système sont spécialisés dans les systèmes d'exploitation et les serveurs ; ils ne sont pas « full stack », d'où leur appellation. Les concepteurs web (par opposition aux développeurs web) sont spécialisés dans la conception d'interfaces utilisateur, mais pas dans les solutions web complètes, d'où leur appellation. Si vous n'êtes pas « full stack », vous n'êtes pas un ingénieur logiciel. C'est clair.
Dire que vous voulez un ingénieur « full stack », c'est comme dire que vous voulez un médecin « full medical » ou un pompier « full fire ».
On ne dit pas ces choses-là car c'est redondant. Il n'existe pas de médecins « à moitié médecins ». Il y a des professionnels de santé qui ne sont pas des médecins « complets », comme les infirmiers, les ambulanciers et les assistants médicaux. C'est pourquoi ils ont leur propre appellation ; ce ne sont pas des médecins. Dès que vous dites « docteur », vous sous-entendez que vous êtes « complet ». Être ingénieur logiciel implique de posséder un ensemble spécifique de compétences nécessaires pour exercer pleinement cette profession. Par définition, ces compétences constituent la « pile technologique complète ». Lorsque vous demandez à un développeur : « Êtes-vous complet ? », vous lui demandez en réalité : « Êtes-vous ingénieur logiciel ? » Si vous vous adressez à un développeur et que vous devez lui demander : « Êtes-vous complet ? », c'est que vous ne comprenez pas vraiment les développeurs ni la pile technologique. Vous voulez recruter d'excellents ingénieurs logiciels ? Posez les bonnes questions. La question sur la pile technologique complète n'a aucun sens si vous ne vous renseignez pas également sur votre pile technologique spécifique , et si vous le faites, vous n'avez même pas besoin de demander : « Êtes-vous complet ? »
* La première raison pour laquelle il n'y a pas de développeur full stack est que tous les développeurs sont full stack. "Full stack" est une désignation dénuée de sens et redondante.
Bien que chaque développeur soit Full Stack, il est très important de réaliser que chaque développeur est meilleur ou moins bon dans un domaine ou dans l'autre, et certains se sont volontairement spécialisés dans une seule partie de la pile. Pour en revenir à l'analogie du médecin, alors que chaque médecin est un médecin à part entière, certains sont spécialisés et ne sont plus appropriés à d'autres fins médicales. Voulez-vous qu'un chirurgien cardiaque vous opère au cerveau ? Je ne crois pas.
Même sans spécialisation précise, chaque développeur excelle dans un domaine plutôt que dans un autre. Par exemple, j'ai un diplôme en informatique et, au fil des années, j'ai travaillé avec divers langages de programmation, systèmes d'exploitation et bases de données. Si vous me demandez : « Es-tu un développeur full stack ? » et que je réponds oui, qu'as-tu appris ? Rien. Ce qu'il faut vraiment savoir, c'est que je possède des compétences variées à différents niveaux de la pile technologique. Je maîtrise parfaitement les bases de données ; mes compétences sont solides. Je ne commets pas d'erreurs majeures, mais je ne suis certainement pas un expert en intégration de bases de données. Je suis au-dessus de la moyenne en matière d'interface utilisateur et de design, mais je ne suis pas concepteur UI/UX et je ne peux pas rivaliser avec les spécialistes du domaine. En revanche, au cœur de la pile, mes compétences en logique de contrôle, logique métier et architecture sont exceptionnelles. Bien que je sois un développeur full stack comme tout ingénieur logiciel, j'ai une prédilection pour le backend, le système d'exploitation et l'architecture.
Dans une société de développement multi-développeurs, si vous voulez le meilleur produit logiciel absolu, vous devez immédiatement cesser de croire et de vous adonner au mythe du développeur full stack.
Si vous pensez avoir besoin d'ingénieurs "full stack" parce que vous voulez des ingénieurs intelligents qui comprennent les logiciels de bout en bout, alors arrêtez de dire "full stack" et commencez à dire "expert". Commencez à poser les bonnes questions. En revanche, si vous avez besoin d'ingénieurs full stack parce que c'est votre modèle de développement, vous vous trompez tout simplement. Si vous avez une équipe de développeurs travaillant sur toute la pile en silos, faisant tout, de la base de données à l'interface utilisateur, alors vous le faites mal, mal, mal. Mauvais.
Comme pour la plupart des choses dans la vie, il existe quelques exceptions : 1) Vous êtes une startup ou une structure si petite que vous n'avez qu'un ou deux développeurs, ou 2) vous n'avez littéralement pas le choix, car le projet doit être confié à une seule personne pour des raisons commerciales impérieuses . Dans ces cas-là, bien sûr, parlez de développement full-stack, car vous n'avez pas le choix et c'est une stratégie viable. De nombreux développeurs sont parfaitement capables de répondre à ces exigences (j'aime à penser que j'en fais partie). Mais lorsque votre entreprise se développe, faites-le de manière responsable et abandonnez l'idée reçue du « full-stack ».
Quand quelqu'un me demande si je suis un Full Stack, ma réponse est : "Je suis un ingénieur logiciel". Si vous ne comprenez pas ce que je veux dire, vous ne comprenez probablement pas assez pour me poser des questions pertinentes sur mes compétences de toute façon.
Pas encore convaincu ? Regardez les choses d'une autre manière, la raison pour laquelle la chaîne de montage a révolutionné la fabrication est que nous avons appris que même si un artisan peut tout faire, il ne devrait pas. Si vous voulez construire des chaises, vous n'engagez pas 5 artisans qui sont « full chair ». Vous ne dites pas à chacun d'eux d'aller couper les arbres, puis de leur dire à tous de ramener le bois et de le couper, puis de leur dire à tous de sculpter le bois, etc. Ce que vous faites, c'est en envoyer un pour ramasser du bois - votre meilleur abatteur de bois. L'un met en place une station de découpe et la traite - votre meilleur cutter. L'un met en place une station de sculpture et de sculpture - votre meilleur sculpteur. Un poste d'assemblage et de montage : votre meilleur assembleur. On met en place un finisseur - votre meilleur finisseur. Vous vous spécialisez et créez un flux. Créer une synergie. Le logiciel n'est pas différent. À chaque étape du processus de production de logiciels, vous devriez avoir un endroit où votre spécialiste dans ce domaine peut s'engager, faire de son mieux et passer à autre chose. Si vous me dites que votre logiciel ne se prête pas à ce modèle, je remettrai en question votre architecture et votre leadership. Si vous voulez diriger votre équipe de développement comme si c'était les années 1700, c'est votre problème, mais ne soyez pas surpris lorsque vos 10 "artisans" complets sont formés par trois spécialistes de l'ingénierie des disques durs dirigés par quelqu'un qui sait comment terminer le travail de ce siècle. .
Lorsque vous demandez un ingénieur full stack dans un environnement d'entreprise, vous pouvez également dire : "Je veux un bricoleur et un patron de personne".
Je sais ce que vous pensez. Vous vous dites encore : « Mais je veux absolument des développeurs full-stack ! » Malgré tout ce que je viens de dire, vous persistez dans cette voie car, pour vous, « full-stack » signifie une personne parfaitement compétente à tous les niveaux de la pile technologique. Bonne chance. Non seulement c’est impossible, mais après vingt ans d’expérience dans le développement logiciel, je peux vous dire que, même si je trouvais cette personne, je n’en aurais ni besoin ni envie. Donnez-moi un expert en bases de données, un expert en logique de contrôle et un graphiste d’interface utilisateur, et je surpasserai votre équipe « full-stack » sur tous les plans, à tous les niveaux, systématiquement. À chaque fois.
** La deuxième raison pour laquelle il n'y a pas de développeur full stack est qu'aucun développeur n'est fondamentalement full stack dans la production d'entreprise. Du moins pas si vous le faites correctement. Ils peuvent être. Ils ne devraient tout simplement pas l'être.