Le développeur fullstack, utopie ou nécessité ?
Depuis quelques années, le développement web s’est très largement complexifié.
Côté backend, les architectures microservices et serverless demandent une forte expertise pour concevoir des applications qui passent à l’échelle.
Côté frontend, la diversité des outils et frameworks, l'arrivée des PWA, les notions de design et d'accessibilité en font un domaine très vaste où il devient de plus en plus compliqué de se maintenir à jour.
Aujourd’hui, les développeurs fullstack sont très recherchés. Mais qu'entend-on par fullstack ? Où commence et termine cette fameuse "stack" ? Peut-on développer une expertise forte sur l’ensemble de ces compétences ?
Après avoir défini le périmètre du développeur fullstack, on présentera ses avantages, puis, on réfléchira aux conséquences de construire une équipe autour de devs fullstack.
1 - Un périmètre étendu et fluctuant
Si vous êtes développeur fullstack, vous vous êtes sûrement déjà demandé où s'arrêtait votre périmètre. Quand faire appel à un UX ? A quel moment, dans un esprit devops, faire appel à un admin système ? Tout dépend de l’équipe !
Dans certaines équipes, le développeur est attendu sur une stack très large. En l’absence d’intégrateur, d’UX ou d'UI designer, on demande au développeur de porter toute la complexité de ces métiers. On retrouve le même phénomène en l’absence de profils orientés devops ou administration de base de données.
Le schéma suivant synthétise les métiers connexes au métier de développeur fullstack.
Au centre, les domaines au cœur du métier, aux extrémités, les compétences dépendantes de l'organisation des équipes.
Sous chacun de ces métiers se cachent une multitude de compétences et d’outils à maîtriser pour pouvoir intervenir sans difficulté sur toute la stack. N’est-ce pas utopique d’attendre autant de connaissances ? Pourquoi les entreprises cherchent-elles à recruter ces profils ?
2 - Les points forts
Flexibilité
Le premier point fort d’un développeur fullstack est sa flexibilité.
Un projet, qu’il soit composé, à part égale ou non, de backend et de frontend, peut être affecté à une des équipes disponibles sans distinction de compétences. De plus, dans le cadre d'un recrutement, d'un besoin de renfort, ou d’une réorganisation, le développeur fullstack est en capacité d'intégrer n’importe quelle équipe.
Etant donné que chaque développeur intervient sur l’ensemble de la stack, il n’y a, théoriquement, pas besoin de s’assurer de la présence de profils frontend ou backend dans chaque équipe.
Cette flexibilité est très appréciée des entreprises. Les équipes s’adaptent au besoin, il n'est pas nécessaire d'ajuster le contenu des sprints entre le frontend et le backend.
Communication
Le second point fort est la simplification de la communication entre les parties prenantes du projet. Le développeur connaît chaque étape du projet et communique, plus facilement, avec les membres de l'équipe et les métiers connexes.
Par exemple, en connaissant aussi bien les contraintes du modèle de données que de l’interface, le développeur aura une vision plus globale lorsqu'il s'adressera aux UX/UI ou au product owner.
Le développeur fullstack est également en capacité de mener une fonctionnalité de bout en bout. Il est à même de détecter, au plus tôt, d'éventuelles incohérences métier ou limitations techniques. Il se sent plus impliqué et a une meilleure appréhension du besoin utilisateur.
Et le recrutement ?
Face à la pénurie de développeurs web, rechercher un développeur fullstack tout en étant prêt à recruter un profil backend, souhaitant commencer le frontend, ou vice versa, semble augmenter le nombre de profils potentiels.
Lorsqu'un recruteur cherche un profil à partir d'une fiche de poste, il identifie les outils à maîtriser et retient les profils correspondants. Après quelques expériences, le CV d'un développeur fullstack contient un bon nombre d'outils front et back. Les recruteurs sélectionnent ces profils sans pouvoir identifier quelle partie de la stack est vraiment maîtrisée. Il est donc, généralement, plus simple de passer la première étape du processus de recrutement avec un profil fullstack.
Pour autant, ce fonctionnement à tendance à mettre en avant la maîtrise des outils plutôt que des concepts. Les profils sont identifiés comme "Java/Angular" ou "PHP/Vue.js" plutôt que comme "Développeur backend" ou "Développeur frontend".
On se prive alors de très bon profils, qui après avoir compris les concepts sous-jacents, se sont intéressés à découvrir d'autres langages ou frameworks.
La flexibilité, la communication, et, d'apparence, l’aspect recrutement, sont à l’avantage des équipes de développeurs fullstack. Mais n’y a t-il pas des limites à ce modèle ? Avec une stack aussi large, le manque d'expertise des équipes finira par poser problème.
3 - Une expertise souvent absente
Accroître son expertise dans un domaine est essentiel. Cela permet aux équipes de mener à bien des projets complexes et de conserver un sentiment de progression.
Devant le nombre de concepts, technologies, et outils à maîtriser, il est difficile pour un développeur fullstack de s’affirmer comme expert de toutes les composantes de son métier. Bien qu’il approfondira son expertise en fonction de ses affinités, il ne pourra pas s’y consacrer à 100%. Par exemple, un développeur fullstack, avec une affinité pour le frontend, aura une expertise limitée en comparaison à quelqu’un qui se consacre entièrement au frontend.
Pour illustrer tout ça, rien de tel que quelques mèmes !
Le premier représente très bien l'impossibilité de maîtriser une stack aussi étendue.
Le second dépeint l'impact sur la qualité lorsque des développeurs backend deviennent fullstack.
Impacts sur la qualité du produit
Le manque d’expertise diminue la qualité du produit final. Sans expert UX/UI, les interfaces ne seront pas intuitives, le coût de formation des utilisateurs sera élevé et leur adhésion moindre. Sans un expert frontend, la découpe des composants et des modules ne permettra pas une évolution flexible des interfaces. Sans un développeur backend expérimenté, le produit ne passera pas à l'échelle, ce qui limitera son expansion commerciale.
Impacts sur la qualité du code
Combien de fois avez-vous entendu "C’est pas grave, c’est que du front..." quand il s’agit d’évoquer la qualité de code ou les phases de conception ?
Généralement, le frontend est le premier à subir les conséquences d’une équipe composée uniquement de développeurs fullstack.
Historiquement, le backend est le cœur de l’application, il est commun de lui accorder plus d’importance et de renforcer sa qualité. De plus, il n’est pas rare que les développeurs fullstack soient d’anciens développeurs backend. Ils ont donc plus de difficultés à maintenir un code source propre côté frontend. Si l’équipe comprend au moins un développeur frontend expérimenté, il pourra piloter la qualité de code frontend et avoir une exigence forte.
Pour pallier ce manque d’expertise, les équipes font généralement appel à des profils spécialisés. Qu’il soit un architecte de l’entreprise ou un consultant externe, il n'est pas quotidiennement au contact de l’équipe.
Une expertise externe à l’équipe
Lorsque l’expertise est externe à l’équipe, elle engendre une perte d'autonomie. L'équipe n’est pas toujours en mesure de bien comprendre les enjeux et les décisions structurantes prises par l’architecte.
La création de cette dépendance forte, envers un profil externe à l’équipe, entre en contradiction avec la flexibilité apportée par le métier de développeur fullstack. Chaque membre des équipes est interchangeable, mais aucune équipe ne se suffit à elle même.
De plus, en se reposant sur un profil externe, les individus de l’équipe peinent à progresser dans un domaine précis. Ce sont pourtant eux, les futurs architectes logiciel de l’entreprise.
Il est important de savoir profiter de connaissances externes pour résoudre un problème précis. Néanmoins, la déspécialisation des développeurs pousse les équipes à systématiquement avoir besoin d'une aide extérieure.
L'organisation autour des développeurs fullstack n’est, évidemment, pas l’unique frein à la progression d’un développeur, mais le manque d’incitation à accroître une expertise ralentit la montée en compétences globale des équipes et leur autonomie.
Conclusion
Derrière les avantages d'une équipe de développeurs fullstack se cachent aussi plusieurs inconvénients.
Le gain de flexibilité, de communication, et la facilitation du recrutement, sont de très bon points tant que ça ne limite pas l’expertise de l’équipe, et par conséquent, la qualité du produit. Face au nombre de compétences attendues qui ne cesse de grandir, il est très difficile de maintenir un bon niveau dans chaque domaine. De plus, pour construire une équipe autonome, il est essentiel de recruter des experts frontend et des experts backends dans les équipes.
L’objectif de l’article n’est pas de remettre en cause l'existence de développeurs fullstack mais de questionner son omniprésence et ses conséquences. Si les avantages sont indéniables, comprendre les difficultés que pourra rencontrer une équipe constituée uniquement de développeurs fullstack vous aidera à mieux l'accompagner et à maximiser la qualité de son travail.