Developpez.com

Le Club des Développeurs et IT Pro

Existe-t-il encore des développeurs « Full Stack » ?

Pour un senior, la pile de technologies utilisées dans des projets est devenue importante

Le 2014-12-09 21:53:19, par Amine Horseman, Expert éminent sénior
Le « full stack developer » est un terme qui désigne un développeur capable de créer un outil informatique (logiciel, application, site web…) tout seul de A à Z. Il prend ainsi en charge l’empilement complet des composantes de cet outil. Cependant, avec le marché actuel qui est très exigeant et l’apparition croissante de nouvelles technologies, certains commencent à se demander si c’est toujours possible de tout gérer tout seul.

Selon Peter Yared, le directeur de technologie de Sapho, le « Full Stack était possible dans l’ère du Web 2.0. Mais, une nouvelle génération de startups a émergé, repoussant les limites de pratiquement tous les domaines du logiciel. De l’intelligence artificielle à l'analyse de données jusqu’aux objets connectés, en passant par le mobile. Il devient pratiquement impossible pour un seul développeur de programmer à travers la pile complète de technologies modernes ».

Il explique ensuite que dès l’apparition des architectures client/serveur à la fin des années 80 et le début des années 90, la programmation d’application est devenue « un sport d’équipe », ceci parce que « chaque facette de la nouvelle technologie était si complexe qu'un spécialiste était nécessaire, parfois un pour différents niveaux (front-end, bases de données, serveurs d'applications, etc.) ». Toutefois, avec l’apparition de la pile LAMP (Linux, Apache, MySQL, PHP / Python / Perl) et des nouveaux langages et frameworks comme Django, Ruby on Rails et jQuery, ainsi que les services Cloud, il est « devenu possible, pour de nombreux programmeurs, de créer des sites entiers ou des services SaaS complets, contenant un client Web dynamique, une couche métier côté serveur, une base de données évolutive, et un support opérationnel ».


Figure : la nouvelle "Full Stack" selon Peter Yared

Cependant, Peter Yared précise dans son billet de blog que ces dernières années, la pile de technologies à maîtriser pour devenir un développeur Full Stack ne cesse de s’agrandir, et les technologies actuelles telles que iOS, Android, Scala, MangoDB, HTML5/CSS3, JavaScript et même les services Cloud sont tellement évoluées que les entreprises d’aujourd’hui nécessitent des spécialistes dans chacun de ces domaines pour rester compétitives. Aussi, « il est essentiel d'avoir au moins une personne avec une compréhension fonctionnelle de chacune de ces composantes et qui est également capable de connecter les différents niveaux et de travailler avec chacun des experts ». Ces personnes que Yared appelle « Full Integrators », sont capables de relier plusieurs technologies ensemble, sans pour autant être capables de développer toute une fonctionnalité toute seule. Ce sont des intégrateurs et ils peuvent être des spécialistes dans un ou deux domaines, mais ne sont sûrement pas des développeurs « Full Stack ».

Source : Blog de Peter Yared

Et vous ?

Etes-vous d’accord avec Peter Yared ?
  Discussion forum
38 commentaires
  • grunk
    Modérateur
    Il est à mon avis de plus en plus difficile de faire du fullstack de manière performante.
    J'ai commencé en tant que développeur LAMP puis j'ai rajouté Android. Je développe maintenant plus les backend php et les "clients" android et force est de constaté que lorsque je doit repasser sur du frontend (html/css /js) je suis moins performant qu'avant simplement par le manque de pratique.

    A moins d'avoir une pratique équitable de toutes les technos et donc probablement pas optimale, il est difficile d'avoir des des devs fullstack expert partout.
  • santana2006
    Membre régulier
    Cela dépend du stack on lui même,

    Pour moi il y a plusieurs stacks possibles :

    1/ Application d'entreprise (DB relationnelles, architectures pour desktop ou web et frameworks qui les implémentent, reporting, ..)
    2/ Application mobile professionnelle
    3/ ..

    Il est trivial qu'un développeur ne peut maitriser tout cela, on peut pas être à la fois expert en déve d'applications d'entreprise de A-Z, et un expert en développement de sites marchands à base de CMS par exemple, à un moment donné on choisit une orientation selon laquelle on construit notre expertise et donc notre profile.

    Par contre on peut trouver, pour chaque domaine cité, un développeur fullstack.

    Donc la notion de fullstack en elle même n'est pas précise, c'est en fait un fullstack par domaine, et ça il existe bien des profiles qui le sont.
  • Pyramidev
    Expert éminent
    Envoyé par Saverok
    Envoyé par Brütal
    Au final, je connais des élèves qui sortent avec un diplôme d'ingé en informatique, mais qui sont incapables ne serait-ce que lire la sortie du compilateur pour voir la source de leurs erreurs...
    Qui a besoin de faire ça ??
    [...]
    et je n'ai jamais, mais alors jamais eu besoin de regardé le code en sortie du compilateur.
    Je crois que Brütal parlait des messages d'erreur du compilateur.

    Quand on génère du code assembleur à partir du code C (par exemple avec GCC), lire le code assembleur généré ne sert pas à trouver les éventuelles erreurs de programmation du code C d'origine. Lire le code assembleur généré est surtout intéressant pour observer comment le compilateur optimise le code. Une telle compétence est parfois utile, mais pas pour tout le monde.

    Par contre, essayer de comprendre les messages d'erreur du compilateur, c'est la base. Typiquement, un débutant qui ne cherche pas à les comprendre essaiera de faire plein de changements au hasard dans le code jusqu'à ce que ça compile.
  • palnap
    Membre averti
    Bien sûr qu'il existe encore des développeurs full stack et il en existera toujours. Ce gentil monsieur dispose peut-être d'équipes conséquentes mais dans une petite structure ou le nombre de développeurs se comptent sur les doigts d'une mail ce serait insensé d'embaucher des types trop spécialisés.

    De plus, il me semble que pour bien appréhender une application il faut savoir ce que chaque partie fait (avec un niveau de détail variable selon la taille des applis) et que tout bon développeur devrait être capable de monter en compétence avec à peu près n'importe quel langage de prog ou base de données.

    En développement agile, on privilégiera le transfert de compétences en faisant tourner les développeurs sur les différentes parties de l'appli. Au bout de N itérations, chaque membre de l'équipe devient capable de travailler sur n'importe quelle partie. Si un dév se barre (congés/démission), ça n'impacte personne.

    Raisonnement par l'absurde : Chaque développeur n'a qu'une compétence, techno serveur, techno client, techno mobile ou BDD. Le client demande l'ajout d'une petite fonctionnalité (mais avec un impact sur ces 4 couches) dont le dév prendrait une heure. Avec les recommandations de ce gugusse on serait obligé de monopoliser 4 développeurs. On a au moins quadruplé le coût de cette fonctionnalité (si on prend en compte la communication entre les développeurs, leur synchronisation, les aléas du dév collaboratif, etc. on peut encore monter !). Bref, pas super rentable tout ça... :/
  • Luckyluke34
    Membre émérite
    "Full stack" n'a jamais voulu dire excellent dans tous les domaines. C'est essentiellement le résultat :

    • Dans certaines grosses entreprises, d'une division du travail de plus en plus organisée autour de tranches fonctionnelles verticales (influence de SOA, méthodes agiles, etc.) plutôt qu'horizontalement en services par domaine de compétence.

    • De l'essor des startups, où par nécessité les membres d'une équipe doivent savoir toucher à tout. Tout le monde a pris ça comme une vertu cardinale de "l'esprit startup"... Full-stack est devenu un buzzword que les RH ont repris dans leurs offres d'emploi, pour suivre la tendance et/ou bien ancrer dans la tête des développeurs qu'ils doivent être polyvalents et faire le café et la vaisselle ou aller voir ailleurs.


    Mais les gens n'ont pas changé : chacun garde ses technos favorites, ses lacunes, ce n'est pas nouveau. Il y a juste plus de curiosité et de transdisciplinarité qu'avant, ce qui n'est pas un mal.

    Assiste-t-on au déclin du développeur full stack ? Non dans l'esprit, car il est plus que jamais primordial de s'intéresser à tout ce que fait son équipe ne serait-ce que pour pouvoir remplacer un collègue malade au pied levé, et je ne crois pas que l'ajout de deux ou trois couches dans la stack y changeront grand-chose. Et oui, j'espère, en tant que stupide buzzword qui va s'éteindre de lui-même à l'apparition de la prochaine mode.
  • Saverok
    Expert éminent
    Envoyé par Brütal
    Au final, je connais des élèves qui sortent avec un diplôme d'ingé en informatique, mais qui sont incapables ne serait-ce que lire la sortie du compilateur pour voir la source de leurs erreurs...
    Qui a besoin de faire ça ??
    J'ai appris le C a un niveau assez poussé durant mes études (dans mon cursus universitaire, le coef y était élevé justement) mais je me suis spécialisé en Java que j'ai pratiqué intensément durant 8 ans avant d'évoluer vers la gestion puis la direction de projet et je n'ai jamais, mais alors jamais eu besoin de regardé le code en sortie du compilateur.
    Même chose pour tous les dev, lead tech et architectes avec lesquels j'ai pu bosser au cours de tout mon parcours.

    Dans la très grosse majorité des cas, on a pas besoin d'aller voir ce qu'il se passe si bas niveau dans le code et les dev qui ne savent pas le faire ne sont pas des mauvais dev pour autant.
    Il existe plein de manière différente d'exercer ce métier.

    Par contre, je remarque que c'est en algorithmie (tout langage confondu) que je remarque la chute de niveau au cours des années et c'est ça qui me préoccupe.
  • Brütal
    Nouveau membre du Club
    Bah exactement...
    Effectivement, voir le code en sortie de compilateur a un intérêt limité (encore que, si la possibilité existe c'est qu'il y a une utilité).
    Et qui a besoin de descendre aussi bas niveau? Au hasard les développeurs pour la programmation embarquée, des créateurs de drivers, et à peu près tout ce qui nécessite une bonne optimisation...
    Par exemple, tous les cockpits d'avions sont développés en très bas niveau, en C, voir en assembleur je pense parfois, en tout cas jamais en Java.
    Et dans tous les cas, ça change rien à la problématique, le sujet parle de développeurs full-stack. Et je pars du principe qu'un développeurs qui se contente de sa spécialité (et qui au passage ne la connaît même pas bien), sans s'intéresser à ce qu'il y'a autour, bah c'est pas un développeur full-stack.
  • Haseo86
    Membre éclairé
    Je ne suis pas sûr que l'exemple rentre dans le cadre énoncé ici. Aujourd'hui les développeurs utilisent les couches plutôt qu'ils ne les codent, en ça ils ne sont pas "Full Stack".

    En même temps je ne crois pas que ce soit un problème en soit, il vaut mieux être capable d'identifier et d'utiliser proprement l'existant que perdre du temps à réinventer la roue.
  • Zefling
    Expert confirmé
    On peut être « full stack », mais faire du « full stack » ça me semble de moins en moins envisageable. Il est préférable de réutiliser des briques, les créer prend beaucoup trop de temps. Vouloir faire un gros site avec aucun framework c'est juste utopique aujourd'hui. J'ai essayé, j'ai vite compris que c'était un boulot bien trop important pour être applicable en entreprise. Ok, je maîtrise tout, mais ça m'a demandé des centaines d'heures de boulot que j'aurais pu éviter en délégant le boulot à certains outils.
  • Kropernic
    Expert confirmé
    Mais il n'y a pas que les sites web dans la vie !

    Je ne bosse pas pour un SSII mais pour un client finale. Dans le service ICT-DEV, sans sompter le chef, nous sommes 2 et nous nous occupons de tout du début à la fin...

    Analyse fonctionnelle/technique, architecture de la DB, administration du serveur DB, développement, testing, debugging, etc. (et même parfois souvent, c'est nous qui devons faire le cahier des charges...)

    Après bien sûr, les technologies utilisées sont limités. On développe en .NET avec DB SQL SERVER derrière et... c'est tout. Donc si j'ai bien compris la définition, nous sommes bien des développeurs "full stack".

    My 2 cents.