Reconversion dans une carrière de développeur web
Introduction
L'essentiel des contenus vidéo à consulter listés ici sont en anglais qui est la langue de travail dans l'industrie du développement web. Il n'est toutefois pas requis d'être bilingue, beaucoup de développeurs français n'ont qu'un anglais moyen/passable, mais une compréhension minimale est malgré tout nécessaire.
Qu'est-ce que le développement web ?
Définition
Le développement web est le fait de développer (construire) des sites / applications web et des serveurs visant à héberger ces sites / applications web.
Le développement web et la programmation en général
La programmation est le fait de construire un ou plusieurs programme(s) en utilisant un langage de programmation. En ce sens, le développement web fait partie de la programmation mais ce n'en n'est pas la seule discipline.
Un langage de programmation est un langage permettant de définir des instructions qui seront ensuite exécutées par un ordinateur.
Par exemple : le développement mobile, la data science, l'écriture de programme embarqués (par exemple : logiciel faisant fonctionner les voitures, avions, etc.) et biens d'autres disciplines font également partie de la programmation.
Ces disciplines sont toutes différentes et utilisent souvent des langages de programmation différents. Ces différents langages de programmations partagent toutefois l'essentiel de leurs concepts et l'apprentissage d'un premier langage facilite beaucoup l'apprentissage d'un second.
Les langages nécessaire au développement web
Le développement web nécessite de maîtriser au minimum trois langages dans cet ordre :
- HTML : le langage permettant d'insérer des balises dans une page web.
- CSS : le langage permettant de styliser (rendre beau) les balises présentes dans une page web.
- Javascript : le langage de programmation permettant d'insérer des instructions et de la logique dans une page web et dans des serveurs.
Développement web vs développement mobile
Le développement web est différent du développement mobile qui vise le développement d'applications mobiles qui sont téléchargeables via des "App store" sur IOS & Android.
Ces deux types de développement sont malgré tout assez proches conceptuellement et certains outils permettent d'utiliser les langages du développement web pour effectuer du développement mobile. Toutefois ces outils relèvent d'une pratique avancée qui n'est pas abordée ici. Malgré tout, une fois le cursus détaillé ci-après effectué, ces outils ne seront pas compliqués à prendre en main.
Comment apprendre le développement web en 2021+ ?
Et plus généralement comment apprendre la programmation
Objectifs
L'objectif du développement web étant de construire des sites / applications web et / ou des serveurs, il est logique que l'apprentissage soit tourné vers la construction de sites / applications web 😉
Pour cela il faut penser cet apprentissage comme celui d'un artisanat. Vous commencerez donc par la construction de projets simples avant d'aller ensuite des projets de plus en compliqués.
Enfin le développement web et la programmation ne sont pas des disciplines que l'on apprend par coeur. Ce sont des formes d'artisanat digital que l'on apprend en construisant des choses et donc en pratiquant. Ne pas se souvenir de telle ou telle façon de réaliser quelque chose n'est pas en soit un problème, il est plus important de savoir comment retrouver l'information nécessaire en ligne.
Ecosystème / méthodes d'apprentissage
-
Google est ton ami
Aujourd'hui toutes les informations nécessaires pour apprendre le développement web sont disponibles gratuitement en ligne. Il est donc tout à fait possible de devenir dévelopeur web en utilisant les ressources gratuites en ligne pour se former.
C'est d'ailleurs ce que font les développeurs professionnels au quotidien lorsqu'il leur faut apprendre un nouvel outil ou trouver une réponse à un problème. Pour cette raison, cette méthode présente plusieurs avantages :
- Elle forme au métier de développeur en plus de permettre d'acquérir les compétences en programmation.
- Elle est gratuite
- Elle encourage la débrouillardise et la résilience, qui sont des compétences importantes chez les développeurs web 😁
Cette méthode est également plus difficile car la responsabilité de l'apprentissage pèse entièrement sur vous. Il peut en effet être difficile d'affronter seul des nouveaux concepts.
C'est par cette méthode que je me suis reconverti au développement web après des études de droit. L'objectif de ce document est de faciliter cette approche en fournissant une liste de contenu à la difficulté progressive. Il s'agit de faciliter l'accès à aux ressources en les listant ici et de vous guider en les organisant en fonction de la difficulté des sujets.
-
Les formations en ligne payantes ou gratuites
Ces formation en ligne encadrent votre apprentissage et fournissent un cursus progressif :
La formation de mozilla est la plus proche de l'option "Google est ton ami" et mérite que l'on y jette un coup d'oeil car le site developer.mozilla.org est un outil important de documentation et d'information du développement web.
-
Les bootcamps
Il existe également des "bootcamps" qui sont des organismes de formation mixant enseignement en ligne et physique. Ces formations sont toutefois relativement chères (plusieurs milliers d'euros) et ne donnent pas une formation plus avancée que ce que l'on peut trouver en ligne. Toutefois, pour certains ayant besoin d'être encadré dans leur apprentissage, ces formations plus classiques présentent un avantage.
Les différents types de source
-
La documentation des outils
De la même façon qu'une perceuse a un manuel d'utilisation, les outils utilisés par les développeurs sont eux aussi documentés (par exemple : reactjs). Une partie importante du travail des développeurs web est lié à l'utilisation de différents outils et donc à la lecture de leur documentation pour comprendre comment les utiliser.
-
Les tutoriels en ligne
Les tutoriels peuvent être disponible sous forme de vidéo (c'était mon format préféré au début de mon apprentissage) ou de texte. Ils sont disponibles sur de nombreuses plateformes (youtube, medium, udemy, etc.) et leur qualité varie. Il faut donc avoir un regard critique dessus et se concentrer sur les tutoriels produit par des éducateurs crédibles. C'est particulièrement important au début de l'apprentissage lorsque votre sens critique sur le sujet du développement web n'est pas encore très développé.
-
La débrouille 😉
Une bonne façon de s'approprier un nouvel outil ou un nouveau concept est de jouer avec dans le code pour en découvrir les possibilités.
Les outils de développement
La construction de site internet se réalise par l'écriture de code dans un langage de programmation. Il faut donc écrire du texte.
Pour cela, les développeurs utilisent des éditeurs de texte. En 2021, l'outil recommandé dans le développement web est Visual Studio Code, toutefois d'autres éditeurs de texte comme Sublime Text sont également très bien. Personnellement je recommande d'utiliser Visual Studio Code.
Méthodologie
Les ressources que vous trouverez ci-après sont sous format vidéo. Je vous recommande, en particulier au début, de commencer par imiter ce que fait l'instructeur et plus généralement de suivre ses indications.
Une partie importante du début de l'apprentissage est basé sur l'imitation de l'instructeur et la compréhension de nouveaux concepts. Il ne sert à rien d'aller trop vite et il faut mieux prendre son temps, quitte à revoir plusieurs fois le même passage d'une vidéo pour bien comprendre ce qui se passe.
Ordre d'apprentissage
Il important de commencer par le HTML et le CSS (ces derniers peuvent être appris ensemble) avant de se lancer dans le Javascript. En effet, l'apprentissage de ce dernier requiert des bases correctes en HTML & CSS pour être appris correctement.
Avant de commencer
Avant de vous lancer dans le visionnement de vidéos. Je vous recommande d'installer Visual Studio Code.
Enfin, un petit mot d'encouragement : au cours de votre apprentissage, vous ferez beaucoup d'erreurs, vous vous se tromperez souvent et vous aurez l'impression de ne pas comprendre certains concepts et pratiques.
C'est tout à fait normal, et d'ailleurs les développeurs professionnels font eux aussi des erreurs et tâtonnent parfois plusieurs heures avant de réussir à faire fonctionner leurs programmes comme ils le souhaitent.
Objectif
L'objectif du cursus ci-après est de vous donner les connaissances nécessaires à la construction de projets vous permettant d'être embauché comme développeur web "Full Stack", c'est à dire compétent à la fois dans la construction d'interface mais également de serveur.
A la fin de ce cursus, vous aurez un niveau professionnel se situant entre développeur web junior et développeur web intermédiaire et vous serez en capacité de postuler aux offres d'emplois correspondantes et de réussir la majorité des tests techniques qui vous seront soumis.
Plan
- Débutant
- Introduction au HTML et CSS
- Introduction au Javascript
- Approfondissement HTML et CSS
- Approfondissement Javascript
- Intermédiaire
- Introduction au contrôle de version
- Introduction aux extensions VSCode et autres outils d'assistance du développeur
- Approfondissement CSS
- Approfondissement Javascript général
- Introduction aux frameworks Javascript (React)
- Introduction à NodeJS - construction de serveur en Javascript
- Introduction à l'authentification & l'authorization
- Introduction au déploiement d'un serveur NodeJS
- Introduction aux bases de données
- Introduction au SQL
- Introduction au NoSQL
- Projets Full Stack (PERN, MERN)
- Avancé
- Approfondissement au contrôle de version
- Introduction à Typescript
- Introduction à NextJS
- Introduction aux tests automatiques
- Instructions à la recherche d'emploi de développeur.
Contenu
Débutant
Introduction au HTML et CSS
Je vous recommande de commencer par la playlist suivante et d'en suivre tout les tutoriels:
Une fois cette playlist finie, je vous recommande de suivre les suggestions de l'éducateur dans la dernière vidéo de la playlist et de continuer avec les playlistes suivantes :
Introduction au Javascript
Il s'agit maintenant de se familiariser avec le Javascript. Pour cela, regardez la playlist suivante et suivez en tout les tutoriels:
A la fin de ces introductions, vous devez savoir comment créer un page web sur votre ordinateur, la remplir avec du HTML et la styliser avec du CSS. Après vous être familiariser avec le Javascript, vous savez comment l'utiliser pour interagir avec le DOM.
Approfondissement HTML et CSS
On aborde maintenant le CSS "mobile first". En effet depuis que les smartphones sont devenus le principal moyen pour les utilisateurs de consulter les sites internets, il est nécessaire de prendre en compte leur besoin en matière d'interface en premier.
Il s'agit ensuite de s'approprier les enjeux SEO lié au contenu et à la structure de l'HTML d'une page web.
Approfondissement Javascript
Il s'agit maintenant d'apprendre comment utiliser le Javascript asynchrone qui est principalement utilisé pour la communication entre l'interface et des ressources extérieures à la page web avec la playlist suivante.
Après ces approfondissements, vous êtes familier avec le CSS Responsive et comment utiliser le CSS pour différents types de "devices" (smartphone, tablettes, ordinateur). Vous êtes également familier avec le Javascript asynchrone. Vous avez maintenant une connaissance élémentaire de la construction d'interface.
Intermédiaire
Introduction au contrôle de version
Le contrôle de version permet aux développeurs de contrôler les changements qu'ils effectuent dans leur code. Cela permet également aux développeurs de collaborer ensemble sur un même projet. Pour vous familiariser avec les outils de contrôle de version, je vous recommande de regarder cette vidéo :
Introduction aux extensions VSCode et autres outils d'assistance du développeur
Ces outils ne sont pas obligatoires et vous ne devez pas hésiter à passer cette section si vous n'en ressenttez pas le besoin. Toutefois, ce sont des outils communément utilisés dans l'industrie du développement web et j'encourage donc celui ou celle qui choisira de passer cette étape à y revenir plus tard lorsqu'il s'en sentira prêt.
- Extensions VSCode VSCode permet aux développeurs d'installé des extensions pour faciliter leur travail. Dans la vidéo suivante vous verrez comment les trouver et les installer:
- Autres outils Les outils comme ESLint et Prettier permettent d'avoir un code "constant" dans son formatage et potentiellement de repérer des erreurs automatiquement
Approfondissement CSS
Il s'agit ici d'aborder des nouveaux outils de stylisation basés sur le CSS afin de faire découvrir différentes façon de styliser une page web.
On abordera également les CSS Variables qui permettent notamment de gérer des thèmes de couleurs sur des pages web.
Approfondissement Javascript général
Il s'agit ici de développer des compétences plus approfondies en Javascript et de développer une connaissance et une compréhension plus profonde du langage. Cela permet également s'entrainer à la réaliser des exercices étant parfois donner lors des entretiens d'embauches.
Introduction aux frameworks Javascript (React)
L'objectif de cette section d'introduire les framework Javascript. Elles permettent de construire des interfaces complexes et réactives plus aisément. La connaissance d'au moins une des ces frameworks est souvent un pré-requis à l'embauche aujourd'hui.
Il existe aujourd'hui 5 frameworks "majeures": SolidJS, VueJS, Svelte, Angular et React. Toutes ces frameworks sont construites autour de la notion de composant (c'est à dire une partie d'une interface, par exemple un bouton) réutilisable. Elles ont néanmoins chacune leur propre approche.
Ce cursus se concentra sur l'utilisation de React car c'est la framework la plus populaire aujourd'hui et celle dont la connaissance facilitera le plus votre embauche à court terme.
Pour cela, vous êtes invité à consulter la documentation officielle de React et à consulter les vidéos et playlist suivantes.
Après ces progrès vous avez maintenant des notions solides en Javascript général et CSS, vous avez également une connaissance élémentaire du contrôle de version et de React. Ces connaissances forment une base solide vous permettant de créer et développer sur le long terme des interfaces complexes. Vous avez maintenant un niveau junior.
Introduction à NodeJS - construction de serveur en Javascript
L'objectif de cette section est d'introduire la construction de serveur en Javascript. Jusqu'à présent le cursus s'est focalisé sur la construction d'interface (ou "Front End development"). Il s'agit maintenant de vous initier aux aspects serveur (ou "Back End development").
Pour rappel, la construction d'un serveur n'est pas nécessaire pour tout les types de site internet. Certains sites internet très simples consistent seulement en du HTML, du CSS et un petit peu de Javascript.
Toutefois, la construction d'un serveur est un pré-requis au développement d'applications plus complexes. En effet, le serveur joue un rôle clé dans l'architecture d'applications où, par exemple, les utilisateurs vont créer des comptes, des profiles, etc. Cela est notamment dû au fait que ces informations doivent être stockées dans des bases de données dont l'accès doit être protégé. Le serveur d'une application peut également remplir de nombreux autres rôles comme par exemple: envoyer des emails aux utilisateurs pour changer leur mot de passe ou encore effectuer des tâches récurrentes et automatiques.
Pour se familiariser avec cet aspect du développement web, vous êtes invité à consulter la playlist suivante:
Introduction à l'authentification & authorization
L'objectif de cette section est d'introduire les notions d'authentification et d'autorisation ainsi que certaines implémentations (JWT et session) de ces concepts.
- NodeJS Auth Tutorial (JWT)
- Session vs Token Authentication in 100 Seconds
- JWT vs Cookies for Authentication
- Express-session middleware & Install and configure express-session
Introduction au déploiement d'un serveur NodeJS
Il existe de nombreuses façon de déployer un serveur NodeJS:
L'exemple suivant montre un déploiement d'un serveur NodeJS sur une VM (machine virtuelle). Il s'agit ici d'un exemple de déploiement très simple.
Des connaissances en SSH sont parfois nécessaire pour déployer des serveurs, si besoin, consulter la vidéo suivante.
Introduction aux bases de données
Il s'agit ici d'introduire différents types de base de données utilisées communément par les développeurs. Ces bases de données ont des caractéristiques différentes et présentent des avantages différents selon les situations. Il existe un grand nombre de type de base de données mais les deux types de bases de données principaux sont : SQL et NoSQL (Document, "In memory" (Redis)).
Le type de base de données le plus ancien et répandu est le SQL. En effet, les bases de données utilisant le SQL sont ce qu'on appelle des bases de données "relationnelles" . Elles sont particulièrement adaptées pour modéliser des données ayant des relations entre elles, par exemple: le profile d'un utilisateur (photo de profile, prénom, nom) et son compte (email et mot de passe).
Pour se familiariser avec ces outils, vous êtes invité à regarder ces 4 vidéos introductives :
Introduction au SQL (PostgreSQL)
L'objectif de cette section est de vous permettre d'acquérir des connaissances élémentaires dans le langage SQL et dans la base de donnée PostgreSQL. Ces connaissances élémentaires vous permettront de pouvoir réaliser des opérations telles que la création, l'édition, la recherche et la suppression de données.
Introduction au NoSQL (MongoDB & Redis)
L'objectif de cette section est de pouvoir réaliser des opérations telles que la création, l'édition, la recherche et la suppression de données dans deux autres types de base données.
Pour la base de donnée de type Document, la base de donnée MongoDB est un outil accessible et facile d'utilisation pour les débutants, c'est donc celle-ci que l'on étudiera ici.
Pour la base de donnée de type In-memory, la base de donnée Redis est un outil de référence dans l'industrie en plus d'être relativement simple d'utilisation.
- Document (MongoDB)
- In-memory (Redis)
Après ces introductions au développement serveur et aux bases de données, vous avez les connaissances nécessaires pour construite des serveur web et des API contrôlant l'accès à des ressources stockées dans des bases de données.
Projets full stack (Front end et Back end)
Maintenant que vous êtes familier avec le développement front end et back end, il est temps de joindre ces deux domaines dans la construction de projets "Full stack" pour lier ces connaissances et réaliser des projets "entiers".
Néanmoins, avant de se lancer dans ces projets, il sera probablement bon de se familiariser avec / se remémorer certaines notions de React qui seront utiles pour ces projets un peu plus importants:
- Gestion de l'état global dans une application React:
On abordera deux types de projets full stack dans cette section:
- PERN (PostgreSQL, Express, React, Node)
- MERN (MongoDB, Express, React, Node)
- Shopping List (this include knowledge of Redux)
Il n'est pas obligatoire de réaliser ces deux projets. Je pense notamment qu'il est suffisant de réaliser le projet de Todo app du PERN Stack si vous appréciez utiliser PostgreSQL mais si vous souhaitez utiliser MongoDB alors le projet MERN stack peut convenir.
Après la réalisation d'un de ces projets, vous avez réalisé votre première application "full stack" qui permet à un utilisateur d'utiliser une interface dynamique pour interagir avec votre serveur web et sauvegarder des données dans une base de donnée. Vous avez maintenant un niveau junior confirmé.
Avancé
Approfondissement au contrôle de version
Il s'agit ici de dépasser le stade des commandes "de base" telles que git add
, git commit
, git push
, git pull
pour aller plus loin et découvrir des concepts et stratégies plus avancés.
Contrôle de version avancé
Ce tutoriel aborde des concepts tels que les Rebases interactives, "Cherry-Picking" et les sous-modules. C'est un tutoriel avancé qu'il n'est pas nécessaire de compléter avant de rechercher un emploi dans l'industrie.
Introduction à Typescript
Maintenant que vous êtes à l'aise en Javascript, il est important de s'intéresser à Typescript.
Typescript est un langage qui ajoute un système de type au Javascript. Cela permet au développeur de repérer plus rapidement et facilement des erreurs potentielles dans son code. Il permet également de documenter son code grâce aux types ce qui facilite également la collaboration entre développeurs.
Typescript a été créé en 2012 par Microsoft et devient rapidement un outil de référence dans le développement web professionnel. Sa bonne maîtrise est déjà un pré-requis pour les postes les plus rémunérateurs et donc, son apprentissage est un très bon investissement.
Je vous recommande les playlists suivantes dans cet ordre:
- JavaScript to TypeScript: Beginner to Master
- TypeScript Setup With Node & Express
- No BS TS
- Advanced TypeScript
Optionnel:
Introduction à NextJS
NextJS est une "framework de framework". C'est en effet un outil qui facilite le développement d'application full stack React et NodeJS. C'est un outil très populaire en 2021 qui permet de construire des applications full stack rapidement et de bien structurer le projet.
Je recommande une rapide introduction via : NextJS in 100 seconds puis ensuite de prendre le temps de suivre le tutoriel complet de NextJS. Vous pouvez également aller lire la documentation.
Introduction aux tests automatiques
Les tests sont une partie importante du travail d'un développeur professionnel. En effet, ils permettent de s'assurer du bon fonctionnement du code, au moment de l'écriture mais également au moment où sont effectué des changements dont on pourrait ne pas connaître tout les effets.
Ils sont particulièrement importants à la collaboration entre développeur pour éviter qu'un des développeurs casse, sans le savoir, quelque chose écrit par un autre développeur.
Tests d'applications React:
- React Testing Library Tutorial
- TypeScript/React Testing: Components, Hooks, Custom Hooks, Redux and Zustand
Tests NodeJS:
Bravo ! Vous avez maintenant le niveau d'un développeur web intermédiaire et vous pouvez légitimement postuler à des offres d'emplois des postes des développeurs Full Stack React Typescript NodeJS.
Instructions à la recherche d'emploi de développeur
- Postuler à des postes juniors peut être bénéficiaire
Malgré que vos connaissances dépassent celles attendues pour un développeur junior, cela peut néanmoins être une meilleure idée que de postuler aux offres de postes juniors. Cela peut paraître contre-intuitif mais un développeur embauché en tant que junior sera plus accompagné par ses collègues développeurs ce qui facilitera votre première expérience.
En effet, vos connaissances dépassent désormais celles d'un junior mais vous êtes encore loin d'être un développeur web senior. De même si vous compétences "dures" (c'est à dire votre capacité à construire des solutions avec du code) se sont beaucoup développées avec ce cursus, les compétences "soft" (c'est à dire la capacité à collaborer au sein d'une équipe et de communiquer les enjeux techniques par exemple) sont très importantes dans la réussite de votre carrière.
Il vous reste donc de nombreuses choses à apprendre mais à ce stade je vous recommande de chercher un poste de développeur professionnel car c'est en pratiquant professionnellement que l'on apprend le plus. En effet, rien ne vaut de se confronter à des problèmes réels et de travailler en équipe pour progresser.
Pour préparer votre recherche d'emploi, je vous recommande maintenant de réaliser un projet Full Stack en Typescript avec NextJS. Vous pourrez ensuite l'héberger publiquement sur votre Github et il montrera vos compétences lors des processus de recrutement.
Si vous ne savez pas quoi construire, voici deux idées de projets :
Enfin, il peut être plus aisé de trouver un poste "Front end" / "Back end" même si vous avez des compétences full stack, donc n'hésitez pas à postuler à ces postes là si vous en rencontrer
- Comment trouver un poste de développeur en pratique ?
Le monde du recrutement dans le secteur du digital peut paraître particulier lorsque l'on vient d'un autre secteur.
En effet en raison du manque important d'employés dans notre secteur, beaucoup d'entreprises ont recours à des services de chasseurs de tête (ou recruteurs) pour trouver leurs prochains employés. Vous serez donc potentiellement contacté par de nombreux recruteurs qui chercheront à en savoir plus sur vous et vos expériences professionnelles en tant que développeur.
A ce stade de votre carrière vous n'aurez, dans la plupart des cas, pas encore suffisamment d'expériences professionnelles pour correspondre aux critères des postes pour lesquels ces recruteurs sont mandatés (sauf pour des postes juniors mais les recruteurs sont plus souvent mandatés pour des postes intermédiaires à sénior).
C'est pourquoi je vous recommande de rechercher des postes directement sur des plateformes de recherche d'emploi. D'après mon expérience les plus pratiques sont :
Vous pouvez également mettre votre profile sur des plateformes de mise en relations entre entreprises et candidats, j'avais pour ma part mis mon profile en ligne sur fiftytalents et cela à débouché à mon premier emploi.
Enfin, je vous recommande également d'effectuer une veille sur les sites des différentes startups et scaleups françaises. En effet, celles ci mettent en ligne leurs ouvertures de poste et cela vous permettra de postuler directement avec l'entreprise. C'est ainsi qu'un de mes amis à trouver son premier poste de développeur après sa reconversion, pour l'histoire il a été embauché comme développeur junior à Algolia qui est une belle scaleup française et qui recrute en continue tout type de profiles.
- Comment se déroule un processus de recrutement dans le digital ?
Le processus de recrutement se déroule en plusieurs étapes dont le nombre varie selon les entreprises. Il y a toutefois certaines étapes qui seront toujours présentes dans ce processus.
-
Evaluation du "fit" candidat et fiche de poste
Cette étape est en général effectuée par un recruteur ou une personne du département RH de l'entreprise. Il s'agit d'évaluer si le candidat correspond à la fiche de poste pour le RH et pour le candidat d'évaluer si la fiche de poste lui convient.
Dans la mesure où cette étape est souvent réalisée avec un recruteur / RH qui ne possède pas de compétence technique, l'évaluation du fit technique est limité à la vérification que le candidat connais bien les outils mentionnés dans la fiche de poste.
On vous demandera par exemple, (pour un poste Front end React):
- Êtes-vous familier avec React?
- Quel type de projet avez vous réalisé avec cet outil ?
- Combien d'années d'expérience avez vous avec cet outil ?
Le "fit" culturel est également évalué lors de cette étape, cela peut vouloir dire différentes choses selon les entreprises mais généralement il s'agit de vérifié que le candidat n'est pas une personne avec qui il est difficile de travailler.
-
Test technique
Une fois le "fit" candidat et fiche de poste établi, et parfois un autre entretien avec une personne technique de l'entreprise, le candidat se voit proposer un test technique.
Ce test vise à vérifier que le candidat possède bien les compétences techniques qu'il a mentionné dans son CV et au cours des étapes précédentes du processus de recrutement.
Il y a de nombreux type de tests techniques avec des niveaux de difficulté, des objectifs et des durées différentes en fonction du poste en question.
On peut considérer qu'un bon test technique permet de vérifier la capacité du candidat à réellement effectuer le travail requis par le poste. Le test technique est idéalement assez court (entre 30min et 3h, maximum une demie journée), peut être effectué en remote quand le candidat aura le temps de le réaliser et permet également à l'évaluateur du test de comprendre comment le candidat pense et résout les problèmes.
Quelques exemples de tests techniques que j'ai eu à réaliser ou dont j'ai eu des échos :
- A partir d'une API publique, réaliser une interface en Typescript et React permettant de montrer la donnée extraite de l'API et de filtrer les résultats. Durée 3h.
- Construire une interface avec un formulaire en Typescript et React. Durée 30min.
- A partir d'un code déjà fourni, modifier le code pour ajouter certaines fonctionnalités tout en respectant les conventions et outils présents dans le code. Durée 3h.
- A partir d'un design, construire l'interface correspondant au design avec certains outils de l'entreprise fournis au candidat.
Pour conclure, certaines entreprises (Google, Facebook, Spotify, etc.) réalisent toutefois des entretiens techniques plus poussés et visant à évaluer des compétences d'ingénierie logiciel plus générale et avancée (compréhension de concepts tels que les "Data structures", "Design patterns", "Big O notation" et la connaissance de certains algorithmes). A priori lorsque vous chercherez un poste junior dans des petites à moyennes entreprises, ces connaissance ne sont pas attendues.