Lehren aus meiner Reise als selbst gelehrter Entwickler

Der Weg des Autodidakten ist schwierig und voller Unsicherheit. Es gibt keine gerade Linie vom Neuling zum Karriereprogrammierer. Aus diesem Grund glaube ich, dass alle autodidaktischen Entwickler eine einzigartige Geschichte zu erzählen haben.

In diesem Artikel werde ich meine Codierungsreise durch eine Reihe von Lektionen teilen, die ich auf diesem Weg gelernt habe. Wenn Sie hoffentlich über meine Erfahrungen mit dem Programmieren lernen, können Sie über Ihre eigene Vergangenheit nachdenken und sich weiterentwickeln.

Lektion 1: Konzentrieren Sie sich auf den Prozess

Als ich anfing, Programmieren zu lernen, hatte ich nie die Absicht, daraus eine Karriere zu machen. Ich wollte nur eine bestimmte App machen.

Meine Reise begann, als ich ein Senior im College war. Ich habe gerade Richard Bransons Biografie fertiggestellt und wahrscheinlich zu viel TechCrunch gelesen. Ich war voller unternehmerischer Energie.

Ich las ständig darüber, wie College-Kinder massive Investitionen für ihre Ideen für mobile Apps erhielten. Ich dachte, ich könnte eines dieser College-Kinder sein.

Eines Tages, als ich zwischen den Kursen ging, kam mir eine App-Idee. Ich war schnell überzeugt, dass ich das nächste große Ding gefunden hatte.

Ich war von der Idee verzehrt und hörte auf, auf Vorträge zu achten. Meine Begeisterung für die App-Idee wuchs schnell bis zu dem Punkt, an dem ich das Gefühl hatte, Maßnahmen ergreifen zu müssen.

Es gab ein großes Problem. Meine Idee war eine mobile App und ich kannte niemanden, der mobile Apps erstellen könnte.

Also dachte ich: "Was zum Teufel, wie schwer könnte das Programmieren sein?" Ich verlor das Interesse an meinem Hauptfach und verbrachte viel Zeit damit, Xbox zu spielen. Ich könnte einen Teil meiner Freizeit darauf verwenden, meine Idee für eine mobile App auszubauen.

Manchmal hilft es dir, naiv zu sein, wenn du es normalerweise nicht tust.

Ich war ein Student ohne Programmier-, Geschäfts- oder Designerfahrung, der versuchte, Android zu lernen, damit ich eine komplexe mobile App erstellen konnte. Ich denke, das bekommen Sie, wenn Sie eine große Idee mit der Silicon Valley-Hype-Maschine mischen.

Ich wünschte, ich könnte Ihnen sagen, dass die Dinge von hier aus gut gelaufen sind.

Ich kaufte ein paar Bücher über Android-Entwicklung und verbrachte unzählige Stunden in meinem Zimmer, um meine App zusammen zu kleben. Es war mir egal, wie die App funktionierte, ich wollte nur ein fertiges Produkt.

Die Zeit verging und die App verwandelte sich in einen Frankenstein aus kopiertem und eingefügtem Code. Die App hatte nicht viele Funktionen und lief kaum ohne Absturz.

Erst als ich versehentlich in einen Informatikkurs kam, wurde mir klar, dass ich mich mehr darauf konzentrieren sollte, tatsächlich zu versuchen, Softwareentwicklung zu lernen.

Meine Unfähigkeit zu programmieren führte dazu, dass ich meine ursprüngliche App-Idee aufgab. Ich war zu der Erkenntnis gekommen, dass ich das nächste große Ding nicht machen würde, zumindest noch nicht.

Mit der Zeit korrigierte ich mein Verhalten und nahm das Lernen ernst. Ich fing an, Spaß am Programmieren zu haben und begann schließlich eine Karriere als Softwareentwickler.

Meine große App-Idee hat mich lange beschäftigt. Ich habe mich eher auf das Endergebnis als auf den Weg dorthin konzentriert.

Wenn Sie sich zu sehr auf das Endergebnis konzentrieren, nehmen Sie Verknüpfungen. Verknüpfungen können kurzfristig zu Fortschritten führen, aber auf lange Sicht wird Ihr Mangel an Wissen Sie immer einholen.

Es ist wichtig, sich daran zu erinnern, dass das Erlernen von großen Dingen wie Programmieren viele kleine Schritte erfordert. Jeder Schritt muss mit Sorgfalt behandelt werden.

Neues zu lernen ist wie ein Haus zu bauen. Sie beginnen mit dem Fundament und bauen auf. Wenn das Fundament fehlerhaft ist, wird das Ganze früher oder später zusammenbrechen.

Manchmal müssen Sie langsamer werden, um ein starkes Fundament aufzubauen. Es ist keine Schande, langsam zu fahren. Die Leute, die die Grundlagen zum ersten Mal verstehen, werden den Leuten voraus sein, die zurückgehen und sie neu lernen müssen.

Es gibt ein altes chinesisches Sprichwort:

"Es ist besser, viele kleine Schritte in die richtige Richtung zu machen, als einen großen Sprung nach vorne zu machen, nur um rückwärts zu stolpern."

Es geht nicht darum, wie schnell Sie etwas tun können, sondern darum, wie langsam Sie es richtig machen können.

Ich war ein perfektes Beispiel. Von außen hätte es vielleicht so ausgesehen, als wäre ich ein Programmier-Zauberkind. In Wirklichkeit konnte ich keine App erstellen, um mein Leben zu retten.

Konzentrieren Sie sich auf den Prozess und Sie werden sich selbst überraschen, wie viel Fortschritt Sie jeden Tag machen.

Lektion 2: Stapelüberlauf ist fantastisch (aber gefährlich)

Als ich meine Killer-App baute, wurde Stack Overflow mein bester Freund.

Jedes Mal, wenn ich feststeckte, versuchte ich, eine perfekte Frage zusammenzustellen, um sie der Stack Overflow-Community zu stellen. Ich habe durchschnittlich ein paar Fragen pro Tag gestellt.

Ich würde nicht nur Fragen stellen, sondern auch die Antworten auf Stack Overflow als Evangelium behandeln. Ich würde eine verrückte Menge Zeit damit verbringen, die Site zu durchsuchen, um zu versuchen, einen genauen Codeblock zu finden, der mein Problem beheben würde.

Wenn ich eine passende Antwort gefunden habe, habe ich sie kopiert und direkt in meine Codebasis eingefügt und versucht, sie mit meinem vorhandenen Code zum Laufen zu bringen. Ich habe wenig Zeit damit verbracht, den Code zu verstehen, den ich hinzugefügt habe.

Ich habe Brute-Force-Versuch und Irrtum zu einer neuen Kunstform gemacht.

Dieser Prozess dauerte eine Weile, bis ich schließlich die Fehler meines Ansatzes erkannte.

Stapelüberlauf ist ein Segen und ein Fluch. Es hilft Ihnen bei der Lösung von Problemen. Wenn Sie jedoch nicht aufpassen, können Sie schnell von der Website abhängig werden.

Manchmal ist die Website zu gut, um Probleme zu lösen. Es schafft ein falsches Gefühl des Vertrauens, das später zu mehr Kopfschmerzen führen kann.

Der Stapelüberlauf zeigt Ihnen, wie Sie etwas zum Laufen bringen, sagt Ihnen jedoch normalerweise nicht explizit, warum es funktioniert.

Das Wie zu verstehen ist wichtig. Fehler müssen behoben und Code ausgeführt werden.

Wenn Sie jedoch verstehen, warum etwas funktioniert, können Sie das Wissen in Zukunft wieder anwenden.

Es ist wie das Zitat ...

"Geben Sie einem Mann einen Fisch, und Sie füttern ihn für einen Tag. Bringen Sie einem Mann das Fischen bei, und Sie füttern ihn ein Leben lang."

Das Kopieren und Einfügen von Code aus Stack Overflow ist so, als würde man jemandem einen Fisch geben. Zu verstehen, warum ein Codeausschnitt funktioniert, ist wie ihnen das Fischen beizubringen.

Es ist nichts Falsches daran, Code zu kopieren und einzufügen. Wir alle machen es. Es ist nur ein Problem, wenn es zu einer Krücke wird und unser Wachstum als Entwickler bremst.

Das, was ich auf die harte Tour lernen musste, war, dass es unmöglich ist, etwas zu lernen, wenn die Antworten Ihnen ständig gegeben werden. Es gibt keine Abkürzungen im Lernprozess.

Wenn Sie nicht weiterkommen, versuchen Sie, Ihr Codierungsproblem mindestens einige Male zu lösen, bevor Sie zu Google gehen.

Wenn Sie feststellen, dass Sie Code kopieren und einfügen, versuchen Sie ein wenig, das Code-Snippet zu verstehen, bevor Sie fortfahren.

Lektion 3: Erfahren Sie, wie Sie erfahrene Hilfe finden

Das erste, was ich tat, nachdem ich beschlossen hatte, Programmieren zu lernen, war, zwei Android-Entwicklungsbücher zu kaufen.

Zu Beginn habe ich die Übungen in den Büchern genau verfolgt und die Beispielprojekte durchgearbeitet. Ich war jedoch schnell frustriert über die Fortschritte, die ich nach dem Buch gemacht hatte, und beschloss, herauszufinden, wie ich selbst programmieren sollte.

Wie Sie oben gelesen haben, führte dies langsam zu einer Katastrophe.

Ich verbrachte unzählige Stunden isoliert in meinem Zimmer, um einfache Programmierprobleme herauszufinden. Ich blieb in jeder neuen Codezeile stecken und es fühlte sich nicht so an, als würde ich große Fortschritte machen.

Ich war hilflos festgefahren und mein Leben war ein Cocktail aus Zweifel, Frustration und einem überwältigenden Gefühl, verloren zu sein.

Um die Sache noch schlimmer zu machen, hatte ich die gute Idee, eine massive C-Bibliothek namens FFMPEG zu verwenden. Meine App musste Videos bearbeiten, daher hielt ich es für eine gute Idee, die robusten Funktionen der Bibliothek zu nutzen.

Es war nicht mein klügster Schachzug, wenn man bedenkt, dass ich meine Android-App kaum zum Laufen bringen konnte.

Ich habe viel Zeit damit verschwendet, den C-Code zu lesen und herauszufinden, wie ich ihn in meiner App verwenden kann. Ich hatte Mühe, die Bibliothek überhaupt in mein Android-Projekt zu importieren. Der Android-Code und der C-Code wollten nicht gut spielen.

Nachdem ich viele Stunden nirgendwo hingekommen war, wurde ich schließlich frustriert und verließ die Bibliothek.

Etwa zur gleichen Zeit wie das FFMPEG-Debakel habe ich mich für eine objektorientierte Programmierklasse angemeldet. Ich bin mir ehrlich gesagt nicht sicher, wie ich reingekommen bin. Später fand ich heraus, dass ich der einzige Nicht-Informatik-Major in der Klasse war. Ich denke, es gab einen Fehler in der Registrierungssoftware.

Die erste Aufgabe bestand darin, ein Blackjack-Programm zu erstellen. Zu diesem Zeitpunkt hatte ich mir 5-6 Monate lang das Programmieren beigebracht und fühlte mich mit meinen Fähigkeiten einigermaßen sicher.

Ich beendete die Aufgabe und fühlte mich gut bei meiner Arbeit.

Es dauerte nicht lange, bis dieses Gefühl verblasste.

Mein gesamtes Programm wurde in einer großen Methode geschrieben. Fast alle anderen in der Klasse konnten erkennen, dass das Programm in Klassen unterteilt werden musste.

Nicht gut.

Glücklicherweise erlaubte mir die Klassenarbeit und Anleitung des Lehrers, einen Schritt von meiner Android-App zurückzutreten und über meine Programmierfähigkeiten nachzudenken. Ich begann das Lernen zu schätzen und regierte meine Wünsche, eine fertige App zu erstellen.

Mir ist jetzt klar geworden, dass wenn ich in jenen frühen Tagen nur mit einem erfahrenen Entwickler gesprochen hätte, er gesehen hätte, was ich tat. Ich hätte meine Prioritäten klarstellen und mir einen Sinn einreden können. Sie hätten mir geholfen, meinen Weg zu korrigieren, als ich in nutzlose Sackgassen geriet (wie der Versuch, mit FFMPEG zu arbeiten).

Stattdessen habe ich mich teilweise von der Welt isoliert, weil ich das Gefühl hatte, es gäbe niemanden, der mir helfen könnte.

Isolation ist ein zweischneidiges Schwert. Auf der einen Seite können Sie sich auf die jeweilige Aufgabe konzentrieren. Auf der anderen Seite entfernt es Sie von der Welt und hungert Sie an entscheidendem Feedback.

Es gab viele Möglichkeiten, wie ich Hilfe hätte finden können. Ich hätte versuchen können, einen Professor / Studenten an der Universität mit Android-Erfahrung zu finden, oder mich an die örtliche Community wenden können, um Hilfe zu erhalten. Ich hätte auch versuchen können, eine Online-Android-Community zu finden.

Erfahrene Entwickler sind wie ein Kompass. Sie bringen Sie nicht an Ihr Ziel, sorgen aber dafür, dass Sie in die richtige Richtung weisen. Ihre Hilfe kann oft den Unterschied zwischen Erfolg und Misserfolg ausmachen.

Stellen Sie sicher, dass Sie Rat suchen, wo immer Sie ihn finden können. Das spart Ihnen Zeit und Frust auf der Straße.

Lektion 4: Gestalten Sie Ihre Umgebung

Dies könnte das einzige sein, was ich richtig gemacht habe, als ich mir selbst das Programmieren beigebracht habe.

Während meines ganzen Lebens war ich wirklich schlecht darin, für Tests zu lernen oder meine Hausaufgaben zu Hause zu machen. Es gibt einfach zu viele Ablenkungen zu einem bestimmten Zeitpunkt. Ich habe oft versucht, in Bibliotheken oder Cafés Zuflucht zu finden.

Zum Glück habe ich diese Regel angewendet, als ich mir das Programmieren beigebracht habe.

Am Ende wurde ich Stammgast in einigen örtlichen Cafés. Ich habe Coffeeshops anderen Studienorten vorgezogen, weil sie für Abwechslung sorgen und leicht zu verstecken sind (ein einfacher Zugang zu Koffein tut auch nicht weh).

Wenn ich zu Hause lernte, stellte ich sicher, dass meine Tür geschlossen war und meine Mitbewohner wussten, dass sie mich für einen bestimmten Zeitraum nicht störten.

Egal wo ich war, ich würde sicherstellen, dass meine Musik laut genug war, damit ich nicht hören konnte, was um mich herum vorging.

Ich kann nicht sagen, dass ich perfekt darin war, ein ablenkungsfreies Arbeitsumfeld zu finden, aber ich konnte die meiste Zeit erfolgreich sein.

Das richtige Arbeitsumfeld zu haben, wird beim Lernen oft übersehen.

Fokus ist eine grundlegende Komponente des Gedächtnisses und des Erwerbs von Fähigkeiten. Wenn Sie versuchen, etwas Neues zu lernen, hängt die Stärke des Lernens direkt von der Intensität Ihres Fokus ab. Wenn Ihr Fokus schwach ist, werden neue Informationen weniger klebrig, was zu langsamerem Lernen und mehr Zeit zum Lernen führt.

Ihre Arbeitsumgebung sollte ablenkungsfrei sein und lange, ununterbrochene Fokusstrecken ermöglichen. Selbst wenn COVID-19 es erforderlich macht, remote zu arbeiten, können Sie dennoch Maßnahmen ergreifen, um Ihre Lernumgebung zu gestalten.

Hier sind einige Dinge, die Sie tun können:

  • Suchen Sie sich einen Ort, an dem Sie nicht gestört werden
  • Versetzen Sie Ihr Telefon in den Flugzeugmodus
  • Verwenden Sie eine Art zeitgesteuerten Website-Blocker für soziale Medien und Nachrichtenseiten
  • Tragen Sie Kopfhörer und hören Sie nicht ablenkende Musik (vorzugsweise eine lange Wiedergabeliste, damit Sie nicht ständig zwischen den Songs wechseln müssen).
  • Vermeiden Sie Fernsehen oder andere sehr anregende Umgebungen
  • Halten Sie ein Notizbuch in der Nähe bereit, um alle Aufgaben oder Ideen aufzuschreiben, die Ihnen in den Sinn kommen
  • Machen Sie die Menschen um Sie herum darauf aufmerksam, dass Sie nicht gestört werden möchten

Nur Sie können entscheiden, wo und wie Sie Ihre Umgebung gestalten möchten. Aber stellen Sie sicher, dass Sie es tun, denn es lohnt sich.

Lektion 5: Raus in die Welt und Leute treffen

Die Landung meines ersten Programmierjobs war ein zufälliges Ereignis.

Ich bin gerade nach Omaha, Nebraska gezogen und hatte ungefähr ein Jahr Autodidakt-Entwicklung hinter mir.

Ich kannte nur sehr wenige Leute in Omaha und suchte auf Meetup.com nach anderen Leuten, die sich für die Android-Entwicklung interessieren. Ich fand ein Meetup, das sich auf die mobile Entwicklung konzentrierte und sowohl die iOS- als auch die Android-Entwicklung abdeckte, und entschied mich zu gehen.

Zu diesem ersten Treffen zu gehen war nervenaufreibend. Ich verbrachte ungefähr 10 Minuten in meinem Auto am Veranstaltungsort und entschied, ob ich ein- oder ausfahren sollte.

Ich war eingeschüchtert. Ich war mir meiner Programmierkenntnisse nicht sicher und wusste, dass jeder beim Meetup viel mehr Erfahrung hatte als ich.

Ich sagte schließlich, scheiß drauf und ging hinein.

Ich bin froh, dass ich es getan habe.

Ich nahm regelmäßig teil und traf während eines Meetups, nicht allzu lange nachdem ich nach Omaha gezogen war, einen Personalvermittler, der nach einem Android-Auftragnehmer suchte. Wir unterhielten uns eine Weile und ich bekam später in dieser Woche ein Interview für den Job.

Vor dem Interview war ich zuversichtlich. Während des Interviews war ich ein Reh im Scheinwerferlicht.

Der Interviewer sprach über das Projekt, an dem ich arbeiten würde, und alles ging mir über den Kopf. Ich habe versucht, verlobt zu bleiben, aber sie konnten erkennen, dass es außerhalb meiner Reichweite lag.

Nach dem Interview baten sie mich, eine Stunde abzuhängen, damit ich mit jemand anderem sprechen konnte. Da ich wusste, dass ich es vermasselt hatte, ging ich in der Innenstadt herum und versuchte, meinen Kopf frei zu bekommen.

Am Ende habe ich ein Interview mit jemand anderem im Unternehmen geführt, und kurz darauf haben sie mir ein Praktikum angeboten.

Ich war so schockiert, dass ich, nachdem ich alle Unterlagen unterschrieben und meinen Arbeitslaptop zum Laufen gebracht hatte, zum CEO ging und fragte, ob es sich um ein bezahltes Praktikum handele oder nicht.

Das Praktikum wurde zu einem Vollzeitjob und ich begann meine Karriere als Softwareentwickler.

Wenn Sie Autodidakt sind, werden die Leute nicht kommen und Sie aufsuchen. Sie müssen Möglichkeiten für sich selbst finden.

Absolventen von vierjährigen Universitäten und Codeschulen haben den Vorteil, das Netzwerk ihrer Schule bei der Arbeitssuche zu nutzen. Autodidaktische Entwickler haben diesen Luxus nicht.

Autodidaktische Entwickler müssen in die Welt hinausgehen und ihre Netzwerke selbst aufbauen.

Kaltanruf von Arbeitgebern und das Versenden von Lebensläufen können funktionieren. Ich habe jedoch Leute gefunden, die gerne Leute einstellen, die ihnen in ihrem sozialen Netzwerk nahe stehen.

Websites wie Meetup.com eignen sich hervorragend, um monatliche programmspezifische Gruppen zu finden. Selbst in einer Pandemie gibt es immer noch viele virtuelle Meetups, die sehr informativ und nützlich sind.

Es gibt auch andere Slack-Kanäle oder Discord-Communitys, die Sie nutzen können, um sinnvolle Beziehungen aufzubauen. Sie können auch versuchen, verschiedene Personen in Ihrer Nähe zu erreichen und einen schnellen 15-minütigen virtuellen Kaffee mit ihnen zu trinken.

Tun Sie, was Sie können, um den Nerv aufzubauen und mit Menschen zu sprechen. Sei freundlich und rede mit ihnen über deine Erfahrungen. Stellen Sie sicher, dass die Leute Ihr langfristiges Ziel kennen, einen Job zu finden.

Versetzen Sie sich in Situationen, in denen etwas Positives passieren könnte. Sie können keine Verlosung gewinnen, wenn Sie nie ein Ticket kaufen.

Betrachten Sie jede Gelegenheit, die sich Ihnen bietet, denn selbst wenn es wie eine Sackgasse aussieht, kann es zu etwas Größerem führen.

Mein Praktikum war eine enorme Lohnkürzung gegenüber den anderen Angeboten, die ich zu dieser Zeit hatte. Ich wusste jedoch, wenn ich hart arbeiten würde, wäre dies eine Gelegenheit für mich, in die Technologiebranche einzusteigen.

Der Schlüssel liegt darin, langfristig über Beschäftigungsmöglichkeiten nachzudenken. Praktika oder Teilzeitjobs geben Ihnen möglicherweise nicht das gewünschte Gehalt im Voraus, aber sie können in Zukunft Türen öffnen.

Ich hoffe, Sie lernen aus meinen Fehlern und machen selbst aufregende neue Fehler

Wie Sie sehen, habe ich auf meinem Weg zum autodidaktischen Entwickler viele Fehler gemacht.

Sich das Codieren beizubringen ist niemals ein gerader Weg. Alle unsere Geschichten sind einzigartig.

Der Schlüssel ist, weiterzumachen und nicht entmutigt zu werden, wenn die Dinge nicht so laufen, wie Sie es möchten.

Ich ermutige andere autodidaktische Entwickler, ihre Geschichten zu teilen. Sie werden nicht nur wertvolle Erkenntnisse liefern, sondern auch dazu beitragen, die einzigartigen Wege zu beleuchten, die wir eingeschlagen haben.

Hoffentlich helfen Ihnen meine Geschichte und die Lektionen, die ich gelernt habe, weiterzukommen.

Danke fürs Lesen. Wenn Sie mehr über andere Erkenntnisse erfahren möchten, die ich auf diesem Weg gelernt habe, folgen Sie meinem Konto Zero to Programmer auf Twitter. Mein Ziel ist es, Ihnen zu helfen, das Programmieren effizienter zu lernen.