Lernt coden! Ja, und noch viel mehr.

Allerorten wird gerufen „Lernt coden!“, „Code ist die Sprache der digitalen Welt!“, „Lasst euch nicht von der Entwicklung abhängen!“. So weit, so richtig und wichtig. 

Meiner Wahrnehmung nach wird dies häufig von Menschen gefordert, die dann schnell zugeben, dass sie dies selbst nicht gelernt haben und möglicherweise auch gar nicht so richtig verstehen wollen. Aber mediale Aufmerksamkeit lässt sich dadurch prima herstellen, die Forderung nach mehr digitalen Kompetenzen ist derzeit sehr anschlussfähig.

Aber was ist mit Codieren eigentlich gemeint? Miriam Meckel zieht die Parallele zu den Gedanken der Aufklärung, Kant oder Rousseau etwa.
Geht es dabei also um die (Programmier-)Sprache? Als Grundlage zum reinen Textverständnis sicherlich. Die Inhalte des Codes? Die dahinter liegenden (Denk-)Konstrukte und Sichtweisen auf die Welt? Natürlich. Und: soll das Verständnis rein passiv bleiben – besser als nichts – oder soll der angehende Coder tatsächlich in der Lage sein, eigene Programme zu schreiben, also selbst „aufklärerisch“ tätig zu sein? Das sind ganz erhebliche Unterschiede.

Der Vergleich zu natürlichen Sprachen wird schnell gezogen, schließlich sind es ja auch Programmier-Sprachen. Das erscheint mir dann doch zu trivial: Erziehungsorientierte Programmiersprachen etwa, BASIC, aber auch PHP und ähnliche lassen sich mit etwas Motivation in wenigen Stunden lernen. Die Grammatik ist simpel, es gibt keinerlei Ausnahmen oder unregelmäßige Verben.

Im Gegensatz zu einer natürlichen Sprache sind Programmiersprachen jedoch nur einfache Kommandos: tue dies, mach das falls eine Bedingung zutrifft, zähl bis 10. Mehr ist es im Grunde nicht, daraus lässt sich die gesamte Komplexität ableiten. Es geht nicht darum, durch virtuose Feinheiten Gedanken und Gefühle auszudrücken, oder komplexere Argumentationsketten aufzubauen.

Der Computer tut exakt das, was man ihm sagt. Diese Befehle setzen also voraus, das der Programmierer sie auch geben kann, soll heissen: er weiss, was er will und wie das in eine Programmfolge, in einen Algorithmus umgesetzt werden kann. Und hier wird es richtig spannend: Für jedes (komplexere) Programmierproblem gibt es definitiv mehr als nur eine richtige und sinnvolle Lösung. Die passende Herangehensweise gilt es im gegebenen Kontext zu entwickeln und auszuprobieren. Hier ist neben viel Logik auch Erfahrung, Intuition und manchmal tatsächlich auch so etwas wie eine künstlerische Ader gefragt.

Die eigentlich zu erlernenden Kompetenzen sind also: Probleme analysieren können, sie durchdringen und wirklich verstehen, sie zu strukturieren. Weiterhin: Einen sinnvollen Lösungsweg zu entwickeln und in geeignete, angemessene und effiziente Algorithmen zu überführen. Das Ergebnis zu testen, zu überprüfen, ob es das gewünschte ist, oder den Programmcode schrittweise zu verbessern. (Ganz abgesehen davon, dass eine Menge an kommunikativer Kompetenz dazu gehört, da mit Menschen über deren Anforderungen an eine Software gesprochen werden muss. Aber das ist eine andere Diskussion.). In welcher Programmiersprache das dann umgesetzt wird, steht nicht unbedingt im Vordergrund und hängt von persönlichen Vorlieben aber natürlich auch einigen Rahmenbedingungen ab.

Nur am Rande: HTML, CSS und die Bedienung eines Content Management Systems (CMS) haben mit „coden“ nichts zu tun. Das sind einfach nur ein paar Befehle, die es möglich machen, Inhalte auf Webseiten zu bringen und Dokumente zu gestalten. In meinen Augen ist das die simple Weiterentwicklung von Techniken wie etwa der Bedienung einer elektronischen Schreibmaschine gemischt mit typografischen und ästhetischen Kompetenzen. Bitte verwendet das nicht synonym mit „Coden“!

Das alles wird natürlich von fachlich erfahrenen Akteuren auch genauso gesehen, aber genau hier denke ich, dass das Alltagsverständnis über das Codieren nicht weit genug reicht und die Implikationen einer schnell ausgerufenen Forderung „Lernt Coden!“ nicht klar sind.

Auch die rein passive Coding-Kompetenz, also das rein syntaktische Nachvollziehen von geschriebenen Codes anderer nutzt letztlich nicht wirklich. Man sitzt dann wie ein Ochs vor’m Code und versteht nur Buchstabensalat, aber was genau macht dieser Algorithmus da? Welche Implikationen haben die Verwendung von Big Data oder Machine Learning in genau diesem Programm auf den Nutzer und vielleicht sogar die gesamte Gesellschaft? Da muss schon ein kleines Informatik-Studium her, um das wirklich zu verstehen. Hier beschäftigen sich übrigens zunehmend auch codierende Philosophen mit den ethischen Auswirkungen von Algorithmen, wie etwa gerade aktuell den selbstfahrenden Autos. Es mag durchaus sein, dass dies alles potentielle Angstauslöser sind, die dann durch eine Forderung nach mehr digitaler Bildung beruhigt werden sollen.

Darüber hinaus haben durchaus viele Menschen mittlerweile schon einmal „codiert“, etwa als Pflichtkurs im Studium, der beruflichen Aus- oder Weiterbildung oder in kleinen eigenen Projekten nach Feierabend. Ich will das überhaupt nicht kritisieren, aber manchmal ist dieses Halbwissen eher gefährlich, weil der eigentliche Horizont nicht gegeben ist. Da entsteht schnell die Selbstwahrnehmung eines (auch) wissenden Programmierers, die in der Praxis schädlich sein kann.

Es geht mir also um ein tieferes Verständnis davon, was „Coden“ in Gänze ausmacht, die Komplexität, die sich hinter diesem einfachen Begriff verbirgt und die Implikationen auf unseren Alltag. Nach den Grundfertigkeiten – dem Erlernen einer beliebigen Programmiersprache – fängt also die eigentliche digitale Bildung erst an!

Wünschen würde ich mir aber auch streckenweise mehr Respekt gegenüber denjenigen, denen das leicht von der Hand geht, diese Tätigkeiten gerne tun und somit zu einer (hoffentlich) besseren Zukunft beitragen. Und umgekehrt auch Respekt von „Codern“ gegenüber „Nicht-Codern“: Erklärt, was ihr tut, warum ihr es tut, wie ihr es tut und welche positiven – und gegebenenfalls auch negativen – Folgen das haben kann.

In diesem Sinne: „lernt wirklich Coden!“.

Schreibe einen Kommentar

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