Wie ich aus dem Fegefeuer entkommen bin und das Programmieren gelernt habe - und wie Sie es auch können.

Kontext: Ich bin ein Entwickler von Tabletop-Spielen und ein digitaler Vermarkter. Nachdem ich mich lange mit Spielen und Computern beschäftigt hatte, beschloss ich, vor etwa drei Jahren das Codieren zu lernen.

Ich mache mich wie viele andere auf den Weg, indem ich ausführlich suche, welche Sprache ich lernen soll und woher ich komme, und im Laufe meiner Reise mehrmals zu diesem Thema zurückkehre. Ich bin auf mehrere Threads gestoßen, die eine Sprache oder Lernplattform über eine andere vorgeschlagen haben, und dachte daran, meine besonderen Erfahrungen zu teilen, falls dies für jemand anderen im selben Unterscheidungsprozess hilfreich ist.

Haftungsausschluss: Ich bin kein professioneller Programmierer, und obwohl ich meine Fähigkeiten zum Nutzen meiner Arbeit nutze (Sie können hier über meine Suche nach einem Prototyp-Framework lesen), ist die Codierung weiterhin eher eine Ergänzung zu meiner Hauptarbeit als eine Einnahmequelle , was auch immer das dir sagt.

Auch Haftungsausschluss: Ich versuche nicht, eine Sprache oder Lernplattform über einer anderen zu positionieren, und ich habe ganz offensichtlich nicht versucht, jede Sprache auf jeder Plattform zu lernen. Das Folgende ist nur meine Erfahrung mit dem Versuch, in einer zugegebenermaßen verwirrenden Umgebung den vernünftigsten Weg nach vorne zu finden.

Sie können auch für die TL; DR nach unten springen .

Prolog: C ++

Ich bin mir nicht ganz sicher, ob ich bereits wusste, dass C ++ ein Eckpfeiler in der Entwicklung von Videospielen ist und bleibt. Vielleicht habe ich es in einer der Infografiken "Welche Programmiersprache soll ich lernen" gesehen, die es gibt. Aber ich wollte mehr darüber wissen, wie Spiele gemacht werden und wie man mit dem Computer spricht. Ich bin ziemlich technisch freundlich und habe meine eigenen PCs gebaut oder daran herumgebastelt. Ich denke, das könnte sich für die Erfahrung eignen, das Codieren zu lernen.

Heiliger Rauch, war ich weit aus meiner Tiefe. Ich habe ein paar Online-Tutorials gemacht (ich denke durch learncpp oder ähnliches) und bald festgestellt, dass ich mehr Anleitung benötigen würde, um grundlegende objektorientierte Programmierprinzipien in einer möglicherweise leichter zugänglichen Sprache zu verstehen, als ich beim Erlernen von C ++ gefunden habe.

HTML, CSS, JavaScript und Python

Bevor ich mich auf dieses Abenteuer einließ, hatte ich bereits ein wenig HTML-Erfahrung und bin auf die Codecademy gestoßen. Mir hat die Möglichkeit sehr gut gefallen, Tutorials über den Browser zu erstellen, ohne eine IDE einrichten zu müssen (dies für C ++ war eine anstrengende Erfahrung). Ich habe schnell alle Lektionen der Codecademy über HTML und CSS verbraucht. Der natürliche Weg von diesem Punkt war, den JavaScript-Kurs zu machen, den ich genoss. Aber ich befand mich bald im "Tutorial Fegefeuer" (nicht meine Referenz) und arbeitete mich durch den Python-Kurs und andere.

Ich sollte auch erwähnen, dass ich die Kurse der Codecademy als kostenloser Benutzer abgeschlossen habe und keine Abonnementgebühr für das zahlen wollte, was sie zu dieser Zeit anboten, einschließlich Projekten und Unterstützung durch Mentoren.

Ich habe viele Grundlagen von der Codecademy und den allgemeinen OOP-Prinzipien gelernt, aber nicht viel davon ohne einen klaren Weg nach vorne angewendet. Ich kehrte zu meiner Suche zurück (wen ich veräpple, ich habe viel Zeit damit verbracht, während des gesamten Prozesses gleichzeitig andere Sprachen, Lernplattformen und Bootcamps zu erforschen) und beschloss, durch Kurse über Unity mehr über die Spieleentwicklung zu erfahren.

C #

Ich fand Ben Tristems Unity-Kurs auf einem von Udemys mehrjährigen 10000% Rabatt auf den Umsatz und arbeitete fleißig die Tutorials durch, um Klone von 2D-Brick Breaking und anderen Spielen zu erstellen. Ich habe gerade genug C # gelernt, um durchzukommen, aber nicht genug, um mich sicher zu fühlen, selbst etwas zu machen.

Die Einheit selbst war hier wahrscheinlich eher eine Straßensperre als die Anweisung von Tristrem und Co., die eigentlich recht gut war. Der Unity-Editor ist eine Bestie einer Engine mit vielen guten Tools, die für Anfänger undurchdringlich sind (auch hier können Sie mehr über meine Erfahrungen mit Unity lesen).

Ich habe immer noch das Gefühl, dass ich aus den Kursen und dem einfachen Akt, dem gewünschten Arbeitsablauf von C # und Unity ausgesetzt zu sein, viel gelernt habe, aber nicht genug aus der Erfahrung herausgeholt habe, um fortzufahren. Ein Freund von mir gab mir einen Tipp, um mir freeCodeCamp anzusehen, wo ich als nächstes hinging.

Zurück zu JavaScript

FreeCodeCamp sieht auf den ersten Blick wie eine weniger auffällige Codecademy oder ein Baumhaus aus. Aber ich mochte, wie einfach die Tutorials waren und nicht an einer Paywall vorbeikommen mussten, um Fortschritte zu erzielen. Ich habe dort angefangen, wo ich mit dem Erlernen von HTML und CSS aufgehört habe, und gute Fortschritte gemacht, bis ich zu den Responsive Web Design-Projekten kam, die erforderlich sind, um den ersten Abschnitt abzuschließen und eine Zertifizierung zu erhalten.

Ich kann mit Sicherheit sagen, dass dies der Moment (oder eine Reihe von Momenten) meines Auswurfs aus dem Fegefeuer des Tutorials war. Für einen Neuling ohne echte professionelle Webdesign-Erfahrung und die Bereitschaft, meine eigenen Lösungen zu finden, ohne die Antwort zu googeln, waren die Projekte schwierig . Ich habe mich schließlich durchgesetzt und ein paar alberne Websites erstellt, die den Anforderungen entsprachen, aber die Erfahrung hat mich dazu veranlasst, mehrere weitere freeCodeCamp-Tutorials zu JavaScript-Front-End-Bibliotheken und Back-End-Frameworks durchzuarbeiten.

Noch wichtiger ist, dass ich angefangen habe, an meinen eigenen webbezogenen Projekten für CodePen und Spieleprojekte mit einer Reihe verschiedener Engines zu arbeiten. Ich habe auch angefangen, Python zu verwenden, um einige grundlegende soziale Analysen in meinem Tagesjob durchzuführen, und fand es hilfreich.

Fegefeuer nach dem Tutorial

Viel später spulen wir vor und ich arbeite jetzt an mehreren spielbezogenen Projekten in Phaser und Unity (insbesondere an einem digitalen Prototyp für ein Tabletop-Kartenspiel, das ich entwickle). Ich habe verdammt viel Zeit in der Framework-Dokumentation und im Stack Overflow verbracht, um nach Antworten und Best Practices für Dinge zu suchen (diesen Beitrag noch einmal verknüpfen, um ein gutes Maß zu erreichen). Ich habe auch Freundschaften mit einigen Kollegen aufgebaut, die selbst Programmierer sind, und es war hilfreich, Code von ihnen auszuführen, um Ratschläge und Feedback zu erhalten.

Eine Sache, die bei der Arbeit an meinen eigenen Projekten hilfreich war, ist nur die grundlegende Erfahrung beim Einrichten eines Workflows. Das Erlernen der Verwendung der Befehlszeile und von Git in Verbindung mit dem Einrichten von NPM und eines Code-Editors hat mir die Augen geöffnet (insbesondere von CodePen, das einfach alles für Sie erledigt). Ob gut oder schlecht, die meisten Tutorials setzen Sie nicht dem Problem der Werkzeuge aus, die Sie benötigen, um Ihre Arbeit zu erledigen, und es gibt viel zu lernen.

Wenn Sie dies lesen und nach dem suchen "und ich habe gerade meinen ersten Job als Programmierer bekommen!" Aussage, es tut mir leid zu enttäuschen! Das war nicht mein Ziel (zumindest bisher), aber ich habe einige grundlegende TL; DR-Erkenntnisse zu teilen, die für jeden hilfreich sein können, der auch auf der Suche nach einer Programmiersprache ist oder dem Fegefeuer des Tutorials entkommen kann.

TL; DR

JavaScript:

  • Pro: Ein sehr guter Einstieg in das Erlernen der objektorientierten Programmierung, insbesondere wenn Sie an irgendeiner Art von Webentwicklung interessiert sind (Front- oder Back-End). Sie können dies auf den meisten Plattformen lernen, aber meine Erfahrung wurde am besten von freeCodeCamp unterstützt.
  • Con: Viele Websites werden Ihnen sagen, dass es "nur in Ihrem Browser ausgeführt wird", so dass Sie "keine IDE einrichten müssen" und somit leichter zu erlernen sind, aber diese Denkweise wird Sie nur so weit bringen. Wenn Sie mit gängigen JavaScript-Frameworks (React, Vue, Express usw.) eine sinnvolle Entwicklung durchführen möchten, müssen Sie mit einem Code-Editor, einem Paketmanager, Abhängigkeiten usw. etwas IDE-benachbartes einrichten die Art von Unterstützung, die Sie beispielsweise durch das Einrichten von .NET oder ähnlichem erhalten würden.

Python:

  • Pro: Super freundlich für Neulinge, wenn die geschweiften Klammern in anderen Sprachen zunächst einschüchternd sind, und ein guter Einstiegspunkt, wenn Sie Interesse an Back-End-Programmierung oder Datenwissenschaft haben. Ich hatte eine gute erste Onboarding-Erfahrung durch die Codecademy.
  • Con: Ihre Optionen sind etwas eingeschränkt, wenn Sie in die Front-End- oder Spieleentwicklung einsteigen möchten. Es gibt zum Beispiel Frameworks, mit denen Sie Spiele erstellen können (z. B. PyGame). Wenn Sie sich jedoch speziell mit der Spieleentwicklung befassen, sollten Sie anderswo besser bedient werden.

C #:

  • Pro: Eine sehr angenehme Sprache, die von Microsoft und der Open Source-Community gut unterstützt wird. Damit können Sie Back-End-Entwicklungen durchführen, Desktop-Apps erstellen und Spiele erstellen (meistens mit Unity, aber es gibt auch andere Engines wie Monogame). Es mag eine unpopuläre Meinung sein, aber ich würde empfehlen, zuerst C # durch Microsoft-Tutorials oder anderswo zu lernen und dann Unity zu lernen, um die kognitive Belastung durch die Komplexität des Editors zu verringern.
  • Con: Nicht viel , hier zu sprechen, es sei denn , Sie wirklich nicht tun , wie Microsoft oder wirklich tun will Arbeit auf Front - End - Web - Entwicklung (ich nehme an, Sie in Blazor aussehen könnten, aber ich würde beginnen hier nicht empfehlen). Ich könnte Bände darüber sprechen, wie Unity zum Beispiel die Benutzererfahrung verbessern kann, aber C # selbst ist großartig.

Allgemeine Gedanken zum Lernen und Entkommen Tutorial Fegefeuer :

  • Eine meiner Frustrationen bei der Frage "Welche Programmiersprache soll ich lernen?" Was ich fühlte, war die unzureichende Antwort von "Nun, was willst du bauen?" Ich bin oft auf diese Antwort gestoßen und denke nicht, dass dies der richtige Weg ist, um das Programmieren zu lernen, wenn Sie noch nicht wissen, was Sie damit machen möchten. Ein Anfänger hat nicht genug Kontext, um zu wissen, was er bauen kann , geschweige denn den Weg dorthin (es sei denn, er ist der Typ, der nur Spiele machen oder nur einen Job als Webentwickler bekommen möchte ).
  • Eine bessere Antwort wäre zu sagen: "Probieren Sie ein paar Tutorials auf verschiedenen Websites und in verschiedenen Sprachen aus und prüfen Sie, ob Ihnen etwas interessant erscheint. Wenn dies der Fall ist, bleiben Sie dabei. Wenn dies nicht der Fall ist, wählen Sie eines nach dem Zufallsprinzip aus und sehen Sie." wohin es dich führt. Das Zeug, das du lernen wirst, wird dir helfen, unabhängig davon, was du tatsächlich machst. "
  • Wenn Sie sich zwingen können, aus dem Tutorial-Ökosystem auszusteigen und etwas außerhalb der für Sie eingerichteten geschützten Umgebung zu erstellen, können Sie außerdem Dinge lernen, die Sie eventuell wissen müssen, z. B. das Einrichten eines IDE, Suche nach Antworten auf Fragen und Teilen Ihrer Arbeit.

Ich hoffe, dieser Beitrag ist hilfreich für andere da draußen, die nach einer Programmiersprache oder einer Möglichkeit suchen, dem Fegefeuer des Tutorials zu entkommen und coole Sachen zu bauen. Und ich würde auch gerne von Ihren Erfahrungen hören!

Wenn Ihnen dieser Artikel gefallen hat, lesen Sie bitte meine Spiele und Bücher, abonnieren Sie meinen YouTube-Kanal oder treten Sie dem Entromancy Discord bei.

MS Farzan, Ph.D. hat für bekannte Videospielunternehmen und redaktionelle Websites wie Electronic Arts, Perfect World Entertainment, Modus Games und MMORPG.com geschrieben und gearbeitet und war Community Manager für Spiele wie Dungeons & Dragons Neverwinter und Mass Effect: Andromeda . Er ist Creative Director und Lead Game Designer von Entromancy: A Cyberpunk Fantasy RPG und Autor der Nightpath Trilogy . Finden Sie MS Farzan auf Twitter @sominator.