Warum ich 8 Monate lang Vollzeit für ein Google-Interview studiert habe

Das ist wahr. Ich habe Tausende von Stunden damit verbracht, Bücher zu lesen, Code zu schreiben und Vorlesungen in Informatik anzusehen, um mich auf das Interview mit dem Google-Softwareentwickler vorzubereiten.

Wenn Sie sich auf ein Google-Interview vorbereiten möchten, ist hier mein Studienplan:

jwasham / google-interview-universität

google-interview-university - Ein vollständiger Tagesplan für das Studium zum Google Software Engineer. github.com

Wie ich hierher gekommen bin

Ich habe in der Mittelschule angefangen zu programmieren, aber als es Zeit für das College wurde, habe ich einen Abschluss in Wirtschaftswissenschaften gemacht. Mein Grundgedanke war, dass es zum Zeitpunkt meines Abschlusses zu viele Programmierer geben würde, die nach Jobs suchen. Junge, ich habe mich geirrt.

Später trat ich der Armee bei, um Programmierer zu werden, aber der Rekrutierer überredete mich in eine Position als militärischer Geheimdienst und ich verbrachte die nächsten zwei Jahre damit, die koreanische Sprache zu lernen. Ich habe danach 2 Jahre in Südkorea gedient.

Bevor ich die Armee verließ, versuchte ich wieder mit dem Programmieren und war überrascht über die Schwierigkeit. Ich hatte BASIC in der Mittelschule gelernt und es während der High School weiter programmiert. Aber ich habe meine Programmierstudien mit C ++ neu gestartet, und der Sprung war zu groß. Ich konnte es einfach nicht verstehen.

Es hat mir zwar Spaß gemacht, Websites zu erstellen, aber ich habe Software mit einer Word-ähnlichen Oberfläche verwendet, mit der ich meine Websites veröffentlicht habe. Ich wusste nicht, wie man Websites von Grund auf neu erstellt.

Nach der Armee beschloss ich, ein Jahr in Korea zu bleiben und Englisch zu unterrichten. Ich nutzte meine Nächte und Wochenenden, um Webprogrammierung mit Perl, HTML, CSS (damals neu), JavaScript und SQL zu studieren.

Nach einem Jahr intensiven Studiums bekam ich einen Job in der Gegend von Seattle und bin seitdem hier.

Ich bin jetzt seit 15 Jahren Webentwickler. Ich habe 3 Unternehmen gegründet, von denen 2 noch laufen und Einnahmen generieren. Ich habe in großen und kleinen Unternehmen gearbeitet, Startups beim Start und Wachstum unterstützt und Teams rekrutiert und geleitet. Ich war Produktmanager, CEO, Designer und Vermarkter.

Ich hatte eine erfolgreiche Karriere und habe dabei viel gelernt. Aber ich bin noch nicht fertig.

Ich suche einen Karrierewechsel

Erinnerst du dich an den Teil, in dem ich keinen Abschluss in Informatik gemacht habe? Es hat einen Unterschied gemacht.

Vor ein paar Jahren dachte ich, ich könnte überall eingestellt werden. Ich dachte, ich wäre heißes Zeug: der schwer fassbare Full-Stack-Webentwickler. Bei meiner Arbeitssuche im Jahr 2013 stellte ich jedoch fest, dass meine Fähigkeiten fehlten. Ich hatte so viel Zeit damit verbracht, Dollars zu jagen, indem ich in meiner Freizeit Startups leitete, dass ich meine Fähigkeiten verkümmern ließ. Ich hatte mit der Technologie nicht Schritt gehalten.

Ich hatte jahrelang gerade genug gelernt, um durchzukommen. Ich hatte ein breites Spektrum an Fähigkeiten, war aber kein Experte in irgendetwas.

Versteh mich nicht falsch, ich könnte immer noch eingestellt werden, aber nicht in den Technologien oder Bereichen, in denen ich arbeiten wollte. Ich könnte für Bereiche eingestellt werden, in denen der Tech-Stack etwas veraltet war, wie ich. Da ist viel Geld drin, aber ich habe keine aufregenden Aussichten gesehen.

Die Realisierung erreichte im vergangenen Jahr auf einer Karrieremesse ihren Höhepunkt. Ich war daran interessiert, vielleicht für eines der lokalen Unternehmen zu arbeiten, die Startup-Labors von Risikokapitalunternehmen waren. Die Tatsache, dass mir ein Informatik-Abschluss fehlte und die Fähigkeiten und Kenntnisse, die mit einem solchen Abschluss einhergingen, bedeuteten jedoch, dass ich keine Chance hatte.

Ich habe damals Vollzeit in meinen Unternehmen gearbeitet und bin es heute noch.

Anfang 2016 entschied ich, dass es Zeit war, eine berufliche Veränderung vom Webentwickler zum Softwareentwickler vorzunehmen. Ich müsste hart studieren und üben, um einen Abschluss in Informatik in ein paar Monaten zu komprimieren, aber wenn ich das getan hätte, könnte ich eine neue Karriere beginnen.

Möglicherweise sehen Sie Webentwicklung und Softwareentwicklung nicht als unterschiedliche Positionen. Beide beinhalten Programmierung und Handwerkskunst, aber Software-Engineering erweitert das Wissen über Datenstrukturen und Algorithmen, kompilierte Sprachen, Speicherüberlegungen und das Verständnis der Auswirkungen von Codierungs- und Architekturentscheidungen auf die Maschinen, auf denen sie sich befinden.

Große Unternehmen, die für Software-Engineering-Positionen einstellen, erwarten, dass die Kandidaten über dieses Wissen verfügen.

Ich habe mich an einen Bekannten gewandt, der bei Google arbeitet, und ihm Fragen zu seinen Erfahrungen im Unternehmen gestellt. Ich hatte gelesen, wie Google funktioniert, und war mit Google bereits ziemlich vertraut.

Durch einen anderen Kontakt erhielt ich eine Kopie der Coaching-Notizen von Google, die zur Befragung von Kandidaten bereitgestellt wurden. Dies wurde die Grundlage meines Studienplans.

Google ist ein großartiger Arbeitsplatz, aber bevor ich das überhaupt wusste, war Google mein Ziel.

Warum Google?

Google legt eine sehr hohe Messlatte für Einstellungen fest. Sie wollen nur die Besten einstellen. Wenn ich also hohe Ziele habe (bei Google eingestellt zu werden), bin ich auch dann noch an anderer Stelle angestellt, wenn ich nicht ausgewählt bin.

Je mehr ich über Google erfahre, desto mehr möchte ich dort arbeiten.

Kurz gesagt, Google ist ein Unternehmen, das kluge, kreative Leute anstellt und sie gut behandelt. Google belohnt Verdienste, fördert große Ideen und gibt Mitarbeitern die Freiheit, gute Entscheidungen für den Nutzer zu treffen.

Der Einstellungsprozess ist so kalibriert, dass kluge, leidenschaftliche Menschen hinzukommen. Google hat den Rekrutierungs- und Interviewprozess im Laufe der Jahre verbessert. Die Fragen zum Brain Teaser sind längst vorbei. Heutzutage werden Kandidaten basierend auf Codierungsfähigkeiten, technischem Wissen und Googleyness ausgewählt. In diesem einen Wort ist viel los.

Management ist anders. Manager verwalten nicht im Mikrobereich. Sie vertrauen darauf, dass Ingenieure die richtigen Entscheidungen treffen. Das Vertrauen in Mitarbeiter verändert die Rolle von Managern bei Google von dem, was sich die meisten Leute vorstellen, wenn sie an Management denken. Darüber hinaus können Manager nicht einseitig einstellen, entlassen oder befördern. Viele der wichtigen Managemententscheidungen, die als Büropolitik wahrgenommen werden könnten, werden von einem Ausschuss getroffen, um diese Gefahr zu beseitigen.

Die Personalabteilung (HR) von Google hat gelernt, was im Laufe der Zeit funktioniert, und nutzt Daten und Mitarbeiterfeedback, um Bewertungssysteme, den Einstellungsprozess, Beförderungen, Vergütungen, Vorteile und mehr zu verbessern. Arbeitsregeln lesen ! von Laszlo Bock (SVP, People Operations) für mehr.

Ja, die Vorteile sind erstaunlich. Ich habe eine Tour durch das Google-Büro in Kirkland, WA, gemacht, die meine Erwartungen übertroffen hat. Und meine Erwartungen waren schon hoch.

Google Interview University

Erinnern Sie sich an die Coaching-Notizen, die ich erhalten habe und die mir sagten, was ich lernen soll? Die Liste der Themen schien überschaubar, obwohl ich nichts auf der Liste wusste.

Ich verwandelte die Themen auf den Notizen in eine Gliederung und begann, die Themen mit YouTube-Videos von Vorträgen von MIT und UC Berkeley zu füllen. Ein Video über verknüpfte Listen an einem Ort, ein Video über Warteschlangen an einem anderen. Die Liste begann zu wachsen.

Ich habe die Liste auf Github veröffentlicht, weil mein Github-Konto ziemlich leer war. Da der gesamte Code, den ich für meine Unternehmen und meine Arbeit geschrieben habe, privat war, sah mein Github-Konto so aus, als hätte ich überhaupt keinen Code geschrieben. Ich musste ein Portfolio aufbauen. Ich habe das Projekt ursprünglich "Projekt 9894" genannt. Google startete am 4. September 1998. Daher der Name. Ich habe es später in "Google Interview University" umbenannt.

Im Laufe der Zeit habe ich einige optionale Themen hinzugefügt, die ich unterwegs entdeckt habe.

Ich war ziemlich erstaunt, dass ich in meiner Karriere so weit gekommen war, ohne zu wissen, wie eine CPU ein Programm verarbeitete, wie Speicher funktionierte oder irgendetwas davon. Ich hatte „gerade genug“ gewusst, um ein Erfolg zu sein.

Mein kleines Github-Projekt bekam ein paar Sterne und ich veröffentlichte einen Blog-Beitrag, in dem 20 Sterne gefeiert wurden.

Eines Morgens erwachte ich und stellte fest, dass es auf 120 Sterne angewachsen war. Jemand Berühmtes hatte in der Nacht darüber getwittert, und das führte dazu, dass es im täglichen Trendbericht von Github landete. Ich war ein paar Tage lang die Nummer 1 bei Github.

Viele nette Leute haben sich bemüht, mir zu danken und mich zu ermutigen. Es stellt sich heraus, dass es Tausende von Menschen gibt, die nicht nur bei Google arbeiten, sondern auch als Softwareentwickler arbeiten möchten, und diese Liste war genau die Aufgabenliste, die sie brauchten.

Es ist jetzt bei über 21.000 Sternen.

Ich kann es immer noch nicht glauben.

Was ist, wenn ich den Job nicht bekomme?

Es wird nicht das Ende der Welt sein.

Ich habe die Zeit und das Engagement in mein Studium gesteckt, um als Google-Softwareentwickler eingestellt zu werden, aber selbst wenn ich versage, bin ich mit den Fähigkeiten und Kenntnissen ausgestattet, die erforderlich sind, um als Softwareentwickler in einem Unternehmen zu arbeiten .

Wo immer ich lande, gehe ich als Software-Ingenieur für Einsteiger ein. Ich habe keine 15-jährige Erfahrung in der Softwareentwicklung, weil ich sie einfach nicht habe. Wenn es um dieses Zeug geht, bin ich das Äquivalent eines frischen CS-Absolventen.

Aber ich habe auch die Begeisterung eines neuen Absolventen. Dies ist eine neue Welt für mich. Ich fange gerade erst an. Ich habe keine Angst, Fehler zu machen. Ich weiss dass ich werde. Ich möchte auch alles lernen, was ich kann, und eine hervorragende Ergänzung für jedes Team sein.

Lerne nicht so viel wie ich

Ja, ich habe 8 Monate gebraucht. Aber ich hätte den Prozess abkürzen können. Wie bei jedem Startup mit einem großen Ziel machen Sie Fehler und tun Dinge, die Zeit verschwenden. Es gibt viele Dinge, die ich gerne zurückgehen und anders machen würde.

Ich habe Themen studiert, die ich nicht brauchte, einige, weil ich dachte, ich würde sie für das Interview brauchen, und einige, weil ich das Wissen zur Hand haben wollte, als ich anfing zu arbeiten. Ich wollte das Team, dem ich zugewiesen bin, nicht belasten. Es stellt sich heraus, dass ich einfach übervorbereitet bin.

Ich habe 3 Wochen lang ein 1000-seitiges Buch über C ++ gelesen. Ich erinnere mich nicht an 1.000 Seiten, aber ich weiß jetzt ein gutes Stück über C ++. Wie sich herausstellt, verwende ich Python für das Interview, nicht C ++. Ich hatte angenommen, ich brauche C ++, C oder Java, aber ich habe mich geirrt. Es ist gut zu fragen, nicht anzunehmen.

Ich las viel mehr Bücher als nötig. Es gibt nur 3 oder 4 Bücher, die ich hätte lesen sollen.

Ich habe einen Codekatalog mit Dutzenden von Algorithmen, die ich überprüfe, von denen ich die meisten in einem Interview nicht erwarten würde. Das musst du nicht tun.

Ich habe viele Stunden YouTube-Videos gesehen, hätte aber viel weniger sehen und Themen im Laufe der Zeit verteilen können.

Ich hätte früher aufhören sollen, Bücher zu lesen und Videos anzusehen, und früher mit Codierungsproblemen beginnen sollen. Ich hätte mehr Zeit damit verbringen können, die Themen anzuwenden, die ich gelernt habe.

Die räumliche Wiederholung ist der Schlüssel zum Auswendiglernen. Wenn Sie etwas gelernt haben, überprüfen Sie es später noch einmal und noch später. Bei jeder Wiederholung verstärken Sie Ihr Lernen. Wenn Sie Stunden und Stunden gleichzeitig in Prioritätswarteschlangen verbringen, werden Sie nicht zu einem Experten. Sie werden zu einem Experten, indem Sie im Laufe der Zeit erneut prüfen und überprüfen. Wenn Sie dies tun, kommen Sie an einen Punkt, an dem Sie Details nicht vergessen können.

Zur Überprüfung habe ich 1.792 Karteikarten (digitale Karteikarten) erstellt. Das sind viel zu viele. Ich überprüfe sie auf meinem Telefon oder Tablet, wenn ich einen freien Moment habe (z. B. während des Weihnachtseinkaufs). Karteikarten und räumliche Wiederholungen gehen Hand in Hand. Sobald ich eine Antwort auf einer Karteikarte richtig bekomme, markiere ich sie nicht als bekannt. Ich behalte es im Deck und wenn ich es viele Male gesehen und richtig beantwortet habe, markiere ich es als bekannt.

Mein Gefühl der Angst („Was ist, wenn sie mir eine Frage zu rot-schwarzen Bäumen stellen?“) Führte mich dazu, weit mehr Themen zu studieren, als ich brauchte.

Aber ich wollte mich nicht nur auf das Interview vorbereiten, sondern mich auf eine Karriere bei Google vorbereiten und große Probleme lösen. Das bedeutet, Algorithmen zu kennen, die Rechenressourcen in Bezug auf Zeit, Raum und E / A sparen.

Ich muss möglicherweise nie einen Maximum-Flow-Algorithmus (Ford-Fulkerson) kennen, aber es ist schön zu wissen, dass ich dieses Tool zur Verfügung habe, wenn die Situation eintritt (ohne die Implementierung auswendig zu lernen) und seine Anwendung auf einen Problembereich erkennen kann.

Fazit

Schon früh wünschte ich mir, ich könnte all dieses Lernen überspringen und mich beeilen und eingestellt werden, damit ich stattdessen meine Zeit damit verbringen könnte, die Sprachen und Werkzeuge für das Team zu lernen, dem ich beitrete. Dabei wurde mir klar, wie wichtig dieses Wissen ist, und obwohl das meiste davon möglicherweise nicht täglich anwendbar ist, bin ich froh, dass ich mich bemüht habe. Ich habe ein neues Verständnis für die Geschichte des Rechnens, die Größen auf dem Gebiet, Datenstrukturen und Algorithmen (und wie sie sich ergänzen) und wie Computersysteme auf niedriger Ebene funktionieren.

Ich werde meine Bewerbung bald einreichen. Es war eine lange Reise bis zu diesem Punkt - fast ein ganzes Jahr. Es begann im Januar, aber ich konnte mich erst im April zum Vollzeitstudium verpflichten.

Ich bin so gut vorbereitet wie ich nur kann. Ich kann nicht weiter studieren und die Bewerbung für immer verschieben. Irgendwann muss ich den Sprung wagen.

Ich sehe eine glänzende Zukunft vor mir.

Vielen Dank, dass Sie sich die Zeit genommen haben, meine Geschichte zu lesen.

Artikel auch in Arabisch, Vietnamesisch und Koreanisch erhältlich.

Update: 10. Januar 2017

Ich wurde nicht eingestellt. Lesen Sie weiter . Vielen Dank an alle für Ihre großartige, überwältigende Unterstützung.

Update: 6. März 2017

Die Geschichte hat ein Happy End! Ich wurde von Amazon als Software Development Engineer für Amazon Web Services eingestellt!

Wo man mich findet

Ich blogge bei Startup Next Door.

Google Interview University auf Github:

jwasham / google-interview-universität

google-interview-university - Ein vollständiger Tagesplan für das Studium zum Google Software Engineer. github.com