Einstieg in die Programmierung

Welche Programmiersprache euer Team zuerst lernen sollte

Die ehrliche Antwort hängt nicht an der Sprache, sondern an der ersten Aufgabe, an eurem Bestand und daran, wer den Code in drei Jahren pflegt.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Seit 1997 am Markt Kleine Gruppen Präsenz und Live-Online Zertifizierte Trainer
Worum es geht

Entschieden wird nach Beliebtheit, gebraucht wird eine Antwort auf die erste Aufgabe

Der Anlass ist meistens derselbe. Im Fachbereich sammelt sich Handarbeit an, jemand hat eine Idee, dass man das automatisieren könnte, und die Frage nach der Sprache steht im Raum. Was dann passiert, ist eine Suche nach Ranglisten und Umfragen, ein Blick auf Stellenanzeigen und eine Diskussion, in der jeder die Sprache verteidigt, die er selbst kann. Am Ende steht eine Wahl, die mit der eigentlichen Aufgabe wenig zu tun hat.

In die falsche Richtung entschieden merkt man an zwei Stellen. Die erste ist die Lernzeit, denn sie ist begrenzt und steht neben dem Tagesgeschäft, und wenn nach drei Monaten noch nichts entstanden ist, das jemand tatsächlich benutzt, ist das Vorhaben erledigt und kommt so schnell nicht wieder. Die zweite ist der Betrieb. Etwas, das auf einem einzelnen Rechner läuft, ist kein Programm, sondern ein Risiko, und die Frage, wo es künftig läuft, wer es aktualisiert und was bei Ausfall passiert, stellt sich unabhängig von der Sprache.

Der teuerste Fehler ist aber ein anderer: eine zweite Sprache im Haus zu haben, ohne es entschieden zu haben. Jede Sprache bringt eine eigene Werkzeugkette mit, einen eigenen Bauprozess, eigene Abhängigkeiten, die gepflegt und mit Sicherheitsaktualisierungen versorgt werden wollen, und die Anforderung, dass mindestens zwei Personen sie beherrschen. Wenn diese Rechnung nicht gemacht wurde, steht nach zwei Jahren ein Programm da, für das es genau einen Zuständigen gibt, und der geht irgendwann in Rente oder wechselt.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt
Der direkte Vergleich

Drei Sprachen an dem gemessen, was ein Einstieg wirklich kostet

Verglichen werden die drei Sprachen, die in deutschen Unternehmen für einen Einstieg tatsächlich in Frage kommen. Bewertet wird nicht die Sprache an sich, sondern was sie für ein Team bedeutet, das gerade erst anfängt und daneben ein Tagesgeschäft hat.

Python

dynamisch typisiert, wenig Zeremonie, sehr starke Bibliotheken für Auswertung, Automatisierung und Schnittstellen

Java

statisch typisiert, ausgereifte Werkzeuge, langlebige Anwendungen auf der JVM, viel Struktur schon in kleinen Programmen

TypeScript

JavaScript mit einer Typprüfung davor, die einzige Sprache, die im Browser unmittelbar zu Hause ist

Wie schnell entsteht das erste Ergebnis, das jemand tatsächlich benutzt?

Python

Eine nützliche Auswertung oder ein Abgleich zweier Dateien entsteht am ersten Tag. Es gibt kaum Rahmenwerk, das vorher verstanden sein muss, und die Fehlermeldungen sind für Anfänger noch lesbar.

Java

Bis etwas läuft, sind Projektstruktur, Build-Werkzeug und ein Mindestmaß an Objektorientierung nötig. Das ist keine verschwendete Zeit, es dauert nur länger, bis der erste sichtbare Nutzen da ist.

TypeScript

Im Browser ist der Einstieg kurz, sobald aber ein Build, ein Paketmanager und ein Framework dazukommen, ist der Aufbau der Werkzeugkette der eigentliche Aufwand am Anfang.

Wie gut trägt die Sprache Automatisierung und Auswertung von Daten?

Python

Das ist ihr Kerngebiet. Tabellen, Datenbanken, Textformate, Schnittstellen, Auswertung und alles rund um maschinelles Lernen liegen als ausgereifte Bibliotheken vor, und die Beispiele im Netz treffen fast immer genau euren Fall.

Java

Es geht, und für große Datenmengen in einer laufenden Anwendung ist es sogar die stabilere Wahl. Für eine schnelle Auswertung ist der Weg über Projektstruktur und Abhängigkeiten aber unverhältnismäßig lang.

TypeScript

Für Datenverarbeitung auf dem Server durchaus brauchbar, für statistische Auswertung deutlich schwächer aufgestellt. Wer Zahlen auswerten will, findet dort weniger fertige Bausteine und mehr Eigenbau.

Wie gut hält der Code, wenn er zehn Jahre laufen und von wechselnden Leuten gepflegt werden soll?

Python

Ohne Typangaben und Tests wird eine gewachsene Codebasis schwer beherrschbar, weil ein Tippfehler in einem selten begangenen Pfad erst zur Laufzeit auffällt. Mit Typangaben und einer Prüfung im Bauprozess ist es beherrschbar, das muss aber von Anfang an vereinbart sein.

Java

Der Compiler fängt eine ganze Klasse von Fehlern vor dem Start ab, die Werkzeuge zum Umbenennen und Umbauen sind ausgereift, und eine Codebasis lässt sich auch dann noch verstehen, wenn niemand mehr da ist, der sie geschrieben hat.

TypeScript

Die Typprüfung leistet fast dasselbe wie bei Java. Die Unruhe kommt aus einer anderen Richtung: Das Ökosystem bewegt sich schnell, und ein Projekt, das drei Jahre unangetastet lag, lässt sich oft nicht mehr ohne Weiteres bauen.

Was kostet der Betrieb, also Ausrollen, Abhängigkeiten und Aktualisierungen?

Python

Die Sprache selbst ist überall vorhanden, die Abhängigkeiten sind die Arbeit. Ohne eine feste Umgebung je Projekt und ohne festgeschriebene Versionen läuft das Programm auf dem nächsten Rechner anders, und genau daran scheitern die meisten ersten Versuche.

Java

Ein gebautes Paket enthält alles Nötige und läuft überall dort, wo eine passende Laufzeitumgebung installiert ist. Der Ablauf ist seit Jahren gleich, gut dokumentiert und in jedem Rechenzentrum bekannt.

TypeScript

Im Browser trivial, auf dem Server hängt es an einem Paketbaum, der schnell groß wird und regelmäßig Sicherheitsaktualisierungen braucht. Das ist beherrschbar, aber es ist wiederkehrende Arbeit.

Wie leicht findet ihr Leute, und wie leicht lernen die vorhandenen die Sprache?

Python

Es ist die Sprache, die viele im Studium oder in der Ausbildung schon einmal angefasst haben, und sie ist für Leute aus dem Fachbereich mit Abstand die zugänglichste. Für Automatisierung und Auswertung findet ihr auch Quereinsteiger.

Java

Der Bewerbermarkt für Fachanwendungen ist groß und gut ausgebildet, und in Ausbildung und Studium ist die Sprache fest verankert. Für jemanden aus dem Fachbereich ohne Programmiererfahrung ist der Einstieg dagegen der steilste der drei.

TypeScript

Wer im Web arbeitet, kann es ohnehin. Wer aus einer anderen Ecke kommt, lernt neben der Sprache das gesamte Umfeld aus Paketverwaltung, Build-Werkzeugen und Rahmenwerken mit, und das ist der eigentliche Aufwand.

Wie gut deckt die Sprache mehrere Anwendungsfälle mit einer Lernzeit ab?

Python

Automatisierung, Auswertung, Schnittstellen, kleine Dienste und der gesamte Bereich rund um Sprachmodelle sind mit derselben Sprache erreichbar. Für ein Team, das noch nicht weiß, wohin die Reise geht, ist das die breiteste Abdeckung.

Java

Sehr stark bei Fachanwendungen, Integration und allem, was im Rechenzentrum dauerhaft läuft. Für eine schnelle Auswertung oder ein kleines Hilfsskript wird sie selten die erste Wahl sein.

TypeScript

Deckt Browser und Server mit einer Sprache ab, was für Webvorhaben ein echter Vorteil ist. Außerhalb dieses Bereichs verliert sie schnell an Boden.

Was passt wann

Wenn die erste Aufgabe aus wiederkehrender Handarbeit, Dateien und Auswertungen besteht
nehmt Python und sorgt dafür, dass das Ergebnis auf einem Server läuft und nicht auf einem Arbeitsplatzrechner.
Wenn eine Fachanwendung entstehen soll, die über Jahre von wechselnden Leuten gepflegt wird
nehmt Java und plant die Zeit für Projektaufbau und Objektorientierung ausdrücklich ein, statt sie zu überspringen.
Wenn im Haus bereits eine Sprache mit gepflegtem Bestand läuft
bleibt dabei, solange die neue Aufgabe dort umsetzbar ist, und rechnet den Aufwand für eine zweite Werkzeugkette ehrlich dagegen.

Fünf Fragen, und ihr wisst, womit ihr anfangt

  1. 01 Was ist die erste Aufgabe, an der sich der Nutzen zeigen soll?
  2. 02 Welche Sprache läuft bei euch schon, und wer kann sie?
  3. 03 Läuft das Ergebnis auf einem Server oder im Browser?
  4. 04 Wie viele Leute sollen den Code in zwei Jahren pflegen können?
  5. 05 Wie viel Lernzeit steht wirklich zur Verfügung, in Stunden pro Woche?
Was du mitnimmst

Was ihr klärt, bevor ihr einen Kurs bucht

Sechs Punkte, und die ersten drei entscheiden die Frage in den meisten Fällen schon. Der Rest verhindert, dass aus einem gelungenen Einstieg ein Betriebsproblem wird.

Die erste Aufgabe konkret benennen

Nicht Automatisierung, sondern: diese Auswertung, die heute vier Stunden im Monat kostet. Nicht Fachanwendung, sondern: diese Liste, die derzeit in einer Tabelle geführt wird und die drei Abteilungen gleichzeitig brauchen. Erst mit einer benannten Aufgabe lässt sich die Sprache begründen statt behaupten.

Nachsehen, was bei euch schon läuft

Wenn ein Fachverfahren in Java geschrieben ist, ist die Anschlussfähigkeit an diesen Bestand mehr wert als jedes Argument über Lernkurven. Dasselbe gilt umgekehrt: Wenn niemand im Haus etwas mit der JVM zu tun hat, ist sie eine zusätzliche Baustelle und nicht nur eine Sprache.

Vor der Sprache das Handwerk lernen

Versionskontrolle, Fehlerbehandlung, Tests, Lesbarkeit und der Umgang mit Datenstrukturen wiegen im Ergebnis schwerer als die Syntax. Wer diese Grundlagen einmal ordentlich gelernt hat, wechselt die Sprache später in Wochen. Wer sie überspringt, schreibt in jeder Sprache dasselbe Durcheinander.

Den Betrieb vor der ersten Zeile klären

Wo läuft das Ergebnis, wer startet es, wer aktualisiert es, was passiert bei einem Fehler und wer wird informiert? Diese fünf Fragen kosten eine halbe Stunde und entscheiden darüber, ob nach einem Jahr noch jemand mit dem Ergebnis arbeitet.

Von Anfang an zu zweit lernen

Eine Sprache, die genau eine Person im Haus beherrscht, ist ein Ausfallrisiko und kein Fortschritt. Zwei Personen, die sich gegenseitig den Code lesen, lernen außerdem schneller, weil das Erklären der eigentliche Lernschritt ist.

Die Lernzeit als Termin behandeln

Ein Kurs am Stück und danach ein festes Zeitfenster pro Woche für ein echtes kleines Vorhaben schlägt jede Verteilung auf Feierabende. Ohne dieses Fenster gewinnt das Tagesgeschäft, und zwar jede Woche.

Ein erstes Vorhaben mit Ende wählen

Es muss klein sein, es muss jemandem etwas sparen, und es muss ein erkennbares Ende haben. Eine Auswertung, die monatlich läuft, ist ein gutes erstes Vorhaben. Ein Ersatz für ein bestehendes Fachverfahren ist keines, egal wie verlockend er aussieht.

KI-generiertDieses Bild wurde mit KI erzeugt · Yves Hoppe / KI / cmt

Zuerst die Aufgabe, dann die Sprache

Die Sprache ist eine Folge der Aufgabe und nicht umgekehrt. Wer regelmäßig Daten aus mehreren Quellen zusammenführt, Berichte erzeugt oder wiederkehrende Abläufe automatisiert, kommt mit einer Sprache am weitesten, in der genau dafür fertige Bausteine bereitliegen. Wer ein Fachverfahren mit Rechten, Vorgängen und Schnittstellen baut, braucht eine Sprache, in der Struktur und Typprüfung schon eingebaut sind. Wer eine Oberfläche im Browser braucht, hat gar keine Wahl.

Deshalb lohnt es sich, die erste Aufgabe schriftlich zu fixieren, bevor irgendjemand eine Sprache nennt. Ein Satz reicht: Was soll danach anders sein, wer merkt es, und wie lange dauert die Sache heute von Hand. Aus diesem Satz ergibt sich die Sprache meist von selbst, und der Rest der Diskussion erübrigt sich.

Es gibt einen zweiten Nutzen dieser Übung. Wenn sich die erste Aufgabe nicht in einem Satz beschreiben lässt, ist sie zu groß für einen Einstieg. Dann wird der Kurs zwar besucht, danach fehlt aber der Anlass zum Üben, und die Kenntnisse verfallen innerhalb weniger Monate. Ein zu großes erstes Vorhaben ist der häufigste Grund, warum ein Einstieg in die Programmierung nichts hinterlässt.

Die Grundlagen wiegen schwerer als die Sprache

Fünf Dinge entscheiden darüber, ob aus Code etwas wird, das man nach einem Jahr noch anfassen kann, und keines davon hängt an der Sprache. Erstens Datenstrukturen: zu wissen, wann eine Liste, wann ein Dictionary und wann ein eigener Typ die richtige Wahl ist. Zweitens Fehlerbehandlung: was passiert, wenn die Datei fehlt, das Netz weg ist oder das Format sich geändert hat. Drittens Tests, und sei es nur eine Handvoll für die kritischen Fälle. Viertens Versionskontrolle. Fünftens Lesbarkeit, also Namen, die etwas bedeuten, und Funktionen, die auf einen Bildschirm passen.

Wer diese Grundlagen einmal ordentlich gelernt hat, wechselt später die Sprache in Wochen, weil sich nur die Schreibweise ändert. Wer sie überspringt, produziert in jeder Sprache dieselbe Sorte Code: ein langes Skript ohne Struktur, das genau in der Umgebung funktioniert, in der es entstanden ist. Das ist der Grund, warum ein Grundlagenkurs vor oder neben dem Sprachkurs kein Umweg ist.

Für Teams mit gemischtem Vorwissen hat sich eine Reihenfolge bewährt: erst ein Einstieg, der die Denkweise vermittelt, dann die Sprache, dann ein Kurs zur Objektorientierung, sobald die ersten Programme so groß werden, dass Struktur nötig wird. Der letzte Schritt kommt oft zu spät, nämlich erst dann, wenn schon ein Programm existiert, das niemand mehr umbauen will.

Was eine zweite Sprache im Haus kostet

Eine zusätzliche Sprache ist nicht nur zusätzliches Wissen, sie ist eine zusätzliche Werkzeugkette mit allem, was daran hängt. Dazu gehören ein Paketverwalter mit einem Baum an Abhängigkeiten, ein Bauprozess, eine Laufzeitumgebung mit eigenem Aktualisierungsrhythmus, eigene Sicherheitshinweise, die jemand lesen muss, und ein eigener Weg, wie Ergebnisse auf einen Server kommen. All das existiert unabhängig davon, wie viele Zeilen Code dahinterstehen.

Deshalb ist die ehrliche Rechnung nicht Sprache A gegen Sprache B, sondern eine Sprache gegen zwei. Wenn im Haus bereits Java läuft und die neue Aufgabe sich dort mit vertretbarem Aufwand lösen lässt, spricht viel dafür, dabei zu bleiben, auch wenn Python für diese eine Aufgabe die elegantere Wahl wäre. Umgekehrt ist es kein Argument, an einer Sprache festzuhalten, in der die neue Aufgabe nur mit erheblichem Eigenbau zu lösen wäre.

Wenn ihr euch für eine zweite Sprache entscheidet, dann bewusst und mit den drei Festlegungen, die dazugehören: Mindestens zwei Personen beherrschen sie, es gibt einen vereinbarten Ort, an dem der Code liegt und automatisch gebaut wird, und es ist geklärt, wer die Abhängigkeiten aktualisiert. Ohne diese drei Punkte entsteht ein Programm mit genau einem Zuständigen, und das ist der Anfang einer Altlast.

Wenn im Bestand ABAP, COBOL oder VBA läuft

In vielen Häusern ist die eigentliche Frage nicht, welche Sprache neu dazukommt, sondern wie der Bestand weiterlebt. Wo ein SAP-System steht, ist ABAP nicht verhandelbar, und die relevanten Fragen drehen sich um Erweiterungen und deren Trennung vom Standard. Wo Großrechneranwendungen laufen, ist COBOL nicht wegen seiner Eleganz im Einsatz, sondern weil dort Fachlogik steckt, die niemand vollständig aufgeschrieben hat.

Für die Wahl einer ersten neuen Sprache heißt das zweierlei. Erstens ist die Anschlussfähigkeit ein hartes Kriterium: Eine Sprache, aus der ihr eure bestehenden Systeme ansprechen könnt, ist mehr wert als eine, die für sich genommen angenehmer ist. Zweitens ist die Pflege des Bestands eine eigene Aufgabe mit eigener Qualifikation, und sie konkurriert um dieselbe Lernzeit. Wer beides gleichzeitig anfängt, macht beides halb.

Ein häufig übersehener Sonderfall ist VBA. In vielen Fachbereichen laufen umfangreiche Lösungen in Tabellenkalkulationen, die faktisch Fachanwendungen sind. Der Schritt von dort in eine richtige Programmiersprache ist kleiner, als er wirkt, weil die Denkweise schon da ist. Er lohnt sich aber nur, wenn gleichzeitig geklärt wird, wo das Ergebnis künftig läuft, denn sonst ist der Gewinn nur eine andere Sprache am selben Arbeitsplatz.

Ein Lernpfad, der neben dem Tagesgeschäft funktioniert

Was in der Praxis trägt, ist eine Abfolge aus vier Stufen. Erstens ein Kurs am Stück, damit die Grundlagen zusammenhängend sitzen und nicht in Bruchstücken aus dem Netz. Zweitens ein kleines Vorhaben mit echtem Nutzen, das innerhalb von vier bis sechs Wochen fertig wird. Drittens ein Review durch jemanden, der es schon kann, denn ohne Rückmeldung verfestigen sich Gewohnheiten, die später teuer werden. Viertens ein Aufbaukurs, sobald die ersten Programme groß genug sind, dass Struktur nötig wird.

Zwei Fehler wiederholen sich dabei. Der erste ist die Verteilung auf Feierabende und Restzeiten: Ohne ein festes Zeitfenster in der Arbeitszeit gewinnt das Tagesgeschäft jede Woche, und nach drei Monaten ist der Kurs verfallen. Der zweite ist der Alleingang. Wer als Einziger lernt, hat niemanden zum Fragen, niemanden, der den Code liest, und erzeugt gleichzeitig ein Ausfallrisiko für alles, was dabei entsteht.

Und ein Wort zur Erwartung: Nach einem Grundkurs schreibt niemand eine Fachanwendung. Was nach einem Grundkurs entsteht, sind kleine Programme, die eine wiederkehrende Handarbeit ersetzen, und genau daran gehört der Nutzen gemessen. Wer diese Erwartung offen ausspricht, bekommt am Ende ein Team, das weitermacht, statt eines, das sich für gescheitert hält.

Dazu passende Kurse

Wenn im Team noch niemand programmiert hat, sind Grundlagenkurse für den ersten Einstieg in die Programmierung der geradere Weg als ein Sprachkurs, der Vorwissen voraussetzt.

Steht die Sprache dagegen schon fest, findest du unter die Kurse zu den einzelnen Programmiersprachen den passenden Grund- oder Aufbaukurs.

Wissen prüfen

Wie sicher bist du beim Thema wirklich?

Lesen fühlt sich schnell nach Können an. Ein kurzer Test zeigt dir, was davon schon sitzt und wo sich ein Kurs lohnt. Kostenlos, ohne Anmeldung, mit einer Erklärung zu jeder Antwort.

Sehr umfangreicher Überblick über Zusammenhänge und Anwendungsbereiche. Sehr zu empfehlen.
Einführung in die Programmierung für Programmiereinsteiger
Effektives, gemeinsames Erarbeiten der Aufgaben mit vielen praktischen Tipps.
Groovy Grundkurs
Sehr guter Trainer und gute Aufbereitung der Inhalte und auch eingehen auf Fragen der Beteiligten.
Unreal Engine Kurs für Einsteiger

Häufige Fragen

Gibt es die eine richtige erste Sprache?
Nein, aber es gibt eine falsche: die, für die es bei euch keine erste Aufgabe gibt. Wenn ihr die erste Aufgabe benennen könnt, folgt die Sprache fast von selbst. Für den häufigsten Fall, also wiederkehrende Handarbeit und Auswertungen, ist Python die naheliegende Wahl, weil dort am schnellsten etwas entsteht, das jemand benutzt.
Sollen wir zuerst Grundlagen lernen oder direkt eine Sprache?
Für Leute ohne jede Programmiererfahrung lohnt sich ein Einstieg, der die Denkweise vermittelt, bevor die Besonderheiten einer Sprache dazukommen. Wer schon einmal Makros geschrieben oder Formeln gebaut hat, kann direkt mit einer Sprache anfangen und die Objektorientierung nachziehen, sobald die Programme größer werden.
Wie viel Zeit müssen wir einplanen?
Für einen Grundkurs sind es wenige Tage am Stück. Entscheidender ist die Zeit danach: Ohne ein festes Fenster von einigen Stunden pro Woche über zwei bis drei Monate hinweg verfällt das Gelernte, bevor es das erste Mal gebraucht wird. Diese Zeit gehört genauso geplant wie der Kurs selbst.
Reicht eine Person, die programmieren kann?
Für den Anfang ja, dauerhaft nein. Sobald das erste Programm im Betrieb ist, hängt an dieser Person ein Ausfallrisiko, und Urlaub oder Wechsel machen daraus ein Problem. Zwei Personen, die sich gegenseitig den Code lesen, sind auch fachlich schneller, weil das Erklären der wirksamste Lernschritt ist.
Was ist mit den Sprachen, die gerade in den Ranglisten steigen?
Für einen Einstieg im Unternehmen sind sie fast immer die falsche Wahl, weil dort das Wichtigste fehlt: Leute, die sie können, Bibliotheken für eure Aufgabe und Antworten auf eure Fragen. Eine junge Sprache ist die zweite oder dritte Entscheidung eines Teams, nicht die erste.

Passt thematisch dazu

Läuft im Haus bereits ABAP, entscheidet nicht nur die Anschlussfähigkeit an den Bestand, sondern auch, welche ABAP-Variante in eurem System heute noch zulässig ist .

Persönlich für dich da

Deine Ansprechpartner

Du bist dir nicht sicher, welcher Kurs oder welches Level zu dir passt? Wir beraten dich persönlich und kostenlos.

Yves Hoppe

Yves Hoppe

Weiterbildung & Beratung

Hilft dir, aus dem Programmierung-Programm den passenden Kurs für deinen Stand zu finden.

Norbert Jansen

Norbert Jansen

Beratung & Inhouse

Plant mit dir Inhouse-Trainings, die auf eure Abläufe und euren Datenbestand zugeschnitten sind.

Den Einstieg an einer echten Aufgabe festmachen

Bei cmt fängst du mit einem Grundlagenkurs an und bringst danach eine Aufgabe aus dem eigenen Haus mit. So entsteht neben dem Wissen auch das erste Ergebnis, das jemand tatsächlich benutzt.