Γιατί σπούδασα πλήρους απασχόλησης για 8 μήνες για μια συνέντευξη στο Google

Είναι αλήθεια. Έχω περάσει χιλιάδες ώρες διαβάζοντας βιβλία, γράφοντας κώδικα και παρακολουθώντας διαλέξεις επιστήμης υπολογιστών, όλα για να προετοιμαστώ για τη συνέντευξη του μηχανικού λογισμικού Google.

Αν θέλετε να προετοιμαστείτε για μια συνέντευξη Google, ακολουθεί το σχέδιο μελέτης μου:

jwasham / google-συνέντευξη-πανεπιστήμιο

google-interview-university - Ένα πλήρες καθημερινό σχέδιο για σπουδές για να γίνει μηχανικός λογισμικού Google. github.com

Πώς έφτασα εδώ

Άρχισα να προγραμματίζω στο γυμνάσιο, αλλά όταν ήρθε η ώρα για το κολέγιο, παρακολούθησα πτυχίο στα Οικονομικά. Η λογική μου ήταν ότι θα υπήρχαν πάρα πολλοί προγραμματιστές που αναζητούσαν δουλειές τη στιγμή που αποφοίτησα. Αγόρι, έκανα λάθος.

Αργότερα, μπήκα στο στρατό για να γίνω προγραμματιστής, αλλά ο στρατολόγος με μίλησε σε θέση στρατιωτικής νοημοσύνης και πέρασα τα επόμενα δύο χρόνια μελετώντας την κορεατική γλώσσα. Υπηρέτησα στη Νότια Κορέα για 2 χρόνια μετά.

Πριν φύγω από το στρατό, προσπάθησα να επιστρέψω στον προγραμματισμό και εξεπλάγην από τη δυσκολία. Είχα μάθει BASIC στο γυμνάσιο και συνέχισα να το προγραμματίζω μέχρι το γυμνάσιο. Αλλά ξεκίνησα ξανά τις μελέτες προγραμματισμού μου με το C ++ και το άλμα ήταν πολύ μεγάλο. Δεν μπορούσα να το καταλάβω.

Ωστόσο, μου άρεσε να φτιάχνω ιστότοπους, αλλά χρησιμοποίησα λογισμικό με μια διεπαφή τύπου Word που χρησιμοποιούσα για να δημοσιεύσω τους ιστότοπούς μου. Δεν ήξερα πώς να φτιάχνω ιστότοπους από το μηδέν.

Μετά το στρατό, αποφάσισα να μείνω στην Κορέα για ένα χρόνο και να διδάξω αγγλικά. Χρησιμοποίησα τις νύχτες και τα σαββατοκύριακά μου για να μελετήσω τον προγραμματισμό ιστού, χρησιμοποιώντας Perl, HTML, CSS (που ήταν καινούργιο εκείνη τη στιγμή), JavaScript και SQL.

Μετά από ένα χρόνο έντονης μελέτης, προσγειώθηκα στην περιοχή του Σιάτλ και από τότε ήμουν εδώ.

Είμαι προγραμματιστής ιστού τώρα για 15 χρόνια. Έχω ξεκινήσει 3 εταιρείες, 2 εκ των οποίων εξακολουθούν να λειτουργούν και δημιουργούν έσοδα. Έχω εργαστεί σε μεγάλες και μικρές εταιρείες, βοήθησα τις νεοσύστατες επιχειρήσεις να ξεκινήσουν και να μεγαλώσουν και να στρατολογήσω και να διαχειριστώ ομάδες. Ήμουν διαχειριστής προϊόντων, διευθύνων σύμβουλος, σχεδιαστής και έμπορος.

Είχα μια επιτυχημένη καριέρα και έμαθα πολλά στην πορεία. Αλλά δεν έχω τελειώσει ακόμα.

Αναζητώντας μια αλλαγή σταδιοδρομίας

Θυμάσαι το μέρος όπου δεν πήρα πτυχίο επιστήμης υπολογιστών; Έχει κάνει τη διαφορά.

Πριν από λίγα χρόνια, σκέφτηκα ότι θα μπορούσα να προσληφθώ οπουδήποτε. Νόμιζα ότι ήμουν καυτός: ο αόριστος προγραμματιστής ιστού πλήρους στοίβας. Αλλά κατά τη διάρκεια της αναζήτησης εργασίας μου το 2013, συνειδητοποίησα ότι οι δεξιότητές μου έλειπαν. Είχα περάσει τόσο πολύ χρόνο κυνηγώντας δολάρια τρέχοντας νεοσύστατες επιχειρήσεις στον ελεύθερο χρόνο μου, που άφησα τις δεξιότητές μου να ατροφία. Δεν είχα συμβαδίσει με την τεχνολογία.

Για χρόνια, είχα μάθει αρκετά για να τα περάσω. Είχα ένα μεγάλο σετ δεξιοτήτων, αλλά δεν ήμουν ειδικός σε τίποτα.

Μην με παρεξηγείτε, θα μπορούσα ακόμα να προσληφθώ, αλλά όχι στις τεχνολογίες ή τους τομείς στους οποίους ήθελα να εργαστώ. Θα μπορούσα να προσληφθώ για περιοχές όπου η τεχνολογική στοίβα ήταν κάπως ξεπερασμένη, όπως εγώ. Υπάρχουν μεγάλα χρήματα εκεί, αλλά δεν είδα συναρπαστικές προοπτικές.

Η πραγματοποίηση έφτασε στο αποκορύφωμά της πέρυσι σε μια έκθεση καριέρας. Ενδιαφέρομαι ίσως να δουλεύω για μια από τις τοπικές εταιρείες που ήταν εργαστήρια εκκίνησης που διευθύνονταν από εταιρείες επιχειρηματικών κεφαλαίων. Ωστόσο, το γεγονός ότι δεν έχω πτυχίο επιστήμης υπολογιστών και οι δεξιότητες και γνώσεις που συνοδεύουν έναν τέτοιο βαθμό, σήμαινε ότι δεν είχα την ευκαιρία.

Δούλευα πλήρους απασχόλησης στις επιχειρήσεις μου εκείνη τη στιγμή, και είμαι ακόμα σήμερα.

Στις αρχές του 2016, αποφάσισα ότι ήρθε η ώρα να κάνω μια αλλαγή καριέρας από προγραμματιστή ιστού σε μηχανικό λογισμικού. Θα χρειαζόμουν να μελετήσω σκληρά και να εξασκηθώ για να συμπιέσω το πτυχίο της πληροφορικής σε λίγους μήνες, αλλά μόλις το έκανα, θα μπορούσα να ξεκινήσω μια νέα καριέρα.

Ενδέχεται να μην βλέπετε την ανάπτυξη ιστοσελίδων και τη λογισμική ως διαφορετικές θέσεις Και οι δύο περιλαμβάνουν προγραμματισμό και χειροτεχνία, αλλά η μηχανική λογισμικού προσθέτει σε αυτήν γνώσεις δομών δεδομένων και αλγορίθμων, μεταγλωττισμένων γλωσσών, εκτιμήσεων μνήμης και κατανόησης του αντίκτυπου των αποφάσεων κωδικοποίησης και αρχιτεκτονικής στις μηχανές όπου βρίσκονται.

Οι μεγάλες εταιρείες που προσλαμβάνουν θέσεις μηχανικής λογισμικού αναμένουν από τους υποψηφίους να έχουν αυτήν τη γνώση.

Επικοινώνησα με έναν γνωστό που εργάζεται στο Google και του έκανα ερωτήσεις σχετικά με την εμπειρία του στην εταιρεία. Διάβασα πώς λειτουργεί το Google και ήδη ήμουν αρκετά εξοικειωμένος με το Google.

Μέσω μιας άλλης επαφής, έλαβα ένα αντίγραφο των σημειώσεων καθοδήγησης της Google που παρέχονται για συνέντευξη υποψηφίων. Αυτό έγινε η βάση του σχεδίου σπουδών μου.

Το Google είναι ένα πολύ ωραίο μέρος για να δουλέψω, αλλά πριν το ήξερα, το Google ήταν ο στόχος μου.

Γιατί το Google;

Η Google θέτει μια πολύ υψηλή γραμμή για πρόσληψη. Θέλουν να προσλάβουν μόνο τα καλύτερα. Αν λοιπόν θέσω τα βλέμμα μου ψηλά (να προσληφθώ στο Google), θα εξακολουθώ να προσλαμβάνω κάπου αλλού ακόμα κι αν δεν είμαι επιλεγμένος.

Όσο περισσότερα μαθαίνω για το Google, τόσο περισσότερο θέλω να εργαστώ εκεί.

Εν συντομία, η Google είναι μια εταιρεία που προσλαμβάνει έξυπνους, δημιουργικούς ανθρώπους και τους αντιμετωπίζει καλά. Η Google ανταμείβει την αξία, ενθαρρύνει μεγάλες ιδέες και δίνει στους εργαζόμενους την ελευθερία να λαμβάνουν καλές αποφάσεις για τον χρήστη.

Η διαδικασία πρόσληψης βαθμονομείται για να φέρει έξυπνους, παθιασμένους ανθρώπους. Η Google βελτίωσε τη διαδικασία πρόσληψης και συνέντευξης όλα αυτά τα χρόνια. Οι ερωτήσεις για τα πειράγματα του εγκεφάλου έχουν περάσει από καιρό. Σήμερα οι υποψήφιοι επιλέγονται με βάση την ικανότητα κωδικοποίησης, τις τεχνικές γνώσεις και το Googleyness. Υπάρχουν πολλά που συμβαίνουν σε αυτή τη λέξη.

Η διαχείριση είναι διαφορετική. Οι διαχειριστές δεν κάνουν μικροδιαχείριση. Εμπιστεύονται τους μηχανικούς να λαμβάνουν τις σωστές αποφάσεις. Η εμπιστοσύνη των υπαλλήλων αλλάζει τον ρόλο των διαχειριστών στην Google από αυτό που οραματίζονται οι περισσότεροι όταν σκέφτονται τη διαχείριση. Επιπλέον, οι διαχειριστές δεν μπορούν μονομερώς, να προσλάβουν, να απολύσουν ή να προωθήσουν. Πολλές από τις σημαντικές διαχειριστικές αποφάσεις που θα μπορούσαν να θεωρηθούν ως πολιτική γραφείου αντιμετωπίζονται από μια επιτροπή για την εξάλειψη αυτού του κινδύνου.

Οι λειτουργίες ανθρώπινου δυναμικού της Google (HR) έχουν μάθει τι λειτουργεί με την πάροδο του χρόνου και χρησιμοποιούν δεδομένα και σχόλια υπαλλήλων για να βελτιώσουν τα συστήματα αξιολόγησης, τη διαδικασία πρόσληψης, τις προσφορές, τις αποζημιώσεις, τα οφέλη και πολλά άλλα. Διαβάστε τους κανόνες εργασίας! από Laszlo Bock (SVP, People Operations) για περισσότερα.

Ναι, τα οφέλη είναι καταπληκτικά. Πήγα σε μια περιήγηση στο γραφείο της Google στο Kirkland, WA, και ξεπέρασε τις προσδοκίες μου. Και οι προσδοκίες μου ήταν ήδη υψηλές.

Πανεπιστήμιο συνέντευξης Google

Θυμάστε τις σημειώσεις προγύμνασης που έλαβα λέγοντας τι να σπουδάσω; Η λίστα θεμάτων φαινόταν εύχρηστη, παρόλο που δεν ήξερα τίποτα στη λίστα.

Μετέτρεψα τα θέματα στις σημειώσεις σε περίγραμμα και άρχισα να συμπληρώνω τα θέματα με βίντεο YouTube από διαλέξεις από το MIT και το UC Berkeley. Ένα βίντεο σε συνδεδεμένες λίστες σε ένα μέρος, ένα βίντεο σχετικά με τις ουρές σε άλλο. Η λίστα άρχισε να μεγαλώνει.

Δημοσίευσα τη λίστα στο Github επειδή ο λογαριασμός μου στο Github ήταν αρκετά άδειος. Δεδομένου ότι όλος ο κωδικός που έγραψα για τις επιχειρήσεις και την εργασία μου ήταν ιδιωτικός, ο λογαριασμός μου στο Github έδειχνε ότι δεν κωδικοποίησα καθόλου. Έπρεπε να δημιουργήσω ένα χαρτοφυλάκιο. Αρχικά ονόμασα το έργο "Project 9894". Η Google κυκλοφόρησε στις 4 Σεπτεμβρίου 1998. Εξ ου και το όνομα. Αργότερα το μετονόμασα σε "Google Interview University".

Με την πάροδο του χρόνου πρόσθεσα ορισμένα προαιρετικά θέματα που ανακάλυψα.

Ήμουν αρκετά έκπληκτος που είχα φτάσει μέχρι τώρα στην καριέρα μου χωρίς καν να γνωρίζω πώς ένας επεξεργαστής επεξεργάστηκε ένα πρόγραμμα, πώς λειτούργησε η μνήμη ή οποιοδήποτε από αυτά. Ήξερα «αρκετά» για να είμαι επιτυχής.

Το μικρό μου έργο Github άρχισε να παίρνει μερικά αστέρια και δημοσίευσα μια ανάρτηση ιστολογίου που γιορτάζει 20 αστέρια.

Ένα πρωί, ξύπνησα για να διαπιστώσω ότι είχε μεγαλώσει σε 120 αστέρια. Κάποιος διάσημος το έγραψε στο Twitter κατά τη διάρκεια της νύχτας, και αυτό οδήγησε στο να καταλήγει στην καθημερινή τάση του Github. Ήμουν # 1 τάση στο Github για μερικές ημέρες.

Πολλοί ευγενικοί άνθρωποι έφτασαν να με ευχαριστήσουν και να με ενθαρρύνουν. Αποδεικνύεται ότι υπάρχουν χιλιάδες άτομα που θέλουν όχι μόνο να εργάζονται στο Google αλλά θέλουν να εργαστούν ως μηχανικός λογισμικού και αυτή η λίστα ήταν μόνο η λίστα υποχρεώσεων που χρειάζονταν.

Έχει πλέον πάνω από 21.000 αστέρια.

Δεν μπορώ να το πιστέψω.

Τι γίνεται αν δεν έχω τη δουλειά;

Δεν θα είναι το τέλος του κόσμου.

Έχω βάλει το χρόνο και την αφοσίωση στις σπουδές μου για το στόχο να προσληφθώ ως μηχανικός λογισμικού Google, αλλά ακόμα κι αν αποτύχω, θα εξακολουθώ να είμαι εξοπλισμένος με τις δεξιότητες και τις γνώσεις που απαιτούνται για να εργαστώ ως μηχανικός λογισμικού σε οποιαδήποτε εταιρεία .

Όπου κι αν καταλήξω, μπαίνω ως αρχικός μηχανικός λογισμικού. Δεν θα πάω με 15 χρόνια εμπειρίας μηχανικής λογισμικού γιατί απλά δεν το έχω. Όσον αφορά αυτά τα πράγματα, είμαι το ισοδύναμο ενός νέου βαθμού CS.

Αλλά έχω και τον ενθουσιασμό ενός νέου πτυχιούχου. Αυτός είναι ένας νέος κόσμος για μένα. Μόλις αρχίζω. Δεν φοβάμαι να κάνω λάθη. Ξέρω ότι θα το κάνω. Θέλω επίσης να μάθω ό, τι μπορώ και να είμαι μια εξαιρετική προσθήκη σε οποιαδήποτε ομάδα.

Μην μελετάτε τόσο πολύ όσο έκανα

Ναι, πήρα 8 μήνες. Αλλά θα μπορούσα να συντομεύσω τη διαδικασία. Όπως κάθε εκκίνηση με μεγάλο στόχο, κάνετε λάθη και κάνετε πράγματα που χάνουν χρόνο. Υπάρχουν πολλά πράγματα που εύχομαι να επιστρέψω και να κάνω διαφορετικά.

Σπούδασα θέματα που δεν χρειαζόμουν, μερικά επειδή σκέφτηκα ότι θα τα χρειαζόμουν για τη συνέντευξη, και μερικά επειδή ήθελα να έχω τη γνώση όταν ξεκίνησα να εργάζομαι. Δεν ήθελα να είμαι βάρος στην ομάδα στην οποία έχω ανατεθεί. Αποδεικνύεται ότι είμαι υπερβολικά προετοιμασμένος.

Πέρασα 3 εβδομάδες διαβάζοντας ένα βιβλίο 1.000 σελίδων στο C ++. Δεν θυμάμαι αξίες 1.000 σελίδων, αλλά τώρα γνωρίζω πολλά για το C ++. Όπως αποδεικνύεται, χρησιμοποιώ τον Python για τη συνέντευξη και όχι το C ++. Είχα υποθέσει ότι χρειάζομαι C ++, C ή Java, αλλά έκανα λάθος. Είναι καλό να ρωτάτε, όχι να υποθέτετε.

Διάβασα περισσότερα βιβλία από ό, τι χρειαζόμουν. Υπάρχουν μόνο 3 ή 4 βιβλία που έπρεπε να διαβάσω.

Έχω έναν κατάλογο κωδικών δεκάδων αλγορίθμων που εξετάζω, οι περισσότεροι από τους οποίους δεν θα περίμενα σε μια συνέντευξη. Δεν χρειάζεται να το κάνετε αυτό.

Παρακολούθησα πολλές ώρες βίντεο στο YouTube, αλλά θα μπορούσα να είχα παρακολουθήσει πολύ λιγότερα και διέδωσα θέματα με την πάροδο του χρόνου.

Θα έπρεπε να είχα σταματήσει να διαβάζω βιβλία και να βλέπω βίντεο νωρίτερα και να άρχισα νωρίτερα σε προβλήματα κωδικοποίησης. Θα μπορούσα να ξοδέψω περισσότερο χρόνο εφαρμόζοντας τα θέματα που έμαθα.

Η επαναλαμβανόμενη απόσταση είναι το κλειδί για την απομνημόνευση. Μόλις μάθετε κάτι, ελέγξτε το ξανά αργότερα και ξανά αργότερα. Σε κάθε επανάληψη, ενισχύετε τη μάθησή σας. Το να ξοδεύετε ώρες και ώρες ταυτόχρονα σε ουρές προτεραιότητας δεν θα σας κάνει ειδικούς. Γίνετε ειδικός επανεξετάζοντας και αναθεωρώντας με την πάροδο του χρόνου. Εάν το κάνετε, θα φτάσετε στο σημείο όπου δεν μπορείτε να ξεχάσετε λεπτομέρειες.

Για να βοηθήσω στην αναθεώρηση, έφτιαξα 1.792 κάρτες flash (ψηφιακές κάρτες flash). Αυτό είναι πάρα πολύ. Τα εξετάζω στο τηλέφωνο ή το tablet μου κάθε φορά που έχω έναν ελεύθερο χρόνο (όπως κατά τη διάρκεια των Χριστουγέννων ψώνια). Οι κάρτες flash και η επαναλαμβανόμενη απόσταση συμβαδίζουν. Μόλις λάβω μια απάντηση σε μια κάρτα flash, δεν την χαρακτηρίζω ως γνωστή. Το φυλάω στο κατάστρωμα και μόλις το έχω δει και το απαντήσω σωστά πολλές φορές, τότε το χαρακτηρίζω ως γνωστό.

Η αίσθηση του φόβου μου («Τι γίνεται αν μου κάνουν μια ερώτηση σχετικά με τα κόκκινα-μαύρα δέντρα;») με οδήγησε να μελετήσω πολύ περισσότερα θέματα από ό, τι έπρεπε.

Αλλά δεν ήθελα απλώς να προετοιμαστώ για τη συνέντευξη, ήθελα να προετοιμαστώ για μια καριέρα στο Google, επιλύοντας προβλήματα μεγάλης κλίμακας. Αυτό σημαίνει ότι γνωρίζουμε αλγόριθμους που θα εξοικονομήσουν υπολογιστικούς πόρους χρόνου, χώρου και I / O.

Ίσως δεν χρειάζεται ποτέ να γνωρίζω έναν αλγόριθμο μέγιστης ροής (Ford-Fulkerson), αλλά είναι ωραίο να γνωρίζω ότι έχω αυτό το εργαλείο διαθέσιμο εάν προκύψει η κατάσταση (χωρίς να απομνημονεύσω την εφαρμογή) και να αναγνωρίσω την εφαρμογή του σε έναν προβληματικό χώρο.

συμπέρασμα

Νωρίς, εύχομαι να μπορούσα να παραλείψω όλη αυτή τη μάθηση, και απλά βιαζόμουν και να προσληφθώ, έτσι θα μπορούσα αντ 'αυτού να περάσω το χρόνο μου μαθαίνοντας τις γλώσσες και τα εργαλεία για την ομάδα στην οποία συμμετέχω. Όμως, κατά τη διάρκεια, συνειδητοποίησα πόσο σημαντική είναι αυτή η γνώση, και παρόλο που το μεγαλύτερο μέρος της ενδέχεται να μην ισχύει σε καθημερινή βάση, χαίρομαι που προσπάθησα. Έχω μια νέα εκτίμηση της ιστορίας των υπολογιστών, των σπουδαίων στον τομέα, των δομών δεδομένων και των αλγορίθμων (και πώς αλληλοσυμπληρώνονται) και του τρόπου λειτουργίας των συστημάτων υπολογιστών σε χαμηλό επίπεδο.

Θα υποβάλω την αίτησή μου σύντομα. Ήταν ένα μακρύ ταξίδι που φτάνει σε αυτό το σημείο - σχεδόν ένα ολόκληρο έτος. Ξεκίνησε τον Ιανουάριο, αλλά δεν μπόρεσα να δεσμευτώ για σπουδές πλήρους απασχόλησης μέχρι τον Απρίλιο.

Είμαι τόσο προετοιμασμένος όσο μπορώ. Δεν μπορώ να συνεχίσω να μελετώ και να αναβάλω την εφαρμογή για πάντα. Κάποια στιγμή, πρέπει να κάνω το άλμα.

Βλέπω ένα λαμπρό μέλλον μπροστά.

Ευχαριστώ που αφιερώσατε χρόνο για να διαβάσετε την ιστορία μου.

Το άρθρο είναι επίσης διαθέσιμο στα Αραβικά, Βιετνάμ και Κορεάτικα.

Ενημέρωση: 10 Ιανουαρίου 2017

Δεν προσλήφθηκα. Διαβάστε παρακάτω . Ευχαριστώ όλους για την εκπληκτική, συντριπτική υποστήριξή σας.

Ενημέρωση: 6 Μαρτίου 2017

Η ιστορία έχει ένα καλό τέλος! Μου προσλήφθηκε από την Amazon για να εργαστεί ως Μηχανικός Ανάπτυξης Λογισμικού στις Υπηρεσίες Web του Amazon!

Πού θα με βρείτε

Κάνω blog στο Startup Next Door.

Πανεπιστήμιο Google Interview στο Github:

jwasham / google-συνέντευξη-πανεπιστήμιο

google-interview-university - Ένα πλήρες καθημερινό σχέδιο για σπουδές για να γίνει μηχανικός λογισμικού Google. github.com