Articles

Wie man sich selbst Informatik beibringt: Die 100-Stunden-Reise eines Entwicklers

Ich habe mich lange Zeit gefragt: Hilft es, nur die Grundlagen der Informatik zu kennen, um ein besserer Entwickler zu werden? Und kann es einem Entwickler einen Mehrwert bringen?

Wenn Sie sich diese Fragen auch stellen und Sie (noch) keine Zeit in das Erlernen von Informatik investieren wollen, hier ist die Geschichte meiner Erfahrung. In diesem Artikel beantworte ich die folgenden Fragen:

  • Warum Informatik lernen?
  • Was war mein Lernplan?
  • Welche Ressourcen habe ich genutzt?
  • Habe ich etwas Nützliches gelernt, das sich auf meine tägliche Arbeit als Entwickler übertragen lässt?

Ich habe mit dieser fantastischen Liste von Ressourcen begonnen: teach yourself computer science. Es ist im Grunde ein Leitfaden, wie man als Softwareentwickler Informatik studieren kann, ohne viel Geld auszugeben, um ans MIT zu gehen.

So, warum Informatik selbst lernen?

Das ist eine einfache, aber wichtige Frage: Warum sollten wir das überhaupt tun?

Für jedes Projekt, das eine gute Portion Motivation erfordert, versuche ich zuerst, richtige Ziele zu definieren:

  1. Eine neue Sprache / eine neue Technologie schneller zu lernen, indem ich einige Kernkonzepte kenne, die man auf jede Sprache / Technologie anwenden kann.
  2. Verbesserung meines Verständnisses für niedrigere Abstraktionsebenen. Ein besseres Verständnis dafür, „wie es unter der Haube funktioniert“, könnte mein Verständnis und damit meine Effizienz beim Lösen von Fehlern oder Entwerfen von Algorithmen verbessern.
  3. Verbesserung meiner Fähigkeiten im logischen Denken, um meinen Code auch logischer zu machen.
  4. Ich glaube, dass das Verständnis der zugrunde liegenden Konzepte ein Schlüssel für Innovationen im Entwicklungsbereich ist.
  5. Die Geschichte der Industrie zu verstehen: warum sind wir da, wo wir jetzt sind, was können wir tun, um die Computerwelt zu verbessern?

Computer Science 101: der Studienplan

Ich bin nicht daran interessiert, jedes Buch über Informatik zu lesen. Es sollte mir zumindest ein gewisses Verständnis vermitteln.

Deshalb konzentrierte sich mein Studienplan auf das Einprägen, das Verstehen und das Anlegen einer Kurzreferenz über das Gelernte, um leicht darauf zurückkommen zu können.

  1. Ich habe jede Woche etwa 2 bis 3 Stunden gelernt, je nach meinen Prioritäten. Ich wollte nicht zu viel machen und mich ausgebrannt und genervt von der Informatik fühlen. Das Wichtigste für mich war, regelmäßig zu studieren, egal wie viel Zeit. Es sollte etwas sein, das ich gerne tue.
  2. Während ich neues Material studierte, schrieb ich Zusammenfassungen in Form von Mindmaps. Das hat zwei Vorteile: Das Schreiben hilft mir, mich an das Gelernte zu erinnern, und ich kann mir einige Schlüsselkonzepte in kürzester Zeit wieder ins Gedächtnis rufen, wenn ich sie brauche.
  3. Meine Lernzeit ist in zwei Kategorien unterteilt:
    • Neues Lernen (neues Kapitel in einem Buch, einen neuen Videokurs ansehen, Beispiele und Übungen machen)
    • Was ich „Wissensbasisabruf“ nenne. Es geht hauptsächlich darum, (weitere) Übungen zu dem neuen Material zu machen, das ich in der Woche zuvor gelesen / gesehen habe, meine Mindmaps zu lesen und zu versuchen, mich an das zu erinnern, was ich darin geschrieben habe.
  4. In Bezug auf die Übungen versuche ich, nicht mehr als 30min für jede von ihnen zu verwenden. Das Ziel ist es, sich genug abzumühen, um sich an das Konzept zu erinnern, aber nicht zu viel, um sich verbrannt zu fühlen. Es ist ein empfindliches Gleichgewicht.
  5. Ich versuche, einige Übungen, die ich beim ersten Mal nicht geschafft habe, Tage (sogar Wochen) nach den verschiedenen Versuchen zu wiederholen, um zu sehen, ob sich mein Verständnis verbessert hat.

Ich versuche, einige Prinzipien des aktiven Lernens anzuwenden, indem ich so viele Übungen wie möglich mache und mir Fragen stelle, während ich meine Mindmaps überprüfe.

Das Wiederholen des Gelernten von einer Woche zur nächsten ist sehr, sehr hilfreich, um mein Erinnerungsvermögen und mein Verständnis zu verbessern.

Was ich bisher gemacht habe

Motivation, diskrete Mathematik zu lernen

Hier ist, was ich während dieser (fast) 100 Stunden Informatikstudium genau gemacht habe, in chronologischer Reihenfolge.

I. Programmieren (32 Stunden 55m)

Grafik Pomodoro gemacht Überstunden Programmieren Teil
Pomodoro (25 min) gemacht pro Woche für den Programmierteil

In dem Artikel „Informatik selbst lernen“ wurde angegeben, dass ich mich „ungefähr“ an die dort vorgeschlagene Reihenfolge halten soll, beginnend mit dem Bereich der Programmierung.

Hauptquelle: Structure and Interpretation of Computer Programs (SICP)

Dieses Buch wird von vielen als die Bibel angesehen, die jeder Entwickler lesen sollte. Es ist kostenlos und die besten epub- und PDF-Versionen finden Sie hier.

Die Lösungen der Übungen finden Sie hier.

Ich habe es geschafft, fast alle Übungen bis 1.2.5 Greatest Common Divisors zu machen.

Ergänzende Ressource: Berkeley Videos

Die Videos sind hier verfügbar. Die Notizen zum Kurs finden Sie hier. Wenn Sie Beispielklausuren von Berkeley suchen, finden Sie sie hier.

Diese sind eine sehr gute Ergänzung zum Buch: Konzepte werden erklärt, ohne dass man im Gegensatz zum Buch zu viel über Mathematik erfährt. Wenn Sie das SICP studieren wollen, aber Ihr mathematischer Hintergrund nicht stark genug ist, folgen Sie einfach diesem Kurs. Meine Notizen und Übungen finden Sie hier.

Was ich bisher von SICP gelernt habe

  • Der Anfang des Buches ist sehr interessant, um die Wurzeln der funktionalen Programmierung und der Rekursionen wirklich zu verstehen.
  • Es definiert viele Begriffe, die Programmierer jeden Tag benutzen, auf sehr präzise Weise. Perfekt, um bei technischen Diskussionen noch präziser zu werden.
  • Das Buch hat mit seinen Übungen meine analytischen und Problemlösungsfähigkeiten gepusht.

Was kann ich im wirklichen Leben gebrauchen?

Die ganze Diskussion über Rekursionen im Buch hat mir ganz erheblich geholfen, sie einfach zu schreiben. Das ist ein Thema, mit dem ich immer ein bisschen gekämpft habe. Jetzt ist es ein Kinderspiel, jedes Problem, das ich mit Rekursion lösen will, durchzugehen.

Welchen Schwierigkeiten bin ich begegnet?

Dieses Buch ist nichts für Mathe-Hasser. Es wurde für MIT-Studenten geschrieben, die bereits über ein gewisses mathematisches Vorwissen verfügen. Ohne diese Vorkenntnisse können die Übungen ziemlich schwierig und manchmal frustrierend sein.

Ein weiteres Problem war, dass ich zu viel Zeit mit den Übungen verbracht habe. Ich konnte die meisten lösen, aber in manchen Fällen brauchte ich Stunden.

Ich beschloss von da an, nicht mehr als 30 Minuten für die Übungen aufzuwenden, um die Frustration gering zu halten, ohne den großen Nutzen der Übungen zu verwerfen.

II. Diskrete Mathematik (50 Stunden)

Grafik-Pomodoro über den Programmier-Teil hinaus
Pomodoro (25min) pro Woche für Diskrete Mathematik

Je mehr ich SICP las, desto schwieriger fand ich die Übungen, zumal es um einige mathematische Konzepte ging, die mir nicht bekannt waren. Daher beschloss ich, weiterzumachen und mit dem Studium des MathematicsThemas zu beginnen.

Hauptquelle: Diskrete Mathematik und ihre Anwendungen

Das Selbststudium der Informatik empfiehlt die Lektüre des Vorlesungsskripts von László Lovász, das hier als ps-Dokument frei verfügbar ist. Ich habe es hier in PDF umgewandelt, für diejenigen, die nicht wissen, was ein ps-Dokument ist. Ich wusste es auch nicht.

Jedoch habe ich eine andere Hauptquelle für das Studium gewählt, die anscheinend anfängerfreundlicher ist: Discrete Mathematics and its Application von Kenneth H. Rosen. Es ist ein ziemlich großes Buch, das in seinen früheren Ausgaben recht preiswert war.

In 50 Stunden konnte ich das erste Kapitel (Aussagenlogik) beenden und 54 Übungen machen.

Ergänzende Ressource: MIT 6.042J mathematics for computer science, Fall 2010

Diese Videos vom MIT sind eher fortgeschrittene Kurse über Diskrete Mathematik. Auch sie setzen voraus, dass man schon einiges in Mathematik weiß. Nichtsdestotrotz sind sie sehr interessant, auch wenn ich Schwierigkeiten hatte, ihnen zu folgen.

Im schlimmsten Fall bekommt man zumindest einen guten Einblick, worum es in der Diskreten Mathematik geht.

Ein Lehrer (Tom Leighton) hat bessere Lehrfähigkeiten als andere. Sie haben aber alle ein sehr tiefes Wissen über ihr jeweiliges Fachgebiet.

Was ich bisher gelernt habe

  • Das Buch hat mir die Grundlagen der Logik vermittelt, eine sehr gute Fähigkeit, die man als Entwickler haben sollte. Schließlich basiert unsere Arbeit auf richtiger Logik.
  • Propositionale Logik mit Quantoren und Inferenzregeln. Im Grunde ist es die Art und Weise, wie man logische Aussagen schreibt, wie man überprüft, ob logische Aussagen Sinn machen und wie man ihre Wahrheitswerte beweist.
  • Grundlagen der Mengen- und Graphentheorie, dank der Videos. Es ist sehr interessant und sehr nützlich für viele Dinge: Zustandsautomaten, Netzwerke…

Was kann ich im wirklichen Leben verwenden?

  • Wahrheitstabellen können sehr nützlich sein, um komplexe bedingte Aussagen zu sortieren oder zu refaktorisieren.
  • Neulich konnte ich DeMorgan-Gesetze anwenden, um die Lesbarkeit einiger bedingter Aussagen zu verbessern.
  • Das Ausdrücken von unübersichtlichen und kurzen Spezifikationen mit Prädikaten, Konjunktionen und Disjunktionen (der Sprache der Aussagenlogik) kann Widersprüche und fehlende Details aufzeigen. Sie kann sehr prägnant komplexe Spezifikationen präzise zusammenfassen. Sie kann eine gute Brücke zwischen den Spezifikationen und dem Code selbst sein.

Welchen Schwierigkeiten bin ich begegnet?

  • Es ist schwer zu verstehen, wie man einen mathematischen Beweis schreibt, besonders wenn einem niemand helfen oder den Beweis korrigieren kann.
  • Mir fehlten noch einige Grundlagen in Mathematik, die ich besonders für die Videos vom MIT brauchte.

III. Zurück zu den Grundlagen der Mathematik (11 Std. 15)

Grafik-Pomodoro mit Überstundenprogrammierungsteil
Pomodoro (25 min) pro Woche für die Grundlagen der Mathematik gemacht

Nachdem ich einige andere (kleinere) Probleme mit meinen Mathematikkenntnissen in Diskreter Mathematik hatte, beschloss ich, zu den Grundlagen zurückzukehren.

Ein weiterer wichtiger Grund, der mich bei meiner Wahl leitete: Ich hatte wirklich Spaß an der Mathematik. Ohne das hätte ich nicht weiter Informatik studiert.

Lassen Sie sich nicht verwirren: die Mathematik, die mit Informatik zu tun hat, ist anders als die, die Sie in der Schule gelernt (und vielleicht gehasst) haben. Ich würde Ihnen raten, es auszuprobieren.

An diesem Punkt entschied ich mich, abwechselnd Diskrete Mathematik und die Grundlagen der Mathematik zu studieren.

Hauptquelle: Wie man die Grundrechenarten schnell lernt

Dieses 4-stündige Video ist wirklich gut, um vieles aufzufrischen, von den Summen und dem Produkt über die Prozente, Exponenten, Logarithmen… Es deckt sehr schnell sehr viel ab mit vielen Übungen.

Die Tipps, die gegeben werden, sind auch sehr gut, um die Grundrechenarten schnell zu verstehen und zu lösen.

Sie können auf Youtube eine einstündige Vorschau des Videos sehen. Wenn es Ihnen gefällt, können Sie es auf Vimeo kaufen.

Was ich bis jetzt gelernt habe

  • Meine Fähigkeiten im Kopfrechnen haben sich sehr gut verbessert. Wenn Sie Schwierigkeiten haben, schnell Prozente zu berechnen oder sogar einfache Multiplikationen ohne Taschenrechner zu machen, wird Ihnen dieser Kurs sehr helfen.
  • Grundlagen zum Umgang mit Brüchen, Exponenten, Quadratwurzeln, Logarithmen und so weiter.

Was kann ich im echten Leben gebrauchen?

  • Mental rechnen zu können ist für viele Dinge im echten Leben sehr hilfreich. Schnell mal Angebote berechnen, grob abschätzen, wie teuer ein voller Einkaufswagen wird…
  • Dieses Wissen kann ich im Informatikstudium gut gebrauchen.

Welchen Schwierigkeiten bin ich begegnet?

Nach dem Studium des SICP und der Diskreten Mathematik war es sehr entspannend, mit ein bisschen Arbeit endlich alles zu verstehen. Ich hatte nicht viele Schwierigkeiten.

Mein Rat für Anfänger in der Informatik

Grundlagen-Mathematik

Wenn ich zum Anfang dieses Abenteuers zurückkehren könnte, würde ich die verschiedenen Fächer in dieser Reihenfolge studieren:

  • I. Grundlagen der Mathematik
  • II. Diskrete Mathematik
  • III. SICP

Ich hätte die Grundlagen und die Diskrete Mathematik parallel studiert und wäre dann zum SICP übergegangen, wobei ich versucht hätte, die Mathematikkenntnisse, die mir noch fehlten, auf dem Weg zu erwerben.

Ich werde die Grundlagen der Mathematik und der Diskreten Mathematik weiterhin mindestens 150 Stunden lang lernen:

  • Das Wenige, was ich darüber weiß, hat mir in meinem täglichen Entwicklerleben schon sehr geholfen.
  • Ich habe das Gefühl (und gelesen), dass es eine Grundlage für jedes andere Gebiet der Informatik ist.
  • Ich habe Spaß daran, es zu lernen! Auch das ist ein wesentlicher Bestandteil, um motiviert zu bleiben.

Zusammenfassend: eine sehr gute Erfahrung, die viele meiner Schwächen untermauert, mir aber auch solide Grundlagen beibringt, die mir gefehlt haben.

Denken Sie aber daran: Wenn Sie erwarten, dass Sie durch ein Informatikstudium ein supergeiler Programmierer werden, könnten Sie enttäuscht werden. Informatik ist schwer zu studieren. Es hat starke theoretische Seiten, und auch wenn ich schon einige Anwendungen in meiner täglichen Arbeit gefunden habe, ist es überhaupt nicht umwerfend.

Diese Reise durchzustehen, erfordert Arbeit, Geduld und Hingabe. Klare Ziele, ein konkreter Lernplan und Spaß am Prozess sind Pflicht.

Dieser Artikel wurde von Matthieu Cneude geschrieben und ursprünglich auf The Valuable Dev veröffentlicht, einem Blog, der sich mit wichtigen und zeitlosen Konzepten in der Softwareentwicklung beschäftigt. Sie können den Beitrag hier lesen.

Veröffentlicht am 1. Oktober 2020 – 12:46 UTC

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.