Passer au contenu principal

On trouve de plus en plus d’offres d’emploi destinées à des développeurs full stack. Et pourtant un vrai développeur full stack, c’est à dire qui soit à la fois expert en front et en back, ça n’existe pas vraiment. On va voir pourquoi.

Update 2020 : découvrez le point de vue Damien sur la question du développeur full stack, est-ce réellement un mythe ? Lisez pour en savoir plus !

Différents métiers

Développer pour du front-end et du back-end, ce sont deux métiers différents. Les préoccupations ne sont en fait pas du tout les mêmes. Le back-end se focalisera avant tout sur la robustesse de l’application, ainsi que la sécurité qu’elle fournit. Le front-end cherchera au contraire à faire une application ayant un look sympa, et facile à utiliser. Par ailleurs il devra faire en sorte que l’application s’affiche à peu près de la même façon dans tous les navigateurs. Enfin, avec la mode du responsive design il doit faire en sorte que l’application supporte différents types de terminaux, avec des modes d’utilisation très différents.

Et dans les faits, se tenir à jour sur les deux domaines relève pratiquement de l’impossible tant les préoccupations sont différentes. Par exemple au niveau du front-end on ne se focalisera pas nécessairement sur les tests automatisés étant donné qu’une IHM relève plutôt du jetable. Alors que côté back-end ceux-ci sont une nécessité. De même, les performances sont une préoccupation majeure côté back. Tandis que côté front c’est moins critique et de manière générale bien plus complexe à mettre en oeuvre du fait des différences entre navigateurs.

La préoccupation du back-end : le temps

Le back-end dans une application est finalement la partie qui gère les données des utilisateurs de l’application. Par conséquent celui-ci doit garantir au cours du temps que ces données seront toujours accessibles. Les traitements métier ne doivent donc pas corrompre ces données, par contre ils doivent les exploiter correctement. De même en cas de montée de version de l’application c’est la responsabilité du back-end que de fournir l’outillage gérant au cours du temps l’évolution de la base de données. C’est d’ailleurs pour cette raison que les tests automatisés sont si importants sur le back-end.

Par ailleurs, la sécurité est primordiale et doit être située côté serveur. On trouve encore trop d’applications où la sécurité a intégralement été implémentée dans l’interface utilisateur. Dans celles-ci un utilisateur qui observe le trafic avec Firebug peut par conséquent par la suite aller écraser des données en base, voire pire complètement détruire ces données. Ne riez pas, dans certaines applications un simple script JS suffit à vider totalement la base, et n’importe quel utilisateur peut faire l’opération.

Si on devait résumer le back-end à une image, il faudrait considérer celle d’un char d’assaut. Ce n’est pas forcément joli à voir, par contre c’est très robuste et difficilement pénétrable en dehors des entrées permises.

Cela ne signifie pas pour autant que les développeurs back-end ne doivent pas suivre les tendances en terme de technos utilisées. Il est au contraire nécessaire de le faire ne serait-ce que pour éviter l’obsolescence des frameworks et librairies utilisées ce qui pourrait causer des problèmes de sécurité. Mais bien souvent les mises à jour de ces librairies sont rétro-compatibles. Une cassure nette du type ce qui s’est passé entre Symfony 1 et la version 2 est globalement rare. De plus les frameworks qui ne respecteraient pas cette stabilité dans les APIs auraient pas vraiment de succès dans le temps, un exemple probant étant Vert.x qui s’est révélé être un feu de paille.

D’autre part toujours dans cette optique de robustesse un accent doit être mis sur tout ce qui est performance. Ça permettra d’encaisser une charge bien plus grande sur un serveur donné, et d’autre part des performances insuffisantes peuvent avoir une influence drastique sur l’utilisation de votre application.

Le front-end : des évolutions très rapides

Le front-end, contrairement au back-end, doit être considéré davantage comme du code jetable. D’ailleurs on le voit même au niveau des librairies JavaScript : leur durée de vie moyenne est de trois ans avant qu’elles disparaissent de la circulation. Seul jQuery semble faire de la résistance, mais par exemple AngularJS 2 est incompatible avec la version 1.

Par ailleurs continuer à maintenir une application basée sur des librairies obsolètes posera de très gros problèmes avec les nouveaux navigateurs. AngularJS 1 doit encore être maintenu pendant deux ans au maximum, mais rien ne dit qu’une application codée avec continue à fonctionner sur les navigateurs de 2020. Le contraire est hélas bien plus probable.

Tout ceci fait que l’importance d’avoir des tests automatisés sur le front-end est nettement moins importante, contrairement d’ailleurs au rendu visuel du site. Celui-ci ne peut être fait que par un opérateur humain. D’autre part, savoir écrire des CSS correctes et du code HTML conforme aux standards requiert une certaine expertise qui est loin d’être triviale contrairement à ce qu’on pourrait penser. Écrire ceci de façon à ce qu’il fonctionne sur les différents navigateurs est un challenge bien plus poussé encore.

En fait l’analogie qui s’applique au développement côté front-end est celui d’un développement multiplateforme, à la manière d’une appli qui fonctionnerait sur Linux, OSX et Solaris (je mets Windows à part…). Tous se ressemblent, mais l’enfer est dans les différences. Pour vous donner une idée même une application codée en Java, pourtant normalement multiplateforme, ne fonctionnera pas exactement pareil sur Windows et Linux. Pour vous en convaincre, regardez du côté de la gestion des fichiers…

Apprendre les différences de comportement entre navigateurs est en soi une vraie purge, tant elles peuvent se révéler grandes. L’expertise côté front-end est donc avant tout une expertise concernant tous les workarounds à appliquer sur les différents navigateurs pour obtenir les comportements voulus.

Mais je suis back-end et je sais développer du front ! (ou vice-versa)

C’est vrai que bien souvent les développeurs back-end maîtrisent un minimum le front et vice-versa. C’est d’ailleurs nécessaire pour que chacun puisse comprendre les problématiques de l’autre.

Cela dit il y a une différence entre avoir une connnaissance basique et avoir une expertise. Les développeurs full stack que j’ai pu voir étaient en fait spécialisés front, avec des connaissances basiques en back. Mais le cas inverse existe bien évidemment. Bref ce n’est pas parce qu’en tant que back-end vous savez développer du front que vous êtes un authentique développeur full stack, qui maîtriserait les deux !

En bref

Une offre pour un authentique développeur full stack, autant dire quelqu’un de très rare sur le marché, devrait proposer le salaire qui va avec, c’est-à-dire très élevé. Pour vous donner un ordre d’idée ce serait de l’ordre de 150k. Maintenant les offres d’emploi classiques demandant du full stack sont en fait soit spécialisées back avec un peu de front, ou beaucoup de front et pas beaucoup de back. Bref si vous avez envie d’avoir des notions de l’autre côté de la barrière, ça peut être intéressant. Par exemple ça m’a permis de me dire que le Javascript n’est pas ma tasse de thé (bon d’accord j’en ai fait à l’époque d’IE6, IE8 venait de sortir. Maintenant ça pourrait être différent)

Côté recruteurs, je vous conseille de regarder avec la plus grande circonspection les CVs de gens se prétendant full stack. Bien souvent, vous trouverez que ce sont avant tout des gens back-end qui savent faire un peu de front, ou l’inverse, mais pas des gens experts dans les deux domaines. Quelques questions techniques bien placées permettent d’ailleurs de se faire assez vite une opinion réelle sur le sujet. D’ailleurs, quand quelqu’un vous présente une liste de compétences sur un CV essayez de l’interroger sur la liste intégrale des compétences, pour vérifier qu’il ne ment pas. On en parle ici.

Besoin de tester ton niveau en développement informatique ?

Cet article vous a plu ? Vous aimerez sûrement aussi :

  1. L’article de Damien qui est beaucoup plus récent sur le sujet : le développeur full stack n’existe pas
  2. Les développeurs ne souhaitent pas tous devenir chef de projet !
  3. Le recrutement en SSII : quelques clefs pour survivre

Julien
Moi c’est Julien, ingénieur en informatique avec quelques années d’expérience. Je suis tombé dans la marmite étant petit. Mon père avait acheté un Apple – avant même ma naissance (oui ça date !). Et maintenant je me passionne essentiellement pour tout ce qui est du monde Java et du système, les OS open source en particulier.

Au quotidien, je suis devops, bref je fais du dév, je discute avec les opérationnels, et je fais du conseil auprès des clients.

Son Twitter Son LinkedIn

Rejoignez la discussion 18 Commentaires

  • Sylvain dit :

    « Et pourtant un vrai développeur full-stack, c’est à dire qui soit à la fois expert en front et en back »

    C’est ce raccourci qui est faux, car quand on cherche qq’un de full stack, on ne cherche justement pas un « expert en front et en back » mais qq’un qui soit juste polyvalent et à l’aise des deux côtés.

    L’expert en tout ça n’existe pas bien sur, mais qq’un de polyvalent qui est bon en front et en back, ça existe et il y en a beaucoup même.

    C’est aussi un moyen de montrer au candidat que ce job sera complet et pas seulement orienté front ou back.

    • gojul dit :

      Un voeu pieux que d’être à l’aise des deux côtés. Dans ces cas-là j’ai plutôt vu hélas des gens qui n’étaient à l’aise ni d’un côté ni de l’autre. Ou alors à l’aise en front mais pas en back et vice-versa.

      Les préoccupations et les paradigmes sont si différents entre les deux côtés, notamment en terme de manière de penser, qu’être à l’aise des deux côtés est vraiment très difficile. Et c’est ça qui fait qu’un développeur vraiment full-stack serait très cher.

      Pour info sur le sujet :
      http://techcrunch.com/2014/11/08/the-rise-and-fall-of-the-full-stack-developer/

    • DrHelmut dit :

      Je te rejoins totalement, nous sommes plusieurs développeurs full-stack JS dans ma mission actuelle, nous créons les services, les consommons, et créons les vues qui vont bien avec le peu qu’on maîtrise de css 3 (vive les flexboxes au passage)

      Et au delà du dev, on fait aussi un peu de ops… alors oui, idéalement je pense qu’on mériterait tous au moins 150k annuels si on prend ton article au pied de la lettre ^^

      • gojul dit :

        C’est sûr qu’avec du NodeJS côté serveur c’est bien plus simple d’être full-stack. J’avoue ne pas avoir trop pensé à ce cas. Cela dit je pense que Typescript va vraiment permettre l’essor de Node côté serveur. Mais ça n’empêche que si les APIs et frameworks utilisant Node sont aussi instables côté serveur que ce qui se fait côté client en JS celui-ci risque d’être un beau feu de paille comme Vert.x. Pour l’instant ça ne semble pas être le cas, wait’n’see.

        P.S. : et comme vous l’admettez DrHelmut, vous ne maîtrisez pas bien CSS3 comme le ferait un vrai dév front-end. Je ne remets certainement pas en cause vos compétences, juste le fait qu’être réellement « full-stack » n’a rien à voir avec savoir écrire du front de base tout en maîtrisant le back ou vice-versa.

  • fullstack dit :

    Clairement, l’auteur de cet article est bien loin de l’écosystème IT actuel.
    Peut-être qu’il voulait souligner le fait que beaucoup de développeurs s’approprient le terme de « Full Stack » parce qu’ils ont touché un peu de l’autre monde. Si c’est le cas, c’est écrit très maladroitement.

    Je fais du développement web depuis presque 18 ans, et je suis full stack depuis quelques années maintenant. Je fais beaucoup de veille, j’ai monté quelques sociétés (j’en ai planté aussi) et aujourd’hui je travaille pour une startup très connue mondialement qui me paye 210k$ par an.
    Autant dire que j’ai sauté sur ma chaise en lisant cet article ce matin. C’est comme dire qu’un boulanger qui fait et vend son pain n’existe pas. Lève-toi tôt (ou couche-toi tard), ne dors pas beaucoup, apprends de tes erreurs et tu verras que c’est possible.

    Ce qui m’étonne, c’est que ce texte soit publié sur un site comme jobprod, site d’offres d’emploi pour les startups. Les postes de full stack doivent représenter une bonne partie des offres qu’ils proposent. Les startups sont très friandes de ce genre de profils.

    Voici un article beaucoup plus sérieux : http://start.lesechos.fr/rejoindre-une-entreprise/actu-recrutement/developpeur-full-stack-le-cameleon-du-code-6715.php

    • gojul dit :

      Bonjour,

      J’ai vu récemment une image sur le sujet qui m’a beaucoup fait rire et résume ma pensée : http://www.commitstrip.com/fr/2016/11/07/which-full-stack-developer-are-you/

      Et pour avoir discuté avec des dévs qui maîtrisent vraiment des deux côtés, aucun ne se prétend full-stack. Il/elle dira qu’elle se débrouille en front mais maîtrise vraiment le back, ou inversement.

      D’un autre côté, acquérir une vraie expertise en front en étant à jour paraît très difficile, cf. ceci : https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f#.pw93se3og – c’est d’ailleurs pour cette raison que j’ai laissé tomber dans le domaine… jusqu’à ce que les choses se stabilisent. Mais d’autres ont fait le choix inverse, en terme de « fun ».

    • Jeune dev dit :

      +1
      Je suis désolé mais ton article est truffé de raccourcis : « Le back-end se focalisera avant tout sur la robustesse de l’application, ainsi que la sécurité qu’elle fournit. Le front-end cherchera au contraire à faire une application ayant un look sympa, et facile à utiliser » … au contraire !!!! => un front end développeur va au contraire de faire une app robuste et sécurisée faire une app cool …

      Un développeur Fullstack est simplement capable de répondre à un client qui souhaite développer une application avec un serveur et un client…
      Et je reprends les dire de l’auteur de la réponse ci-dessus « Lève-toi tôt (ou couche-toi tard), ne dors pas beaucoup, apprends de tes erreurs et tu verras que c’est possible ».

      Je me suis reconverti dans le développement web et mobile React, React Native et NodeJS depuis un an et j’ai développé from scratch une application web en interne pour le partage de connaissance qui ferait rougir beaucoup de développeur front et avec un back qui a tourné toute l’année, et une application mobile from scratch avec front et back qui intègre toutes les fonctionnalités imaginables (notifications, chat, géolocalisation, etc..) et sans utiliser aucune API extérieure… alors oui c’était dur, oui j’ai passé de longue journée mais oui je l’ai fait et j’ai appris beaucoup plus de chose que si j’avais lu ton article en rentrant à 17h30 de ma journée de 35h.
      Alors oui, mon travail ne vaut pas celui d’un développeur back-end qui a 3 ans d’expertise sur le back-end… mais ça répond parfaitement à un besoin et c’est ce qu’il cherchait.

      De plus, attention aux raccourcis « se tenir à jour sur les deux domaines relève pratiquement de l’impossible tant les préoccupations sont différentes »… C’est faux et j’en ai la preuve tout autour de moi.

      Bref bonne continuation à toi dans tous les cas et évites de crier sur les toits que ce que tu prétends impossible à faire est impossible à faire.

      Bonne soirée

  • fullstack dit :

    Le commitstrip fait allusion à mon premier paragraphe.

    Tu n’as pas discuté avec les bonnes personnes ou sinon elles ont essayé de t’expliquer qu’elles avaient une préférence plus back que front, ou inversement.

    « D’un autre côté, acquérir une vraie expertise en front en étant à jour paraît très difficile » : tu sais lire et taper au clavier ? Donc non, ce n’est pas difficile, il faut juste avoir les bons réflexes de veille et d’apprentissage. Alors c’est sûr qu’il faut gérer beaucoup d’informations et savoir faire le tri, mais cela vient avec l’expérience 😉
    Concernant la dernière partie de ta réponse, un full stack n’abandonne jamais, tu as eu raison de laisser tomber.

  • Abou K dit :

    Bonjour,

    Pas mal de réactions sont « définitives » et sans nuances. Voire corporatiste et égocentrées.

    Je fais du dév (pas que web) depuis plus de 15ans. Je développe en JAVA (android Studio), en PHP et en javascript.
    Je fais du graphisme que j’intègre moi-même. Je fais donc du CSS et du HTML. Je connais et pratique les dernier standards (HTML5 et CSS3).
    J’architecture mes BD moi même (que ce soit du MySql ou du Sql Server en passant par du Oracle).

    Je suis autodidacte et je suis fullStack. Mes projets sont on ne peut plus pro et mes clients sont TRES satisfaits globalement.

    Je gère le front et le back etc. …

    Donc oui les dév fullstack existent.

    Bien à vous,
    AK

  • Azize dit :

    Je suis assez d’accord sur ce qui est écrit dans ce post, le terme fullstack me fait doucement rire mais bon si ça peut permettre à un recruteur de décrire simplement qu’il veut un mouton à 5 pattes alors pourquoi pas…

    Personnellement, quand j’entends ce mot je demande à la personne qui l’utilise de me dire ce qu’elle met derrière. Et bien souvent je n’ai pas la même définition.

    Attention, quand tu dis que vertx est un feu de paille, toi qui aime les OS open source tu devrais savoir qu’ils bossent étroitement avec redhat et ils sont loin d’être mort…

    Bref, pour mettre tout le monde d’accord finalement nous sommes tous des devs fullstackoverflow 🙂

    • gojul dit :

      Pour vert.x je ne savais pas. Renaîtrait-il ?

      Le temps nous le dira. S’ils stabilisent leurs API et permettent du synchrone sur les DB ça peut. Mais j’ai peur que Kafka lui fasse de l’ombre… 😉

      • Azize dit :

        Vertx ne répond pas vraiment aux mêmes problématiques que kafka… tu peux utiliser les 2… d’ailleurs il y a même un vertx client kafka je crois…

        Bref, vertx est loin d’être mort…!

  • yoda dit :

    Personnellement, je fais partie des gens qui n’hésitent pas un instant à se présenter comme « fullstack ». Cela ne signifie en rien que je me considère experte en back, en dev et en ops. Cela signifie juste que, conformément à l’attente de l’employeur qui demande un dev fullstack, je suis capable de développer en front comme en back, que je ne suis pas fermée à faire les deux.
    La plupart des offres qui réclament un fullstack ne demandent pas un expert, mais au contraire quelqu’un d’adaptable et d’agile. En témoignent les salaires proposés !

    Un fullstack n’est pas meilleur ou moins bien qu’un expert sur une technologie. Tout dépend en fait du type de produit qui est à faire, de la philosophie des équipes etc. Le fullstack est actuellement très demandé car il y a une forte tendance vers l’agile, à casser les silos, on préfère donc un développeur un peu moins expert sur sa technologie mais qui peut toucher à tout qu’un expert backend à l’ancienne qui ne touchera surtout pas à ce qui n’est pas sa spécialité.

  • JF92 dit :

    Cet article devrait être moins sûr de ses afirmations. Je suis un « fullstack » dev. Je monte des projets startups de A à Z de la config du serveur (Debian), des DB, de la sécurité, de l’archi, des technos, du deb back, mid et front, des applis iOS, Android et depuis peu je code des Arduinos et Raspberry pour des projets d’IoT. J’apprends en permanence de nouveaux frameworks pour m’adapter. Je suis PHP depuis le début et j’ai fait des projets sur Zend, Yii et maintenant Larabel. En JS j’ai fait du jQuery et maintenant c’est majoritairement de l’Angular. Je parle pas de Prototype et d’autres challengers que j’ai appris sur le moment.

    J’ai commencé à coder en C à mes 9 ans, j’en ai 31 aujourd’hui. Nous sommes peu de dev fullstack mais j’en ai rencontré un autre et on a le même profil: on a bossé dans des grosses boites pour commencer et on s’est barré pour monter nos boites.

    C’est pas parce qu’on est peu en France qu’on existe pas. Et c’est pas non plus parce que pour vous c’est impossible de maîtriser plusieurs arts simultanément que ça l’est pour tout le monde.

  • Coc0n dit :

    Bonjour,

    J’ai lu avec grande attention cet article et tous les commentaires dont il fait l’objet.
    J’ai un niveau débutant en développement front-end (maîtrise du HTML et du CSS, de quelques CMS, conception de site web responsive, XML…), mais il me manque des compétences techniques clés pour être parfaitement opérationnelle en front-end : Javascript, PHP, JS Query, frameworks, etc.
    D’un autre côté, j’aimerais également me former aux bases du back-end pour être « agile » comme je l’ai lu quelque part ici. La formation que j’envisage de suivre implique une spécialisation en deuxième semestre dans l’une des trois spécialités suivantes: back-end, front-end ou webmarketing.
    Ayant aussi des compétences en webmarketing, j’exclue déjà cette spécialisation. Mais j’ai du mal à faire un choix entre le back-end et le front-end… Le back-end est aussi très recherché sur le marché de l’emploi, mais en réalité je vois autant d’offres en front-end, et je suis bien plus attirée par le front-end. Quand je vois le terme « fullstack » ça me fait un peu peur aussi car si je ne me forme pas au bases du back-end, j’aurais sans doute du mal à postuler à de telles offres par la suite.
    Quelques conseils pour m’aider dans ma réflexion et faire mon choix ? 🙂

    • yoda dit :

      « en réalité je vois autant d’offres en front-end, et je suis bien plus attirée par le front-end »
      Je pense que tu as déjà la réponse à ta question.
      Si un jour tu es attirée par le back, il sera temps à ce moment de t’y former.

  • jake dit :

    Sincérement si vous pensez qu’un developpeur ne peux pas être expert en front et en back, c’est juste que vous n’en avez jamais rencontré.

    C’est dommage !

  • Guillaume Ransinan dit :

    Pour les dieux qui maitrisent tout, vous voulez vraiment dire que vous êtes experts en requêtes SQL optimisées, en sécurité, en architecture logicielle, etc etc, ou que vous êtes, selon votre talent et votre expérience plutôt pas trop mauvais en tout, voire plutôt bon dans une bonne partie de la pile.
    ( pour ma part je suis un ancien mauvais fullstack, mais j’observe, et meme parmi les gens spécialisés je vois de moins en moins d’experts).

    Attention, je pense que les touche à tout moyen et encore plus les bons touche à tout sont très utiles. (Selon lenvergure du projet ou la taille de l’équipe)

    Mais croire que les experts en tout sont courants ( et pas chers), ou croire qu’on est soi meme un expert en tout ( à part quelques exceptions quasi divines) est un mirage dangereux.
    Typique de nombreux zebres présomptueux.

    Pour filer la métaphore, non, je ne connais vraiment pas beaucoup de boulangers fullstack qui font leur pain, le vende, font leur farine, leur blé, mais aussi fabriquent leur tracteur et leur propre carburant.

    Je suppose que les kador fullstack ici savent même programmer enC++ ( vu dans l’article des echos), et aussi fabriquer un processeur à partir de sable.

    Rien qu’un gars qui se prétendrait expert en c++ en général dans tous les domaines d’application du c++, je me méfierai.

    Dsl pas pu me relire ecrit depuis un petitsmartphone avec des gros pouces, zone de texte invisible

Laisser un commentaire