Dieser Beitrag ist eine direkte Antwort auf einen Beitrag von [Pr. Dr. Jörn Loviscach](https://j3l7h.de/blog/02-02-2020

Zunächst legt dieser dar, warum ein Pflichtfach Informatik nicht -wie von der Zeitschrift CT im Editorial behauptet gegen den Buchbinder-Fail geholfen hätte und legt da, dass die Unterstützung bröckeln sollte, sobald den Befürworter*innen auffällt, dass damit keine grundlegenden IT-Kenntnisse gemeint sind.

Prinzipiell stimme ich ihm im ersten Teil der Aussage zu und halte es auch für vermessen, wenn IT-Fails aller Art in sozialen Medien mit "Hier hätte ein Pflichtfach Informatik geholfen" kommentiert werden. Dies ist natürlich nicht der Fall - zumindest nicht auf direktem Wege.

Dann folgt der eigentliche Teil seiner Argumentation: Er unterscheidet "Programmieren" und "sauberes Programmieren" lernen als das Arbeiten unter absoluter Sorgfalt und fürchtet, dass ein Pflichtfach Informatik mehr Leute produziert, die Python oder Javascript zusammengooglen ohne zu wissen, warum ihr Gebastel funktioniert. Das ganze wird noch gemischt mit der typischen Kritik zur Kompetenzorientierung.

Ein Ausweg aus diesem Problem wäre seiner Meinung nach Programmiersprachen zu verwenden, von denen man nicht so schnell glauben kann, man habe sie verstanden.

Dieser Argumentation basiert auf einer sehr verengenden Perspektive auf das Fach Informatik und der Ziele, die mit einem Fach Informatik erreicht werden:

Informatik != Programmieren

Das ist die wohl wichtigste Kritik an dem Beitrag. Informatik umfasst natürlich Programmieren, aber eben noch viel mehr.

Dazu hilft es z.B. einen einfachen Blick auf die Informatikstandards der Gesellschaft für Informatik zu werfen: https://www.informatikstandards.de/. Programmieren (in Form des Inhaltsbereich Algorithmen und des Prozessbereichs Modellieren und Implementieren) umfasst dort jeweils genau einen Baustein.

Viel eher könnte man das Fach Informatik in der Schule kurz und prägnant so charakterisieren:

Informatik ist das Fachgebiet, welches Informatiksysteme in unserer Umwelt mit Hilfe geeigneter Modelle begreifbar macht und dass ermöglicht mit Hilfe geeigneter Modellierungen und Werkzeuge selbst eigene Informatiksysteme zu entwickeln.

Ziele des Fachs

Ich will Pr. Dr. Jörn Loviscach nicht absprechen, dass es ein Ziel von Informatik ist sauberes Programmieren zu vermitteln. Das ist aber nur ein Ziel neben Mehreren.

Ein Pflichtfach-Informatik ist z.B. auch deshalb wichtig, weil dadurch der Gender-Gap abgebaut werden kann, mehr Mädchen zu Informatik kommen. Allgemeiner kann man sagen, dass wir damit entscheidend zur Interessenbildung von Jungen und Mädchen beitragen.

Ein Pflichtfach-Informatik ist auch deshalb wichtig, damit alle Schüler eine Allgemeinbildung besitzen, die ihre heutige Umwelt verstehbar machen. So ist es heute zum Verständnis der modernen Welt z.B.von Bedeutung zu verstehen, wie ein Schlüsselaustausch oder wie Deep-Learning (in Grundzügen) funktioniert um die sich daraus ergebenden gesellschaftlichen Implikationen zu verstehen. Weiterhin ist es auch für viele digitale Tätigkeiten hilfreich, informatische Grundkonzepte wie z.B. das Konzept von Objekten und Klassen (z.B. in Form von Formatvorlagen in Office) verstanden zu haben.

Ein weiteres Ziel des Pflichtfachs-Informatik ist es Informatik begreifbar zu machen als das Umsetzen der eigenen Kreativität mit Hilfe von Programmiersprachen. Ich finde es jedes mal faszinierend wie schnell Zweit, Dritt- und Viertklässler schon die Grundlagen der grafischen Programmiersprache Scratch verstehen und wie schnell man die Begeisterung in ihren Augen entfacht. Nein, die Kids brauchen keine buchförmige Zusammenfassung der Programmiersprache (Am Anfang reichen ein paar Scratch-Cards), Sicherheitslücken spielen in diesem Kontext keine Rolle und auch Randfälle werden erst später zunehmend wichtig.

Wie sehr das später von Bedeutung sein wird, hängt auch von dem Fachgebiet ab, in das man sich als studierter Informatiker später vertiefen wird - Aber in der Schule sind wir davon noch gaaanz weit entfernt.

Saubere Programmierung

An der Stelle noch ein Einwurf, der nur indirekt etwas mit dem Pflichtfach zu tun hat:

Was genau saubere Programmierung ist, hängt auch in dem Kontext ab, in dem man arbeitet. Wenn man im medizinischen Kontext arbeitet, in dem es wichtig ist, die Fehlerfreiheit des Produkts herzustellen und auch eindeutig zu dokumentieren, arbeitet man später sicher anders als wenn man in einem Unternehmen arbeitet, das agil und mit Rapid Prototyping die ersten Prototypen (z.B. eines Spiels) herstellt.

Ob mach sich unsauberes Programmieren angewöhnen kann ist etwas, wo ich gerne wissenschaftliche Untersuchungen zu lesen würde. Gibt es Verhaltensweisen die beim Programmieren erlernt und dann nur schwer umgelernt werden können?

Dazu einige Überlegungen, für die ich keine allgemeinen Studien heranziehen kann, sondern die eher persönlicher Natur sind: Wenn ich an meine eigenen Programmiererfahrungen denke, dann folgt das (erste) Programmieren stets einem gewissen Zyklus:

  • Man möchte ein großes Projekt umsetzen

  • Man modelliert das Projekt oft unzureichend

  • Man implementiert ein Programm, dass in vielerlei Hinsicht verbesserungswürdig ist.

  • Daraus wächst der Bedarf das nächste Programm besser zu durchdenken (oder das aktuelle Projekt über Refactoring zu verbessern).

  • Ggf. hat man dabei die ein oder andere Zeile "gegoogelt" und noch nicht voll verstanden, hat aber beim Lesen des Codes das Bedürfnis diesen auch voll zu verstehen.

Dieser Zyklus sorgt dafür, dass man automatisch seine Arbeitsweise von Projekt zu Projekt verbessert - Zumindest ging es mir so.

Wenn dann noch ein Team dazukommt, dass einen zwingt an Coding-Standards zu halten, verständlich und nachvollziehbar zu programmieren, dann wird man automatisch auf dem Weg zur sauberen Programmierung gebracht.

Man könnte sagen, dass die eigene Programmiererfahrung oft dem historischen Kontext der Informatik entspricht: Irgendwann stößt man im Umgang mit Komplexität an Grenzen die man nur überwinden kann, wenn man sein Arbeitsverhalten entsprechend verbessert und auf Konzepte zurückgreift (Strukturierte Zerlegung, Objektorientierung, Agilität, ...), die diese Komplexität handhabbar machen.

Wir Ausbilder (in Schule wie in Uni) sehen dabei immer nur die ersten Schritte der Programmieranfänger, die uns mit unseren eigenen Programmiererfahrungen oft laienhaft vorkommen. Dabei sehen wir ja immer nur sehr frühe Phasen dieser Entwicklung.

Ich stimme zu, dass es dabei hilfreich sein Programmiersprachen zu verwenden, von denen man nicht sofort glaubt, sie verstanden zu haben. Allerdings eher in dem Sinne, dass es sinnvoll wäre, mehrere Programmiersprachen zu lernen, da viele Konzepte erst dann wirklich verständlich werden, wenn man Gemeinsamkeiten und Unterschiede eines Konzepts in verschiedenen Sprachen sieht (z.B. OOP in Java vs OOP in Python). Dafür fehlt aber im Moment oft die Zeit - und daher braucht es (auch) ein Pflichtfach Informatik.