Dans le développement de logiciels (en particulier le développement Web), nous entendons l'expression "développeur de pile complète", comme dans " Je suis un développeur full stack "Ou" nous recherchons un développeur full stack. " Devine quoi' ? Il n'y a pas une telle chose.
L'expression "Full Stack" n'est en réalité qu'un mot de passe d'entreprise, pas une désignation d'ingénieur. Les vrais développeurs ne se promènent pas en se disant : " Tu es full stack ?... Tu es full stack... et toi ?... tu full stack ?... » L'expression "full stack" est exactement ce que les développeurs disent pour flatter les recruteurs qui n'ont généralement aucune idée de ce que cela signifie. C'est ce que disent les recruteurs pour apaiser les managers, mais ils ne savent généralement pas pourquoi ils le disent. C'est ce que disent les managers parce qu'évidemment personne ne veut d'une équipe de développeurs half-stack, ce serait de la folie. Avez-vous déjà vu une équipe de demi-pile? C'est affreux.
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, " tu es full stack ? ", ce que vous demandez vraiment, c'est" pouvez-vous travailler avec la base de données, le système d'exploitation et deux ou plusieurs langages de programmation ? « Bien sûr, ils diront oui. Pourtant, la question elle-même n'a aucun sens. Être « full stack » est la définition même d'un ingénieur/développeur logiciel. Il n'y a pas d'autres types d'ingénieurs en logiciel. Aucun.
Si vous êtes un technologue mais pas "full stack", vous n'êtes pas un ingénieur logiciel. C'est littéralement ce que signifie ingénieur logiciel. Il existe de nombreuses autres professions qui sont à la fois très techniques mais pas Full Stack, et elles ont leurs propres noms. Les DBA sont spécialisés dans les bases de données, ils ne sont pas full stack, c'est pourquoi nous les appelons DBA. Les administrateurs système sont spécialisés dans le système d'exploitation et les serveurs, ils ne sont pas full stack, c'est pourquoi nous les appelons administrateurs système. Les concepteurs Web (par opposition aux développeurs Web) se spécialisent dans la conception d'interfaces utilisateur, mais pas de solutions Web complètes, c'est pourquoi nous ne les appelons pas ingénieurs logiciels. Si vous n'êtes pas "full stack", vous n'êtes pas un ingénieur logiciel. Il se définit.
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 ».
Vous ne dites pas ces choses parce que c'est redondant. Il n'y a pas de médecins « moyens médicaux ». Il y a des professionnels de la santé qui ne sont pas des "médicaments complets", comme les infirmières, les ambulanciers et les assistants médicaux. C'est pourquoi ils ont leurs noms, ils ne sont pas médecins. Le moment où vous dites "médecin" signifie que vous obtenez un "médicament complet". Être ingénieur logiciel signifie avoir un ensemble spécifique de compétences nécessaires pour s'engager pleinement dans cette profession. Pour la définition ces compétences sont "la pile complète". Quand tu demandes à un développeur " tu es Full Stack ? "Tu demandes en fait"êtes-vous un ingénieur logiciel?"Si vous parlez à un développeur et avez besoin de demander" tu es full stack ? Ensuite, vous ne comprenez pas vraiment les développeurs ou la pile. Voulez-vous embaucher de grands ingénieurs en logiciel? Fait le bien. La question de la pile complète n'a aucun sens à moins que vous ne posiez également des questions sur votre pile particulière, et si vous le faites, vous n'avez pas besoin de demander " tu es full stack ? " d'abord.
* 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 ciblée dans un domaine ou dans l'autre, chaque développeur est simplement meilleur dans un domaine que dans un autre. Par exemple, dans mon cas, j'ai suivi un cursus en technologie de l'information et au fil des ans, j'ai travaillé dans divers langages de programmation, systèmes d'exploitation et bases de données. Si tu me demandes " tu es Full Stack ?« Et je dis oui, qu'as-tu appris ? N'importe quoi. Ce que vous devez vraiment savoir, c'est que j'ai des capacités différentes à différents points de la pile. Je maîtrise très bien les bases de données, mes compétences sont solides. Je ne fais pas de grosses erreurs, mais je ne fais certainement pas chanter les tables de la base de données en parfaite harmonie. Je suis au-dessus de la moyenne avec l'interface utilisateur et le design, mais je ne suis pas un designer UI / UX et je ne peux pas rivaliser avec ceux qui sont des spécialistes dans ce domaine spécifique. Cependant, à l'arrière et au milieu de la pile, mes compétences en logique de contrôle, en logique métier et en architecture sont exceptionnelles. Bien que je sois "full stack" comme n'importe quel ingénieur logiciel, j'ai une affinité pour la partie backend et OS de la pile et pour 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 la plupart des choses dans la vie, il y a quelques exceptions ; 1) Êtes-vous une start-up ou 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 forti des raisons commerciales. Dans ces cas, par tous les moyens, parlez de la pile complète car vous n'avez pas le choix et c'est une stratégie viable. Il y a beaucoup de développeurs là-bas qui peuvent vraiment y parvenir (j'aime penser que je suis l'un d'entre eux). Mais quand vous grandissez, alors vous grandissez bien et brisez le mensonge de la "pile complète".
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. Penses-tu encore " mais je veux vraiment des développeurs full stack ! Malgré tout ce que je viens de dire, tu penses toujours que parce que "full stack" signifie quelqu'un pour toi également et parfaitement compétent dans tous les points de la pile. Bonne chance. Non seulement c'est impossible, mais après deux décennies de développement de logiciels, je peux vous dire que, en supposant que je puisse même trouver cette personne, je n'en ai pas besoin ni ne la veux. Donnez-moi un expert en base de données, un expert en logique de contrôle et un artiste de l'interface utilisateur, et je battrai votre équipe « full stack » à tous les niveaux, à tous les niveaux, à chaque fois. 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.