Guide ultime : Obtenir un rôle d’ingénieur logiciel de premier niveau

L’ingénierie logicielle peut être une carrière incroyablement enrichissante. Mais sans la bonne préparation, il peut être difficile d’obtenir le poste d’ingénieur logiciel que vous avez en tête. J’ai appris cela, alors que je suivais des cours d’informatique au collège pour décrocher un rôle d’ingénieur logiciel (SWE).
J’ai passé des entretiens pour une douzaine de rôles d’ingénieur logiciel dans la plupart des entreprises technologiques que vous pouvez nommer : Google, Apple, Microsoft, et des startups (à l’époque) comme Snapchat et Uber. Je résume ici mes apprentissages, à partir de mes expériences de préparation à l’emploi et d’entretien, pour vous aider à préparer votre voyage dans le monde de l’ingénierie logicielle : du brainstorming des entreprises auxquelles postuler, à l’envoi d’un message froid à un recruteur sur LinkedIn, au perfectionnement de votre CV, à la façon dont les entretiens se déroulent généralement et aux sujets informatiques à étudier.
C’est le seul guide dont vous avez besoin pour décrocher un emploi d’ingénieur logiciel de premier échelon.

Appliquer aux entreprises

Plusieurs grandes entreprises embauchent des ingénieurs de premier échelon. Habituellement, il s’agit de rôles génériques pour les nouveaux diplômés (vous ne passez pas d’entretien pour être spécifiquement un développeur iOS). Ne négligez pas non plus les entreprises non technologiques. Vous pouvez trouver ces postes soit au salon de l’emploi de votre université en parlant à un recruteur, soit en recherchant ces mots-clés sur Google : nom de l’entreprise + carrières universitaires.
Si vous n’êtes pas un étudiant, mais que vous avez plutôt fait la transition vers la technologie via un camp d’entraînement au codage ou en apprenant à coder vous-même, c’est également un bon point de départ. Il y a souvent des emplois de premier échelon affichés à côté de ces emplois d’étudiants. Cependant, si vous faites une transition en milieu de carrière, vous devrez peut-être faire un peu plus de réseautage (par le biais d’amis, d’événements ou de messages froids aux recruteurs).
Voici quelques idées pour savoir où commencer à chercher :

  • Big tech (Facebook, Apple, Amazon, Google, IBM, Cisco)
  • Démarrages technologiques (Snowflake, DoorDash)
  • Finances (Goldman Sachs, Visa, Robinhood)
  • Divertissement (Disney, Viacom)
  • Vente au détail (Macy’s, Target, Walmart)
  • Défense/Aérospatiale (Boeing, Northrop Grumman)

Le message froid parfait de LinkedIn

Inévitablement, il y aura des entreprises qui ne reviendront pas vers vous même après que vous ayez directement postulé. Pour essayer de faire bouger les choses, essayez de vous faire un réseau pour obtenir un entretien. Cela peut se faire soit en contactant les personnes de votre réseau (anciens élèves ou amis), soit en contactant les recruteurs eux-mêmes.
Voici mes 5 règles pour un message froid LinkedIn :

  1. Voyez si une connexion mutuelle peut vous présenter – Les gens sont moins susceptibles d’ignorer ceux qu’ils connaissent déjà.
  2. Restez succinct – Les gens sont occupés. Ne leur donnez pas d’excuse pour lire partiellement votre message avant de le rejeter.
  3. Trouver un terrain d’entente – Si vous avez fréquenté la même école ou travaillé dans la même entreprise, évoquez ce fait pour susciter la familiarité.
  4. Soyez direct – Ne tournez pas autour du pot en essayant de faire la causette. Ce n’est pas le lieu pour cela.
  5. Montrez votre crédibilité – Si vous avez une expérience pertinente, dites-le. Si vous avez des idées particulières, donnez-leur un avant-goût.

Voici un modèle de message froid LinkedIn pour vous aider à démarrer :
Hey, très intéressé à rejoindre et à voir s’il y a un ajustement mutuel ! Je suis un ancien @… J’aimerais beaucoup discuter.
Exemple :
Hey, très intéressé à rejoindre Roblox et voir s’il y a un ajustement mutuel ! Je suis un ancien PM @ Rockstar Games. J’adore le concept de jeu social non structuré. Aimerait discuter.

Résumé

Écrire un bon CV est une forme d’art, qui se résume à deux choses : le format et le contenu.
La plus grande erreur que les gens font avec le format est d’ajouter trop d’informations, le CV finissant par faire deux ou même trois pages. C’est inutile. Restez simple. Votre CV doit tenir sur une seule page. Utilisez l’italique et le gras de manière stratégique ; ils ne devraient vraiment être utilisés que pour aider le recruteur ou le responsable du recrutement à comprendre qui vous êtes et ce que vous apportez (par exemple, utilisez-les pour mettre en gras les sections et les noms des entreprises uniquement).
Lorsqu’il s’agit du contenu, assurez-vous de dire plus en disant moins. Arrêtez les bêtises et utilisez plutôt des chiffres quantitatifs. Les chiffres fourniront des preuves tangibles de vos contributions. Essayez de vous concentrer sur vos compétences. Il n’est pas nécessaire de dire inutilement au recruteur que vous êtes un excellent joueur d’équipe, un visionnaire ou un travailleur acharné. Tout le monde peut le dire. Au lieu de cela, montrez par l’action comment vous avez aidé votre équipe.
Pour plus d’informations, consultez cette liste de contrôle pour vous assurer que votre CV de génie logiciel est poli et prêt.

Un entretien typique

D’après mes expériences, le processus des entretiens de génie logiciel est plus ou moins le même dans chaque entreprise, qu’il s’agisse de Google ou d’une petite startup qui vient de lever sa série B. Voici ce que vous pouvez raisonnablement attendre du processus d’entretien.

Comportemental

Le tour comportemental se fait généralement par téléphone avec un recruteur ou le responsable du recrutement pour le rôle. Au cours de cette conversation, l’entreprise veut savoir si vous êtes un bon candidat pour le poste, à la fois sur la base de vos expériences et de votre capacité à communiquer (et pour évaluer si vous êtes une personne avec laquelle il est difficile de travailler). Maîtrisez bien votre CV, car il est probable que le recruteur ou le responsable de l’embauche vous interroge sur les expériences mentionnées dans votre CV au cours de cette conversation.

  • Plus de questions comportementales : https://www.tryexponent.com/courses/software-engineering/common-behavioral-questions

Défi de codage

Après l’entretien comportemental, vous pouvez obtenir un défi de codage à réaliser sur votre temps libre. Cela pourrait signifier obtenir une liste d’exigences et un squelette de code. On vous demanderait alors de compléter le code et de le soumettre après avoir complété le code dans votre propre environnement.
Plus couramment, les entreprises ont utilisé Hackerrank (ou des outils similaires). Il s’agit d’un environnement de codage en ligne, basé sur un navigateur. Je suggère de vous inscrire à un compte et de vous entraîner à l’utiliser lorsque vous vous préparez aux entretiens, afin de vous familiariser avec l’environnement.
Dans certains cas, les entreprises peuvent vouloir que vous complétiez d’abord le défi de codage avant même de vous appeler pour le tour comportemental. C’est parce qu’ils peuvent avoir beaucoup de candidats en haut de l’entonnoir, et ils ont une certaine façon automatisée de filtrer les candidats dont le code ne passe pas suffisamment de cas de test.

  • Tentez ce problème de « différence de tableaux » : https://www.tryexponent.com/courses/software-engineering/difference-of-arrays

Entretien téléphonique/vidéo

Vous pouvez rencontrer entre 1 et 3 entretiens téléphoniques. Ceux-ci portent généralement sur les structures de données et/ou les algorithmes.
Typiquement, vous obtiendrez un lien vers un document partageable (tel que Google doc ou CodePen). Grâce à ces outils, vous et votre interlocuteur pourrez voir ce que vous tapez en temps réel. On vous présenterait un problème de codage et au fur et à mesure que vous écrirez votre code, l’interviewer pourra voir votre progression.
Soyez prêt à mettre en œuvre des structures de données et des algorithmes courants. Étudiez les questions faciles/moyennes de Leetcode.
Vous devriez toujours donner la solution naïve en premier. En tant que développeurs de logiciels, nous voulons toujours écrire le code le plus optimal. Mais lors d’un entretien, il est possible que le temps s’écoule avant que vous ne terminiez votre solution optimale. Vous gagnerez au moins quelques points dans l’entretien si le temps s’écoule alors que vous écrivez votre solution optimale, mais que vous avez déjà présenté le code de force brute/naïf.
Parfois, vous serez confronté à des questions de conception de système dans ces entretiens téléphoniques également.

  • Pratiquez-vous à concevoir l’architecture de Reddit : https://www.tryexponent.com/courses/software-engineering/design-reddit

Sur place

Les questions de votre sur place sont similaires à celles de votre entretien téléphonique. Si vous êtes arrivé jusqu’ici, donnez-vous une tape dans le dos. Vous y êtes presque ! Dans cette ronde finale, vous serez probablement en train de coder sur un tableau blanc — donc, entraînez-vous à le faire avant de venir à l’entrevue (quelques entreprises comme Snapchat peuvent vous laisser/demander d’apporter votre propre ordinateur portable pour coder sur place).
Il y a aussi typiquement une ronde de déjeuner où vous aurez l’occasion de déjeuner avec l’équipe.

Que faut-il étudier

Soyez très à l’aise pour coder à la fois dans un environnement de développement et sur un tableau blanc. Ici, je vais détailler les sujets de codage que vous devriez étudier.

Comportemental

Ces questions seront abordées lors de votre appel téléphonique initial, mais au fur et à mesure que vous avancez dans le processus d’entretien, il est inévitable que ces questions reviennent (par exemple, pendant le déjeuner sur votre site). Essayez d’être succinct, de parler avec assurance (en terminant vos phrases avec une inflexion vers le bas dans votre ton) et d’éliminer les mots de remplissage (euh, hum, comme) de votre vocabulaire.

  • Parlez-moi de vous.
  • Pourquoi le génie logiciel ?
  • Parlez-moi d’une fois où vous avez fait une erreur.
  • Parlez-moi de votre projet, x, et de ce que vous avez contribué.

Langues de programmation

D’après mon expérience, les entreprises vous permettent de coder dans la langue avec laquelle vous vous sentez le plus à l’aise. Dans mes cours d’informatique au collège (à UCLA), on nous a tous enseigné le C++. Cependant, j’ai passé tous mes entretiens en Java ou en Python. J’ai trouvé qu’il était très facile de reprendre d’autres langages une fois que je me suis familiarisé avec sa syntaxe.
Je suggérerais de demander au recruteur ou au responsable de l’embauche si les entretiens exigent un langage spécifique. Sinon, allez avec le langage avec lequel vous êtes moins susceptible de faire des erreurs.

Structures de données

Soyez familier avec les questions de codage autour de ces structures de données. Soyez également familier avec les compromis, ainsi que la complexité en temps et en espace pour chacune d’entre elles.

  • Array
  • Liste liée
  • Tri/Graph
  • Tableau de hachage
  • Pile/Queueue
  • Heap

Algorithmes

Soyez familier avec les questions de codage impliquant ces algorithmes. Soyez également familier avec les compromis, ainsi que la complexité en temps et en espace pour chacun.

  • Recherche (et Graph search)
  • Tri
  • Programmation dynamique

Selon le rôle et l’entreprise, on peut également vous demander des problèmes de manipulation de bits.

Ressources

Heureusement, il existe une pléthore de ressources en ligne pour vous aider dans votre parcours. Voici celles que je recommande.

Leetcode

Une majorité de vos questions de codage peuvent être trouvées sur Leetcode. Si vous devenez très bon à ces questions de tableau blanc, vous devriez être prêt. Soyez prêt pour les questions faciles/moyennes, mais essayez aussi les questions plus difficiles — surtout lorsque vous avancez vers les tours sur site.

Exponent

Le cours d’entretien en génie logiciel d’Exponent est le seul cours dont vous avez besoin. Il comporte des articles et des vidéos guidés pour vous aider à rafraîchir vos connaissances/apprendre les structures de données et les algorithmes dont vous avez besoin pour votre entretien — le tout en un seul endroit. De plus, Exponent a ajouté un cours d’entretien de conception de système complet pour certaines des questions de conception de système les plus difficiles.

GeeksforGeeks

GeeksforGeeks a les meilleures solutions pour les questions de codage. Pour la plupart des questions d’entretien, auxquelles vous pouvez être confronté, GeeksforGeeks vous montre non seulement l’implémentation naïve mais aussi une solution optimisée ainsi que la complexité en temps et en espace.

r/CSCareerQuestions

Cette page Reddit (subreddit), r/CSCareerQuestions, est une communauté d’ingénieurs logiciels aspirants et expérimentés. Vous pouvez l’utiliser pour lire les expériences des autres en matière d’entretiens dans des entreprises spécifiques ou pour poser vous-même des questions. Un mot d’avertissement : les membres de ce subreddit sont très obsédés par le prestige et la rémunération des entreprises. C’est bien de viser les grandes entreprises tech FAANG, mais n’oubliez jamais de garder les pieds sur terre — il y a un monde en dehors de la tech !

Wrapping Up

Beaucoup de gens choisissent le génie logiciel comme carrière pour une ou plusieurs de nombreuses raisons. Vous pouvez vouloir devenir un ingénieur logiciel parce que vous aimez construire des choses. Ou peut-être êtes-vous inspiré par la façon dont la technologie change le monde. Ou peut-être que vous voulez simplement un chemin de carrière solide avec un bon potentiel de gain (rien de mal à cela !).
Ayez un calendrier d’étude cohérent (par exemple, faites 1 question Leetcode tous les deux jours) et respectez-le.
Alors que vous travaillez sur votre préparation à l’entretien, Exponent est toujours là pour vous aider si nécessaire. Si vous avez besoin d’une remise à niveau, la seule ressource que je recommanderais est le Software Engineering Interview Course, qui a été mis en place par des ingénieurs logiciels qui ont travaillé dans certaines des meilleures entreprises technologiques du secteur.

Laisser un commentaire