Faut qu’on discute d’un truc. Un truc important, pour une fois, remettre les points sur les i
afin de rétablir une vérité: ce n’est pas en quelques mois qu’on devient développeur·euse.
Petite précision avant de commencer: ce que j’attaque, c’est une promesse, celle de devenir « développeur web fullstack en x mois », pas les boîtes qui les proposent. Je ne citerai d’ailleurs aucun nom dans cet article.
Sommaire
- Introduction
- Vendre du rêve
- Avec ces outils, il y a des principes
- Tu n’es pas prêt·e
- Derrière cette masquarade, des héros
Introduction
Depuis quelques semaines, j’ai retrouvé un travail dans une boîte où tout est à faire; aucun background avec le développement web, pas de workflow, aucune notion en terme de développement web pur. Tout, y compris former mon petit junior qui sort tout juste de formation intensive.
Ce n’est pas le premier que je rencontre, j’en ai vu d’autres. L’avant-dernier, dans un endroit où je ne suis restée que douze jours, avait beaucoup trop d’égo pour qu’on lui dise quoi que ce soit. Une autre dev que j’ai aussi dû prendre à ma charge dans mon premier travail (juste après mon diplôme) ne connaissait également que le code et uniquement le code. Aucune notion de best practices, de clean code ou encore de design patterns.
Heureusement, j’ai également connu des exceptions, comme une amie déesse du front-end ou un Prince qui gère comme personne.
Du coup, je m’excuse si tu viens de t’inscrire sur une de ces formations, mon objectif ici n’est pas de démonter tes rêves de carrière. On va voir qu’être dev, ça ne s’improvise pas et surtout; ça ne s’apprend pas en quelques mois.
Vendre du rêve
Premièrement, on arrive sur un de ces sites et ça indique tout de suite la tonalité:
[…] des formations au code inclusives pour les chercheurs d’emploi qui souhaitent devenir développeurs.
Lui, il est soft. Un autre mensonge:
Devenez développeur, 90% de pratique + 10% de théorie
Sur un autre:
[…]. Grâce à notre méthodologie et nos coachs, le monde du digital n’aura plus aucun secret pour toi.
Première chose: on ne dit pas « digital », bordel. Ceci est digital:
Le domaine d’Internet, c’est numérique. Maintenant, les choses sérieuses.
On va voir ça en quelques points, pour diviser les sujets et faire en sorte que ça soit un peu plus clair.
Être dev, ce n’est pas pisser du code…
C’est également avoir des connaissances en amont pour prévoir des problèmes, soumettre des solutions à des problèmes qui n’existent pas encore, prévoir une architecture logicielle (ce qui est également un métier à part), faire des choix technologiques (Pourquoi utiliser Laravel plutôt que Node ? Pourquoi Vue plutôt que React ? Quel API va-t’on utiliser pour gérer les paiement ? Etc). C’est pouvoir faire ces choix et faire en sorte que tout ça fonctionne ensemble.
Être dev, c’est également être læ chef·fe d’orchestre de ton application, du back, du front, du mobile et de toutes les librairies que tu vas utiliser dans ton code en ayant fait des choix avant même de commencer à développer. Que ça soit sur la méthodologie, les outils, la manière dont on va se séparer les tâches et plein d’autres choses, évidemment.
Être dev, ce n’est pas que du travail de groupe…
On dit souvent qu’une des compétences que tu dois avoir pour être dévelopeur·euse, c’est la capacité de travailler en équipe. Cette capacité, on peut la résumer comme suit:
- Pouvoir discuter avec tes collègues
- Pouvoir émettre des solutions à ton équipe
- Ne pas taper taon collègue parce qu’iel regarde son clavier en tapant plutôt que son écran (ça, c’est dédicasse à mon junior).
Souvent, on va t’assigner des tickets et si tu fais chier tes collègues toutes les 5 minutes parce que tu n’arrives à rien, tu vas juste te faire remballer violemment. Cependant, j’ai aussi connu des personnes avec un bachelier (bac+3) ne rien comprendre à leur métier (pire que moi), ce point n’est pas là que pour les formations.
Être dev, c’est plus que des outils ou des langages
Oui c’est bien, tu vas apprendre HTML (sic: ce n’est pas de la programmation), le CSS (sic: lui non plus), PHP avec un framework (en général Laravel), Javascript (avec Node), Git, etc. Parfois, tu vas avoir l’occasion de toucher à d’autres langages. Dans ces formations, tu as aussi l’équivalent des piscines
où tu vas devoir te démerder avec tes collègues qui n’y connaissent guère plus que toi dans leur domaine à devoir résoudre des problèmes “du monde réel”.
Petit scoop: tout ce que tu vas voir n’est que la base des bases, le n
du mot notions
et au pluriel parce que c’est plus long.
Dans le monde réel, tu as toujours des expert·e·s qui pourront t’aider, des personnes toujours mieux calées que toi si vraiment tu galères. Comme dis plus haut, c’est surtout être chef·fe d’orchestre de ton application, faire en sorte que tout roule. Le code n’est que l’outil que tu vas utiliser pour parvenir à tes fins. Des outils, il en existe une infinité. Des IDEs, des librairies, etc. Il y a également des principes qui ne sont pas inhérents au code comme le versionnement sémantique, une expertise dans un domaine, que ça soit UX, design ou même base de données.
La conception d’une base de données, c’est plus que des CREATE TABLES
, c’est la conception d’un schéma de base de données, du respect des règles ACID, c’est d’autres schémas comme mon bien-aimé diagramme de séquence qui permet de conceptualiser la façon dont va s’orchestrer un use case à travers ton application ou un diagramme de navigation, parce que quand tu es seul·e dans une petite boîte, tout ça est à réfléchir; personne ne le fera pour toi, sauf si tu es accompagné·e d’une personne avec un peu plus d’expérience… si elle a ces compétences.
En parlant d’outil, voici, par exemple, ceux que j’utilise absolument tous les jours:
- PHPStorm (et pas qu’en mode éditeur de texte, je te parle d’un vrai IDE avec la gestion de bases de données, d’intégration de Git, de refactoring, etc)
- Codium
- Homestead (ça on en parlera très, très prochainement)
- Un logiciel pour faire des requêtes (Insomnia ou Postman par exemple)
- Composer
- Yarn
- Docker
- Des terminaux (pour git, gestions des droits, gestion des dépendances, etc, etc…)
- ESlint
- Et surtout: un moteur de recherche
Parce que tu vas passer plus de temps sur Google ou DuckDuckGo qu’à coder pour ton application. En étant dev, c’est très compliqué de te souvenir de tout, tu auras presque toujours ton navigateur ouvert sur la documentation pour te souvenir comment envoyer un mail en queue avec Laravel ou la documentation d’un component
de Vue. Et le plus dur avec les moteurs de recherche, c’est d’apprendre à bien chercher.
Avec ces outils, il y a des principes…
… que tu vas juste étudier en surface.
- La programmation orientée objet mais pas les concepts SOLID.
- Le clean code, ce n’est pas pour les maniaques.
- Le « Test Driven Development » non plus (en incluant l’écriture de bons tests).
- Les API (SOAP ou REST par exemple), c’est la Zone 51.
- Le refactoring… tout un art.
- Le debuggage, ce n’est pas avec des
console.log
.
Pour dire, j’ai du faire des cours à mon junior concernant la POO, JWT ou la communication entre une API REST et un front-end en Vue. Ça fait deux semaines que je lui bourre le crâne d’informations dont il n’a jamais entendu parlé et qui sont pourtant indispensables pour être dev en 2020, pour preuve: la quasi totalité de ce qu’on produit aujourd’hui utilisent ceci.
Tu n’es pas prêt·e.
Des personnes qui sortent de ces formations, j’en ai connu un paquet. Dans les grosses boîtes, rares sont celles qui finiront réellement dev, les autres devront « faire leurs preuves ». Quand tu vas sortir d’une formation intensive, tu ne connaîtras que très peu voir pas du tout ce qu’est le métier de dev, tu ne l’as même pas effleuré. Oui, tu as du l’étudier pendant plusieurs mois d’affilé, les formateur·rice·s t’on abreuvé de leur savoir avec des informations que ton cerveau n’a pas eu le temps de traiter, la principale cause étant…
…C’est vraiment trop court
Certaines formations disent dix mois, d’autres six, toutes en incluant un stage en entreprise. Pour l’anecdote, j’ai fait mon stage de fin d’année la troisième année de mon cursus et j’étais littéralement paumée. Alors un stage après quelques mois de formations, je suis très dubitative.
Oui, iels te promettent que tu vas apprendre PHP, Laravel, Javascript, Node, git etc, mais tu n’utiliseras jamais ce que tu as appris en entreprise. Pour git par exemple, tu n’entendras certainement pas parler du saint rebase
, en Laravel tu n’auras même pas idée que tu peux utiliser des queues
, ou des crons
, etc. Le fonctionnement derrière un langage, tu n’en verras même pas les couleurs.
C’est quoi la différence entre les déclarations par valeur et par référence ? Tu vas juste tomber sur le problème et comprendre comment tout ça fonctionne — en partie — derrière. Ce sont des principes que tu vas rencontrer partout, dans tous les langages, mais que tu vas réellement coder qu’avec des langages de bas niveau comme C ou C++ que tu n’apprendras juste pas dans ces formations. Ces langages sont la base de la base de la programmation actuelle, du moins en arrière plan, pas dans les paradigmes, parce qu’un paradigme est encore au dessus du fonctionnement interne des langages (déclaratif, impératif, objet ou fonctionnel).
On va te vendre du rêve, te dire que tu es prêt·e à livrer une application au client. Ça sera peut-être vrai; mais qu’en est-t’il de la maintenance du truc derrière ? Un code qui fonctionne, c’est bien, un code qui est maintenable: c’est mieux.
Un danger pour la profession ?
C’est ici que je me fais taper. Un·e dev, ça coûte cher. Quand une entreprise qui cherchent quelqu’un ayant la capacité de developper son application web, mobile ou desktop, il s’attend à avoir de la qualité. Il paie pour cette qualité et il en veut pour son argent. Quand quelqu’un qui sort d’une formation intensive, se lance en freelance et offre des prix juste dérisoirs pour le marché, c’est juste un danger pour notre travail; parce que chaque dev représente aussi ses semblables, si tu fais de la merde, on y passe tou·te·s.
Chaque personne qui sort d’une école ou d’une formation représente aussi, pendant un moment, le lieu où elle s’est formée. Tu as beau gérer la fougère, si ton camarade de classe fait de la merde, toute l’école en pâtit. C’est pour cela que les “grandes écoles” sont souvent élitistes ou que d’autres sont purement éliminatoire (y compris où j’ai fait mon bachelier).
Derrière cette masquarade, des héros
Alors oui, j’ai beau défoncer et détester ce que les formations intensives font, il y a une chose que je respecte encore plus profondément que je ne les déteste, ce sont les formateur·rice·s. Iels ont des couilles, sérieux ! Pourquoi je dis ça ? Parce que, personnellement, je me sentirai extrêmement frustée de ne pas pouvoir apprendre à d’autres personnes mon métier de façon complète afin qu’iels sortent au moins prêt·e·s en sachant qu’iels devront grimper le Mont Olympe.
Et c’est une chose que je regrette, parce que mon rêve, ce n’est pas d’être développeuse; c’est de partager mes connaissances à d’autres et qu’iel aiment ce que je fais autant que moi, c’est de voir davantage de nanas ultra skillées dans le milieu et, réellement, former des personnes, souvent des jeunes, au métier de dev web et leur permettent d’envoyer du feu dans leurs équipes, d’être au minimum autonomes dès le début et surtout qu’iels soient fier·ère·s de ce qu’iels font au quotidien, parce que c’est un métier souvent considéré comme « facile ». Comprenez par là qu’avec ces formations, les personnes se demandent pourquoi faire une formation courte (= 3 ans) ou longue (= 5 ans) alors qu’on peut le faire en 6 mois ?
Pourtant, il y a de larges bénéfices à faire un cursus plus long, même en cours du soir ou en promotion sociale, plutôt qu’une formation de quelques mois seulement, la seule raison est, selon moi, qu’un·e développeur·euse ne fait pas que coder… loin de là.
Image d’illustration: Marvin Mayer