Blog

Le mythe du développeur full-stack

licorne-lama
Share Button

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.

 

 

 

 

Débloque les + belles offres tech en 10 mins

 

Différents métiers

Schéma d'architecture 3-tiersDé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, alors 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

Un char d'assautLe 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.

Logo JavaPar 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 ?

Choisis ton test technique en quelques secondes parmi + 40 langages/frameworks puis évalue rapidement ton niveau en ligne, grâce à une équipe d’experts. Rejoins-les vite :
Guillaume_Brout Olivier_Milla Jean-Marie_Clery Khalid_Jebbari Peter _Stavrinides Alex_Bystritskiy Urs_RoeschAbha_Agrawa

Je teste mon niveau en développement maintenant !

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

  1. Recruteurs, comment identifier le bon développeur
  2. Les développeurs ne souhaitent pas tous devenir chef de projet !
  3. Le recrutement en SSII : quelques clefs pour survivre

 

 

JulienJulien
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

Share Button

8 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

  • 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

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>