Article original : How to Go from Junior Developer to Mid-level Developer

Par Sam Williams

Obtenir ce premier emploi de développeur est l'objectif de nombreux nouveaux programmeurs. Mais j'ai découvert que beaucoup moins de développeurs veulent franchir les étapes suivantes de leur carrière.

Je me suis retrouvé dans cette situation, alors j'ai élaboré un plan pour faire progresser ma carrière. En cinq mois, j'ai appris tout ce dont j'avais besoin pour obtenir trois offres d'emploi qui ont presque doublé mon salaire. Ce n'était pas facile, mais cela en valait définitivement la peine.

Voici comment j'ai fait, ainsi que les étapes que vous pouvez suivre pour faire de même.

Mais d'abord, puisque cet article est approfondi, voici un résumé rapide de mes conseils.

Un guide de carrière pour développeur junior en 7 étapes

  1. Décidez de votre objectif. Quel type de travail voulez-vous et quand le voulez-vous ? Vous pouvez apprendre beaucoup en six mois d'études à temps partiel si vous vous en donnez les moyens.
  2. Trouvez 10 à 20 descriptions de poste actuelles pour les emplois que vous aimeriez finalement obtenir. Créez une liste de toutes les exigences et du nombre de fois où chacune est mentionnée.
  3. Identifiez les 3 à 5 compétences principales généralement requises pour ces emplois, que vous ne possédez pas actuellement.
  4. Utilisez des cours pour accélérer l'apprentissage d'une nouvelle compétence. Les cours peuvent être une excellente idée car ils vous font gagner du temps et des efforts.
  5. Postulez à des emplois avant d'avoir tout appris. Bien interviewer est une compétence que vous devez également pratiquer.
  6. Construisez des projets avec ce que vous avez appris - c'est la meilleure façon de consolider la compétence.
  7. Obtenez l'emploi pour lequel vous avez travaillé dur.

Si vous cherchez à devenir développeur full-stack et que vous voulez savoir ce que vous devrez apprendre, j'ai un guide gratuit des compétences et outils dont vous aurez besoin.

L'objectif

Je prévoyais de voyager en Asie du Sud-Est pendant 3 à 6 mois, et je savais que je voulais obtenir un meilleur emploi à mon retour. Mon emploi de développeur JavaScript junior m'avait montré trois choses :

  • J'adorais coder, non seulement comme un hobby mais aussi comme un travail.
  • J'aimais le travail de développement back-end. C'était plus basé sur la logique, ce que j'aimais vraiment.
  • Je n'aimais pas beaucoup Angular.

Avec cette connaissance, je me suis fixé un objectif pour savoir où je voulais être à la fin de mes voyages, et ce que je devais apprendre pour y parvenir.

Mon objectif était de devenir un développeur full stack de niveau intermédiaire.

La reconnaissance

Pour devenir le développeur full stack de niveau intermédiaire que je voulais être, et pour savoir où je devais m'améliorer, j'ai cherché des emplois que je voudrais vraiment obtenir à la fin.

Tout d'abord, j'ai vu ce que ces emplois exigeaient d'un candidat et ce qui était souhaitable. J'ai créé une liste de toutes les compétences et je les ai classées par ordre de fréquence dans ces descriptions de poste.

Avec cette liste, j'ai regardé les compétences les mieux classées que je ne possédais pas encore. Vous n'avez pas besoin de savoir faire tout ce qui est sur cette liste pour obtenir l'un de ces emplois. En moyenne, un nouveau recruté ne possède que 70 à 80 % des compétences requises listées pour le poste. La plupart du temps, les choses qui sont vraiment des critères d'exclusion ne sont que quelques domaines clés. Nous visons à atteindre ce niveau et ensuite toute autre compétence est un bonus.

Grâce à cette recherche, j'ai dressé une liste de choses que la plupart des emplois que je visais exigeaient :

  • Une solide compréhension de JavaScript
  • Au moins un framework front-end (généralement React ou Angular)
  • Capacité à créer une API REST
  • Connaissance d'une ou plusieurs bases de données

Ce processus peut vraiment être utilisé par n'importe qui dans n'importe quelle carrière. Mais il fonctionne particulièrement bien avec le développement, car il y a généralement une liste spécifique de compétences qu'un rôle "exige".

Élaboration du plan

Image

Avec ces informations, je savais que je devais améliorer mes compétences dans quelques domaines clés :

  1. Je devais finir de lire You Don’t Know JS. Cette série de livres m'a aidé à vraiment comprendre les bases de JavaScript, alors j'ai pensé qu'elle serait idéale pour apprendre des choses plus avancées.
  2. Je devais devenir très bon dans un framework front-end. J'ai étudié Angular, Vue et React et j'ai choisi React. J'avais déjà fait un peu de React et je l'aimais, je n'étais pas fan d'Angular, et Vue n'était pas demandé dans beaucoup d'annonces d'emploi.
  3. Bien que je puisse à peu près créer une API Express à partir de zéro, je n'étais pas très confiant et je ne pouvais faire que les bases. Je devais améliorer mes compétences dans ce domaine, surtout si je voulais un emploi qui privilégiait le travail back-end.
  4. Je pouvais soit rester avec les bases de données relationnelles (postgreSQL), soit apprendre une nouvelle base de données. J'ai décidé d'apprendre MongoDB car elle était massivement populaire et ajoutait les bases de données NoSQL à mon CV.

Je n'étais pas sûr de la durée de mes voyages, alors j'ai décidé de planifier mon apprentissage comme suit :

  1. Apprendre React (et Redux) tout en lisant You Don’t Know JavaScript.
  2. Devenir beaucoup meilleur dans le développement d'API et apprendre MongoDB.
  3. Créer quelque chose avec les compétences que j'avais apprises.
  4. Apprendre d'autres choses.

J'ai fait cela pour une très bonne raison. Si je mettais fin à mes voyages après trois mois et que j'avais terminé l'étape #1 mais que j'étais encore en train de faire l'étape #2, je pourrais toujours postuler pour des emplois de développeur de niveau intermédiaire — ils seraient simplement limités principalement aux emplois front-end.

Si je faisais d'abord l'apprentissage du back-end, après 3 mois, je ne serais toujours pas très confiant avec un framework front-end. Cela serait probablement un point bloquant pour chaque emploi de niveau intermédiaire. Je pourrais essayer de postuler pour un rôle de développeur back-end uniquement, mais ils semblaient tous vouloir beaucoup plus d'expérience que je n'en avais.

Apprendre React et Redux, et lire You Don’t Know JS

Image pour l'article

J'avais déjà fait un peu de React, en utilisant des vidéos YouTube et des tutoriels web normaux, mais cette fois, je voulais m'assurer que je l'apprenais correctement. Cela m'a conduit à suivre le cours React JS and Redux: Mastering Web App sur Udemy.

Ce cours était brillant, et la petite expérience que j'avais avec React a beaucoup aidé, mais je n'avais aucune expérience avec Redux. À la fin de ce cours, j'avais l'impression de pouvoir construire un site web assez complexe et j'étais confiant avec la syntaxe et les formats de React ainsi que le contrôle des données de Redux.

Ce cours m'a pris environ 2 semaines à compléter, mais je travaillais dessus pendant une heure ou deux, une ou deux fois par semaine. J'étais en vacances en Asie, donc ce n'était pas ma priorité principale.

En plus de travailler sur le cours lorsque j'avais mon ordinateur portable, j'ai lu les derniers livres de la série You Don’t Know JS. J'ai stocké la version en ligne Github sur mon téléphone et je l'ai lue pendant que je me reposais entre les escalades.

Ayant acquis une certaine expérience pratique, j'ai compris beaucoup plus de choses que la dernière fois où j'avais essayé de lire ces livres. Des choses comme les Promesses sont vraiment difficiles à comprendre si vous ne les avez jamais utilisées.

Devenir beaucoup meilleur avec Express et apprendre MongoDB

Maintenant que je me sentais à l'aise pour créer des front-ends, il était temps de travailler sur mes compétences back-end.

J'ai de nouveau décidé de faire un cours Udemy. J'ai constaté que, comme ce sont des packages complets, les choses progressent bien et tendent à couvrir l'ensemble du processus. Bien sûr, vous pouvez apprendre toutes les mêmes choses gratuitement sur YouTube ou d'autres tutoriels en ligne, mais ils ne semblent jamais couvrir un sujet entier aussi bien.

La question suivante était de savoir quel cours suivre. Il y a des cours gratuits et payants, courts et longs.

J'ai décidé d'investir en moi et d'acheter un cours (10 $ est un petit investissement pour une telle quantité d'informations) et j'ai réussi à réduire le choix à environ 3 cours. Leur durée variait entre 7 heures et 25,5 heures.

J'étais tenté par le cours de 7 heures — je pourrais le terminer en une ou deux semaines tout en profitant de mes vacances. Le cours de 25 heures prendrait évidemment beaucoup plus de temps, mais semblait couvrir plus de sujets. À ce stade du voyage, j'avais décidé que je voyagerais aussi longtemps que mon solde bancaire me le permettrait, alors j'ai choisi le cours de 25 heures.

Node avec React : Développement Web Fullstack

Image pour l'article

J'ai en fait fait une critique complète de ce cours ici, et c'est un excellent cours.

Ayant fait le cours React et Redux auparavant, le contenu React était répété. Ainsi, pour ne pas perdre de temps, vous pouvez simplement sauter les vidéos que vous connaissez déjà ou mettre la vidéo à une vitesse de 2x et "regarder en diagonale" pour un rappel ou pour vérifier s'il y a des morceaux de conseils utiles.

Le contenu back-end est là où ce cours excelle. Il couvre une grande variété de sujets, y compris : oAuth, gestion des e-mails, paiements, gestion des clés API, MongoDB, mongoose et déploiement avancé.

La raison pour laquelle ce cours est si long est qu'il couvre tant de sujets avec tant de détails. C'est à la fois bon et mauvais, mais j'ai fini par regarder la plupart des vidéos à une vitesse de 1,5x et faire pause lorsque j'en avais besoin.

Ce cours a pris plus de temps que le premier, mais j'ai réussi à le terminer en environ 1,5 mois.

L'une des choses avec lesquelles j'ai le plus lutté était le DevOps, comment déployer et héberger l'application de manière fiable. Si je devais le faire maintenant, je choisirais probablement Serverless car il élimine beaucoup des barrières au développement back-end.

J'ai commencé à écrire

À un moment donné, alors que je séjournais en Chine, j'ai décidé d'écrire un article sur la difficulté de faire du développement en Chine. Il a été accepté dans la publication freeCodeCamp et compte maintenant 7,1K lectures et 1300 applaudissements. J'étais émerveillé que les gens lisent ce que j'avais écrit et l'aiment.

Image

J'ai décidé que j'allais essayer d'écrire plus d'articles sur ce que je faisais et sur les choses intéressantes que j'avais trouvées. Cela m'a également donné un excellent point de discussion lors des entretiens.

J'ai continué à écrire et cela m'a ouvert des opportunités incroyables. J'ai été mis en avant comme un contributeur principal de FreeCodeCamp, j'ai reçu des offres de travail freelance, et j'ai même obtenu un contrat pour un livre.

Tenir un blog est également un excellent moyen de suivre vos progrès et vous permet de voir comment vous vous êtes amélioré.

Créer quelque chose avec les compétences que j'avais apprises

Maintenant que j'avais tous les outils dont j'avais besoin, je voulais créer quelque chose avec eux. J'en étais à trois mois et demi de voyage et je m'attendais à pouvoir voyager encore 1 à 3 mois.

Cela signifiait que je devrais peut-être commencer à penser aux emplois bientôt si je voulais commencer dès que possible à mon retour.

Pour postuler à des emplois, je devais mettre à jour mon CV et mon portfolio. Cela m'a donné une excellente occasion d'utiliser ce que j'avais appris pour construire un nouveau portfolio en utilisant Node et React.

C'est exactement ce que j'ai fait, et voici le résultat. Comme je l'ai dit auparavant, je ne suis pas un designer, mais cela fonctionne bien. J'ai même utilisé une API Wordpress pour héberger des articles de blog sur la page.

Image pour l'article

Je savais que le design était affreux, alors je l'ai posté dans un sous-reddit de critique de design web. J'ai reçu beaucoup de bons conseils, dont la plupart tournait autour de passer les prochains mois à rechercher et à apprendre les bases du design web. Ce n'était pas exactement ce que je cherchais, mais il y avait quelques bons morceaux de conseils.

Un conseil que j'ai suivi était d'utiliser les frameworks de design existants. Cela a abouti à un site web complètement nouveau, n'utilisant aucune des compétences que j'avais utilisées auparavant, mais il semble moins criard. Si je devais le refaire maintenant, j'essaierais probablement de suivre quelque chose comme Material UI.

Postuler à des emplois

Le prochain endroit que j'ai visité était une zone d'escalade éloignée au Laos. À ce stade, je savais que j'avais deux semaines au Laos, puis environ quatre semaines en Chine avant de rentrer à la maison. Il était temps de commencer à postuler pour un emploi.

Si vous n'avez pas de date limite comme je l'avais, je vous recommande d'en fixer une. Cela vous aide vraiment à vous motiver pour terminer votre projet ou commencer la recherche d'emploi (personne n'aime parcourir les offres d'emploi).

Si vous ne voulez pas fixer de date limite, fixez un point dans votre apprentissage où vous allez commencer à postuler pour des emplois.

Cela ne doit PAS être après avoir tout appris ! Apprendre à passer des entretiens est aussi une compétence et vous devriez acquérir de l'expérience avec cela dès que possible et aussi souvent que possible. Commencez à postuler pour des emplois qui vous intéressent moins pour pratiquer tout le processus.

Progression

Au cours des mois et demi suivants, j'ai postulé à plus de 50 emplois, j'ai eu des conversations par e-mail et LinkedIn avec environ 25 personnes, et j'ai réussi à obtenir cinq entretiens d'embauche pour la semaine suivant mon retour.

La plupart de mes interactions se faisaient par e-mail, mais si quelqu'un voulait appeler directement, je faisais de mon mieux pour accommoder cela (j'étais huit heures en avance).

Je pense qu'avoir une conversation réelle est un excellent moyen d'améliorer la relation entre vous et l'autre personne, augmentant les chances qu'ils vous invitent à un entretien ou vous recommandent pour un emploi.

Si vous ne vous sentez pas à l'aise d'avoir un appel ou un Skype avec des gens, vous pouvez vous en tenir aux e-mails, mais je pense que vous ratez une occasion d'améliorer vos chances.

Construire plus de choses

L'un des entretiens m'a demandé de prototyper ce que je ferais pour une entreprise avec un site web affreux et un service client minimal. C'était cool car cela m'a poussé à apprendre le prototypage.

J'ai écrit une série d'articles sur la façon dont j'ai prototypé et développé le site web. Vous pouvez voir le site web ici et lire mes articles ici.

Cela m'a également donné l'opportunité de mettre en pratique ce que j'avais appris au cours des 4 derniers mois et de construire quelque chose qui mettait en valeur ce que je pouvais faire.

Image pour l'article

La dernière chose que j'ai faite sur ce projet a été de créer un chatbot pour les retours de commandes. J'ai dû apprendre le fonctionnement des chatbots et cela m'a pris environ une semaine pour obtenir une version fonctionnelle décente. Cela a été un facteur énorme dans l'obtention de mon emploi et cela a conduit à de nombreuses autres opportunités.

Apprendre une ou deux compétences légèrement alternatives que vous pouvez mettre en valeur peut très bien fonctionner. Assurez-vous simplement que c'est après avoir acquis vos compétences de base.

Entretiens

Maintenant que j'avais ces cinq entretiens de prévus, je devais les convertir en offres d'emploi.

Préparation

J'ai écrit des articles sur la préparation à un entretien JavaScript et la maîtrise du processus d'entretien. Je me suis assuré de cocher toutes les cases.

Je connaissais tous les points que je voulais souligner, comment répondre aux questions sur mes faiblesses, et ce que chaque entreprise faisait.

Les entretiens

J'ai toujours été assez bon aux entretiens même si je suis naturellement introverti. J'ai dû m'apprendre à agir de manière plus extravertie et à m'engager avec les personnes qui m'interviewaient.

Si vous vous trouvez timide et réservé lors des entretiens, je vous recommande de pratiquer cela comme vous le feriez pour toute autre compétence. Trouvez une bonne ressource (charisma on command est une excellente chaîne YouTube) et répétez ce que vous apprenez. Commencez avec des amis et de la famille qui vous donnent de faux entretiens, puis essayez de trouver des personnes que vous connaissez moins et qui pourraient être plus similaires au vrai développeur.

J'ai eu des tests techniques dans trois quarts des entretiens (ayant fait les deux autres en ligne) et ma préparation a porté ses fruits. Il y a eu de petits faux pas, mais j'ai parlé de ma réflexion et j'ai terminé toutes les tâches correctement.

Votre entretien est également une opportunité d'en savoir plus sur l'entreprise et sur ce que cela pourrait être de travailler là-bas. Une entreprise peut sembler géniale sur le papier mais ne pas être à la hauteur, ou pourrait être l'inverse. Choisir la bonne entreprise est une grande décision, alors assurez-vous de demander toutes les informations dont vous avez besoin.

Les offres et la négociation

Image pour l'article

Lors de mes trois premiers entretiens, j'ai obtenu deux offres. Après le quatrième entretien, je savais que ce n'était pas l'entreprise pour moi, alors je leur ai fait savoir que je ne considérerais pas une offre de leur part. Si vous êtes dans une situation similaire, essayez de ne pas les laisser espérer si vous savez que vous n'accepterez pas une offre de leur part.

Maintenant, j'avais des offres de deux entreprises qui étaient très enthousiastes à l'idée de m'embaucher. Il était temps de négocier. Je n'ai jamais été très bon pour négocier ou demander plus, mais j'ai lu quelques articles et je me suis lancé.

Vous pourriez vous dire : « Eh bien, je ne veux pas fixer des attentes élevées, et l'offre est déjà généreuse, alors je devrais simplement l'accepter. » Non. Négociez.

Ou peut-être : « Je ne veux pas commencer du mauvais pied et paraître avide avec mon futur employeur. » Non. Négociez.

« Mais cette entreprise est petite et — » Non. Taisez-vous. Négociez.

Extrait de Dix règles pour négocier une offre d'emploi. Je vous recommande de le lire si vous postulez à des emplois.

Je n'ai définitivement pas fait cela parfaitement (ou même très bien), mais j'ai fait quelques choses qui ont renforcé ma position. J'avais deux offres égales, mais j'avais une préférence pour une entreprise. J'ai écrit un petit script et (après quelques exercices de respiration pour me calmer) j'ai appelé le directeur de l'entreprise que je préférais.

Hi Dave. Je vous appelle pour vous donner une mise à jour sur ma situation. Merci de m'avoir fait une offre, je suis content que vous ayez pensé que je serais un bon choix pour l'entreprise aussi. J'ai eu une autre offre très intéressante et je prendrai ma décision ce week-end, en vous informant avant lundi à 12h. Il y a une chose qui pourrait vraiment renforcer l'offre. Je vais déménager là où je prendrai un emploi, et une aide pour les frais de déménagement serait incroyable.

Cela ne s'est pas tout à fait passé exactement comme ça, mais cela a beaucoup aidé. J'ai remercié pour l'offre, je leur ai donné une date limite pour prendre la décision, et j'ai demandé une amélioration de l'offre sans simplement demander un salaire plus élevé.

Résumé

J'ai découvert ce dont j'avais besoin pour obtenir les emplois que je voulais. J'ai utilisé cela pour créer un plan et j'ai ensuite utilisé des cours en ligne payants pour accélérer le processus d'apprentissage.

J'ai postulé à des tonnes d'emplois et j'ai obtenu cinq entretiens. Après m'être préparé pour ces entretiens, j'ai fini avec 4 offres, et 2 que je voulais choisir. J'ai négocié les offres des deux entreprises que je préférais et j'ai fini avec un super emploi dans une grande entreprise.

Si cet article vous a inspiré à franchir l'étape suivante pour devenir développeur full-stack, vous devrez connaître les compétences dont vous aurez besoin. Heureusement, j'ai un guide gratuit des compétences et outils dont vous aurez besoin pour devenir développeur full-stack.