- Große Sprachmodelle (LLMs) sorgen in kreativen Bereichen für erhebliche Umwälzungen, da sie Bilder, Texte und Code generieren können
- Anfangs gab es viele lustige Ergebnisse, etwa Bilder mit falsch gezeichneten menschlichen Händen oder Modelle, die falsche Fakten behaupteten, doch das verbessert sich allmählich
- Bevor diese Modelle aufkamen, war das Hauptargument gegen Automatisierung, dass Maschinen nicht kreativ denken könnten; inzwischen wird dieses Argument jedoch zunehmend schwächer
- Wohin geht die Reise jetzt?
Framework: Kompetenzstufen der Softwareentwicklung
- Softwareentwicklung ist weit mehr als nur Code zu schreiben
- Das Bild eines Programmierers ist oft jemand, der in einem dunklen Raum auf den Computer starrt und eifrig Code tippt, doch in Wirklichkeit wird für andere Aufgaben mehr Zeit aufgewendet als für das Schreiben von Code
- Anforderungen von Business-Anwendern aufnehmen
- Anforderungen so verfeinern, dass sie sich als Code modellieren lassen
- Gemeinsam mit Teammitgliedern wie Designern und Produktmanagern Lösungen visualisieren und planen
- Technische Entwürfe zusammen mit anderen Entwicklern ausarbeiten und verfeinern
- Infrastruktur einrichten, Konfiguration, Boilerplate usw.
- Tatsächlichen Code schreiben
- Debugging, fremden Code verstehen, Dokumentation schreiben usw.
- Deployment in Produktion
- Auf Produktionsprobleme reagieren
- Viele weitere Aufgaben
- Wenn man sagt „AI wird Entwickler ersetzen“, bedeutet das, dass AI all diese Aufgaben gut beherrschen müsste
- Betrachtet man die obige Liste, scheinen manche dieser Aufgaben künftig automatisierbar zu sein, andere aber noch nicht
Klassifizierung der Automatisierungsstufen bei autonomen Fahrzeugen
- Im Bereich autonomer Fahrzeuge wurde eine Methode entwickelt, Automatisierungsstufen zu klassifizieren
- Diese Klassifizierung beschreibt klar, was die aktuelle Technologie leisten kann, und vermeidet Schwarz-Weiß-Denken
- Wendet man eine solche Klassifizierung auf AI-gestützte Softwareentwicklung an
- Die niedrigste Stufe ist das, was wir früher hatten: eine Phase, in der AI an der Arbeit nicht beteiligt ist. Natürlich gab es andere Arten der Automatisierung wie Compiler oder Build-Prozesse, aber das waren keine AI-Systeme, sondern von Menschen geschriebene deterministische Automatisierung
- Die nächste Stufe ist das, was wir heute haben
- Entwickler erhalten Unterstützung durch ChatGPT oder GitHub Copilot
- Entwickler nutzen sie zum Schreiben von Tests, für Boilerplate-Code, Refactoring und um Code oder Fehler besser zu verstehen
- Man kann per Chat wie mit einem Entwicklerkollegen Fragen stellen und Hilfe erhalten, aber da kein Zugriff auf den Computer besteht, können keine Dateien erstellt, keine Build-Befehle ausgeführt und nichts in Produktion ausgerollt werden
- Die höchste Stufe wäre, einem „AI-Coder“ einen Teil oder das gesamte Projekt zu übergeben
- Der AI-Coder nimmt Anforderungen entgegen, schreibt Code, behebt Fehler und deployt das fertige Produkt in Produktion
- Ich dachte bisher, bis so etwas möglich ist, würden noch einige Monate vergehen. Doch die Demo von Devin hat gezeigt, dass derzeit zwar nur einfache Entwicklungsaufgaben möglich sind, sich das aber künftig verbessern könnte: Devin, der erste AI-Softwareingenieur
- Neben den Fähigkeiten der AI-Modelle muss man auch darüber nachdenken, wie präzise die Lösung ist
- Diese Modelle sind anfällig für Halluzinationen oder müssen auf eine bestimmte Weise gepromptet werden, um das gewünschte Ergebnis zu liefern
- Das führt zu Reibung bei der Einführung und ist der Grund, warum die meisten Menschen AI-Assistenten an diesem Punkt wieder aufgeben
- Aber auch das verbessert sich, und bei den neuesten Modellen ist dieses Maß an Prompt Engineering nicht mehr nötig
- Außerdem sollten Modelle nicht nur von Trainingsdaten abhängen, sondern in der Lage sein, das Web zu durchsuchen und auf diese Weise zu „lernen“
- Das ist wichtig, weil ständig neue Versionen von Bibliotheken und Programmiersprachen erscheinen
Framework: Ausgelagerte Softwareentwicklung
- Wenn diese Fähigkeiten aufgebaut sind, welche Auswirkungen hat das dann auf Teams oder Organisationsstrukturen? Unternehmen betreiben Softwareentwicklung auf unterschiedliche Weise:
- vollständig inhouse
- überwiegend inhouse mit wenigen Vendoren
- nur wenig inhouse mit vielen Vendoren
- vollständig über Vendoren
- Man kann sich AI-Coder als ausgelagerte Software-Vendoren oder Berater vorstellen
- Es ist wichtig, dass interne Teams die Arbeit der Vendoren beaufsichtigen
- Man könnte dieses Problem zwar über Verträge lösen, aber Verträge gelten in der Regel nur für bestimmte Anbieter oder Projekte und können langfristige Ziele auf diese Weise nicht erzwingen
- Es ist sinnvoll, selbst dann ein kleines internes Team zu haben, das Vendoren anleiten kann
- Ebenso ist es von Vorteil, auch dann ein internes Team aus Softwareentwicklern zu haben, das die Arbeit überwacht, wenn man AI-Coder wie EC2-Instanzen mieten kann
Framework: Softwareentwicklung ist das Modellieren von Komplexität
- Wenn man darüber spricht, Geschäftsprobleme zu lösen, kann man Excel als Beispiel nehmen.
- Excel hat eine sehr niedrige Einstiegshürde, sodass man damit Daten organisieren, Datenanalysen durchführen oder bestimmte Prozesse automatisieren kann
- Für komplexe Business-Workflows ist es jedoch ungeeignet, weil Funktionen wie granulare Zugriffskontrolle, Integrationen mit nicht unterstützten Systemen, Testbarkeit, Wiederverwendbarkeit und Vendor Lock-in fehlen
- Dasselbe gilt für „Low-Code“-Lösungen wie Power Automate
- „Könnten Business-Anwender mit einem AI-Coder solche komplexen Workflows ohne die Hilfe von Softwareentwicklern erstellen?“
- Wenn man darüber nachdenkt: Excel und Low-Code-Tools gibt es seit Jahrzehnten. Warum existiert der Beruf der Softwareentwicklung dann immer noch?
- Weil man Softwareentwicklung nur als das Schreiben von Code betrachtet
- Komplexe Probleme erfordern Menschen, die diese Komplexität wirksam beherrschen und Business-Probleme aus der realen Domäne in digitale Modelle übersetzen können
- Anders gesagt: Nur weil man mit einem YouTube-Tutorial ohne Hilfe eines Bauingenieurs einen hölzernen Schuppen bauen kann, heißt das nicht, dass man ebenso gut ein zehnstöckiges Gebäude bauen kann oder sollte
- Wenn man lernt, wie man diese Arbeit richtig macht, wird man nach und nach selbst zum Bauingenieur
- Es ist nur die Frage, ob man Zeit investieren will, um es richtig zu lernen, oder lieber einen erfahrenen Ingenieur einstellt
- Deshalb gilt: Ob man Excel oder den neuesten AI-Coder verwendet, wenn man komplexe Logik modelliert, ist man aus meiner Sicht weiterhin Softwareentwickler
- Nur das Werkzeug, mit dem Business-Anforderungen ausgedrückt werden – Tabellenformeln, Code, Prompts usw. – ist unterschiedlich
Framework: Die Größe des Kuchens
- Ein Großteil der Angst rund um dieses Thema basiert auf der Annahme, dass die Größe des Markts für Softwareentwicklung unverändert bleibt – also dass AI-Coder den Menschen nach und nach „Marktanteile“ wegnehmen werden
- Da der Markt für die „Lösung von Business-Problemen“ viel größer ist als der Markt für Softwareentwicklung, wird Softwareentwicklung nicht so bald verschwinden
Framework: Formale Definition von Business-Logik
- Business-Logik muss immer in einer klaren formalen Form definiert werden
- Deshalb verwenden Programmiersprachen zwar englische Wörter wie
if oder switch, definieren deren Bedeutung aber sehr strikt, und wenn man die falschen Wörter verwendet, funktioniert es nicht. Betrachtet man es genauer, gilt das ebenso für Excel-Formeln oder Low-Code-Flows
- Auch wenn AI-Coder in Zukunft möglicherweise Softwareprodukte auf Basis von in konversationellem Englisch formulierten Anweisungen erzeugen können, wird es im Backend meiner Ansicht nach weiterhin eine grundlegende formale Definition der erzeugten Business-Logik geben
- Das könnte sehr anders aussehen als die Sprachen oder Frameworks, die wir heute verwenden, aber eine formale Definition von Business-Logik klingt dem, was wir „Code“ nennen, sehr ähnlich
- Solange AI-Coder diese Business-Logik nicht auf deterministische Weise aus konversationellem Englisch erzeugen können, wird es weiterhin Menschen brauchen, die den im Backend erzeugten Code verstehen und ihn bei Bedarf ändern können: Softwareentwickler
Fazit
- Die Art der Arbeit wird sich verändern, und die Werkzeuge, die wir verwenden, werden sich stark von den heutigen unterscheiden, aber ich denke, dass es auch in naher Zukunft weiterhin einen Markt für Softwareentwickler geben wird
7 Kommentare
Devin, der erste KI-Softwareingenieur
OpenDevin - die Open-Source-Implementierung des KI-Softwareingenieurs Devin
Wenn man sieht, wie die KI ihren Bereich sogar auf die Kunst ausdehnt, die noch vor dem Bekanntwerden von OpenAI als der Bereich galt, in dem die Einführung von KI am spätesten oder gar nicht möglich wäre, kommt mir plötzlich der Gedanke, dass das, was wir heute für ausschließlich von „Menschen“ möglich halten, vielleicht nicht „sicher“ ist.
Wie im Haupttext und im Beitrag https://de.news.hada.io/topic?id=13557
wird der Anteil der Entwickler derzeit eindeutig schrumpfen, und das wird sich wohl noch beschleunigen, oder?
Da die Bedeutung von AI-Prompts immer stärker in den Vordergrund rückt, werden wohl immer mehr Nutzer erkennen, dass eine immer klarere Spezifikation und Anforderungsdefinition unverzichtbar sind, und das könnte sich letztlich künftig in eine für Entwickler vorteilhafte Richtung auswirken.
Code ist für Menschen da, und wenn Maschinen Code schreiben, bedeutet das, dass Menschen weiterhin nötig sind – ich denke also nicht, dass das die Entwicklungsrichtung der fernen Zukunft ist. Ich glaube eher, dass es sich in eine Form entwickeln wird, bei der wir einer Art Blackbox unsere gewünschte Anfrage übergeben, die dann wie beim frühen experimentellen backend-GPT (https://github.com/RootbeerComputer/backend-GPT) auf die DB zugreift, die Daten verarbeitet und bei der an den vorgelagerten und nachgelagerten Teilen der Experience Menschen teilweise eingreifen.
Es scheint, als würde in den vielen Diskussionen über ChatGPT und Copilot auch häufig das Thema Prompt Engineering angesprochen. Ich denke, ein wichtiger Faktor ist auch, wie wir die Prozesse, in denen wir für die Programmierung meist Besprechungen führen, uns mündlich schnell abstimmen, Inhalte ordnen und zur Bestätigung festhalten, effizient an einen KI-Coder vermitteln und mit ihm kommunizieren können ^^.
> „AI wird Entwickler ersetzen“ bedeutet, dass AI all die oben genannten Aufgaben beherrschen müsste.
-> Es könnte sein, dass diese Verfahren nur deshalb nötig sind, weil Menschen die Arbeit machen, und ich denke, dass das Endergebnis in Form von Code, wenn all diese Verfahren durchlaufen wurden, bestimmte Muster haben kann. So wie man auch im Go dachte, dass Dinge wie Eröffnungen oder Standardsequenzen notwendig seien, sich aber herausgestellt hat, dass das letztlich nur eine unvermeidliche Methode war, um Informationen innerhalb der menschlichen Wahrnehmungsgrenzen zu verarbeiten.