Comment j'ai décroché un emploi d'ingénieur logiciel sur Twitter

C'est l'histoire de la façon dont j'ai décroché un emploi chez Twitter en tant qu'ingénieur logiciel à temps plein. Je vais partager le processus que j'ai traversé, comment je me suis préparé et pourquoi j'ai finalement décidé de rejoindre l'entreprise.

Comment j'ai commencé mon voyage

Click-clack-click-clack .

Le son de mes doigts fracassant furieusement les touches du clavier résonna dans la nuit.

J'ai levé les yeux de l'écran de mon ordinateur portable et j'ai regardé vers une horloge sur le mur d'un appartement au sous-sol que je louais pour 600 $ par mois.

Il était 2 heures du matin.

Maintenant, vous pourriez penser que j'écrivais un logiciel ou que je piratais quelque chose d'important. Sinon, pourquoi serais-je éveillé autrement?

Je n'étais pas.

Je me préparais pour mon prochain entretien de codage technique en utilisant un site Web appelé Leetcode. Fury m'a repris parce que je ne pouvais pas inverser une liste chaînée, qui était notée Facile sur la plate-forme (essayez-la ici).

Comment j'y suis arrivé

Un e-mail d'un recruteur Twitter était arrivé une semaine plus tôt, me demandant si je souhaitais planifier un premier écran de téléphone avec l'un de leurs ingénieurs.

J'étais excité, mais aussi nerveux car j'avais postulé à un poste d'ingénieur logiciel chez Twitter il y a quelques années sans succès.

Le recruteur m'avait envoyé une feuille de préparation complète avec des liens pour m'entraîner et rafraîchir mes compétences en codage et en algorithmes.

L'un des éléments de la liste de contrôle m'a dirigé vers leetcode.com (un site Web de défi de codage) et c'est ainsi que j'ai fini par coder sur ce site pendant des heures afin de me préparer à mon entretien de codage technique.

Ce n'était pas facile de se préparer aux entretiens techniques. Pour quelqu'un qui est sorti de l'université depuis un certain temps, il faut un temps non négligeable pour perfectionner les compétences et les principes fondamentaux nécessaires pour réussir un entretien de codage technique.

Le recruteur explicitement souligné que notre entretien technique se concentrera plus particulièrement sur les fondamentaux techniques, comme des cartes, des arbres binaires, listes chaînées, arbres binaires de recherche, des graphiques, et ainsi de suite .

Si je commençais à me préparer à partir de zéro aujourd'hui, j'essaierais de rechercher une approche beaucoup plus structurée afin de maximiser mon temps de préparation.

C'est pourquoi j'ai commencé un cours de coaching personnalisé, appelé Acing The Technical Interview.

Ce cours aide les gens à se préparer aussi efficacement que possible pour leurs entretiens afin qu'ils puissent réussir ces entretiens techniques et éviter les pièges et les pièges que j'ai dû apprendre à la dure.

De nombreux autres ingénieurs ont réussi les approches décrites dans le cours.

Mon parcours

J'ai eu 3 ans d'expérience en tant qu'ingénieur full-stack dans une startup, principalement avec la création de microservices et le développement d'API sur AWS stack.

La pile était fortement axée sur PHP, NodeJS, AWS SQS en tant que file d'attente de messages, Postgres pour notre base de données et AWS S3 pour le stockage à long terme.

Je n'avais aucune expérience professionnelle ni expérience de stage, et le poste à la startup était mon premier «vrai» poste d'ingénieur logiciel.

J'ai eu une éducation formelle en informatique - je suis diplômé d'un petit collège jésuite privé dans l'État de Washington en 4 ans avec un baccalauréat en informatique.

Avec le recul, je pense que c'était une expérience précieuse d'aller à l'université. Si je devais le refaire, j'opterais toujours pour une éducation formelle plutôt qu'un Bootcamp de codage. Vous pouvez regarder ma vidéo ici pour une ventilation d'un diplôme de 4 ans en informatique par rapport à un Bootcamp de codage.

J'ai postulé dans plus de 30 entreprises différentes, interrogé avec 15, rejeté par 6, reçu des offres de 6, refusé 5 et accepté 1. Si vous comptez, les calculs ne correspondent pas parfaitement car certaines entreprises ont été fantômes après la visite sur place .

Vous pouvez en savoir plus ici si vous souhaitez savoir comment j'ai obtenu des offres de sociétés FAANG de premier plan sans diplôme de la Ivy League.

Comment je me suis préparé pour les entretiens

J'ai passé la majorité de mon temps sur Leetcode et avec un livre intitulé Elements of Programming Interviews (fortement recommandé).

J'ai également passé environ 10% de mon temps à parcourir YouTube pour des interviews de conception de systèmes, comme Jack Gabbard et Gauran Sen.

Une autre ressource / site Web que j'ai aimé était DailyCodingProblem.com, qui envoie une question de codage par jour à votre courrier électronique. Cela vous permet de poser de nouvelles questions tout le temps.

Temps de préparation au total

Mon temps de préparation a été d'environ un mois de pratique constante et ininterrompue . Il est essentiel d'avoir un calendrier cohérent.

J'avais l'habitude de faire des poussées de codage: 3 heures de codage dur suivi d'une semaine de repos. J'ai trouvé cela inefficace et j'ai payé le prix fort du changement de contexte plusieurs fois.

Au total, j'ai passé environ 3 heures par jour en semaine (en raison du travail) et 4 à 6 heures le week-end pour un total d'environ 20 heures par semaine pendant un mois .

Comment j'ai postulé à des emplois

J'ai postulé sur Twitter via leur page carrière. Avec le recul, il aurait peut-être été plus efficace de trouver un parrain ou un recruteur sur LinkedIn, car cela aurait probablement accéléré le processus de candidature.

Un CV bien rédigé est essentiel, en particulier lorsque vous postulez via un centre de carrière en ligne. Sans cela, je ne pense pas que j'aurais pu avoir l'occasion d'interviewer ces entreprises technologiques de premier plan.

Vous pouvez en savoir plus ici sur la façon dont j'ai rédigé mon CV pour que les responsables du recrutement me remarquent.

Quelques semaines plus tard, un recruteur m'a finalement contacté et a voulu programmer un premier écran de téléphone.

Chronologie de mon processus de candidature

  • 10 février 2017 - Un recruteur a contacté pour planifier un TPS
  • 8 mars 2017 - TPS initiale
  • 13 avril 2017 - Deuxième TPS
  • 18 avril 2017 - Sur place
  • 2 mai 2017 - Offre prolongée
  • 23 mai 2017 - Twitter confirmé
  • 24 juillet 2017 - date de début officielle

Les 2 premiers écrans techniques du téléphone impliquaient le codage sur un document en ligne partagé, comme Google Docs. Nous avons parlé de différentes approches et compromis, et avons passé plus de 30 minutes sur la mise en œuvre.

Après les deux premiers tours, j'ai été transféré à la prochaine série d'entretiens sur site sur Twitter Seattle.

Le recruteur m'a ensuite envoyé un lien vers un référentiel de codage en ligne et m'a demandé de faire une révision du code. J'avais besoin de faire des suggestions sur la façon d'améliorer le code et d'en discuter avec les enquêteurs sur place.

J'ai mis environ une journée pour parcourir le code, je l'ai imprimé sur papier (environ 5 pages sur une police de 10 points) et j'ai noté des améliorations sur le papier. Cela s'est avéré être un exercice utile comme je le découvrirais plus tard.

L'entrevue sur place

Le site a eu 3 tours au total avec un déjeuner pris en sandwich entre les deux (jeu de mots):

  • Largeur (75 min)
  • Profondeur (75 min)
  • Le déjeuner
  • Classement supérieur (90 minutes, en option )

Une chose à souligner est que les rondes sur site de Twitter comptaient 2 intervieweurs à chaque ronde.

C'était intimidant au début, d'être regardé par deux intervieweurs qui me jugeaient à chacun de mes mouvements. Mais en réalité, je l'ai aimé tel qu'il se sentaitbeaucoup plus collaboratif et nous nous échangions des idées.

Ampleur (conception du système)

L'entretien Breadth (System Design) se concentre sur un large éventail de sujets afin qu'ils puissent comprendre ce que vous en savez sur la conception d'un système à partir de zéro . Le but est de pousser le candidat à ses limites et de voir jusqu'où il peut aller.

Ils ont posé des questions comme celle-ci:

Êtes-vous en mesure de créer un système fiable avec un temps d'arrêt raisonnable de bout en bout, de la configuration de l'interface utilisateur à la communication via une API HTTP, en passant par la création d'un service backend?

J'ai apprécié la conversation parce que j'ai toujours aimé bricoler avec différentes technologies. Si vous aimez construire des choses, vous aimerez aussi ce tour. Les intervieweurs ont été très gentils et m'ont poliment guidé pendant l'entretien.

Nous avons terminé avec une question de codage à la fin. Honnêtement, je ne me souviens pas de ce que c'était, mais ce n'était rien d'extraordinaire.

Profondeur (reprendre)

L'entretien Depth s'est concentré beaucoup plus sur mes projets et mon expertise passés. C'était, en toute honnêteté, beaucoup plus intense et stimulant parce que l'intervieweur s'est plongé dans chaque aspect des projets que j'ai construits et a contesté mes décisions de conception.

Quel projet avez-vous construit récemment? Pourquoi l'avez-vous construit? Quelles alternatives ont été envisagées? Cela a-t-il fonctionné à la fin?

Issu d'une expérience en démarrage, j'étais chargé de créer de nombreuses choses à partir de zéro, comme la configuration de clusters AWS et la configuration de SQS pour le traitement des tâches.

Même si j'étais intimement familier avec de nombreux projets, ce cycle m'a poussé aux limites. J'ai dû prendre du recul dans mon expérience et raconter l'histoire de mon point de vue - pourquoi avons-nous conçu certaines choses de certaines manières et y avait-il des approches meilleures / pires auxquelles nous avons pensé. Aucune question de codage pour ce tour.

Top-Grading / Culturel

La ronde culturelle était une entrevue de 90 minutes avec le responsable du recrutement et la haute direction.

J'ai découvert plus tard que si vous participez à ce cycle, cela signifie que vous avez assez bien réussi techniquement et qu'ils recherchent une adéquation culturelle dans les deux sens - si vous vous intégrez à leur culture et s'ils ont les bonnes opportunités pour vous.

Pas de questions de codage pour ce tour également.

Rétrospective du processus d'entretien

Les entretiens sur Twitter se concentrent fortement sur les principes fondamentaux de l'informatique . Assurez-vous donc de connaître vos structures de données de haut en bas et de gauche à droite. C'est également une bonne idée de passer en revue tous les algorithmes de base que vous auriez appris dans votre classe CS101.

Voici quelques autres conseils:

Connaissez vos algorithmes en profondeur

Comprendre comment fonctionnent les compromis entre complexité temporelle et complexité spatiale .

Connaître très bien une langue

Connaître et comprendre une langue a vraiment bien aidé. Pour cela, je recommande quelque chose comme Python ou Java ou C ++ car ce sont des langages très couramment utilisés.

Personnellement, j'aime utiliser Python car il est très facile à lire, très facile à expliquer et il contient un tas de structures de données intégrées.

Faire une révision de CV

Assurez-vous que pour revoir les projets énumérés sur mon CV. Cela signifiait

  • comprendre toute la conception du logiciel dont j'étais responsable de bout en bout,
  • comprendre les compromis qui ont été faits dans le système, et
  • avoir des raisons pour lesquelles les systèmes ont été construits de cette façon et quelles étaient les alternatives.

Soyez discipliné dans votre préparation

Déterminez dès le départ les domaines qui vous font défaut et établissez un calendrier pour vous entraîner. Il est important d'avoir une pratique cohérente et ininterrompue.

J'ai commencé du mauvais pied et j'aurais aimé le savoir plus tôt pour ne pas avoir perdu de temps sur les mauvaises choses.

Pensez aux systèmes avec lesquels vous interagissez au quotidien

Déterminez les compromis, les alternatives, les avantages et les inconvénients, et comment vous pouvez créer un meilleur système. Cette compétence vous mènera très loin en génie logiciel.

Ressources que je recommande

  • Acing The Technical Interview: Mon coaching personnalisé pour vous aider à réussir l'entretien technique dans les meilleures entreprises technologiques.
  • Leetcode.com: pratiquez les problèmes de codage ici.
  • Consultez cette page de ressources pour plus d'équipements, d'outils et de livres que je recommande vivement.

Vous pouvez lire plus de mes articles sur la technologie sur mon blog personnel, où je partage mon parcours pour devenir ingénieur logiciel professionnel.

Si cela vous a plu, pensez à le partager avec quelqu'un qui en bénéficierait, et suivez-moi sur Youtube, LinkedInk et Twitter.

Je lance également un nouveau cours qui explique ce que les enquêteurs recherchent, comment vous pouvez vous préparer et comment maximiser vos chances de décrocher des entretiens et d'obtenir l'emploi que vous souhaitez.