KI · Softwareentwicklung · Architektur · Code

KI schreibt heute erstaunlich guten Code. Software entwickeln kann sie trotzdem nicht allein.

KI verändert die Programmierung grundlegend. Warum Codegenerierung trotzdem nur ein Teil professioneller Softwareentwicklung ist.

Ein Entwickler ordnet KI-generierte Codebausteine in einem Softwareentwurf an

Es gibt Aufgaben, für die ich vor einigen Jahren eine Dokumentation geöffnet, eine Suchmaschine bemüht und anschließend zwanzig Minuten ausprobiert hätte.

Heute beschreibe ich das Problem einer KI und bekomme wenige Sekunden später einen brauchbaren Ansatz.

Das ist beeindruckend.

Und manchmal auch ein bisschen unheimlich.

Wer Software entwickelt und KI-Werkzeuge grundsätzlich ignoriert, verzichtet inzwischen auf ziemlich viel Produktivität. Gleichzeitig halte ich die Vorstellung für falsch, dass Softwareentwicklung dadurch im Wesentlichen zu einer automatisierten Codeproduktion wird.

Denn Code war nie das eigentliche Produkt.

Code schreiben war schon immer nur ein Teil

Von außen betrachtet besteht Softwareentwicklung vor allem aus Programmieren.

Das ist verständlich. Code ist der sichtbare handwerkliche Teil.

In realen Projekten verbringt man allerdings erstaunlich viel Zeit mit anderen Dingen.

Was soll die Anwendung überhaupt tun?

Was meint der Kunde tatsächlich mit seiner Anforderung?

Welche Daten gehören zusammen?

Welche Fehlerfälle müssen berücksichtigt werden?

Welche technische Entscheidung verursacht in zwei Jahren Schmerzen?

Und manchmal die wichtigste Frage:

Brauchen wir diese Funktion wirklich?

Eine KI kann bei vielen dieser Fragen helfen.

Entscheiden muss sie deshalb noch lange nicht.

KI ist außergewöhnlich gut im plausiblen Vorschlagen

Das ist gleichzeitig ihre Stärke und ihre Gefahr.

Eine gute KI-Antwort sieht häufig überzeugend aus.

Der Code ist sauber formatiert. Die Variablennamen passen. Das Muster wirkt bekannt. Vielleicht gibt es sogar eine elegante Erklärung dazu.

Und trotzdem kann die Lösung falsch sein.

Nicht unbedingt syntaktisch. Das wäre einfach.

Sie kann fachlich falsch sein.

Sie kann eine Randbedingung übersehen, die nirgendwo ausdrücklich erwähnt wurde. Sie kann eine Bibliothek verwenden, die im Projekt aus gutem Grund nicht eingesetzt wird. Sie kann eine Sicherheitsannahme treffen, die hier nicht gilt.

Plausibilität ist nicht dasselbe wie Richtigkeit.

Das war bei Antworten aus Foren übrigens auch schon so. KI liefert nur sehr viel schneller sehr viel plausibleren Text.

Der Kontext steckt selten vollständig im Prompt

In einem gewachsenen Softwareprojekt existiert enorm viel implizites Wissen.

Warum wurde diese Klasse so aufgebaut?

Warum wird eine scheinbar umständliche Methode verwendet?

Warum darf ein bestimmter Prozess nicht parallel laufen?

Vielleicht steht das in einer Architekturentscheidung.

Vielleicht in einem Ticket von 2021.

Vielleicht weiß es nur noch jemand, der damals dabei war.

Eine KI kann nur mit dem Kontext arbeiten, den sie bekommt.

Je besser dieser Kontext ist, desto besser wird das Ergebnis.

Das führt zu einer interessanten Verschiebung: Die Fähigkeit, ein Problem sauber zu beschreiben, wird wichtiger.

Wer selbst nicht genau weiß, was er erreichen möchte, bekommt von einer KI möglicherweise sehr schnell eine hervorragende Lösung für das falsche Problem.

Geschwindigkeit verändert die Art der Fehler

Früher hat die Implementierung einer Idee manchmal so lange gedauert, dass man unterwegs zwangsläufig darüber nachdenken musste.

Heute kann ein Prototyp in erstaunlicher Geschwindigkeit entstehen.

Das ist großartig.

Es bedeutet aber auch, dass schlechte Ideen schneller eine erstaunlich professionelle Oberfläche bekommen.

Eine technische Sackgasse kann innerhalb eines Tages so weit entwickelt sein, dass sie emotional bereits wie ein Produkt wirkt.

Deshalb wird eine Fähigkeit wichtiger, die mit Programmieren nur indirekt zu tun hat: früh stoppen.

Nicht jede funktionierende Idee sollte weiterentwickelt werden.

Wo KI richtig stark ist

Ich nutze KI besonders gerne dort, wo sie Reibung aus dem Entwicklungsalltag nimmt.

Boilerplate erzeugen.

Tests vorbereiten.

Eine unbekannte API erklären.

Bestehenden Code analysieren.

Alternative Implementierungen vergleichen.

Dokumentation formulieren.

Fehlerhypothesen sammeln.

Oder einfach eine zweite Perspektive auf eine technische Entscheidung bekommen.

Das sind wertvolle Aufgaben.

Die KI ersetzt dabei für mich weniger den Entwickler als bestimmte Umwege, die Entwickler bisher gehen mussten.

Der gefährlichste Satz lautet: „Sieht gut aus.“

Generierter Code muss gelesen werden.

Das klingt selbstverständlich. In der Praxis entsteht durch die Geschwindigkeit aber eine neue Versuchung.

Wenn eine KI hundert Zeilen Code in Sekunden erzeugt, fühlt es sich langsam an, diese hundert Zeilen anschließend gründlich zu prüfen.

Genau das ist notwendig.

Ich möchte verstehen, welche Annahmen darin stecken.

Ich möchte wissen, wie Fehler behandelt werden.

Ich möchte sehen, welche Abhängigkeiten entstehen.

Und ich möchte den Code im Zweifel auch ohne KI weiterentwickeln können.

Sonst habe ich zwar Entwicklungszeit gespart, aber Verständnis verloren.

Das ist kein besonders guter Tausch.

Softwareentwicklung ist auch Produktdenken

Eine KI kann problemlos fünf Varianten eines Dialogs programmieren.

Die schwierigere Frage lautet: Welche davon sollte überhaupt existieren?

Soll eine Einstellung sichtbar sein?

Soll sie automatisch gewählt werden?

Braucht der Benutzer eine zusätzliche Option oder erzeugen wir damit nur eine weitere Entscheidung?

Diese Fragen lassen sich nicht allein aus Code beantworten.

Sie hängen von Menschen, Nutzungssituationen und Zielen ab.

Gerade bei eigener Produktentwicklung merke ich immer wieder, wie viel Zeit nicht in die technische Umsetzung, sondern in solche Entscheidungen fließt.

Und das ist gut so.

KI wird Entwickler verändern

Ich halte wenig von der Frage, ob KI Entwickler „ersetzt“.

Sie ist zu grob.

Interessanter ist, wie sich die Rolle verändert.

Wenn Code schneller entsteht, verschiebt sich der Wert stärker zu den Dingen davor und danach.

Probleme verstehen.

Architektur gestalten.

Ergebnisse beurteilen.

Qualität sichern.

Produkte sinnvoll schneiden.

Verantwortung übernehmen.

Das heißt nicht, dass Programmierkenntnisse unwichtig werden.

Im Gegenteil.

Wer beurteilen möchte, ob generierter Code gut ist, sollte verstehen, was dort passiert.

Vielleicht wird Softwareentwicklung dadurch sogar interessanter

Ich sehe die Entwicklung überwiegend optimistisch.

Viele monotone Aufgaben lassen sich beschleunigen.

Experimente werden günstiger.

Einzelne Entwickler können Dinge umsetzen, für die früher deutlich mehr Ressourcen notwendig gewesen wären.

Das eröffnet Möglichkeiten.

Aber gute Werkzeuge ersetzen keine guten Entscheidungen.

Ein Akkuschrauber macht schließlich auch niemanden automatisch zum Tischler. Er sorgt nur dafür, dass das Schrauben weniger Zeit kostet.

KI ist selbstverständlich ein etwas beeindruckenderer Akkuschrauber.

Der Grundgedanke bleibt trotzdem ähnlich.

Sie kann uns enorm helfen.

Was wir damit bauen, müssen wir weiterhin selbst verstehen.