Article original : How I navigated the job hunt and landed my dream job

Par Julius Zerwick

Image

Photo par Unsplash

Cet article parle de ma recherche d'emploi pour un poste à temps plein en tant qu'ingénieur logiciel à New York et comment j'ai obtenu mon emploi de rêve. J'avais passé deux ans à développer mes compétences et j'aspirais à travailler dans une grande entreprise technologique avec des standards élevés en matière d'excellence technique.

Je savais que cet objectif ne serait pas facile à atteindre, surtout sans diplôme en informatique, avec peu de réseau à New York et en concurrence avec des ingénieurs issus des meilleures écoles. Ce serait un défi de taille, et j'étais prêt pour un long parcours.

9 semaines plus tard…

Image

Je suis ravi d'annoncer que j'ai accepté une offre de DigitalOcean pour travailler en tant qu'Ingénieur Logiciel II dans leur siège à New York !

Ce succès est le résultat de nombreuses sessions d'étude, d'entretiens simulés, d'heures de pratique et de nombreux défis et rejets. Mais j'ai gardé le moral et j'en suis sorti plus heureux que je ne l'aurais imaginé.

Comment es-tu passé du début à la fin ?

C'est exactement ce dont parle cet article ! Je vais détailler mon processus de préparation pour les entretiens, comment j'ai construit mon réseau et comment je me suis géré pendant cette recherche d'emploi.

Cela dit, chaque expérience est différente et il faut tirer de cet article ce qui vous semble bénéfique. Aucune recherche d'emploi ne ressemble à une autre et il y a différents facteurs en jeu.

Avec cela en tête, plongeons dans le sujet !

D'abord, construire une base solide

Image

Photo par [Unsplash](https://unsplash.com/photos/vII7qKAk-9A?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" rel="noopener">NESA by Makers on <a href="https://unsplash.com/search/photos/software-development?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText" rel="noopener)

Avant toute chose, il est vital d'avoir une base solide dans les fondamentaux de l'ingénierie logicielle. Au lieu de courir après les technologies les plus en vogue, ce qui est important, c'est d'avoir la base technique nécessaire pour apprendre rapidement et en profondeur de nouvelles choses.

À mon avis, la meilleure façon de faire cela est de choisir un langage éprouvé dans l'industrie et de s'y tenir tout en apprenant les variables, les fonctions, les outils, la conception logicielle, les bases de données, les API et la construction d'applications web. Cela m'a permis de me concentrer sur la profondeur de mes connaissances, la maîtrise de la résolution de défis de codage et l'expérience dans la construction de projets de qualité.

Pour construire mes fondamentaux, j'ai choisi d'étudier à Launch School qui offre un programme complet et un processus d'évaluation rigoureux qui garantit que j'ai profondément appris les fondamentaux avant de progresser.

Construire un projet qui impressionne les employeurs et les ingénieurs

Image

Démonstration de SpaceCraft

De nos jours, il existe de nombreuses formations intensives et tutoriels en ligne qui fournissent aux développeurs logiciels en herbe des projets pour les aider à décrocher un emploi.

Cependant, il y a maintenant une saturation sur le marché des développeurs avec des applications CRUD simples ou des clones d'applications populaires comme Instagram, Netflix, Reddit, etc. Ces projets n'impressionnent plus les employeurs ou les autres ingénieurs comme ils le faisaient autrefois.

Cela dit, de nombreux ingénieurs ont besoin d'un moyen de vous évaluer avant de vous recommander et il n'y a pas de substitut pour montrer vos compétences avec un projet solide.

C'est pourquoi Gooi, Nick et moi avons construit SpaceCraft, un REPL collaboratif en temps réel qui permet aux développeurs d'écrire et d'exécuter du code dans le navigateur pour Ruby, JavaScript et Python.

Ce fut une expérience incroyable, et aussi un énorme travail. Vous pouvez en savoir plus sur la construction de SpaceCraft dans cet article ou lire notre étude de cas.

Nous avons passé des centaines d'heures à rechercher comment construire un REPL, activer la collaboration en temps réel, utiliser Docker pour créer des sessions utilisateur isolées et gérer les requêtes utilisateur avec un serveur proxy.

Se vendre efficacement

Bien que SpaceCraft puisse mettre en valeur nos compétences, je devais encore faire en sorte que les gens le regardent. Puisque j'avais déménagé à New York pour ma recherche d'emploi, mon réseau professionnel était presque inexistant et j'ai fait de mon mieux pour me mettre en avant devant autant d'ingénieurs que possible.

C'est pourquoi notre équipe a écrit notre étude de cas, un article sur HackerNoon et a présenté lors de Meetups. Ces efforts nous ont aidés à nous démarquer parmi la mer d'autres candidats et ont généré de l'intérêt de la part des employeurs et des ingénieurs.

Présenter lors de Meetups a été un changement de jeu pour moi car cela a fait connaître mon nom et m'a procuré des recommandations pour plusieurs entreprises, tout en me donnant l'occasion de pratiquer et d'affiner mes compétences en communication.

J'ai également construit un site web personnel et j'ai renforcé mes profils LinkedIn et AngelList afin de faciliter la tâche des entreprises potentielles pour me trouver et voir mon travail.

Consacrer du temps à se vendre et à mettre en valeur ses compétences à travers la rédaction d'articles, la présentation lors d'événements et les sites de réseautage professionnel peut conduire à un grand retour sur investissement dans le processus d'entretien.

J'ai connu une forte augmentation du nombre d'ingénieurs et d'entreprises qui me contactaient après avoir vu mes profils mis à jour et m'avoir entendu présenter, et avoir une vidéo de ma présentation à inclure dans mes e-mails de prospection a entraîné un taux de réponse plus élevé et plus d'entretiens.

Contacter les ingénieurs et les entreprises

Dans le même ordre d'idées, je me suis assuré de contacter régulièrement les ingénieurs des entreprises qui m'intéressaient. En utilisant les demandes de connexion LinkedIn, j'ai eu plus d'une douzaine de rencontres café avec des ingénieurs de DigitalOcean, Cockroach Labs, Oscar Health, DataDog, Peloton, et plus encore. Ces rencontres m'ont aidé à me faire une idée du marché de l'emploi à New York, à entendre un point de vue interne sur la culture d'entreprise et les équipes, et à obtenir des recommandations.

Mon conseil est d'aborder ces rencontres de manière décontractée et avec un intérêt pour le travail, la carrière et l'entreprise de votre collègue ingénieur. Ne demandez pas de recommandation dès le début, souvent ils vous proposeront de vous recommander si vous êtes sympathique et que la conversation se passe bien.

Image

Une autre forme de prospection que j'ai faite était d'envoyer directement des e-mails aux ingénieurs. Chaque fois que je trouvais une offre d'emploi qui me plaisait vraiment, je contactais un ingénieur qui travaille dans l'entreprise via LinkedIn Inmail, en utilisant Clearbit Connect si nécessaire pour trouver les informations de contact.

Dans l'e-mail, j'incluais une introduction sur mon parcours, mon projet le plus impressionnant, un lien vers l'une de mes présentations, et je demandais s'ils étaient ouverts à discuter de la position.

Cette forme de prospection a conduit à mon taux de réponse le plus élevé parmi toutes les autres méthodes, avec près d'1/3 de tous mes e-mails recevant une réponse. N'oubliez pas, la recherche d'emploi est entièrement une question de chiffres et il est préférable d'essayer toutes les formes de prospection pour voir laquelle vous rapporte le plus.

Étudier, pratiquer, répéter

Image

Photo par Unsplash

Cela dit, aucun de ces efforts n'aurait abouti si je n'avais pas les compétences pour réussir les entretiens techniques. Avec une base solide dans les fondamentaux, je devais passer mon temps à résoudre des défis de codage et à étudier des sujets pertinents pour les postes.

Les types de questions et de défis que vous pouvez rencontrer lors des entretiens sont VASTES et souvent vous ne saurez pas à quoi vous attendre. De nombreuses grandes entreprises se concentreront sur les algorithmes et les structures de données, tandis que les startups et les entreprises de taille moyenne peuvent se concentrer sur des problèmes plus « pratiques » comme la refactorisation d'une classe existante ou l'ajout de fonctionnalités à un projet de base.

Mon conseil est d'étudier une variété de défis de codage et de faire de votre mieux pour prédire les questions qu'ils vous poseront. Pour les algorithmes et les structures de données, mes principales ressources pour construire une base et une compréhension conceptuelle étaient :

J'ai également résolu 2 à 3 problèmes par jour sur LeetCode pendant 5 à 6 jours par semaine.

Image

De nombreuses entreprises auront également un entretien de conception de système pour évaluer le niveau auquel vous embaucher. Si vous visez des rôles de niveau intermédiaire à senior, vous devrez consacrer plus de temps à ce domaine.

J'ai trouvé que les meilleures ressources étaient Grokking the System Design Interview et la lecture de divers blogs sur des sujets spécifiques. Voici quelques blogs que je recommande :

Une autre étape très courante consiste à compléter un défi à domicile. La variété de ces défis peut rendre la préparation difficile, mais il existe quelques sujets communs. Plusieurs que j'ai vus étaient :

  • Construire une API RESTful qui gère plusieurs requêtes cURL fournies

  • Construire une application CLI qui stocke les entrées (comme les albums, les artistes et l'année de sortie) et permet aux utilisateurs de les récupérer

  • Construire un jeu en utilisant React/Rails (ex : Tic-Tac-Toe, Blackjack, Démineur)

  • Étant donné une spécification et un exemple du produit fini, créer une page web qui est aussi proche que possible de l'exemple en termes de pixels.

L'avantage est que vous avez plus de temps pour les compléter dans le confort de votre propre maison, et il y a beaucoup d'opportunités d'impressionner en écrivant une suite de tests complète, en identifiant et en traitant les cas limites, et en trouvant des touches supplémentaires à ajouter.

Pendant ma recherche d'emploi, je passais généralement du lundi au jeudi à postuler dans des entreprises, à faire de la prospection et à résoudre des défis LeetCode ou à étudier la conception de systèmes. Je réservais le vendredi et le samedi pour pratiquer la construction d'un projet à domicile. En voici quelques-uns à considérer :

Pour me préparer aux défis de codage en direct, j'ai utilisé Pramp pour des entretiens simulés 3 à 4 fois par semaine, ce qui a considérablement amélioré mes performances.

J'ai déjà écrit sur ce sujet dans Why You Need an Interview Script, mais essentiellement, sous pression, nos capacités mentales peuvent souffrir en raison du sentiment d'être évalué. La meilleure façon de combattre ce problème est d'avoir des entretiens simulés pour recréer l'expérience jusqu'à ce que nous nous y soyons habitués. Avoir un processus de résolution de problèmes a également vraiment aidé à me donner un avantage, et le meilleur que j'ai trouvé est PEDAC.

Savoir ce que vous cherchez dans un rôle et une entreprise

Image

Photo par Unsplash

Avec tout cela en tête, il est important de prendre le temps et de considérer exactement ce que vous cherchez. Avez-vous une forte préférence entre les postes de backend, frontend ou full stack ? Quelle taille d'entreprise souhaitez-vous rejoindre ? Quelles industries vous intéressent ? Et dans quelle direction souhaitez-vous faire évoluer votre carrière ?

Vos réponses à ces questions peuvent avoir un effet dramatique sur les entreprises que vous choisissez pour les entretiens. En tant que développeurs logiciels, nous avons la chance de ne pas manquer d'emplois et d'entreprises cherchant à embaucher, mais il est important de se rappeler ces points :

  1. Il existe une grande variété de rôles et de domaines de travail parmi lesquels choisir, et vous devriez considérer dans quels domaines du développement logiciel vous souhaitez vous spécialiser.

  2. Vous devriez essayer de trouver un rôle et une entreprise dans lesquels vous serez heureux de travailler pendant plusieurs années. Mon opinion personnelle est qu'il est important de construire votre expérience, votre crédibilité et votre réseau professionnel en tant qu'ingénieur et qu'il est préférable de travailler 1 à 2 ans minimum dans chaque rôle, plutôt que de changer d'emploi tous les 6 mois à 1 an.

  3. Tout comme il y a beaucoup de bons emplois dans le domaine du logiciel, il y a aussi beaucoup de mauvais emplois que vous voulez éviter. Tous les emplois ne vous feront pas travailler sur des équipes expérimentées et matures construisant des projets ambitieux et stimulants. Il existe des emplois dans lesquels vous pourriez principalement gérer des tâches fastidieuses, nettoyer du code hérité ou simplement des composants UI mineurs jour après jour.

Prenez donc le temps de réfléchir à ce que vous voulez et listez les choses que vous recherchez dans votre emploi de rêve. Pour ma part, je voulais un rôle principalement axé sur le développement backend avec l'opportunité de :

  • Apprendre un langage compilé comme Go.

  • Travailler sur des systèmes distribués et éventuellement des microservices.

  • Rejoindre une équipe expérimentée d'ingénieurs pour apprendre.

  • Avoir la possibilité de travailler à distance de temps en temps.

  • Travailler dans une entreprise qui valorise la diversité et l'inclusion.

  • Avoir des avantages pour la formation continue.

J'ai activement recherché des entreprises qui offraient la plupart de ces éléments et je n'ai pas passé de temps à postuler à celles qui ne les offraient pas. Bien que toutes les entreprises n'aient pas tout ce que je recherchais, je savais que je serais plus heureux avec le résultat final que si j'avais simplement postulé partout.

Un avantage secondaire était qu'en ciblant les spécificités de mon prochain rôle, j'ai pu concentrer mes études sur des sujets pertinents qui m'ont permis de m'améliorer à chaque entretien, ce qui, je pense, m'a donné l'avantage nécessaire pour décrocher mon poste chez DigitalOcean.

Gérer le cycle des entretiens

Image

Photo par Unsplash

Le processus d'entretien pour le développement logiciel est éprouvant, et le potentiel d'épuisement est très élevé. Typiquement, le processus peut comprendre 3 à 5 étapes, ou même plus, comme suit :

  • Premier contact téléphonique avec les RH ou un recruteur

  • Appel téléphonique avec un ingénieur de l'entreprise ou un responsable du recrutement

  • Défi de codage en direct avec un ingénieur de l'entreprise

  • Projet à domicile

  • Entretien sur place dans l'entreprise

  • Offre potentielle étendue

Épuisant, n'est-ce pas ? Et chaque entreprise est différente, certaines n'ayant que 1 à 2 entretiens avant l'entretien sur place et d'autres prenant des mois !

De ma recherche d'emploi, j'ai vécu un cycle qui se répétait. D'abord, j'avais des premiers contacts téléphoniques avec plusieurs entreprises. Ceux-ci menaient ensuite à des défis de codage, des projets à domicile ou des entretiens techniques téléphoniques. Après plusieurs de ces étapes et opportunités filtrées, les entretiens sur place se regroupaient dans la même semaine ou deux.

Puisque l'intensité de ces étapes augmentait plus je progressais dans le processus, j'avais moins de temps pour de nouvelles candidatures en raison de l'augmentation des études, culminant avec mes entretiens sur place qui me faisaient étudier à temps plein sans envoyer de nouvelles candidatures. Si aucune offre convenable n'était faite, alors je recommençais avec de nouvelles candidatures et le cycle recommençait.

Voici quelques conseils pour traverser ce cycle :

  • Essayez de maintenir une activité de candidature élevée tout au long du cycle. Il est important de continuer à postuler et à faire de la prospection afin de remplir votre pipeline d'entretiens avec de nouvelles opportunités.

  • Ayez un objectif quotidien de candidatures et de prospection à compléter. Mon objectif quotidien du lundi au jeudi était de soumettre au moins 5 candidatures (souvent avec des lettres de motivation) et de contacter 5 ingénieurs pour un café ou pour demander des postes ouverts.

  • Réfléchissez de manière critique à ce que vous attendez de chaque entretien. Vous pourriez obtenir quelques détails lors de votre premier contact téléphonique sur le processus d'entretien, mais demandez toujours plus d'informations afin de vous préparer.

  • Si vous avez un appel avec un CTO, sachez qu'il est courant qu'ils vous posent des questions techniques concernant votre CV ainsi que des questions comportementales.

  • Ne planifiez pas d'entretiens sur place à des jours consécutifs. Ce sont de loin les étapes les plus épuisantes et nécessitent plus de préparation. Accordez-vous toujours au moins un jour de repos entre les entretiens sur place pour vous recharger, réviser les sujets et vous préparer mentalement.

Éviter l'épuisement pendant le processus

Image

À ce stade, je veux souligner l'importance d'éviter l'épuisement pendant la recherche d'emploi. Avec le nombre élevé d'entretiens à compléter et le stress associé, cela peut facilement devenir accablant à certains moments.

Ne vous surmenez pas en étudiant et en codant 6 heures ou plus par jour en plus des entretiens, et consacrez du temps chaque semaine à vous déconnecter et à vous recharger. Cela vous aidera à maintenir votre énergie et votre concentration alors que vous augmentez progressivement l'intensité des entretiens en phase avancée.

Au maximum, j'étudiais 4 heures par jour et je priorisais le travail en profondeur comme décrit dans le livre de Cal Newport, Deep Work, où vous vous concentrez intensément pendant une période sur une tâche plus difficile que ce à quoi vous êtes habitué, sans aucune distraction.

Cela signifiait résoudre des problèmes d'algorithmes ou pratiquer des projets plus difficiles que ceux que j'avais déjà complétés. Cela m'a assuré de continuer à améliorer mes compétences, tout en identifiant mes points faibles et les domaines où je devais étudier davantage.

Et peu importe à quel point ma semaine était chargée, je prenais toujours au moins un jour de congé pour me détendre et me recharger pour les entretiens à venir.

En fin de compte…

Je suis extrêmement heureux des résultats de ma recherche d'emploi et je pense que les approches que j'ai détaillées ci-dessus ont bien fonctionné pour moi. Pour ceux d'entre vous qui sont en recherche d'emploi maintenant, j'espère que cet article vous sera utile. Je recommande également de lire l'article suivant, que j'ai trouvé très utile pour ma recherche d'emploi :

What it took to land my dream software engineering job — Sun-Li Beatteay

Bonne chance à tous ceux qui sont en recherche d'emploi, continuez ainsi !

N'hésitez pas à me faire savoir ce que vous en pensez dans les commentaires ! J'adorerais en savoir plus sur vos expériences de recherche d'emploi et ce qui a fonctionné pour vous.