Neues Lernen

Aber wie?

Praktisch täglich stosse ich auf ein Problem, das ich einfacher lösen könnte, wenn ich dazu die entsprechenden Fähigkeiten hätte. Diese Probleme sind teilweise sehr konkret (z.B. die Suche nach einer Library-Funktion mit einer bestimmten Semantik) und teilweise sehr abstrakt (z.B. wie man die Qualität seines Programmcodes verbessern kann, sodass bei Anpassungen keine Fehler miteingebaut werden). Die Probleme haben gemeinsam, dass man sie besser lösen könnte, würde man vorher die entsprechenden Fähigkeiten dazu lernen.

Im Alltag wird das konkrete Problem meistens mithilfe einer kurzen Internetrecherche gelöst, wobei von der Lösung oftmals wenig hängen bleibt, und man das gleiche Problem später erneut lösen muss. Der Lerneffekt bleibt praktisch aus. Das abstrakte Problem wird oftmals gar nicht angegangen, doch regt man sich später wieder darüber auf, dass man in der Zwischenzeit die Chance zur persönlichen Weiterentwicklung nicht wahrgenommen und nichts dazugelernt hat.

Konkrete Probleme erfordern oftmals eine Lösung, die sehr kurzfristig erreichbar ist. Der Lerneffekt steht dabei eher im Hintergrund. Abstrakte Probleme müssen zunächst konkretisiert werden, damit man sich überhaupt an deren Lösung machen kann, was mehr Zeit erfordert. Will man abstrakte Probleme in Zukunft besser lösen können, muss das Lernen systematisch und über eine längere Zeitspanne erfolgen.

Mich beschäftigen derzeit folgende Probleme:

Zu lernen gibt es also genug. Die Motivation für diese Lernprojekte dürfte auch geklärt sein, wobei sie bei kurzfristigen Problemen sicher besser greifbar ist als bei langfristigen. Es fragt sich also, wann der Lernprozess stattfinden soll, aber auch womit.

Kurzfristige Probleme sollte man so früh wie möglich angehen. Diese sind dann auch recht schnell gelöst. Wichtig ist, dass man das Gelernte für später festhält. Hierzu hat sich bei mir ein Repository für Dokumentation bewährt. Da es öffentlich verfügbar und einigermassen aufgeräumt ist, verwende ich dieses immer dann anstelle einer Internetrecherche, wenn ich das Problem schon einmal gelöst habe.

FĂĽr mittelfristige Probleme muss man sich Zeit einplanen. Hier ist Timeboxing hilfreich, oder die Arbeit mit einem Accountability Partner bzw. in einer Lerngruppe. Ich bin Teil einer LPIC-1-Lerngruppe, die sich jeden Montag online trifft und eine oder zwei Lektionen gemeinsam durchgeht. Hierbei ist es wichtig, dass man sich auf ein Lehrmittel einigt; in unserem Fall sind es die offiziellen LPIC-Lehrmittel. FĂĽr Angular fehlt mir derzeit sowohl das soziale Setting als auch ein Lehrmittel, das mich begeistern wĂĽrde.

Bei längerfristigen Projekten war ich in meinem Leben bisher nur selten erfolgreich. Zwar habe ich schon einige Ausbildungen abgeschlossen, doch diese decken sich nur selten mit meinen langfristigen persönlichen Zielen. Ein Teilerfolg war das (teilweise) Durcharbeiten von SICP. Zwar habe ich von den fünf Kapiteln nur (knapp) drei durchgearbeitet, ich habe aber während fast anderthalb Jahren ausnahmslos jeden Tag damit gearbeitet, i.d.R. als erste Beschäftigung des Tages (nach der Zubereitung eines Kaffees). Hier war nicht nur meine Motivation hoch ‒ nach mehreren abgebrochenen Versuchen mich mit der funktionalen Programmierung zu befassen ‒ sondern auch das Lehrmittel ausgezeichnet.

Bei Haskell habe ich derzeit weniger Erfolg. Programming Haskell ist mir zu dicht, Effective Haskell zu aufgebläht und Haskell in Depth erfordert mehr Grundlagenwissen, als ich es derzeit mitbringe. Thinking Functionally in Haskell scheint mir jedoch ein guter Zwischenschritt zu sein, bevor ich es erneut an Haskell in Depth versuche.

Aus meinen Teil- und Misserfolgen leite ich folgende Erkenntnisse ab:

Ob mir diese Erkenntnisse beim Lernen von Angular und Haskell helfen werden, wird sich in den nächsten Wochen und Monaten zeigen.