Kann man Programmieren lernen?

Als Titel wollte ich erst Wie lernt man Programmieren? nehmen, wollte dann aber auch niemanden enttäuschen, der sich anhand des Titels eine konstruktive Antwort erwartet. Andererseits ist ja eh klar, dass jede Frage, die in einem Titel gestellt wird, mit Nein beantwortet werden kann. Entsprechend könnte ich den Beitrag an dieser Stelle auch beenden.

Tatsächlich bewegen mich diese Frage immer mal wieder, im Moment wieder mehr. Auslöser war ein Artikel, den ich irgendwo aufgeschnappt habe, oder besser nur die Überschrift, die auch als Frage formuliert war und ich mir deshalb das Lesen des Artikels sparen konnte: Programmieren als Schulfach?

Mit der Beantwortung bin ich mir wirklich unsicher: einerseits hatte ich Informatik in der Schule und dort wurden in den drei Jahren zwei Programmiersprachen gelehrt: Pascal und Logo. Andererseits habe ich beide Sprachen jeweils in der ersten Woche nach dem Schulstart durch Lesen der Bücher gelernt. Danach konnten mir die Lehrer in Sachen Programmieren nicht wirklich was beibringen.

Das war aber auch noch die Zeit, in der ein Mathematik und ein Chemie-/Erdkundelehrer den Informatikunterricht gemacht haben. Es war äußerst toll, damals schon mit Logo-Technik und selbstgebastelten Ampel-Steuerung herumzuprogrammieren. Man muss auch bedenken, dass das die Zeit von Apple IIgs in den Klassenzimmern war.

Ich wollte damit auch gar nicht die Schule kritisieren, als vielmehr hervorheben, dass nicht die Schule mich zum Programmieren gebracht hat, sondern meine eigene Neugierde. Ich weiß nicht, was aus mir geworden wäre, wenn ich den C-64 zu Weihnachten bekommen hätte, statt mir ein Vierteljahr später vom Kommuniongeld einen C-16 mit BASIC-Lernkurs zu kaufen. Beim C-16 war ich angewiesen, aus Zeitschriften Listings abzutippen, oder eben mit dem BASIC-Lernkurs selbst was auf die Beine zu stellen.

Das war alles sehr erbärmlich, ich hatte aber in den Jahren darauf noch sehr viel Zeit, mich weiter mit der Materie zu beschäftigen. Das Programmieren hat mich dabei nie losgelassen, auch wenn ich irgendwie nie wirklich etwas sinnvolles programmieren konnte/durfte/sollte. Das änderte sich erst, als ich für die Firma, in der meine Mutter arbeitete, in meiner Freizeit neben der Schule eine Verwaltung für Kundendaten programmiert habe. Ich glaube, das war damals in Turbo-Pascal auf meinem ersten PC, einem 286er.

Während des Studiums und den Nebenjobs dort wurde das ganze Wissen extrem vertieft. In den Vorlesungen in der Theorie und während der Nebenjobs und Uni-Praktika in der Praxis. Aber erst bei meinem ersten Job bei einer AdServer-Firma habe ich überhaupt mit der Webentwicklung angefangen. Damals noch ausschließlich im Backend und in C/C++.

Irgendwann wurde es dann PHP und nach vielen Jahren richtiges PHP mit Frameworks wie CakePHP und schließlich Symfony. Wenn wir nun vor der Aufgabe stehen, Junior-Webentwickler einzustellen, bin ich mir sehr unsicher, was ich erwarten soll und darf.

Es gibt viele, die schon mal irgendwas mit PHP gemacht haben, oder eben mit WordPress irgendwelche Sachen gebastelt haben. Mit Programmieren hat das aber selten was zu tun. Trotzdem sind die Ergebnisse weiter als alles, was ich zu Beginn meiner Programmiererkarriere auf die Beine gestellt habe. Irgendwie sind die Voraussetzungen ganz anders. Ich habe verschiedene Sortieralgorithmen implementiert und ihre Komplexität abgeschätzt. Datenstrukturen wie einfach- und doppelt-verkettete Listen implementiert und die Komplexität von Aktionen wie Löschen und Einfügen abgeschätzt. Und das alles möchte ich nicht missen!

In den Aufgaben eines Webentwicklers wird aber wohl niemand mehr in die Verlegenheit kommen, einen Sortieralgorithmus selbst zu implementieren, oder sich Gedanken darüber machen zu müssen, wie denn nun genau das Array in der Sprache implementiert wurde, die man gerade nutzt.

Andererseits stelle ich auch bei Leuten, die sich schon mehrere Jahre mit Webentwicklung herumschlagen, fest, dass einige grundlegende Funktionalitäten gar nicht richtig verstanden wurden. Wobei nicht verstanden wahrscheinlich zu harsch ist – sie mussten sich einfach bislang noch nicht damit beschäftigen, da die Werkzeuge, die sie benutzen, die Thematik so weit abstrahieren, dass die Grundlagen komplett versteckt werden.

Ein von mir beliebtes Beispiel sind dabei Cookies: wie werden sie gesetzt und gelesen. Was genau passiert da? Da wird bei vielen schnell klar, dass selbst das Konzept von Request und Response noch gar nicht wirklich verinnerlicht wurde. In den meisten Fällen ist das auch tatsächlich gar nicht notwendig, aber wenn plötzlich „seltsame“ Dinge passieren, oder ein Feature Teste, ob ein User Cookies erlaubt nach mehreren Iterationen des Codes einfach nicht einwandfrei funktionieren will, dann sind die Grundlagen gefragt.

Wie aber bringt man so etwas bei? Ich habe schon häufig mit dem Gedanken gespielt, einen „Programmierkurs“ zu veröffentlichen. Es scheitert in erster Linie daran, dass ich nicht weiß, wie man einerseits genügend Wissen vermittelt und andererseits schnell Fortschritte aufweisen kann, damit es für die Schüler nicht zu langweilig wird.

Fängt man erst einmal nur mit PHP an und begnügt sich wochenlang mit einer Ausgabe in der Konsole? (Und nein, ich will jetzt keine Diskussion anfangen, welche Sprache für Anfänger die geeignetste ist.) Oder fängt man mit einem Framework wie Symfony an und zeigt parallel wie man mit Datenbanken arbeitet und zeigt die ersten Schritte in HTML, sowie HTTP, weil man ja direkt Ergebnisse im Browser sehen möchte?

Beides hat irgendwie seine Berechtigung: ich hätte Bauchschmerzen, jemanden nur Symfony beizubringen, ohne ihm/ihr beizubringen, was da genau in der Datenbank passiert und was der ganze Code bewirkt, der dort benutzt wird.

Allerdings hat es heutzutage ein PHP-Profi schwer, wenn er nicht auch weiß, wie Frameworks funktionieren und wie man damit recht schnell Webanwendungen erstellt. Ein reiner PHP-Profi wird wahrscheinlich erst einmal sein eigenes Framework implementieren – was aber wahrscheinlich genau der richtige Ansatz ist!

Genauso, wie man auf der Kunstakademie auch erst einmal lernen muss, wie man perspektivisch zeichnet und wie man Licht und Schatten richtig einsetzt, bevor man sich dann irgendwann mit abstrakter Kunst beschäftigt, genauso kann man die Vorteile eines PHP-Frameworks erst zu schätzen lernen, wenn man selbst an eigenen HTML-Seiten mit PHP-Code dazwischen verzweifelt ist.

Programmieren ist unglaublich komplex und auch wenn ich in den letzten 31 Jahren nicht jeden Tag oder jede Woche etwas dazu gelernt habe, dann aber doch mindestens jedes Jahr. Und diese Erfahrung können angehende Entwickler von heute gar nicht so schnell aufholen. Bei all den neuen Anforderungen müssen einfach irgendwelche Sachen auf der Strecke bleiben.

Deshalb sind die besten Programmierer solche, die die Demut mitbringen, dass sie nur an der Oberfläche kratzen. Ich kratze an vielen Stellen auch nur an der Oberfläche und lerne auch jetzt immer noch neue Sachen kennen, mit denen ich mich vorher noch nie beschäftigt hatte. Neben der Demut ist also auf jeden Fall auch noch Neugierde eine wichtige Eigenschaft. Den Rest kann man sich dann aneignen.

Alles in allem bin ich immer noch unsicher, ob man die Frage, ob man Programmieren lernen kann, mit Ja beantworten kann. Und ob es Sinn macht, das Fach in der Schule anzubieten. Vielleicht, um die wirklich demütigen und neugierigen potentiellen jungen Programmierer überhaupt mit der Materie vertraut zu machen. Ich glaube aber nicht, dass Programmieren so wichtig ist wie Mathematik, Lesen und Schreiben, oder Geschichte.

Emerald City (NBC-Serie)

Die NBC Serie Emerald City startete dieses Wochenende und erzählt die Geschichte des Zauberers von Oz. Bis gerade dachte ich noch, dass Alice im Wunderland eigentlich die selbe Geschichte ist. Gut, dass ich diese Behauptung recherchieren wollte…

Daran merkt man aber auch, dass ich beide Geschichten nicht wirklich kenne. Ich denke, dass ich von beiden schon mal das eine oder andere gelesen und/oder gesehen habe. Meistens waren das aber wohl Kinderfilme und irgendwie habe ich damals nicht wirklich auf die Gesamtgeschichte geachtet – oder mich haben sie einfach nur gelangweilt, dass ich mich jetzt nicht mehr erinnern kann.

Somit kann ich also auch nicht sagen, wie nah die Doppelfolge zum Auftakt im Vergleich zum Buch war. Es wurden aber mal wieder eine Menge hochkarätiger Schauspieler verpflichtet (Vincent D’Onofrio!) und auch die ganzen Special Effects und Visual Effects sahen sehr hochwertig aus. Das stand keinem Hollywood-Spielfilm nach.

Die Geschichte selbst wurde bislang auch ganz gut beschrieben, auch wenn ich ja sehr verwundert bin, wie wenig sich Dorothy fragt, was da eigentlich vor sich geht. Sie möchte einfach nur nach Hause. Als ob alles, was um sie herum passiert, irgendwo in der entfernten Nachbarschaft wäre. Nun gut.

Es wurden jedenfalls die Bühne bereitet für ein paar interessante Erzählstränge. Ich hoffe nur, dass die Serie möglichst bald einen roten Faden vorgibt, worum es denn jetzt eigentlich geht. Nur Gut gegen Böse ist ja auf die Dauer auch langweilig – zumal im Moment noch nicht so ganz klar ist, ob/warum Dorothy wohl ein Übel in dieser Welt darstellt.

Vielleicht habe ich aber auch die Hinweise im Piloten falsch verstanden. So oder so würde ich mal behaupten, dass ich nicht gespoilert habe.

Hier der Trailer, der etwas mehr enthält als das, was im Piloten vorkommt:

The Young Pope (HBO-Serie)

Die HBO-Serie The Young Pope ist ziemlich unterhaltsam – auch für Nicht-Christen. In den ersten paar Folgen kam es mir so vor, als ob die ersten paar Monate der Trump-Präsidentschaft vorfilmt wurden: überall grundlos anecken und Machtspielchen ausleben.

Im weiteren Verlauf der Serie gewinnt aber nicht nur der Papst (gespielt von Jude Law) an Tiefe, irgendwie wird die ganze Serie besser. Auch wenn man – also besser gesagt: ich – nicht so genau sagen kann, was die Aussage hinter der Serie ist. Kritik an der Kirche? Kritik an Religion ingesamt? Kritik  an einzelnen Positionen der Kirche?

Ich glaube, es geht einfach nur um die Geschichte dieses jungen Papstes. Was man daraus dann für sich selbst mitnimmt, ist jedem selbst überlassen.

… auf dem Rücken der Pferde

Meine Nichte ist eine Pferdenärrin. Das hat sie von ihrem Vater, der früher ein Springreiter war. Jedenfalls hatte sie heute wohl mit dem Pferd Bille die RA 9-Prüfung abgelegt. Wobei mir der alte Name der Prüfung – Kleines Hufeisen – ja viel besser gefällt. Damit kann ich wahrscheinlich – in Relation zum Seepferdchen – wohl eher was anfangen.

Ich träume zwar auch schon länger davon, einen mehrwöchigen Trip auf einem Pferd durch den Westen der USA zu machen, aber weniger aus der Liebe zum Pferd, sondern vielmehr reizt mich die Vorstellung, das Land so zu erleben, wie es einst die Siedler getan haben. Leider kommen dann auch immer sehr schnell Bilder der Klaumauk-Filme City Slickers (Die Großstadt-Helden) in den Sinn und so wird aus dem Traum schnell eine peinliche Vorstellung.

Ich bin nur mal gespannt, wohin sich ihre Begeisterung für Pferde noch entwickelt.