Merve Yıldırım hat im zweiten Lehrjahr ein Skript für einen Zerspanungsbetrieb in Bielefeld geschrieben: Es liest den Export des Zeiterfassungsterminals und addiert die Rüstzeiten je Maschine. Vierzig Zeilen Python, sie rechnen richtig, und sie laufen auf genau einem Gerät, dem Laptop der Berufsschule.
Auf dem Rechner im Betrieb bricht dasselbe Skript in der Zeile ab, die die Datei öffnet. Nichts an diesem Fehler ist Python, und für nichts davon gibt es ein Lernfeld.
Dort teilt sich diese Welt, und zwar quer zu der Einteilung, die im Ausbildungsvertrag steht.
Der Rahmenplan teilt anders als die Arbeit
Seit der Neuordnung der IT-Berufe im Jahr 2020 legt dieser Vertrag eine von vier Fachrichtungen fest: Anwendungsentwicklung, Systemintegration, Daten- und Prozessanalyse, Digitale Vernetzung. Gewählt wird sie vor dem ersten Arbeitstag, also bevor jemand wissen kann, was die vier voneinander trennt.
- Anwendungsentwicklung schreibt die Software, die es vorher nicht gab.
- Systemintegration hält am Laufen, was schon da ist.
- Daten- und Prozessanalyse misst, wohin im Betrieb die Zeit geht.
- Digitale Vernetzung bringt Maschinen dazu, miteinander zu reden.
Diese acht Themen teilen nach etwas anderem, nämlich danach, wo der Code am Ende laufen muss. Drei der acht Themen gelten dabei überall. Programmiergrundlagen ist das, was bliebe, wenn man Ihnen jede Sprache wegnähme: was eine Schleife kostet, wozu eine Hashtabelle da ist und warum ein Fehler sich versteckt. Programmiersprachen ist die Ebene, auf der eine Sprache und die paar hundert Pakete um sie herum stehen. Softwareauslieferung ist alles, was passiert, nachdem das Programm funktioniert, und bevor es jemand anderes benutzen kann.
Die anderen fünf sind keine Interessengebiete, sondern Zwänge, und definiert wird jeder von dem, was ein Programm dort umbringt. In der Webentwicklung gehört Ihnen keiner der beiden Rechner, auf denen Ihr Code läuft, und das Netz dazwischen fällt auf Arten aus, die keiner von beiden meldet. In der App-Entwicklung sind die Grenzen ein Akku, eine Prüfung im Store und ein Telefon, auf das Sie sich nicht einloggen können, um nachzusehen. Datenbanken kennen eine Anforderung, die die anderen vier nicht haben: Die Daten müssen noch da sein, wenn mitten im Schreiben der Strom ausfällt. Auf einer Blockchain ist der Code öffentlich, dauerhaft und meistens mit Geld darin, also gibt es kein zweites Deployment. Und in der Spieleentwicklung ist das Budget sechzehn Millisekunden pro Bild, sechzig Mal in der Sekunde, und wer darüber kommt, sieht es sofort.
Andersherum sortiert, nach Sprache, müsste eine einzige Seite namens Python einen Webaufruf, einen Trainingslauf, eine Spielschleife und ein Skript für Rüstzeiten abdecken, und sagen kann sie dann nur, was für alle vier gilt, nämlich die Syntax. Aus genau dem Grund können zwei Leute, die beide fließend Go schreiben, die Arbeit der jeweils anderen nicht übernehmen.
Fremden Code zu lesen hat keinen Lehrplan und deshalb kein eigenes Thema; es ist das, was Sie in allen acht gleichzeitig tun. Wer in einem Betrieb lernt, bekommt genau dafür etwas geschenkt, das sich zu Hause nicht herstellen lässt: ein Repository, das jemand anderes geschrieben hat.
Erst ausliefern, dann die zweite Sprache
Sabine Lorenz schult in Chemnitz auf einem Bildungsgutschein um, im zweiten Jahr, vorher fünfzehn Jahre Lagerlogistik. Sie liest Java, seit dem Frühjahr auch Python, und seit dem Sommer schreibt sie JavaScript. Nichts davon ist je auf einem anderen Rechner gelaufen als ihrem eigenen.
Eine zweite Sprache ist der teuerste Weg, dem zweiten Fach auszuweichen.
Verlockend ist sie aus einem Grund, den man aussprechen sollte: Eine neue Sprache schenkt den ersten Monat zurück. Jeder Abend endet mit etwas, das funktioniert hat, und die Syntax im Kopf lässt Woche eins schnell wirken. Ausliefern gibt zwei Wochen lang nichts davon und danach eine Adresse, die jemand anderes öffnen kann.
Die Reihenfolge lautet deshalb: eine Sprache, gehalten, bis ein Programm von Ihnen dort läuft, wo Sie nicht sitzen, und erst dann die zweite. Wer in einem Betrieb lernt, hat diesen Ort bereits. Der Rechner, den Sie nicht eingerichtet haben, steht zwei Türen weiter, und daran sitzt die Person, die Ihr Programm ohne Sie starten muss.
Programmiergrundlagen sind dabei kein Vorkurs, der zuerst fertig werden müsste, so sehr der Lehrplan das nahelegt. Sie kommen an dem Nachmittag an, an dem Merves Auswertung nach Kalenderwoche gruppiert und das Jahr aus dem Datum nimmt. Drei Tage im Januar 2027 gehören noch in die Kalenderwoche 53 des Vorjahres und landen im Bericht in einer Woche 53 des Jahres 2027, die es nicht gibt. Die Lösung ist eine Zeile: isocalendar() liefert Jahr und Woche zusammen, und das Jahr daraus ist das richtige. Abstrakt landet diese Lektion nicht, und das macht ihr Vorziehen zur zweiten falschen Reihenfolge.
Zweites Lehrjahr
Die Gabelung nach dem ersten Programm, das läuft
Beide Wege fühlen sich nach Fortschritt an. Nur einer endet mit etwas, das jemand anderes öffnen kann.
- Was fast alle tunDie nächste Sprache anfangenWieder Monat eins, und es liest sich als Fortschritt, weil alles darin neu ist
- Syntax, die Sie schon haben, anders geschrieben
- Immer noch läuft nichts von Ihnen woanders
- Der Abstand wächst leise, in beiden Sprachen
- Was sich auszahltDasselbe Programm im Betrieb zum Laufen bringenZwei Wochen, in denen nichts geht, und danach ein Rechner, den Sie nicht eingerichtet haben
- Ein Terminal, das Sie selbst geöffnet haben
- Eine Lockdatei mit festgeschriebenen Versionen
- Jemand aus dem Betrieb startet es ohne Sie
Die Grafik sagt nicht, dass die zweite Sprache ein Fehler ist. Sie sagt, dass sie nicht ins zweite Lehrjahr gehört, und wer sie dort nimmt, nimmt sie meistens anstelle des anderen Astes.
Der Stillstand liegt zwischen zwei Gebäuden
Die Sprache steht in der Berufsschule. Das Terminal, Git, die Pakete und eine Umgebung, die sich nicht einrichten lässt, stehen im Betrieb. Wer nach zwei Jahren stetigen Fortschritts plötzlich keinen mehr macht, schließt daraus, schlecht im Programmieren zu sein. Das stimmt nicht. Es sind zwei Fächer, sie werden an zwei Orten unterrichtet, und nur eines von beiden hat einen Lehrplan.
Was dort abbricht, steht nirgends in der Datei, und auf einer englischen Seite wäre es nicht einmal zu zeigen. open() ohne encoding= nimmt die Einstellung des Rechners, nicht die der Datei. Auf dem Linux-Laptop der Berufsschule heißt das UTF-8, auf dem deutschen Windows im Betrieb cp1252, und im September 2026 gilt das für Python 3.14 unverändert. Sichtbar wird der Unterschied erst an einem Wort wie Rüstzeit: In einer englischen Datei steht kein Zeichen über 127, und der Fehler feuert nie.
Die zweite Hälfte des Stillstands ist die Prüfung. Teil 2 der gestreckten Abschlussprüfung verlangt eine betriebliche Projektarbeit mit Dokumentation, und diese Dokumentation ist keine Bürokratie, sondern das einzige Stück der Ausbildung, das zugleich ein Berufsbild ist. Dazu gehört eine Regel, die niemand aufschreibt und die in den meisten deutschen Betrieben trotzdem gilt: Bezeichner auf Englisch, Kommentare und Dokumentation auf Deutsch. Wer die Variablen deutsch benennt, übt eine Gewohnheit ein, die im ersten Review wieder abgeräumt wird. Wer die Dokumentation englisch schreibt, schreibt am Prüfungsausschuss vorbei.
Für dieses Problem gibt es einen Namen und damit eine Antwort: Container liefern die Umgebung zusammen mit dem Code aus, statt sie auf jedem Rechner neu zu erraten. Das sind zwei Wochen Arbeit statt eines Jahres, sobald jemand den Namen ausspricht. Die andere Hälfte ist das Terminal, das eine eigene Grammatik hat und nebenan unter Betriebssysteme wohnt.
Der Stillstand
Der Lehrplan des Fachs, von dem niemand sagt, dass es eines ist
Zwei Jahre stetiger Fortschritt enden an einem Ufer, und drüben liegt Woche eins von etwas anderem mit eigenem Anfängerniveau.
- 01Ein Terminal, und der Pfad als eigene SacheVon wo ein Befehl läuft, entscheidet, was er findet
- 02Eine Lockdatei, damit die Versionen Absicht sindFremder Code, festgeschrieben statt neuest
- 03Ein Repository, bevor es etwas zu verlieren gibtDas Rückgängig, das den zugeklappten Laptop überlebt
- 04Ein Rechner, den Sie nicht eingerichtet habenEr trägt nichts von Ihren zwei Jahren, und darum geht es
Vier Planken und keine fünfte. Dieses Fach hat kein Lernfeld, keine schriftliche Prüfung und kein Lehrbuch, und es ist trotzdem in zwei Wochen zu haben.
Was 2026 auf dem Rechner steht
VS Code ist seit etwa 2016 der Standardeditor, kostenlos, der Quelltext offen. Abgelöst hat es Sublime Text und Atom, und Atom wurde im Dezember 2022 archiviert, vier Jahre nachdem sein Hersteller von dem Hersteller von VS Code gekauft worden war. Ernst zu nehmen sind zwei Alternativen: die JetBrains-Editoren, die eine Sprache tief kennen, und Neovim, wenn die Arbeit auf fremden Rechnern stattfindet. Der Fehler sind dreißig Erweiterungen, installiert bevor eine Zeile geschrieben ist: Jede kann kaputtgehen, und keine ist das, was gelernt wird.
Git wurde 2005 für den Linux-Kernel geschrieben, es ist frei, es hat Subversion abgelöst, und es liegt unter Versionsverwaltung. Im Betrieb ist der erste Kontakt damit kein eigenes Repository, sondern eines mit vier Jahren Geschichte, einem Branch-Verfahren, das niemand erklärt hat, und Commit-Nachrichten auf Deutsch. Der nützlichste Befehl verändert deshalb nichts: git blame nennt für jede Zeile den Commit, der sie zuletzt geändert hat, und damit auch die Person, die man fragen kann.
Ein Assistent im Editor ist die größte Veränderung an dieser Arbeit seit 2022, die freien Stufen reichen zum Lernen, und ersetzt hat er die Suche nach jemandem, der dieselbe Frage schon gestellt hatte. Er ist sehr gut bei Code, den Sie selbst langsam geschrieben hätten, und das ist der meiste Code. Bei allem Ungewöhnlichen irrt er sich mit voller Überzeugung, in sauber formatiertem Text, der genau aussieht wie der Code, der läuft. Wer im ersten Lehrjahr steht, kann die beiden Fälle nicht unterscheiden, denn das Unterscheiden ist das Fach selbst.
Im Betrieb kommt er trotzdem oft nicht an, und der Grund ist nicht technisch. Nach §87 Absatz 1 Nummer 6 des Betriebsverfassungsgesetzes bestimmt der Betriebsrat mit, sobald eine technische Einrichtung dazu geeignet ist, Verhalten oder Leistung zu überwachen, und ein Assistent, der jede Eingabe an einen Server schickt, ist genau das. Er kommt also über eine Betriebsvereinbarung oder gar nicht, und wer ihn zu Hause hat und am Arbeitsplatz nicht, hat keine Regel gebrochen. Was daraus folgt, steht unter KI-Einsatz; wie man so einem Werkzeug eine brauchbare statt einer plausiblen Antwort abgewinnt, unter Prompt-Engineering.
Das vierte Werkzeug beantwortet den Stillstand und nicht die Arbeit. Für Python kam uv im Jahr 2024, frei und quelloffen, und es hat pip, virtualenv und pyenv abgelöst, vorher drei Werkzeuge für eine Aufgabe: uv installiert die Laufzeitversion, die ein Projekt verlangt, und schreibt jedes Paket mit seiner Version in eine Lockdatei. Jedes Ökosystem hat seine eigene Fassung davon. Der Fehler ist, sie für erzeugten Müll zu halten und aus dem Repository herauszuhalten, denn genau dafür war sie da.
Das Signal ist ein fremdes Repository
Das Maß ist nicht, wie viel Syntax Sie auswendig hinschreiben können. Es ist, ob Sie ein fremdes Projekt klonen und an einem Nachmittag allein zum Laufen bringen.
Nach einem Monat scheitert das, ohne dass sich sagen ließe woran: Irgendetwas ging nicht, und es gibt keinen Namen für das, was nicht ging. Nach drei Monaten läuft es entweder, oder es läuft nicht und Sie können den Schritt benennen, der es aufgehalten hat. Die Laufzeit ist eine Version älter als verlangt. Es erwartet eine Datenbank auf Port 5432, und dort antwortet nichts. Es will eine Umgebungsvariable, die niemand dokumentiert hat. Den Schritt zu benennen ist das Können; ihn zu beheben ist eine Suche.
Im Betrieb liegt diese Gelegenheit näher als sonst irgendwo: Das Repository der Abteilung ist genau so ein fremdes Projekt, und es allein zum Laufen zu bringen ist die erste Aufgabe, die man sich selbst stellen kann, bevor sie jemand stellt.
Das Signal
Dasselbe Programm in vier Zuständen
Am Code ändert sich zwischen dem ersten und dem letzten Bild nichts. Was sich ändert, ist, wie viel von Ihrem eigenen Rechner er noch braucht.
- 01Es läuft, wenn Sie auf Start drückenIm Editor, der alles für Sie eingerichtet hat
- 02Es läuft in einem Terminal, das Sie geöffnet habenDerselbe Rechner, und nichts hilft mehr
- 03Es läuft aus einem frischen CloneIhr Repository, und die erste ehrliche Prüfung dessen, was Sie nie aufgeschrieben haben
- 04Es läuft auf dem Rechner im BetriebDas Bild, in dem das Programm aufhört, Ihres zu sein
Zwischen Bild zwei und Bild drei liegt die Projektdokumentation. Was dort aufgeschrieben werden muss, ist genau das, was Bild drei erzwingt.
Welches der acht Themen zuerst
Der Rahmenplan hat die ersten drei bereits ausgesucht, und darin ist er besser als sein Ruf. Was er nicht ordnet, ist die Reihenfolge zwischen den fünf Orten, und dort gehört die Entscheidung Ihnen.
Wer keinen besonderen Grund hat, fängt mit der Webentwicklung an, und das ist keine technische Entscheidung: Ein Link ist das Einzige, was eine fremde Person öffnen kann, ohne vorher etwas zu installieren. Datenbanken werden spät erreicht und wären früh nützlich, denn falsch entworfene Tabellen sind die teure Art von falsch. App-Entwicklung, Spieleentwicklung und Blockchain sucht dagegen nicht Sie aus, sondern die Sache: die Tasche, die Bildwiederholrate oder ein Register, das keine einzelne Partei still ändern darf.
Bleibt die Frage, mit der fast alle ankommen: in welcher Sprache man anfängt. Sie zählt weniger als die Stunden, die man mit dem Aussuchen verbringt, und beliebig ist sie trotzdem nicht: Die erste Sprache ist die, die von den Leuten benutzt wird, die Ihre Fragen beantworten werden, und im Betrieb sitzen sie schon im selben Raum.