Booster son CV quand on est junior
Les étapes pour construire un projet de A à Z qui fera la différence sur un CV
À la sortie de 5 ou 6 mois de bootcamp intensif, il est normal d’avoir du mal à trouver un emploi, qu’il soit en CDI ou CDD.
Lorsqu’un nouveau poste de junior en développement web est ouvert, les recruteurs reçoivent rapidement des dizaines de candidatures.
Comment sortir du lot pour augmenter ses chances d’être pris ?
En boostant son CV grâce à un projet perso complet, cohérent, disponible en production.
Devant l’ampleur de la tâche, vous vous demandez sûrement par où commencer. Je vais donc tenter de vous aider dans ce post, en proposant la suite d’étapes à suivre selon moi pour y parvenir :)
Trouver une idée de projet
La première étape est bien évidemment de trouver une idée de projet à réaliser. L’important n’est pas ici de démontrer vos capacités entrepreneuriales, mais de montrer vos compétences techniques. De fait, je recommande de choisir de copier un site existant, que vous utilisez souvent.
Il est primordial que le site soit en production, c’est-à-dire consultable par n’importe qui à une adresse web.
Lorsqu’un recruteur parcourt un CV, il n’y consacre que très peu de temps, s’il voit que vous avez créé un site et que celui-ci est disponible en ligne plutôt qu’uniquement sur votre GitHub, cela va retenir son attention. Vous allez passer au-dessus de la pile par rapport aux autres développeurs juniors qui auront à leur actif plusieurs micro-projets.
Ce projet doit soulever quelques problématiques, car c’est la façon dont vous les avez traitées qui intéressera le recruteur technique. Voici une liste non exhaustive et dans le désordre de problématiques courantes que l’on est amené à rencontrer “dans la vraie vie” et qu’il est donc intéressant de voir dans votre projet :
une gestion de l’authentification (utilisateurs anonymes et utilisateurs enregistrés)
de la récupération de données via des API (la vôtre et éventuellement des API tierces)
un temps de chargement réduit
une apparence professionnelle graphiquement
un moteur de recherche (qui peut être très simple dans un premier temps)
un code testable et testé (j’y reviendrai)
éventuellement du temps réel (un module de tchat par exemple)
quelques règles métiers (éviter le pur CRUD qui n’a pas grand intérêt)
Quelques exemples de sites à copier
StackOverflow
gestion des utilisateurs et des droits basiques
création d’une API pour exposer les questions, les réponses, les votes, etc.
un moteur de recherche simple par texte et éventuellement par tags
pourquoi pas un module de chat en temps réel sous les questions
des règles métiers intéressantes à gérer comme la gestion de la réputation, les badges, les votes, etc.
YouTube
Évidemment une version très simplifiée sans upload de vidéo mais qui proposerait toutefois :
une gestion basique des utilisateurs entre utilisateurs anonymes et enregistrés
une API pour exposer quelques vidéos récupérées depuis YouTube ou autre
un moteur de recherche simple par tags et titre / description de la vidéo
les commentaires sous la vidéo, les likes, etc.
ProductHunt
gestion des utilisateurs avec distinction hunter / maker / anonymes
API pour exposer les projets ajoutés
moteur de recherche simple par tags et titre / description des projets
gestion des commentaires sur les projets, des votes, mise en avant des projets les plus populaires, etc.
J’ai trouvé une idée de projet, par où commencer maintenant ?
On peut se sentir découragé devant l’ampleur de la tâche. Il faut cependant avoir bien conscience qu’il n’est pas nécessaire de réinventer la roue. Sur toutes les problématiques que vous allez rencontrer, au moins 9 sur 10 auront déjà été rencontrées par des personnes avant vous, et donc déjà résolues. En tant que développeur, il est primordial de se concentrer sur les problématiques au cœur du projet et intégrer des solutions existantes pour le reste.
C’est un exercice intéressant que de refaire soi-même un module de gestion d’utilisateurs ou un module de recherche par exemple. Mais ce sont des choses complexes, dont les problématiques sont récurrentes, et qui ont donc des solutions toutes faites qu’il est pragmatique de vouloir privilégier.
Les entreprises n’attendent pas d’un développeur junior qu’il sache développer ces modules en partant de zéro, mais qu’il comprenne comment les intégrer.
Première étape : choisissez votre langage et framework
Généralement cette étape est plutôt rapide. Le langage que vous allez choisir est très probablement celui sur lequel vous avez été formé durant votre bootcamp. Cela peut être par exemple PHP avec Symfony, ou JavaScript avec Node.js et React par exemple.
Selon votre appétence pour le backend ou le frontend, vous pouvez aussi utiliser un “framework” CSS pour vous concentrer rapidement sur le fonctionnel plutôt que sur l’apparence. Vous pouvez utiliser par exemple Tailwind qui a le vent en poupe en ce moment et qui vous permettra d’obtenir une apparence professionnelle.
Deuxième étape : trouver les solutions / modules déjà existants que vous pourrez intégrer
Comme dit précédemment, la majeure partie des problématiques que vous allez devoir résoudre dans votre projet ont déjà des solutions à disposition qu’il ne vous reste plus qu’à intégrer à votre projet.
Pour tout ce qui est hébergement, rapidité, etc., vous pouvez utiliser des solutions comme Firebase Hosting ou Netlify par exemple.
Ces solutions proposent aussi généralement une gestion de l’authentification des utilisateurs et même des différents rôles à leur attribuer. Avec Firebase il vous faudra utiliser Firebase Authentication. Netlify propose aussi son propre système de gestion de l’identification des utilisateurs.
Pour la gestion de la recherche, je ne peux que vous recommander le service français Algolia, simple à intégrer et extrêmement puissant !
Pour les tests, si vous êtes en JavaScript vous pouvez utiliser Jest ou la combinaison Mocha / Chai. Je vous invite aussi à faire quelques tests end-to-end avec Cypress, ce sera très apprécié par les recruteurs techniques.
Troisième étape : premier commit et première mise en production
Il est très important que votre site soit en production le plus rapidement possible. Même si c’est pour afficher un simple “Hello World”.
Ce faisant, vous allez pouvoir mettre en production votre site le plus souvent possible, pour ainsi être confronté à d’éventuels problèmes d’intégration le plus tôt possible. Le plus tôt vous rencontrez ce genre de problème, moins difficiles ils sont à réparer.
Il est primordial que la mise en production soit la plus simple possible, idéalement cela doit se résumer à un seul script. Par exemple si vous êtes dans un projet JavaScript : npm run deploy
Si vous êtes curieux, je vous encourage même à mettre en place une plateforme de CI/CD, Continuous Integration / Continuous Deployment. Ce genre d’outil permet à votre code d’être directement en production dès que vous poussez un commit sur votre branche git principale par exemple. Il existe plein d’outils pour ce faire, puisque vous travaillez seul, sachez que ce n’est pas une priorité pour votre projet du moment que vous avez la possibilité de mettre en production en une commande. Certains outils disponibles :
Quatrième étape : le rythme de croisière
Maintenant que vous avez définis les solutions principales que vous allez pouvoir utiliser pour votre projet et que votre site peut être en production en une commande, vous entrez dans le rythme de croisière de développement.
Apportez une attention toute particulière à vos commits. Ils témoigneront de votre progression aux yeux d’un recruteur technique. Si vous ne savez pas comment écrire de bons messages de commits, je vous invite à regarder du côté de Conventional Commits.
Continuez de vous former pour répondre aux problématiques que vous rencontrez. Mais ne tomber pas dans l’excès inverse, à vouloir absolument implémenter tous les nouveaux patterns de code que vous avez pu apprendre. Gardez en tête que le côté fonctionnel prévaut avant tout. Une fois que la fonctionnalité est disponible et testée (à minima par un test Cypress), vous pouvez alors prendre le loisir de refactorer votre code pour qu’il soit plus “clean”.
Concernant le Clean Code, je peux vous proposer de rejoindre mon cours sur le sujet si cela vous intéresse :)
Happy Coding !
Cet article vous a plu ? Vous pouvez me soutenir gratuitement en vous inscrivant à mon programme de parrainage, en échange, je vous offre des bons de réduction valables à vie sur tous les cours (actuels et futurs) de CraftAcademy.fr 🎉