Wie ich einen Job als Software Engineer bei Twitter bekam

Dies ist die Geschichte, wie ich einen Job bei Twitter als Vollzeit-Softwareentwickler bekam. Ich werde den Prozess, den ich durchlaufen habe, wie ich mich vorbereitet habe und warum ich mich schließlich entschlossen habe, dem Unternehmen beizutreten, mitteilen.

Wie ich meine Reise begonnen habe

Klick-Klack-Klick-Klack .

Das Geräusch meiner Finger, die wütend auf die Tasten der Tastatur schlugen, hallte durch die Nacht.

Ich sah von meinem Laptop-Bildschirm auf und schaute zu einer Uhr an der Wand einer Kellerwohnung, die ich für 600 Dollar im Monat mietete.

Es war zwei Uhr morgens.

Jetzt könnte man meinen, ich hätte eine Software geschrieben oder etwas Wichtiges gehackt. Warum sollte ich sonst wach sein?

Ich war nicht.

Ich bereitete mich auf mein bevorstehendes technisches Codierungsinterview über eine Website namens Leetcode vor. Wut übernahm mich, weil ich eine verknüpfte Liste, die auf der Plattform als einfach eingestuft wurde, nicht rückgängig machen konnte (versuchen Sie es hier).

Wie ich dorthin gekommen bin

Eine Woche zuvor war eine E-Mail von einem Twitter-Personalvermittler eingetroffen, in der er mich fragte, ob ich einen ersten Telefonbildschirm mit einem ihrer Ingenieure vereinbaren möchte.

Ich war aufgeregt, aber auch nervös, weil ich mich vor einigen Jahren erfolglos für eine Stelle als Softwareentwickler bei Twitter beworben hatte.

Der Personalvermittler hatte mir ein umfassendes Vorbereitungsblatt mit Links zum Üben und Auffrischen meiner Codierungs- und Algorithmusfähigkeiten geschickt.

Einer der Punkte auf der Checkliste hat mich auf leetcode.com (eine Website für Codierungsherausforderungen) verwiesen, und so habe ich stundenlang auf dieser Website codiert, um mich auf mein technisches Codierungsinterview vorzubereiten.

Es war nicht einfach, sich auf technische Interviews vorzubereiten. Für jemanden, der seit einiger Zeit nicht mehr am College ist, dauert es nicht trivial, die Fähigkeiten und Grundlagen aufzufrischen, die für den Erfolg eines technischen Codierungsinterviews erforderlich sind.

Der Personalvermittler betonte ausdrücklich, dass sich unser technisches Interview speziell auf technische Grundlagen wie Karten, Binärbäume, verknüpfte Listen, Binärsuchbäume, Grafiken usw. konzentrieren würde .

Wenn ich heute von vorne anfangen würde, würde ich versuchen, einen viel strukturierteren Ansatz zu suchen, um meine Vorbereitungszeit zu maximieren.

Aus diesem Grund habe ich einen personalisierten Coaching-Kurs namens Acing The Technical Interview gestartet.

Dieser Kurs hilft den Leuten, sich so effizient wie möglich auf ihre Interviews vorzubereiten, damit sie diese technischen Interviews erfolgreich abschließen und die Fallstricke und Fallen vermeiden können, die ich auf die harte Tour lernen musste.

Viele andere Ingenieure haben mit den im Kurs beschriebenen Ansätzen Erfolg gehabt.

Mein hintergrund

Ich hatte 3 Jahre Erfahrung als Full-Stack-Ingenieur bei einem Startup, hauptsächlich mit dem Aufbau von Microservices und der API-Entwicklung auf AWS-Stack.

Der Stack konzentrierte sich stark auf PHP, NodeJS, AWS SQS als Nachrichtenwarteschlange, Postgres für unsere Datenbank und AWS S3 für die Langzeitspeicherung.

Ich hatte keine Berufserfahrung oder Praktikumserfahrung und der Job beim Startup war meine erste „echte“ Position als Softwareentwickler.

Ich hatte eine formale Ausbildung in Informatik - ich absolvierte ein kleines privates Jesuitenkolleg im US-Bundesstaat Washington in 4 Jahren mit einem Bachelor-Abschluss in Informatik.

Rückblickend denke ich, dass es eine wertvolle Erfahrung war, aufs College zu gehen. Wenn ich es noch einmal machen würde, würde ich mich immer noch für eine formelle Ausbildung über ein Coding Bootcamp entscheiden. Sie können mein Video hier ansehen, um eine Aufschlüsselung eines 4-jährigen Abschlusses in Informatik gegen ein Coding-Bootcamp zu erhalten.

Ich habe mich bei über 30 verschiedenen Unternehmen beworben, mit 15 befragt, von 6 abgelehnt, Angebote von 6 erhalten, 5 abgelehnt und 1 angenommen. Wenn Sie zählen, stimmt die Mathematik nicht perfekt überein, da einige Unternehmen nach dem Vor-Ort-Geist gespenstisch waren .

Sie können hier mehr lesen, wenn Sie daran interessiert sind, wie ich Angebote von erstklassigen FAANG-Unternehmen ohne Ivy League-Abschluss erhalten habe.

Wie ich mich auf Interviews vorbereitet habe

Ich verbrachte den größten Teil meiner Zeit mit Leetcode und mit einem Buch namens Elements of Programming Interviews (sehr zu empfehlen).

Ich habe auch ungefähr 10% meiner Zeit damit verbracht, YouTube nach Interviews zum Systemdesign zu durchsuchen, wie Jack Gabbard und Gauran Sen.

Eine andere Ressource / Website, die mir gefallen hat, war DailyCodingProblem.com, das täglich eine Codierungsfrage an Ihre E-Mail sendet. So erhalten Sie ständig neue Fragen.

Vorbereitungszeit insgesamt

Meine Vorbereitungszeit betrug ungefähr einen Monat beständiges, ununterbrochenes Üben. Es ist wichtig, einen konsistenten Zeitplan zu haben.

Früher habe ich Codierungsschübe gemacht: 3 Stunden Hardcore-Codierung, gefolgt von einer Woche Pause. Ich fand das unwirksam und bezahlte den hohen Preis für das mehrfache Wechseln des Kontexts.

Insgesamt verbrachte ich ungefähr 3 Stunden am Tag an Wochentagen (aufgrund der Arbeit) und 4 bis 6 Stunden am Wochenende für insgesamt ungefähr 20 Stunden pro Woche für einen Monat .

Wie ich mich auf Jobs beworben habe

Ich habe mich über die Karriereseite bei Twitter beworben. Im Nachhinein wäre es möglicherweise effektiver gewesen, eine Empfehlung oder einen Personalvermittler auf LinkedIn zu finden, da dies den Bewerbungsprozess höchstwahrscheinlich beschleunigt hätte.

Ein gut geschriebener Lebenslauf ist besonders wichtig, wenn Sie sich über ein Online-Karrierezentrum bewerben. Ohne dies hätte ich wohl keine Gelegenheit bekommen, mit diesen erstklassigen Technologieunternehmen zu sprechen.

Lesen Sie hier mehr darüber, wie ich meinen Lebenslauf erstellt habe, damit Personalchefs mich bemerken.

Ein paar Wochen später wandte sich ein Personalvermittler endlich an mich und wollte einen ersten Telefonbildschirm planen.

Zeitleiste meines Bewerbungsprozesses

  • 10. Februar 2017 - Der Personalvermittler hat sich bemüht, einen TPS zu planen
  • 8. März 2017 - Erstes TPS
  • 13. April 2017 - Zweiter TPS
  • 18. April 2017 - Vor Ort
  • 2. Mai 2017 - Angebot verlängert
  • 23. Mai 2017 - Twitter bestätigt
  • 24. Juli 2017 - offizieller Starttermin

Die ersten beiden technischen Telefonbildschirme umfassten das Codieren in einem freigegebenen Online-Dokument wie Google Text & Tabellen. Wir sprachen über verschiedene Ansätze und Kompromisse und verbrachten mehr als 30 Minuten mit der Implementierung.

Nach den ersten beiden Runden wurde ich in die nächste Runde der Vor-Ort-Interviews bei Twitter Seattle versetzt.

Der Personalvermittler schickte mir dann einen Link zu einem Online-Codierungs-Repository und bat mich, eine Codeüberprüfung durchzuführen. Ich musste Vorschläge zur Verbesserung des Codes machen und diese mit den Interviewern vor Ort besprechen.

Ich brauchte ungefähr einen Tag, um den Code durchzugehen, druckte ihn auf Papier aus (ungefähr 5 Seiten lang bei 10pt-Schrift) und stellte Verbesserungsmöglichkeiten auf dem Papier fest. Dies erwies sich als nützliche Übung, wie ich später feststellen würde.

Das Interview vor Ort

Die Vor-Ort-Veranstaltung hatte insgesamt 3 Runden mit einem dazwischen liegenden Mittagessen (Wortspiel beabsichtigt):

  • Breite (75 Minuten)
  • Tiefe (75 Minuten)
  • Mittagessen
  • Top-Bewertung (90 Minuten, optional )

Eine Sache, die Sie hervorheben sollten, ist, dass die Vor-Ort-Runden von Twitter jeweils zwei Interviewer hatten.

Zuerst fühlte es sich einschüchternd an, von zwei Interviewern angestarrt zu werden, die mich nach jeder meiner Bewegungen beurteilten. Aber in Wirklichkeit hat es mir gefallen, wie es sich anfühlteviel kollaborativer und wir haben uns gegenseitig Ideen gemacht.

Breite (Systemdesign)

Das Interview zur Breite (Systemdesign) konzentriert sich auf eine Vielzahl von Themen, damit sie verstehen, wie viel Sie über das Entwerfen eines Systems von Grund auf wissen . Ziel ist es, den Kandidaten an seine Grenzen zu bringen und zu sehen, wie weit er gehen kann.

Sie stellten Fragen wie diese:

Können Sie ein zuverlässiges System mit angemessenen End-to-End-Ausfallzeiten erstellen, von der Einrichtung der Benutzeroberfläche über die Kommunikation über eine HTTP-API bis hin zum Aufbau eines Backend-Dienstes?

Ich habe das Gespräch genossen, weil ich immer gerne mit verschiedenen Technologien herumgebastelt habe. Wenn Sie gerne Dinge bauen, möchten Sie diese Runde auch. Die Interviewer waren sehr nett und führten mich höflich während des Interviews.

Wir haben am Ende mit einer Codierungsfrage geendet. Ich kann mich ehrlich gesagt nicht erinnern, was es war, aber es war nichts Außergewöhnliches.

Tiefe (Lebenslauf)

Das Tiefeninterview konzentrierte sich viel mehr auf meine früheren Projekte und mein Fachwissen. Dies war ehrlich gesagt viel intensiver und herausfordernder, da der Interviewer tief in jeden einzelnen Aspekt der von mir erstellten Projekte eintauchte und meine Entwurfsentscheidungen in Frage stellte.

Was war ein Projekt, das Sie kürzlich gebaut haben? Warum hast du es gebaut? Welche Alternativen wurden in Betracht gezogen? Hat es am Ende funktioniert?

Ausgehend von einem Startup-Hintergrund war ich dafür verantwortlich, viele Dinge von Grund auf neu zu erstellen, z. B. das Einrichten von AWS-Clustern und das Einrichten von SQS für die Verarbeitung von Aufgaben.

Obwohl ich mit vielen Projekten bestens vertraut war, brachte mich diese Runde an die Grenzen. Ich musste meine Erfahrung zurücktreten und die Geschichte aus meiner Perspektive erzählen - warum haben wir bestimmte Dinge auf bestimmte Weise entworfen und gab es bessere / schlechtere Ansätze, an die wir dachten. Keine Codierungsfragen für diese Runde.

Top-Bewertung / Kultur

Die Kulturrunde war ein 90-minütiges Interview mit dem Personalchef und der Geschäftsleitung.

Ich habe später herausgefunden, dass wenn Sie es in diese Runde schaffen, das bedeutet, dass Sie technisch gut genug abgeschnitten haben und sie nach einer kulturellen Passform in beide Richtungen suchen - ob Sie in ihre Kultur passen und ob sie die richtigen Möglichkeiten für Sie haben.

Auch für diese Runde gibt es keine Codierungsfragen.

Rückblick auf den Interviewprozess

Die Interviews bei Twitter konzentrieren sich stark auf die Grundlagen der Informatik . Stellen Sie also sicher, dass Sie Ihre Datenstrukturen von oben nach unten und von links nach rechts kennen. Es ist auch eine gute Idee, alle grundlegenden Algorithmen zu überprüfen, die Sie in Ihrer CS101-Klasse gelernt hätten.

Hier sind einige andere Tipps:

Kennen Sie Ihre Algorithmen genau

Verstehen Sie, wie Kompromisse zwischen Zeitkomplexität und Raumkomplexität funktionieren .

Kennen Sie eine Sprache wirklich gut

Eine Sprache zu kennen und zu verstehen hat sehr gut geholfen. Dafür empfehle ich etwas wie Python oder Java oder C ++, da dies sehr häufig verwendete Sprachen sind.

Ich persönlich benutze Python gerne, weil es sehr einfach zu lesen und zu erklären ist und eine Reihe von Datenstrukturen integriert sind.

Führen Sie eine Überprüfung des Lebenslaufs durch

Stellen Sie sicher, dass Sie die in meinem Lebenslauf aufgeführten Projekte auffrischen. Das bedeutete

  • Verständnis des gesamten Designs der Software Ich war verantwortlich für End-to-End,
  • Verständnis der Kompromisse , die im System gemacht wurden, und
  • mit den Systemen Gründe dafür , warum wurden gebaut , dass die Art und Weise und was waren die Alternativen.

Seien Sie diszipliniert in Ihrer Vorbereitung

Finden Sie im Voraus heraus, in welchen Bereichen Sie fehlen, und legen Sie einen Zeitplan für das Üben fest. Es ist wichtig, konsequent und ununterbrochen zu üben.

Ich begann auf dem falschen Fuß und wünschte, ich hätte das früher gewusst, damit ich keine Zeit mit den falschen Dingen verschwendet hätte.

Denken Sie an die Systeme, mit denen Sie täglich interagieren

Finden Sie die Kompromisse, Alternativen, Vor- und Nachteile heraus und wie Sie ein besseres System aufbauen können. Diese Fähigkeit wird Sie in der Softwareentwicklung sehr weit bringen.

Ressourcen, die ich empfehle

  • Acing The Technical Interview: Mein persönliches Coaching, das Ihnen hilft, das technische Interview bei Top-Tech-Unternehmen zu gewinnen.
  • Leetcode.com: Üben Sie hier Codierungsprobleme.
  • Auf dieser Ressourcenseite finden Sie weitere Geräte, Werkzeuge und Bücher, die ich sehr empfehlen kann.

Weitere Artikel über Technologie finden Sie in meinem persönlichen Blog, in dem ich meine Reise als professioneller Softwareentwickler teile.

Wenn Ihnen das gefallen hat, sollten Sie dies mit jemandem teilen, der davon profitieren würde, und mir auf Youtube, LinkedInk und Twitter folgen.

Ich starte auch einen neuen Kurs, in dem erläutert wird, wonach Interviewer suchen, wie Sie sich vorbereiten können und wie Sie Ihre Chance maximieren können, Interviews zu landen und den gewünschten Job zu bekommen.