Wie ich in 9 Monaten von einem Neuling zu einem Software Engineer gewechselt bin, während ich Vollzeit gearbeitet habe

In diesem Beitrag werde ich erzählen, wie ich in neun Monaten von null (ish) zu einem sechsstelligen Stellenangebot im Bereich Software-Engineering übergegangen bin, während ich Vollzeit gearbeitet habe und Autodidakt war.

Wann immer ich anfing, eine Erfolgsgeschichte zu lesen, suchte ich sofort nach dem Hintergrund des Autors und hoffte, dass er zu meinem passen würde. Ich habe nie jemanden gefunden, der den gleichen Hintergrund hatte wie ich, und höchstwahrscheinlich passt meiner nicht genau zu Ihrem.

Trotzdem hoffe ich, dass meine Geschichte andere inspiriert und als wertvoller Datenpunkt fungiert, der Ihrem Erfolgsgeschichten-Datensatz hinzugefügt werden kann.

Vollständige Offenlegung

Ich habe an der High School (vor neun Jahren) einen Visual Basic for Applications (VBA) -Kurs besucht. In meinem ersten Ingenieurkurs (vor sieben Jahren) habe ich C, Python, Matlab und Labview gelernt. Ich habe eine gute Universität mit einem Abschluss in Chemieingenieurwesen und einem guten GPA (vor drei Jahren) abgeschlossen. Ich hatte außerhalb der Schule, in der High School oder im College keine Programmierung gemacht, bis ich mich entschied, letztes Jahr lernen zu wollen.

Nach dem College bekam ich einen Job als Prozessingenieur in einer Raffinerie. Ich habe dort gearbeitet, bis ich meine Karriere in Software Engineering geändert habe.

Warum ich Karriere machen wollte

Ich habe es genossen, technische Probleme zu lösen, aber ich wusste, dass ich irgendwann in die Geschäfts- / Startup-Welt einsteigen wollte. Ich hatte immer den Gedanken an einen MBA im Hinterkopf, aber jedes Mal, wenn ich mir den Preis der Top-Schulen ansah, ließ mein Interesse nach.

Am 27. Mai 2017 habe ich wieder über MBAs gegoogelt und bin irgendwie auf Software-Engineering gestoßen. Es schien perfekt zu passen.

Software-Ingenieure sind zunehmend gefragt, die Gehälter sind großartig und es ist die perfekte Branche, um in die Startup-Welt einzusteigen, ohne eine Menge Anfangskapital zu benötigen. Alles, was Sie brauchen, ist ein Computer, und Ihre Möglichkeiten sind unbegrenzt.

In keiner anderen technischen Disziplin können Sie einfach eine Idee haben, mit dem Aufbau beginnen, sie den Benutzern zeigen und mit wenig Kapital und geringer Eintrittsbarriere iterieren. In der Chemieingenieurwesen benötigen Sie im Wesentlichen eine laufende Anlage oder viel Geld, um eine Anlage zu entwerfen, wenn Sie eine Idee für ein neues Produkt hatten.

Ich hatte von Leuten gehört, die ihren Job kündigten und an einem Bootcamp teilnahmen, aber je mehr ich online darüber las, desto mehr wurde mir klar, dass man alles ganz alleine lernen kann, wenn man engagiert und konzentriert ist.

Sie könnten argumentieren, dass Sie die Netzwerk- und Karriereberatung eines Bootcamps verlieren. Das kann wahr sein, aber ich hatte das Glück, dass ich in der Bay Area lebte, was mir erlaubte, an mehreren Meetups teilzunehmen, also habe ich mich auf diese Weise vernetzt.

Außerdem war der schlimmste Fall, dass ich merkte, dass ich es nicht alleine schaffen konnte, und dann kündigte ich meinen Job, um an einem Bootcamp teilzunehmen.

Das Ziel

Sie müssen ein Ziel haben. Vor allem, wenn Sie versuchen, während der Vollzeitarbeit zu lernen. Es ist einfach, Ihr Lernen in die Länge zu ziehen, wenn Sie keinen externen Druck haben, der Sie drückt. Sie müssen also internen Druck erzeugen. Ihr Ziel sollte einfach und quantitativ sein. Sie sollten genügend Nachforschungen anstellen, um ein vernünftiges Ziel zu erreichen. Meins war das Folgende:

Holen Sie sich innerhalb eines Jahres einen Job als Softwareentwickler mit dem gleichen oder einem besseren Gehalt, als ich gerade verdiene.

Der Plan

Sobald Sie ein Ziel erreicht haben, benötigen Sie einen Plan, der Ihnen dabei hilft, dorthin zu gelangen. Hier konsumieren Sie so viele Erfolgsgeschichten wie möglich. Keiner von ihnen passt genau zu Ihrer Situation, aber Sie können sich von jedem beraten lassen. Ich habe meinen Plan mithilfe von Ressourcen wie dem Lernprogramm-Subreddit, dem freeCodeCamp-Forum und Medium entwickelt (und wiederholt).

Am 27. Mai 2017 entschied ich, dass ich den Codierungssprung machen würde, und ich tauchte mit dem Kopf voran ein. An diesem Tag beschloss ich, nicht mehr als 40 Stunden pro Woche in meinen Job zu investieren, damit ich Zeit hatte, nach der Arbeit und an den Wochenenden zu programmieren. Zum Glück habe ich meine Fortschritte ziemlich gut dokumentiert.

Mein Plan sah durch viele Iterationen ungefähr so ​​aus:

  1. Nehmen Sie an einem CS-Einführungskurs teil, um ein solides Grundverständnis für die wichtigsten CS-Konzepte zu erhalten
  2. Folgen Sie freeCodeCamp, bis ich selbst Full-Stack-Web-Apps auf Portfolio-Ebene erstellen kann
  3. Refactor, um den Code zu bereinigen, Tests hinzuzufügen und sich auf erweiterte Konzepte zu konzentrieren
  4. Tragen Sie zu Open Source bei
  5. Bereiten Sie sich auf Vorstellungsgespräche vor

Zu Beginn war mein Plan einfach. Zu der Zeit dachte ich, ich würde dem technischen Handbuch von Google folgen, also begann ich mit dem empfohlenen Einführungskurs Udacity CS101.

Monat 0 - Udacity CS101, Harvard CS50

Das Hoch, diese große Entscheidung zu treffen, gab mir eine Menge Energie. Ich fing an zu programmieren, sobald ich von der Arbeit nach Hause kam und hörte nicht auf, bis ich ins Bett ging. Und dann wieder das ganze Wochenende. Udacity CS101 verfolgte den Fertigstellungsgrad, was für mich ein großer Motivator war. Ich habe meinen Fertigstellungsgrad jeden Tag nach dem Codieren protokolliert. Ich habe die ersten 75% in 10 Tagen beendet. Die letzten 25% waren rekursiv und für mich etwas härter. Insgesamt habe ich 20 Tage gebraucht, um Udacity CS101 fertigzustellen.

Während ich Udacity CS101 einnahm, hatte ich angefangen, das Lernprogramm-Subreddit ziemlich intensiv zu lesen. Ich habe gelesen, dass es für autodidaktische Entwickler, die eine berufliche Veränderung anstreben, wichtig ist, online aktiv zu sein. Ich habe beschlossen, neue Twitter-, Reddit-, Stack Overflow-, Medium- und Quora-Konten mit meinem vollständigen Namen zu erstellen, um eine Online-Präsenz aufzubauen.

Außerdem habe ich beschlossen, keine ablenkenden Medien wie Instagram, Facebook und nicht programmierte Subreddits mehr zu lesen. Ich würde mein Telefon nur auf programmbezogene Nachrichten und Beiträge überprüfen. Dies war entscheidend, um sicherzustellen, dass ich mich über die besten Lernpfade und Lernressourcen informierte. Aus diesem Grund habe ich auf edX von Harvard CS50 erfahren.

Ich war ursprünglich damit zufrieden, nur einen Einführungskurs zu machen, aber jeder schien Harvard CS50 zu empfehlen, also beschloss ich, mich mit dem nächsten zu befassen. CS-Schüler anderer Schulen hatten diesen Kurs besucht und sagten, sie hätten in CS50 mehr gelernt als ein oder zwei Jahre an ihrer Universität, an der sie CS studierten. Der allgemeine Konsens war, dass der Kurs schwierig, aber lohnenswert war. Am Ende des Monats 0 hatte ich die ersten 5 Vorlesungen und Hausaufgaben erledigt.

Monat 1 - Harvard CS50, Linux, 1. Meetup, freeCodeCamp

Ich habe CS50 ungefähr Mitte des Monats abgeschlossen. Ich werde meine Erfahrungen mit CS50 nicht zu sehr kommentieren, da ich hier einen ausführlichen Beitrag über meine Erfahrungen geschrieben habe.

TLDR: Es ist ein großartiger Kurs, ich kann ihn nur empfehlen. David Malan ist ein ausgezeichneter Dozent, und es gibt eine Menge Ressourcen, die Ihnen dabei helfen, durchzukommen. Sie beginnen in C, wechseln zu Python und beenden die Webentwicklung. Es ist sehr dicht und es gibt viel Material, aber ich denke, es ist es wert.

Nach CS50 habe ich beschlossen, mein XPS 15 so einzurichten, dass Windows und Ubuntu doppelt gestartet werden. Das war ein frustrierendes Wochenende. Ich habe meine Partitionen durcheinander gebracht und fast meinen Laptop gemauert. Ich war kurz davor, meinen Laptop zu schmeißen und einen neuen zu bekommen.

Ich entwöhnte mich langsam von Windows und benutzte schließlich ausschließlich Ubuntu. Ich wollte mich zwingen, mich mit der Kommandozeile vertraut zu machen, von der ich glaube, dass sie bis zu einem gewissen Grad funktioniert hat, aber ich habe noch einen langen Weg vor mir.

Ich habe 100 Tage Code gestartet, um sicherzustellen, dass ich jeden Tag konzentriert und codiert bin.Es ist wichtig, dass Sie Ihre Fortschritte dokumentieren. Wenn Sie jeden Tag Fortschritte machen, scheint es nicht viel zu sein, aber wenn Sie einen Monat oder mehrere Monate zurückblicken, werden Sie feststellen, dass Sie tatsächlich einige Fortschritte erzielt haben, die Sie motivieren, weiterzumachen.

Ich wusste, dass Networking mich machen oder brechen würde, also nahm ich den Mut zusammen, zu meinem ersten Coding-Treffen zu gehen. Ich war noch nie zu einem Meetup gegangen, geschweige denn zu einem Coding-Meetup. Ich war so nervös, dass ich mich nach dem Fahren, Parken und Gehen zur Tür fast umdrehte und nach Hause ging.

Es half, dass es das erste Treffen für die Gruppe war. Mir wurde schnell klar, dass es keinen Grund gab, nervös zu sein. Niemand kannte sich, niemand war wertend und jeder war lernbegierig. Dies war der Beginn eines Meetup-Bummels. Ich habe in 9 Monaten über 50 Meetups besucht.

Ich bin froh, dass ich früh angefangen habe, mich zu treffen. Die meisten Leute haben erst begonnen, an Meetups teilzunehmen, als sie nach einem Job suchten, aber zu diesem Zeitpunkt ist es fast zu spät. Es gibt so viele Gründe, früh zu beginnen. Um ein paar zu nennen:

  1. Das Entwickeln von Beziehungen dauert lange. Früh anfangen bedeutet, dass Sie Verbindungen haben, die für Sie bürgen können, wenn Sie später nach einem Job suchen
  2. Mit Fremden über das Programmieren zu sprechen, ist eine gute Möglichkeit, sich auf Interviews vorzubereiten
  3. Sie können neue Frameworks, Tools und Lernressourcen von Personen lernen, die vor Ihnen stehen. Dies kann Ihren zukünftigen Lernplan beeinflussen.

Zu diesem Zeitpunkt gab es einige Unsicherheiten bei meiner Codierungsreise. Dies war ungefähr der Zeitpunkt, an dem ich mich entscheiden musste, welche Art von Softwareentwickler ich sein wollte.

Letztendlich habe ich mich für die Webentwicklung entschieden, weil es anscheinend eine hohe Nachfrage und auch viele Online-Ressourcen gab. Nachdem ich das herausgefunden hatte, musste ich herausfinden, was ich als nächstes tun sollte. Einige Leute empfahlen mir, zu diesem Zeitpunkt über Web-Apps nachzudenken, die ich erstellen wollte, und dann loszulegen. Einige Leute haben The Odin Project oder freeCodeCamp empfohlen.

Der Typ, der das wöchentliche Treffen leitete, an dem ich teilnahm, kannte Ruby und wollte Projekte mit Ruby machen. Dies war ein wichtiger Grund, warum ich mich für das Odin-Projekt entschieden habe.

Und dann, zwei Tage später, habe ich diese Idee verworfen.

Das ist einer der Nachteile des autodidaktischen Weges. In einer Minute glaubst du zu wissen, welchen Weg du gehen sollst, aber am nächsten Tag fragst du dich, ob das der richtige Schritt war.

Ich habe gelesen, dass Ruby in Ungnade gefallen ist, und ich habe dies durch die Suche nach Ruby- und JavaScript-Jobs bewiesen, sodass ich am Ende freeCodeCamp gestartet habe. Das einzige, was mich an freeCodeCamp gestört hat, war, dass sie die Projektideen hatten, sodass jeder Camper die gleichen Projekte durchführt. Das hat mich zunächst beschäftigt, weil ich mich von Personalvermittlern abheben wollte. Am Ende liebte ich jedoch freeCodeCamp und kann es jetzt nur empfehlen. Weitere Einzelheiten zu meinen Erfahrungen und Empfehlungen in Bezug auf freeCodeCamp finden Sie in meinem Artikel hier.

Monat 2 - YDKJS, freeCodeCamp Front End, Reagieren

Ich habe angefangen, You Don't Know JavaScript zu lesen, weil jeder empfohlen hat, freeCodeCamp zu ergänzen. Ich musste einige Abschnitte erneut lesen, da es ziemlich dicht ist, aber es ist eine perfekte Ressource, um lexikalischen Umfang, Abschlüsse, Versprechen und alle Teile von JavaScript zu lernen, von denen Sie hören und die Sie lernen möchten, aber niemals tun, weil sie schwierig erscheinen.

Ich habe den Front-End-Abschnitt von freeCodeCamp fertiggestellt. Das Checklistenformat und die geschätzte Fertigstellungszeit haben mich motiviert, schnell fertig zu werden. Es juckte mich auch, zum nächsten Abschnitt überzugehen und Reagieren zu lernen. Dies bedeutete jedoch auch, dass meine Projekte nur ein minimales Styling hatten. Ich habe alles getan, um die User Stories zu erfüllen und nichts weiter.

Im Nachhinein hätte ich mich vielleicht darauf konzentrieren sollen, die Projekte attraktiver zu gestalten. Vielleicht hätte mir das geholfen, CSS tiefer zu lernen.

Der nächste Schritt war das Erlernen von React, und ich war ziemlich begeistert.

Ich hatte so viel darüber gehört und war bereit, mich den coolen Kindern anzupassen. Angesichts der damaligen Lizenzprobleme war ich jedoch etwas zögerlich. Ich bin wirklich froh, dass das kein Thema mehr ist. Lernreaktion war schwierig für mich. Ich kannte damals keine guten Tutorials (aber es scheint, als gäbe es jetzt eine Menge).

Ich habe versucht, die Dokumente zu lesen und dem Tic-Tac-Toe-Tutorial von Facebook zu folgen, aber ich habe nicht alles verstanden. Mir wurde gesagt, wenn das bei mir nicht funktioniert, dann habe ich JavaScript nicht genug verstanden. Also las ich wieder You Don't Know JavaScript, aber das war wieder zu dicht für mich.

Monat 3 - freeCodeCamp React, CodeClub, Starten des freeCodeCamp Back End

Letztendlich habe ich mich einfach entschlossen, mich durch die freeCodeCamp React-Projekte zu arbeiten, um zu sehen, wie es lief. Dieser Code war hässlich, aber er hat mir geholfen, React ein wenig besser zu verstehen.

Das Treffen, an dem ich wöchentlich teilgenommen hatte, entschied, dass sie Projekte mit Full-Stack-JavaScript anstelle von Ruby erstellen würden, und sie beschlossen, dass das erste Projekt darin bestehen würde, eine Website für die Meetup-Gruppe CodeClub.Social zu erstellen.

Ich habe Karten mit der React and Meetup API entwickelt, mit denen sich der Benutzer für die nächsten drei Meetups auf unserer Website anmelden kann. Es war ein wenig schwierig für mich, eine kurze Pause von freeCodeCamp einzulegen, aber es war eine Gelegenheit, die ich mir nicht entgehen lassen konnte. Ich war froh, mit einer kleinen Gruppe von Menschen an einem Projekt zu arbeiten. Es hat mir auch geholfen, Git und Github zu lernen.

Bevor der Monat vorbei war, begann ich am Backend-Bereich von freeCodeCamp zu arbeiten.

Monat 4 - Fertig freeCodeCamp Back End, Yeggle

Ich habe alle API-Projekte in freeCodeCamp durchgearbeitet, aber beim Image Search Abstraction Layer-Projekt habe ich angefangen, von freeCodeCamp abzuweichen.

Ich wollte unbedingt Full-Stack-Webanwendungen erstellen. Sobald ich den Titel dieses Projekts sah, hatte ich eine Idee für mein eigenes Projekt. Ich würde eine Knoten-App erstellen, die zufällige imgur-URLs in einer Datenbank speichert, und dann ein Front-End erstellen, das eine benutzerdefinierte Anzahl dieser zufälligen Bilder ausgibt. Was jeder sagt, ist wahr: Sie arbeiten härter und haben mehr Erfolg, wenn Sie an einem Projekt arbeiten, das Ihre eigene Idee war.

Als ich es zum Laufen brachte, war ich sehr stolz auf mich. Es war hässlich und klobig, aber es hat funktioniert.

Während ich über freeCodeCamp arbeitete, lernte ich, welche Projekte in meinen Fähigkeiten liegen würden. Ich lief zu der Zeit regelmäßig, also kam ich auf Ideen für meine Läufe und schrieb sie auf, wenn ich nach Hause kam. Auf diese Weise hätte ich eine Liste mit Projektideen, wenn ich fertig wäre.

Endlich fühlte ich mich bereit, meine eigenen nützlichen und ausgefeilten Full-Stack-Web-Apps zu erstellen, die ich mit den Benutzern teilen und in mein Portfolio aufnehmen konnte. Ich war so bereit, loszulegen.

Bei der Suche nach einem neuen Restaurant habe ich immer Yelp geöffnet, um die Bewertungen zu überprüfen, und dann Maps, um die Bewertungen zu überprüfen. Was wäre, wenn ich eine App erstellen würde, die beide nebeneinander vergleicht?

Also habe ich Yeggle gemacht. Ich habe Node / Express / React zusammen mit den Google Maps- und Yelp-APIs verwendet. Es gab ein paar Hindernisse, von denen ich nicht dachte, dass ich sie überwinden könnte, aber am Ende war ich fertig und sehr stolz auf meine App. Dann habe ich es auf Reddit gepostet, und es hat niemanden interessiert. Das war ein bisschen blöd, aber ich ließ mich nicht unterkriegen.

Monat 5 - StockIT

Ich habe diesen Monat nicht so viel erreicht, da ich mit einem zweiwöchigen Urlaub in Japan und Thailand angefangen habe!

Aber ich habe mein nächstes Projekt gestartet und abgeschlossen. Ich las immer wieder darüber, wie schwierig es war, einen Job als autodidaktischer Entwickler zu bekommen, und dachte, ich müsste etwas Einzigartiges tun. Ich erinnerte mich an ein Spiel, bei dem ein Dow Jones-Aktiengraph im Trend lag und Sie eine Gelegenheit zum Kaufen und eine Gelegenheit zum Verkauf hatten. Das Ziel war es, den Markt zu schlagen. Der Zweck des Spiels war es, Ihnen zu zeigen, wie schwierig es war, den Markt zu schlagen.

Meine Idee war es, ein ähnliches Spiel zu entwickeln, aber statt des Marktes würden Sie gegen einen Algorithmus für maschinelles Lernen spielen. Also habe ich StockIT erstellt.

Ich habe ein Video-Tutorial über Pandas und Scikit Learn gemacht, das mehrere Techniken des maschinellen Lernens abdeckte. Ursprünglich wollte ich einige coole Deep-Learning-Techniken anwenden, aber mir wurde klar, dass dies große Datenmengen und mehr Zeit in Anspruch nahm, als ich ausgeben wollte.

Stattdessen habe ich mich an ein einfaches lineares Regressionsmodell gehalten. Ich dachte, das wäre der schwierige Teil, aber das war es nicht. D3 dazu zu bringen, mit React zu leben, war der schwierige Teil. Beide Bibliotheken wollten das DOM steuern. Es gab einige andere Bibliotheken, die geholfen haben, sich den beiden anzuschließen, aber ich fand sie zu aufgebläht. Am Ende habe ich D3 verwendet, um die SVGs zu generieren, und React, um mit dem DOM umzugehen, was für mich ganz gut funktioniert hat.

Dieses Mal, als ich es mit Reddit geteilt habe, haben es alle geliebt!

Wie bei VCs dreht sich auch bei Redditoren alles um maschinelles Lernen. Die ganze Liebe von Reddit war ein großer Vertrauensschub. Die Leute spielten mein Spiel und genossen es!

Monat 6 - jobSort (), Job Hunt Prep

Nach StockIT bin ich direkt zu meinem nächsten persönlichen Projekt übergegangen. Ich wollte eine Jobbörse erstellen, in der die kleineren Websites mit technischen Schwerpunkten wie Stack Overflow, Github und Hacker News zusammengefasst sind. Um meinen eigenen einzigartigen Dreh hinzuzufügen, habe ich mich dafür entschieden, ihn nach den Technologien zu sortieren, die der Benutzer in einem Job haben wollte und wie sehr er jeden von ihnen haben wollte.

Nehmen wir zum Beispiel an, ich habe nach einem Job gesucht, der jemanden sucht, der JavaScript, React und / oder Python kennt, und ich wollte wirklich mit JavaScript und React arbeiten, aber Python war mir nicht so wichtig. Dann könnte ich JavaScript eine 3 geben, React eine 3 und vielleicht Python eine 1. Die Auflistungen würden dann entsprechend sortieren.

Ich bin bei diesem Projekt auf verschiedene Hindernisse gestoßen und musste ein paar Mal den Kurs ändern, aber am Ende hatte ich ein Produkt, mit dem ich zufrieden war. Mein letzter Tech-Stack war React / Node / Express / MySQL. Ich habe das Projekt im Subreddit cscareerquestions gepostet und 650 Aufrufe erhalten, bevor es entfernt wurde, da sie keine persönlichen Projekte zulassen.

Das „Endprodukt“ ist hier und wenn Sie mehr über meine Kämpfe und Refaktoren erfahren möchten, lesen Sie meinen Beitrag hier.

Aufgrund meiner Probleme nahm jobSort () einen anständigen Teil des Monats in Anspruch. Am Ende bekam ich Kaffee mit einem Freund, den ich bei meinem ersten Treffen getroffen hatte, und er riet mir, mich jetzt für eine Stelle zu bewerben. Ich habe überall gelesen, dass alle sagen, sie hätten zu lange gewartet, um sich zu bewerben. Wenn ich in einem Beitrag gefragt wurde, wann ich mich bewerben soll, war der oberste Kommentar immer "jetzt".

In meinem Kopf arbeitete ich mich durch meinen strukturierten Plan, um mein Portfolio mit persönlichen Projekten aufzubauen, arbeitete dann an Open-Source-Beiträgen, bereitete mich auf Interviews vor und bewarb mich schließlich für Jobs. Dieser Freund überzeugte mich, diesen Plan aufzugeben und mich zu bewerben. Also habe ich diesen Monat ein Portfolio und einen Lebenslauf erstellt. Im nächsten Monat würde ich mich bewerben.

Monat 7 - Testen, Jobsuche

Diesen Monat habe ich mich darauf konzentriert, meine Projekte zu verbessern und mich auf Jobs zu bewerben. Ich wollte auch Testen und Redux lernen.

Ich habe CodeClub.Social um eine Flexbox erweitert, damit sie reagiert. Ich habe die mobile UX auf jobSort () verbessert. Ich habe jobSort () um Tests mit Mokka / Chai / Enzym erweitert, die schwierig einzurichten, einfach zu starten und dann schwer zu 100% abzudecken waren.

Bis Ende des Monats hatte ich mich auf 63 Stellen beworben. Ich habe das als Selbsteinschätzung angesehen. War mein Portfolio / Lebenslauf gut genug? Wenn ja, woran musste ich arbeiten, um mich auf Interviews vorzubereiten? Zuerst habe ich mich bei Hacker News beworben: Wer stellt ein und in der Tat.

In den Hacker News habe ich mit jobSort () ermittelt, für welche Angebote ich mich bewerben möchte. In der Tat habe ich versucht, Nicht-Software-Unternehmen zu prüfen, ob ich überhaupt irgendwo einen Anruf oder ein Interview bekommen kann.

Zuerst bewarb ich mich schnell und personalisierte meinen Lebenslauf / mein Anschreiben nicht. Dann beschloss ich, mein Anschreiben und meinen Lebenslauf zu personalisieren und dann zu versuchen, eine E-Mail an jemanden aus dem Unternehmen zu senden. Diese Methode war deutlich besser als der Shotgun-Ansatz.

In diesem Monat erhielt ich fünf Anrufe - zwei von Rekrutierungsunternehmen und drei von Softwareunternehmen, darunter:

  • eine vertragliche DevOps- / Testrolle bei einem Dotcom-Unternehmen
  • ein Lebensmittelanalyseunternehmen der Serie B und
  • Ein ziemlich großes und erfolgreiches Startup, das kürzlich von einem großen Unternehmen gekauft wurde

In zwei Fällen habe ich es über den HR-Bildschirm geschafft, aber keiner von ihnen lieferte ein Interview vor Ort. Ich war ziemlich zufrieden mit den drei Anrufen und habe viel von ihnen gelernt.

Alle haben online erwähnt, dass von Junior-Entwicklern nicht erwartet wird, dass sie von Anfang an so viel wissen. Sie müssen nur leidenschaftlich und aufgeregt sein, um zu lernen. Also dachte ich einfach. Ich bin leidenschaftlich und aufgeregt zu lernen. Was ich aus diesen Aufrufen gelernt habe, war jedoch, dass niemand einen Junior-Entwickler suchte. Sie erwarten, dass Sie vom ersten Tag an wissen, was Sie tun.

Diese Anrufe lehrten mich, dass ich musste

  • Seien Sie gut genug, um vom ersten Tag an einen Mehrwert zu schaffen
  • Seien Sie zuversichtlich genug, um sie davon zu überzeugen, dass ich vom ersten Tag an einen Mehrwert schaffen kann

Monat 8 - Nachtschicht, Redux, Open Source, Vor-Ort-Interview

Ich habe diesen Monat angefangen, in der Nachtschicht 40 Tage lang in meinem Vollzeitjob zu arbeiten - 6 Tage die Woche, 12 Stunden am Tag, 17 Uhr bis 5 Uhr morgens. Pfui.

Ich wusste, dass ich diesen Monat nicht so viel erreichen könnte, aber ich hatte ein Ziel und wollte es erreichen, also konnte ich mir keinen Monat frei nehmen.

Ich habe jobSort überarbeitet, um Redux zu verwenden, was überraschenderweise nicht so schwierig war, wie ich es mir vorgestellt hatte. Ich habe mir viele Podcasts darüber angehört und Blogposts darüber gelesen, und es hat mir nie wirklich Sinn gemacht, bis ich anfing, es zu benutzen.

Ich mag den Datenfluss mit Redux sehr. Es ist jetzt interessant zu sehen, wie sich Leute über Redux beschweren. Ich glaube nicht, dass ich qualifiziert bin, meine Meinung stark auszusprechen, aber ich mag das Reduzierungsmuster.

Dies sollte für mich der Monat der Open Source sein. Ich würde meinen ersten Open-Source-Beitrag leisten, und es wäre ein großartiger Beitrag zu einer fantastischen Bibliothek. Ich wollte zu React beitragen!

Alle sagten, es sei schwierig, eine Codebasis zu lesen, geschweige denn dazu beizutragen. Aber ich musste auffallen, ich musste einzigartig sein. Ich wusste, dass mein Beitrag nicht signifikant sein würde, aber ich wollte es trotzdem tun.

Ich würde damit beginnen, die Dokumente vollständig durchzulesen und dann die Codebasis zu durchsuchen. Beobachten Sie jede Ausgabe, jede PR. Das vollständige Lesen der React-Dokumente war eine großartige Übung, und ich bin froh, dass ich es getan habe. Aber ich erkannte schnell, dass das Problem mit dem Beitrag zu React darin besteht, dass es einfach nicht so viele „gute erste Ausgaben“ gibt, und sie werden schnell aufgegriffen.

Bei einem der Meetups, an denen ich teilnahm, empfahl Anthony Ng mir, Downshift auszuprobieren, eine Autocomplete-Bibliothek von Kent C. Dodds. Dies war ein Spielwechsler. Es war direkt in meinem Steuerhaus. Die richtige Schwierigkeit, die richtige Menge an Problemen, nicht zu viele Mitarbeiter, super hilfreicher Betreuer, sauberer, gut getesteter Code. Darüber hinaus war es eine perfekte Lösung für einige Probleme, die ich mit meiner jobSort () -Anwendung hatte.

Ungefähr zur Hälfte des Monats erhielt ich eine E-Mail von einem der Unternehmen, bei denen ich mich im Vormonat beworben hatte. Sie richten einen ersten Telefonbildschirm und dann einen technischen Telefonbildschirm ein. Die Technologien, nach denen sie suchten, waren genau das, was ich gelernt hatte - React, Redux und D3. Ich habe meistens nur über meine Projekte gesprochen und warum ich bestimmte Entscheidungen getroffen habe. Danach baten sie mich, vor Ort zu einem Interview zu kommen. Mein erstes Interview vor Ort!

Ich hatte mich überhaupt nicht auf Interviews vorbereitet, also ging ich mit der Erwartung darauf ein, dass ich den Job nicht bekommen würde, aber ich würde wertvolle Interviewerfahrung sammeln. Ich hatte auch drei Stunden Schlaf, da ich immer noch in der Nachtschicht arbeitete, was nicht half. Glücklicherweise war der technische Teil kein Whiteboarding, sondern nur eine einstündige Paarprogrammiersitzung. Es war eine ziemlich einfache Herausforderung, aber ich war sehr nervös.

Zuerst machte ich mir Sorgen, dass ich alles wusste, ohne es nachzuschlagen. Als ich merkte, dass ich die Herausforderung nicht beenden würde, wurde mir klar, dass ich aufhören musste, mir Sorgen zu machen, was der Interviewer von mir hielt, und einfach google / stack overflow, um Antworten zu finden. Ich bin nicht fertig geworden und dachte, ich hätte kläglich versagt.

Da ich dachte, ich hätte die Paarprogrammierung nicht bestanden, fühlte ich mich für den Rest des Interviews entspannt. Letztendlich habe ich das Interview mit erhobenem Kinn verlassen. Im schlimmsten Fall habe ich wertvolle Interviewerfahrung gesammelt, und im besten Fall habe ich mein erstes Stellenangebot erhalten.

Monat 9 - Stellenangebot

9 Monate und 7 Tage nach diesem ersten Tag erhielt ich mein erstes Stellenangebot, als ich mich entschied, mit dem Kopf voran in die Programmierung einzutauchen, um meine Karriere zu ändern. Ich war zuversichtlich, dass ich nach meinem ersten Interview vor Ort ein Angebot erhalten hatte. Wenn ich das Angebot jedoch nicht annahm, was wäre, wenn dies das einzige Angebot wäre, das ich für mehrere Monate erhalten würde? Am Ende nahm ich das Angebot an und bin mit meiner Entscheidung zufrieden. Ich wollte für Code bezahlt werden!

Rat

Bis zu diesem Punkt habe ich meine Geschichte größtenteils mit einigen Ratschlägen geteilt. Wenn Sie dies lesen, denken Sie wahrscheinlich entweder über einen Karrierewechsel nach oder lernen gerade das Codieren mit der Absicht, Karrieren zu wechseln. Ich hoffe, dass die folgenden Ratschläge Ihnen helfen werden, einen Plan zu entwickeln oder sich an Ihren aktuellen Plan zu halten und Ihr Ziel zu erreichen.

  1. Finden Sie heraus, was Sie motiviert und nutzen Sie es zu Ihrem Vorteil. Für mich waren es Checklisten, die meinen Fortschritt dokumentierten und mit verschiedenen Programmiergemeinschaften interagierten. Wenn Sie nicht motiviert sind, Ihr Ziel zu erreichen, ist nichts anderes wichtig, weil Sie nicht fertig werden.
  2. Ziele setzen und erreichen. Ich würde argumentieren, dass Sie monatliche Ziele und vielleicht sogar tägliche Ziele haben sollten. Monatliche Ziele, um sicherzustellen, dass Sie auf dem richtigen Weg sind, um Ihr Hauptziel zu erreichen, und tägliche Ziele, um sicherzustellen, dass Sie tatsächlich tägliche Fortschritte erzielen. Eine Strategie, die für mich funktioniert hat, war, meine täglichen Ziele in der Nacht zuvor zu erreichen. Auf diese Weise können Sie nicht den ganzen Tag unproduktiv arbeiten und haben das Gefühl, Fortschritte gemacht zu haben, als Sie es wirklich nicht getan haben. Es zwingt Sie, Ihre täglichen Leistungen mit Ihren täglichen Zielen zu vergleichen.
  3. Gehen Sie zu Meetups, bevor Sie glauben, bereit zu sein. Zu Meetups zu gehen kann beängstigend sein, aber wie ich oben erwähnt habe. Aber im Allgemeinen sind alle nett und hilfsbereit. Vielleicht finden Sie Leute, die nicht daran interessiert sind, mit Ihnen zu sprechen, aber sie sind die Minderheit und niemand wird urteilen. Außerdem gibt jeder gerne Ratschläge (wie ich es gerade tue).
  4. Tragen Sie zu Open Source bei, bevor Sie glauben, bereit zu sein. Wenn Sie mit dem Programmieren beginnen, scheint Github dieser beängstigende Ort zu sein, an den Sie niemals gehen möchten. Es ist eigentlich sehr einladend für Anfänger und ein großartiger Ort, um guten Code zu sehen und Ihren eigenen Code überprüfen zu lassen. Wenn Sie immer noch nicht überzeugt sind, lesen Sie meinen Beitrag Warum Sie jetzt zu Open Source beitragen sollten.
  5. Beginnen Sie mit der Bewerbung, bevor Sie glauben, bereit zu sein. Dieser war hart für mich, weil ich dachte, ich wäre anders. Ich dachte, ich müsste den Markt nicht testen, um ein Gefühl dafür zu bekommen, woran ich arbeiten soll. Ich dachte, ich würde wissen, wann ich bereit wäre, mich zu bewerben. Ich sage es dir gerade. Sie wissen nicht, wann Sie sich bewerben müssen. Sie können also genauso gut jetzt anfangen. Sie sollten nicht verrückt werden und sich bei 300 Unternehmen bewerben, bevor Sie für Loops lernen. Sie sollten jedoch wissen, dass der beste Weg, um zu wissen, was Sie lernen müssen, darin besteht, den Markt anzuwenden und zu testen.

Jetzt geh wieder raus und codiere!