La crise d'identité du développement front-end
Je ne suis pas un « développeur [full-stack] », peu importe ce que dit mon dernier titre de poste.
Je ne suis même pas un développeur front-end , grâce au complexe industriel JavaScript .
Je suis un développeur front-of-front-end , mais c'est trop long.
Je suis donc concepteur de sites Web . Et je me spécialise également dans l'accessibilité, les systèmes de conception et le design.
C’est très dense, alors décomposons le tout.
Je ne suis pas un "développeur [full-stack]", peu importe ce que dit mon dernier titre de poste.
Je sais comment faire du développement full-stack, non pas parce que je le voulais, mais parce que je le devais. Mon titre était "développeur", comme celui de tous les autres. Selon nos titres, il n'y avait pas de développeurs front-end ou back-end. Nous devions tout faire. Cela a conduit à beaucoup de mauvais HTML et CSS de la part des développeurs back-end et à beaucoup de mauvais code Node et PHP de la part des développeurs front-end.
"HTML, CSS, JavaScript, Python, C#, et SQL peuvent tous être du code, mais ce sont des types de code très différents et ils conviennent à différents types de personnes."
"J'ai récemment travaillé avec une organisation où il y avait des dizaines de développeurs Full Stack et aucun développeur Frontend. Nous devions construire un site web et personne ne comprenait Flexbox, sauf moi. Bien sûr, j'étais heureux d'aider, mais j'ai dû apprendre React sur le tas pour mettre le travail en place. Heureusement, je l'ai appris assez rapidement, mais le prochain expert CSS n'aurait peut-être pas fait de même. La valeur que vous attendez d'un expert CSS est son CSS, pas son JavaScript, il est donc absurde de faire du JavaScript une exigence."
— Heydon Pickering dans Reluctant Gatekeeping: The Problem With Full Stack
Ce n'est pas parce que je sais utiliser Docker, Node.js, PHP, SQL, AWS, Linux, Serverless, CI/CD, etc. que je devrais le faire. Laissez-moi faire ce pour quoi je suis doué !
Je ne suis même pas un développeur front-end, grâce au complexe industriel JavaScript.
Dans cette section, chaque fois que je fais référence à React, n'hésitez pas à le remplacer par l'un des éléments suivants : Next.js (ce que les gens veulent dire quand ils disent React) ; Tailwind (ce que les gens veulent dire quand ils disent CSS) ; Webpack ; CSS-in-JS ; TypeScript ; Gatsby, etc.
Je connais bien React. Je le hais, mais je le connais. C'est d’ailleurs tout ce que je faisait pendant un certain temps. Mais je me suis vite apperçu que plusieurs collègues avec qui je travaillais n'avais pas compris ce qu’étaient les principaux éléments constitutifs du web. Et de là à découlé ma haine envers React.
Je le déteste. Il y a tellement de choses qui ne vont pas avec React. Le culte qui l'entoure, l'entreprise qui le fabrique, ses innombrables pièges, son côté bloat, son incompatibilité avec les fonctionnalités du web - la liste est longue.
"Non seulement de nouveaux services sont construits selon des normes d'UX et de performance autodestructrices, mais les expériences existantes sont largement redéveloppées sur des piles incroyablement lentes et taxées par JS."
— Alex Russell dans The Market for Lemons
Même si je n'avais pas de problème avec ça, je devrais quand même pouvoir choisir de ne pas l'utiliser, non ? Faux, désolé ! Il n'y a plus de choix, je ne peux pas y échapper. React est tellement omniprésent que presque tous les emplois l'utilisent. Dans les rares cas où ils ne l'utilisent pas, ils utilisent quelque chose de similaire.
Ok, donc je ne peux pas échapper à React mais je pourrais sûrement travailler sur quelque chose qui ne touche pas à React. Comme par exemple, le CSS ! Oh attendez, non. Tout est maintenant fait avec Tailwind, CSS-in-JS, les modules CSS, ou n'importe quelle autre façon qu'ils trouveront d'écrire du CSS sans réellement écrire du CSS.
Si tu ne peux pas les battre, je dois les rejoindres, j'imagine ?
Le problème, c'est que React - comme le trou noir supermassif qu'il est - attire tout vers lui. Vers plus de JavaScript. Je commence par ne toucher que le HTML, le CSS et un peu de JavaScript pour la manipulation du DOM. Mais avant même de m'en rendre compte, je suis en train de faire des appels API, de transformer des données et d'écrire des middleware.
Aïe ! J'ai besoin de me séparer de mes préoccupations.
Je me suis un peu écarté du sujet, mais ce que je veux dire, c'est que le vrai travail de front-end a été dévalué et n'est pas traité comme un travail à temps plein. Maintenant, le front-end ne signifie plus vraiment front-end. Les fonctions d'un développeur front-end sont plus précisément décrites comme étant full-stack. Et j'ai des problèmes avec le développement full-stack en tant que concept. Je ne veux pas être un développeur full-stack. Alors, je dois être quelque chose d'autre ? Eh bien, selon Brad Frost, je suis un développeur front-of-the-front-end.
Je suis un développeur front-of-the-front-end ?
Ok, donc je suis un développeur front-of-the-front-end…
Bien que ces mots décrivent avec précision ce que je fais, c'est beaucoup trop long. Personne ne va réellement utiliser ça comme titre. Nous avons donc besoin de quelque chose de plus court qui véhicule le même sens. Les gens ont trouvé de nouveaux titres comme :
Ingénieur UX
Ingénieur de conception
Designer front-end
Etc.
J'ai vu certaines entreprises les utiliser. Mais j'ai aussi vu des entreprises les utiliser à mauvais escient pour des rôles "front-end" (alias full-stack) - ce qui sape l'intérêt de créer ces nouveaux titres. Je ne déteste pas ces titres ; pendant un certain temps, j'ai même utilisé le terme "ingénieur de conception" pour me décrire. C’est pompeux, mais ça fait forte impression lors de souper de famille.
Mais il existe une meilleure option, qui existe depuis avant même que le terme "front-end" ne soit utilisé. Nous avions le bon titre sous les yeux depuis le début, concepteur web !
Je suis un concepteur web
Pourquoi est-ce que je pense que c'est le meilleur titre ? Voici pourquoi.
Je conçois pour le web. Le web infiniment flexible. Le web qui n'a pas une seule taille d'écran, un seul navigateur, un seul système d'exploitation ou un seul appareil. Le web qui peut être utilisé par n'importe qui, n'importe où, sur n'importe quelle connexion internet, sur n'importe quel appareil, sur n'importe quel système d'exploitation, sur n'importe quel navigateur, avec n'importe quelle taille d'écran. Je conçois avec le web.
En utilisant la plateforme web (HTML, CSS, JS, ARIA, etc.), et non une abstraction néfaste et surchargée. J'ai une compréhension approfondie du HTML et de sa sémantique. J'aime le CSS, je sais comment et quand utiliser ses nombreuses fonctionnalités, et je me tiens au courant au fur et à mesure que d'autres sont ajoutées. J'ai une solide compréhension du JavaScript moderne et, surtout, je sais quand ne pas l'utiliser.
Élaborer un balisage HTML sémantique en mettant l'accent sur l'accessibilité, afin de créer des expériences conviviales pour les navigateurs, les technologies d'assistance, les moteurs de recherche et autres environnements capables de consommer du HTML.
Créer du code CSS qui contrôle l'aspect et la convivialité de l'expérience web, en s'attaquant aux couleurs, à la typographie, à la mise en page réactive, à l'animation et à tout autre aspect visuel de l'interface utilisateur. Les concepteurs front-end conçoivent un code CSS résilient en mettant l'accent sur la modularité, la flexibilité, la compatibilité et l'extensibilité.
Créer du JavaScript qui manipule principalement les objets du DOM, comme faire en sorte qu'un panneau d'accordéon s'ouvre ou se ferme lorsque vous cliquez sur le titre de l'accordéon, ou fermer un panneau de navigation.
Effectuer des tests sur différents navigateurs et appareils pour s'assurer que l'interface utilisateur est fonctionnelle et esthétique sur un flux sans fin d'ordinateurs de bureau, de téléphones portables, de tablettes et de toutes sortes d'autres appareils compatibles avec le web (et même anticiper ceux qui n'ont pas encore été inventés !)
Optimiser les performances du code frontend afin de créer des expériences légères, à chargement rapide, rapides et sans à-coups.
Travailler avec les concepteurs pour s'assurer que la marque, la vision du design et les meilleures pratiques en matière d'UX sont correctement traduites dans le navigateur, qui, pour rappel, est l'endroit où les gens iront réellement utiliser le produit.
Travailler avec les développeurs backend et applicatifs pour s'assurer que le code frontend est compatible avec le code backend, les services, les API et autres architectures technologiques.
— Brad Frost dans Frontend Design, React, and a Bridge over the Great Divide
Mais je suis aussi...
J'aurais pu terminer le texte ici. Mais comme c'est moi qui l'écris, je voulais ajouter quelques informations supplémentaires me concernant. Je tiens à préciser que les concepteurs web sont tout à fait légitimes à ne faire que les choses mentionnées précédemment. Ce n'est pas parce que je me spécialise aussi dans d'autres domaines que tous les concepteurs web doivent le faire. J'espère avoir été clair là-dessus tout au long de ce texte.
Je suis également spécialiste de l'accessibilité. Cela ne veut pas dire que les concepteurs web ne doivent rien connaître à l'accessibilité, bien au contraire. Mon expertise va cependant au-delà de ce que les concepteurs web doivent savoir.
Je suis également spécialiste des systèmes de conception. J'ai une approche systémique. J'aime standardiser les choses pour simplifier le processus de développement web. De cette façon, on fait moins d'erreurs parce qu'on ne réinvente pas constamment la roue. Cela va de pair avec mon amour de l'accessibilité, car la plupart du temps, ce sont des erreurs d'accessibilité.
Je suis aussi designer. Mais c'est très vaste et je ne veux pas d'une autre situation de développeur full-stack. Donc, pour être plus précis, je suis concepteur d'interface utilisateur (UI). Et pour être encore plus précis, je suis un concepteur d'interface utilisateur inclusif. J'aime la conception centrée sur l'humain et la co-conception - rien sur nous sans nous.
Et malgré tout ses titres, je suis depuis plusieurs années développeur back-end. Ce qui ne m’empêche pas de garder mes racines de concepteur web. Sans pour autant être full-stack. Que je considère comme étant un titre pompeux pour ce donner de l’importance dans un monde où au final, nous ne sommes “que” concepteur web.
Conclusion
Le paysage actuel du développement front-end présente des défis pour les concepteurs web comme moi. Alors que je navigue à travers les complexités de notre industrie, je continuerai à défendre l'importance de l'expertise dans ces domaines sous-estimés.
Merci de m’avoir lu!