Dur dur d'être "bébé" dev. 👨🏻‍💻 (Partie 1)

Le générique masculin est utilisé dans ce texte uniquement dans le but d’en alléger la forme et d’en faciliter la lecture.

Pour ce premier article (🎉), je tenais à aider les développeurs juniors sur le marché du travail, et notamment ceux en reconversion professionnelle via une formation accélérée.

Je ne m'engagerai pas sur les commentaires qui ont été faits ou qui peuvent l'être sur ces formations, en étant moi-même issu, mais tenais simplement à partager quelques trucs et astuces qui je l'espère, vous permettront d'accéder plus facilement à cette tant convoitée première expérience professionnelle, qu'il s'agisse d'un stage, d'une alternance ou d'un emploi.

DISCLAIMER : Je ne prétends nullement détenir quelconque vérité. Les quelques conseils prodigués dans les lignes qui vont suivre ne font que refléter mon opinion et expérience sur le sujet.

Cet article sera décomposé en 2 parties :

  • Post-formation et recherche d'emploi
  • Lettre de motivation et entretien

Partie 1 : Post-formation et recherche d'emploi

Inutile de vous mentir, si vous sortez d'une formation accélérée en développement en 2021, vous allez galérer. Un nombre croissant de personnes dans le même cas que vous, une situation sanitaire que l'on connaît et qui a mis à mal le recrutement dans l'IT qui se relève doucement, et probablement d'autres facteurs, font qu'à l'heure actuelle, il est bien difficile de décrocher cette première expérience que vous convoitez tant. Sachez toutefois que cela n'est pas une fatalité, et en travaillant sur quelques points, et beaucoup de travail personnel, je suis persuadé que vous devriez vous démarquer de la masse et réussir cette reconversion professionnelle.

N'utilisez pas (insérer nom d'une techno) avant de maîtriser les fondamentaux !

React ?! Tu connais JavaScript ES6 au moins ?!

Vue.js ? N'y pense même pas, c'est même pas développé par un GAFA."

Angular ? Non mais t'as vu ce que Google a fait au passage d'AngularJS à Angular 2 ? Qui te dit qu'ils vont pas recommencer ?

Je suis prêt à parier que vous avez pu déjà lire ou entendre des phrases similaires sur les Internets, et que vous devriez également maitriser les fondamentaux (voire davantage) du langage que vous apprenez avant d'utiliser des librairies ou frameworks comme cela est très souvent le cas dans les bootcamps. Alors oui, mais en fait non.

En effet, et je ne peux dire le contraire, il est important de connaître les bases du langage avec lequel vous évoluez, et je vous invite fortement à acquérir le maximum de connaissances sur le langage et la conception logicielle avant de vous aventurer dans l'apprentissage de techno comme Vue.js ou React. Cependant, n'attendez pas de tout connaître sur le bout des doigts avant de choisir l'outil avec lequel vous vous sentez le plus à l'aise, car au final une seule réalité compte, celle du marché.

Et bien que cela soit fortement regrettable, car je pense qu'il serait plus utile que les offres d'emploi soient davantage centrées sur la capacité des développeurs à produire du code de qualité et maintenable, le marché quant à lui recherche surtout des développeurs avec 1/3/5 années d'expérience sur nom de techno.

Alors oui, apprenez ces fondamentaux, et non, n'attendez pas trop avant de vous engager dans l'apprentissage d'une techno en veillant bien à approfondir vos connaissances théoriques en parallèle de la pratique.

Attention à ne pas trop vous éparpiller quand même, sans quoi votre évolution se retrouverait freinée.

C'est en forgeant que l'on devient forgeron

Il n'y a rien de plus vrai en ce qui concerne le milieu du développement et il s'agit probablement du point le plus important de cette liste.

Vous lisez ce conseil partout et pourtant, il reste loin d'être appliqué. La faute notamment à ce fameux tutorial hell dans lequel il est tellement facile de s'embourber et perdre son temps à regarder des vidéos sur Youtube en ayant l'impression d'avoir tout compris pour au final se retrouver devant une feuille blanche (ou noire si vous êtes adepte du dark mode) au moment de coder. Je ne jette la pierre à personne, je me suis fait avoir aussi.

⚠️ Attention ! Je ne dis pas que les tutoriels sont à bannir, ils peuvent être utiles dans le cas où vous souhaiteriez obtenir des informations sur un point précis. Je vous conseille néanmoins d'essayer de trouver une méthode qui vous correspond, puisque nous sommes tous différents et apprenons chacun à notre manière, afin d'en retenir le maximum d'informations.

Voici par exemple un procédé tout bête que je connais bien puisque l'appliquant régulièrement.

Tenter et retenter d'implémenter la fonctionnalité en amont du visionnage du tutoriel, afin de comparer ma solution à celle de l'auteur, et le refaire après visionnage pour ancrer le tout dans ma mémoire.

Alors oui, ça prend beaucoup plus de temps que de regarder une vidéo en vitesse de lecture x1.5. Tentez, échouez, recommencez :

L'apprentissage se fait par l'échec.

Vous pouvez également reprendre un projet développé lors d'un tutoriel, la fameuse 'to-do list' et l'agrémenter de nouvelles fonctionnalités (authentification si vous souhaitez en savoir davantage sur les JWT par exemple, enregistrement en base de données pour la partie back-end) et réalisez divers projets de plus en plus conséquents.

Bref, pratiquez, pratiquez, pratiquez !

Le portfolio

Il faut un portfolio pour faire la différence avec les autres développeurs juniors

Celle-ci aussi vous avez lu dans d'autres articles, n'est-ce pas ?

Et bien là aussi, j'aurais tendance à dire "oui" et "non". Certes, avoir un portfolio ne pourra que vous mettre en avant et vous apportera de la visibilité vis-à-vis des recruteurs mais gardez bien en tête que celui-ci devra se démarquer de ceux réalisés par les personnes qui ont eu la même idée que vous.

Autrement dit, si votre vitrine personnelle se résume à un template Bootstrap que vous aurez récupéré pour y ajouter votre photo et en modifier le contenu pour y décrire les différentes projets que vous aurez effectués dans le cadre de votre formation, cela ne vous servira pas à grand chose.

Je vous conseillerais plutôt d'élaborer un projet dans son entièreté (si vous voulez en faire plusieurs libre à vous mais concentrez-vous déjà sur un), qu'il soit full-stack ou non suivant vos affinités et vos désirs quant à l'orientation que vous souhaitez donner à votre carrière.

Il n'est ici nullement question de réinventer la roue et développer l'idée qui ferait de vous un millionnaire (si jamais vous l'avez cette idée ne vous privez pas 😅) mais plutôt de reprendre une application web de type réseau social (Facebook, Twitter) ou de commerce en ligne de votre choix et de reproduire non pas uniquement d'un aspect visuel mais également fonctionnel tout ou partie de ce que vous pouvez trouver sur ces derniers. (Authentification et autorisation, gestion de l'état de votre application, enregistrement des commandes dans une base de données dans le cadre de l'e-commerce, envoi de mail lors de l'inscription, etc...)

Ce faisant, et si vous êtes aussi doué et créatif que moi, vous n'aurez déjà pas à réfléchir à l'aspect visuel de votre application puisque vous n'aurez plus qu'à recopier ce qui existe déjà et pourrez vous concentrer sur les features à implémenter.

Ce projet, si hébergé, bien testé et documenté à l'aide d'un beau README, pourra servir de vitrine technique à d'éventuels recruteurs pour démontrer vos capacités et de base sur laquelle vous appuyer lors de discussions pendant des entretiens avec vos potentiels futurs collègues développeurs.

Rencontre des patrons de TA région ! Envoie "React" au 8 12 12 !

Vous avez passé un nombre incalculable d'heures devant votre écran à mettre en place une architecture back-end en Node.js et développer une interface ultra léchée en React ou Vue.js sur votre application ? Parfait ! Allons maintenant voir les offres d'emploi pour jeunes développeurs pas loin de chez vous. 💪

Vous, sur Indeed :

Node / React

Le marché :

Développeur junior C#/.NET / Angular

Développeur junior Java JEE / Angular

Vous vous rappelez il y a quelques lignes quand je vous parlais de ce que recherchait le marché ? Nous en sommes en plein dedans là.

Apprendre une techno, c'est bien. Pouvoir l'utiliser dans un cadre professionnel, c'est mieux ! 🤷‍♂️

Vous remarquerez en effet lors de vos recherches que certaines technos ressortent davantage que d'autres sur les titres d'annonces. Ces dernières sont intrinsèquement liées à la typologie d'entreprises, comme le domaine de la banque/assurance pour les exemples ci-dessus, mais également à la région dans laquelle vous vous trouvez.

A titre d'exemple, vous aurez notamment plus de facilité à trouver des offres d'emploi vous proposant d'évoluer sur une stack JS/TS dans des grandes villes que dans des zones à la densité de population plus faible. Résidant en province, j'ai néanmoins pu noter que des changements commencent doucement à s'opérer via l'implantation de startups dans des incubateurs situés ailleurs qu'à Paris.

Mais si votre objectif est de trouver du travail rapidement, je vous suggèrerais tout de même de bien analyser les offres de votre lieu de résidence afin de mieux choisir la ou les technos que vous devrez approfondir.

NB: Alors oui, vous me direz que le télétravail va devenir la norme dans le milieu, et que tout cela sera de l'histoire ancienne mais pour l'instant ce n'est pas le cas du tout, notamment pour le télétravail total. De plus en plus d'entreprises n'auront d'autre choix que d'accorder des jours en distanciel à leurs employés afin d'attirer des candidats de plus en plus demandeurs, mais à l'heure actuelle, la majorité d'entre elles forcent leurs employés à venir encore 2 ou 3 jours par semaine.

Mêlez vous à vos semblables

Votre lieu de résidence justement, parlons-en !

Si vous avez la chance (ou pas, selon comment vous voyez la chose, mais dans ce cas là c'est plutôt une chance) d'habiter dans une ville de taille moyenne ou importante, profitez de l'occasion pour participer aux "meetups" qui peuvent y être organisés. La situation sanitaire actuelle a mis un frein aux rencontres en présentiel depuis presque deux ans maintenant, mais les choses reprennent doucement.

En tant que junior, vous ne vous sentirez peut-être pas légitime à aller à ce type d'évènements et aurez peur de ne pas tout comprendre à ce qui y sera dit, mais il s'agit surtout pour vous d'une opportunité de rencontrer d'autres développeurs, et de commencer à créer un réseau.

Tester c'est douter.

tester_cest_douter.png

Et vous voulez douter. Je peux vous l'assurer.

S'il y a bien une chose sur laquelle je veux insister dans ce court article et pour laquelle je ne saurais que trop vous conseiller de passer du temps, c'est d'apprendre à tester de façon automatisée votre code. Malheureusement, au vu de la durée des formations de développement, cet aspect est bien souvent relégué au second plan quand il n'est simplement pas exclu des programmes, et ça ne vous aidera clairement pas.

En effet, il s'agit là d'une compétence technique énormément recherchée et qui en plus de faire de vous un meilleur développeur, vous donnera un avantage certain sur les autres demandeurs d'emploi.

Pour une excellente introduction sur le sujet, je vous invite à consulter l'article suivant sur le non moins excellent blog "Practical Programming" :

Importance des tests dans le développement

Lisez

Une fois que vous aurez acquis de bonnes bases et complété plusieurs projets de votre côté, n'hésitez pas à réserver du temps pour lire et en apprendre davantage sur tout ce qui tout touche à la conception logicielle. Il y a tellement de choses à apprendre, que ça soit autour du Clean Code, des principes SOLID et Design Patterns, du Test-Driven Development (TDD) ou bien encore de l'architecture hexagonale ou du Domain-Driven Design (DDD).

Bien qu'il soit possible de trouver d'excellentes sources en ligne autour de ces sujets, je ne saurais que trop vous conseiller de privilégier la littérature anglophone, très réputée.

⚠️ Ces ouvrages intemporels vous accompagneront tout au long de votre carrière et ne fixez pas pour objectif de tout avoir lu en quelques semaines. Choisissez un sujet, trouvez les ressources qui lui sont liées et apprenez progressivement. C'est un marathon qui vous attend, pas un sprint.

Pas facile toutefois lorsque l'on débute de savoir quoi apprendre et par où commencer dans la lecture. Mais sachez que vous pouvez facilement trouver des "parcours" explicitant des ordres de lecture afin de pouvoir vous concentrer sur la lecture et l'apprentissage.

Exemples de parcours :

Joebew42 - Study Path

Thialala - Software Engineering Learning Guide

Open-Source

Au premier abord, l'open-source peut paraître intimidant. On ne sait pas réellement comment s'y prendre, on a peur de réaliser quelque chose de mauvais qui sera vu par nombre de personnes, j'en passe et des meilleures. Et pourtant, il s'agit là une nouvelle fois d'une réelle façon de vous démarquer vis-à-vis d'autres candidats.

En parcourant les repos GitHub open-source, vous pourrez voir des issues avec le label good-first-issue vous donnant la possibilité de réaliser votre première contribution sans normalement que vous n'éprouviez trop de difficultés.

Tout dans l'open-source n'est pas lié au code et vous n'avez pas à commencer votre périple par l'implémentation de fonctionnalités sur la dernière librairie en vogue, mais vous pouvez tout aussi bien démarrer par la correction ou l'ajout de documentation à un outil ou bien encore la traduction de celle-ci dans votre langue maternelle.

Je vous invite à lire ce guide sur la contribution open-source pour plus de détails :

Open Source - How to contribute ?

Good first issue

To be continued

C'est ainsi que se termine cette première partie sur les quelques tips que je souhaitais vous partager afin de vous aider dans la recherche d'emploi post-formation, plutôt centrée sur ce que vous pouvez faire pour vous mettre en valeur.

Dans la seconde partie nous traiterons de tout ce qui concerne le CV et la lettre de motivation et comment aborder au mieux les entretiens auxquels vous serez je l'espère conviés.

À bientôt !