1 Höre auf zu jammern. Mach dich für die lange Reise bereit, oder lege sie einfach beiseite und geh Vögel beobachten.
Für diejenigen, die wirklich ein exzellenter Programmierer werden wollen, die ein Experte werden wollen, die zu einer ultimativen Persönlichkeit werden wollen: Wenn es wirklich wert ist, getan zu werden, dann sind zehn Jahre Investition darin nichts, oder?
Der erste Schritt ist, in den sauren Apfel zu beißen. Akzeptiere, dass dieser Prozess mehr als zehn Jahre dauern wird – es ist ein lebenslanges Streben. Tu es nur, weil du es tun willst. Wenn ein Mensch etwas nicht tun will, wird er darin niemals ein Experte.
2 Schreibe jede Menge Code
Schreibe gleichzeitig jede Menge Code. Es muss kein guter Code sein. Eine lange Zeit wird der Code, den du schreibst, kein guter Code sein. Guter Code, guter Geschmack, erfordert viel Übung, um kultiviert zu werden. Wann immer du dich für ein neues Werkzeug, einen neuen Algorithmus, ein neues Problem interessierst oder wann immer du auf ein Problem stößt, schreibe Code, um es zu üben, und versuche, es so viel wie möglich zu nutzen.
Der Lernprozess hört nie auf. Wenn du mit der Einstellung lernst, jeden Tag so viel wie möglich zu lernen und die maximale "Mileage" herauszuholen, wirst du weit kommen. Komm in einen Zustand, in dem jeder Tag, jede Woche, jeder Monat, an/in dem du nichts Interessantes lernst, ein Fehlschlag ist. Es warten jede Menge coole, interessante Dinge darauf, dass du sie lernst. Selbst wenn du seit 15 Jahren lernst, sind sie zwar schwerer zu finden, aber sie können immer noch gefunden werden. Niemand kann das gesamte Wissen der Programmierwelt beherrschen. Wenn du also das Gefühl hast, dass es nichts mehr zu lernen gibt, suche dir ein neues Projekt und schreibe mehr Code.
Während du diese Dinge tust, achte darauf: Suche nach Mustern inmitten all dessen – Dinge, die automatisiert werden können, um nützliche Arbeit zu leisten, oder Code, den du so oft geschrieben hast, dass er in eine gemeinsame Bibliothek ausgelagert werden kann, oder andere Orte, an denen man Dinge zentralisieren kann. Suche nach Programmiersprachen, die für bestimmte Aufgaben einfach sind. Finde heraus, welche Programmiersprachen für dieselben Aufgaben nicht gut geeignet sind, und denke darüber nach, warum einige Sprachen für diese Aufgaben produktiver sind als andere.
Aber das Wichtigste ist, jede Menge Code zu schreiben. Aber denke daran: Wenn das, was du tust, nicht mehr interessant ist, musst du nicht damit weitermachen, wenn du den Prozess unterwegs nicht genießen kannst.
3 Lies mehr Code
Wenn du einige Projekte angesammelt hast, fang an, den Code anderer Leute zu lesen. Zuerst ist das sehr schwierig. Sie machen viele Dinge, die du noch nie gemacht hast, oder verwenden Stile, an die du nicht gewöhnt bist, oder benutzen sogar Programmiersprachen, die du nicht gelernt hast. Wenn du das interessant findest, lies so viel von diesem Code, wie du kannst. Mach dir keine Sorgen darüber, den Code eines bestimmten Projekts tiefgehend zu analysieren, zumindest nicht am Anfang.
Das Lesen neuen Codes kann dir neue Denkweisen zeigen, was hilft, deinen Geist zu erweitern. Den eigenen Geist zu erweitern ist sehr wichtig, um Fortschritt aufrechtzuerhalten. Es hilft sicherzustellen, dass du, während du vorankommst, weiterhin neue Dinge entdecken kannst, die du lernen kannst.
Kommuniziere unbedingt mit anderen Programmierern. Frage sie, wie und warum sie diese bestimmten Dinge tun, ob sie an Dinge aus einem anderen Blickwinkel herangehen, und frage sie, ob sie Ratschläge zu deinem Code haben. Sei höflich, denn erfahrene Programmierer sind sehr beschäftigt. Respekt bringt dich weit. Dies ist eine eng verbundene Branche, und der Ruf zählt.
4 Lerne viele Programmiersprachen. Werde in einigen von ihnen ein Experte
Du wirst tatsächlich nicht viel Freizeit haben, zumindest nicht genug, um viele Sprachen gleichzeitig zu lernen, es sei denn, du hast außergewöhnliches Glück. Also kannst du viele Programmiersprachen auf einem eher oberflächlichen Niveau lernen – genug, um zu verstehen, was sie populär macht, warum sie in den Bereichen, in denen sie üblicherweise verwendet werden, gut sind und was ihre Schwächen sind. Sich zu erweitern ist wichtig. Beschränke dich nicht auf eine Art von Sprache, wie imperative oder OO-Sprachen; erweitere dich und lerne einige funktionale oder deklarative Sprachen.
Lerne einen Lisp-Dialekt. Du wirst ihn nicht für deine tägliche Programmierung verwenden. Aber ihn zu lernen und zu üben wird dich zu einem besseren Denker machen, und du wirst eine tiefere Wertschätzung für den Charme einfacher rekursiver Systeme gewinnen. Lerne und übe ihn weiter, bis der Moment kommt, in dem du nicht umhin kannst, auszurufen: "Aha!" Bis zu diesem Moment wirst du ihn für einen seltsamen Haufen Syntax und ungeschickte Verwendung halten. Für den Rest deiner Karriere wird er zu einem der atemberaubend elegantesten Konzepte werden, die die Menschheit je ersonnen hat.
Danach lerne eine rein funktionale Sprache. Ich empfehle Haskell. Sie zwingt dich, rein funktional zu denken, auf eine Weise, wie es andere funktionale Sprachen, einschließlich Lisp-Dialekte, nicht tun. Sobald du den Zweck hinter dem Entwurf von Monaden verstehst oder andere "Aha"-Momente hast, wirst du eine höhere Ebene des Denkvermögens und des Entwerfens eleganter Systeme erreichen.
Lerne schließlich eine deklarative Sprache. SQL zählt, obwohl es relativ schwach ist. Prolog wird oft empfohlen. Auch XAML, XSLT und XQuery. Eine deklarative Sprache ist eine, bei der du dem Computer sagst, was er tun soll, und der Computer findet heraus, wie er es tun soll; eine imperative Sprache ist das Gegenteil – du sagst dem Computer, wie er etwas tun soll, und hoffst, dass er korrekt tut, was du willst; in einer funktionalen Sprache beschreibst du, wie Daten und Typen transformiert werden.
5 Erstelle deine eigene Programmiersprache
Sie muss nicht komplex, fortgeschritten oder auch nur besonders elegant sein. Sie muss nicht einmal eine originelle Idee sein. Ich empfehle oft, einen Lisp-Interpreter zu schreiben (noch besser, wenn er in einem Lisp-Dialekt geschrieben ist). Das ist eine großartige Möglichkeit für dich, die Grundlagen zu lernen. Tatsächlich kannst du ein gutes Gefühl für die Grundlagen des Programmiersprachenentwurfs bekommen: lexikalische Analyse, Parsing, Kompilierung, Interpretation, virtuelle Maschinen und wie grundlegende Entwurfsentscheidungen beeinflussen, wie praktisch eine Sprache in verschiedenen Bereichen ist.
Dabei wirst du die folgenden 3 Dinge gewinnen:
1) Du wirst ein tieferes Verständnis dafür entwickeln, wie die von dir gewählten Tools funktionieren, sodass du effizienteren Code schreiben kannst.
2) Du wirst beginnen zu erkennen, welche Gründe hinter den Designentscheidungen gängiger Sprachen und Tools stehen. Das wird dir helfen, die von dir verwendeten Tools effektiver auszuwählen.
3) Du wirst einen Blick auf unentdeckte Möglichkeiten erhaschen, die in Tools und Sprachen noch existieren, deinen Horizont erweitern und es dir ermöglichen, neue, interessante, coole Dinge zum Lernen und Experimentieren zu entdecken.
6 Lerne Dinge, die noch niemand sonst jemals gelernt hat
Dies ist der schwierigste und letzte Schritt. Noch einmal zehn Jahre. Behalte dein Interesse und tu interessante Dinge; lass die Dinge hinter dir, die dir keine Freude bereiten.
Englische Quelle:become-a-good-programmer-in-six-really-hard-steps/