Es ist bekannt, dass generative KI fotorealistische Bilder, Illustrationen und Gemälde erzeugen kann, indem man ihr einfach Anweisungen gibt.
In der Geschäftswelt konzentriert sich die Aufmerksamkeit unterdessen auf die Fähigkeit generativer KI, Programme zu generieren.
Konversationelle KI wird durch große Sprachmodelle, eine grundlegende Technologie, angetrieben und zeichnet sich durch die Fähigkeit aus, in verschiedenen Sprachen zu kommunizieren und zwischen ihnen zu übersetzen.
Programmiersprachen, die zur Erstellung von Programmen verwendet werden, sind ebenfalls eine Art von Sprache. Menschliche Programmierer übersetzen im Grunde Softwareanforderungen, die sie verbal erhalten haben, in Programmiersprachen.
Deshalb ist konversationelle generative KI, die große Sprachmodelle verwendet, auch sehr versiert im Programmieren.
Darüber hinaus ist das Programmieren eine intellektuelle Aufgabe, bei der die Korrektheit der Ergebnisse oft automatisch und sofort überprüft werden kann. Dies liegt daran, dass ein erstelltes Programm ausgeführt und automatisch überprüft werden kann, ob es die gewünschte Ausgabe erzeugt.
Tatsächlich erstellen menschliche Programmierer beim Schreiben eines Programms oft gleichzeitig Testprogramme, um die Ergebnisse zu überprüfen, und entwickeln das Hauptprogramm, während sie sicherstellen, dass es wie beabsichtigt funktioniert.
Generative KI kann ebenfalls beim Programmieren durch Testen Fortschritte machen. Wenn ein Mensch präzise Anweisungen gibt, ist es möglich, dass die KI das Programm automatisch iteriert und fertigstellt, bis alle Tests bestanden sind.
Natürlich gibt es aufgrund der Einschränkungen der Programmierfähigkeiten generativer KI und der Mehrdeutigkeit menschlicher Anweisungen viele Fälle, in denen Tests auch nach zahlreichen Iterationen nicht bestanden werden können. Darüber hinaus führen unzureichende oder fehlerhafte Tests oft zu Fehlern oder Problemen im fertiggestellten Programm.
Doch mit der Verbesserung der Fähigkeiten generativer KI und der Verfeinerung der Anweisungsmethoden durch menschliche Ingenieure, gepaart mit Mechanismen zur Erweiterung des Programmierwissens generativer KI durch Internetsuchen, nimmt der Umfang der automatisch generierbaren, geeigneten Programme täglich zu.
Zusätzlich investieren führende Unternehmen, die in der Forschung und Entwicklung generativer KI tätig sind, aufgrund des Fokus der Geschäftswelt ebenfalls stark in die Verbesserung der Programmierfähigkeiten generativer KI.
In dieser Situation wird erwartet, dass die Ausweitung des Umfangs und des Volumens automatisierter Programmieraufgaben, die generativer KI anvertraut werden können, sich beschleunigen wird.
Es gibt viele Fälle, in denen Personen, die noch nie zuvor Programme entwickelt haben, mithilfe von Internetinformationen eine grundlegende Entwicklungsumgebung eingerichtet haben und sich dann beim Programmieren auf generative KI verlassen, wodurch sie Projekte im Zweierteam abgeschlossen haben.
Als Programmierer nutze ich selbst generative KI zum Programmieren. Sobald ich den Dreh raus habe, kann ich Software fertigstellen, ohne das Programm überhaupt bearbeiten zu müssen, einfach indem ich Code gemäß den Anweisungen der generativen KI in Dateien kopiere und einfüge.
Sicherlich gibt es viele Situationen, in denen ich ins Stocken gerate. Diese sind meist auf geringfügige Unterschiede zwischen meinen Computer- oder Programmierentwicklungswerkzeug-Einstellungen und gängigen Konfigurationen zurückzuführen, oder darauf, dass kostenlose Softwarekomponenten neuer sind als das, worauf die generative KI trainiert wurde, was zu einer Wissenslücke führt, oder weil meine Anfragen geringfügig ungewöhnlich sind.
In Fällen ohne solche geringfügigen Abweichungen oder besondere Umstände, und wenn die Anweisung erfolgt, sehr gängige Softwarefunktionen zu erstellen, werden in den meisten Situationen geeignete Programme generiert.
Auf dem Weg ins Liquidware-Zeitalter
Als Softwareentwickler kann ich die von mir erstellte Software veröffentlichen, und diese Software, die von uns Ingenieuren herausgegeben wird, wird dann von verschiedenen Benutzern verwendet.
Die Zukunft, in der diese Softwareentwicklung mit generativer KI von jedermann durchgeführt werden kann, ist eine Verlängerung der bisherigen Diskussion.
Dies ist jedoch nicht nur eine Veränderung auf der Seite der Softwareentwicklung; auch auf der Benutzerseite stehen große Veränderungen bevor.
Die Aufgabe, generativer KI verbal Anweisungen zu geben, um Funktionen in Software automatisch hinzuzufügen oder zu ändern, kann nicht nur während der Entwicklungsphase vor der Softwarefreigabe, sondern auch während ihrer Nutzung erfolgen. Darüber hinaus kann sie vom Softwarebenutzer selbst durchgeführt werden.
Softwareentwickler können den Umfang dessen definieren, was geändert werden darf und was nicht, und dann Software mit generativer KI-gestützter Anpassungsfunktion veröffentlichen.
Dies würde es Benutzern ermöglichen, die generative KI zu bitten, kleinere Unannehmlichkeiten oder bevorzugte Bildschirmdesigns innerhalb der Software zu ändern.
Darüber hinaus könnten Benutzer nützliche Funktionen aus anderen Anwendungen hinzufügen, mehrere Operationen mit einem Klick kombinieren oder häufig aufgerufene Bildschirme alle in einer einzigen Ansicht anzeigen lassen.
Für Softwareentwickler bietet die Ermöglichung solcher Benutzeranpassungen erhebliche Vorteile: Es entfällt der Aufwand, Funktionsanfragen selbst umzusetzen, und es kann die Softwarepopularität steigern, indem negative Bewertungen und Unzufriedenheit über die Benutzerfreundlichkeit vermieden werden.
Wenn Benutzer Bildschirme und Funktionen auf diese Weise frei ändern können, weicht das Konzept erheblich von dem ab, was wir traditionell als „Software“ bezeichnen.
Passender wäre es, sie als „Liquidware“ zu bezeichnen, was etwas noch Flüssigeres und Anpassungsfähigeres impliziert als Software (die bereits flexibler ist als Hardware), und etwas, das dem Benutzer perfekt passt.
Früher wurden Funktionen ausschließlich durch Hardware realisiert. Dann kam austauschbare Software auf, die Funktionen durch eine Kombination aus Hardware und Software ermöglichte.
Von dort aus können wir uns das Aufkommen von Liquidware vorstellen, also von Teilen, die durch generative KI modifiziert werden können. Folglich werden Funktionen durch Hardware + Software (bereitgestellt von Entwicklern) + Liquidware (Benutzermodifikationen) realisiert.
In diesem Liquidware-Zeitalter werden die Ideen der Nutzer für Modifikationen explosionsartig zunehmen.
Eine bahnbrechende Modifikationsidee, die von einem Benutzer erfunden wurde, könnte in sozialen Medien ein heißes Thema werden und andere dazu bringen, verschiedene Liquidware-Anwendungen nachzuahmen und zu modifizieren.
Darüber hinaus wird es wahrscheinlich auch Liquidware geben, die in der Lage ist, verschiedene Softwareanwendungen integriert zu handhaben. Dies bedeutet, dass Benutzer die Zeitachsen mehrerer verschiedener Social-Media-Plattformen in einer App anzeigen oder Suchergebnisse aus zahlreichen Plattformen integrieren könnten.
Auf diese Weise werden in einer Welt, in der Liquidware weit verbreitet ist, verschiedene Geräte, einschließlich PCs und Smartphones, Funktionen bereitstellen, die perfekt zu unserem individuellen Leben und unseren Aktivitäten passen.
Ein aktuelles Phänomen
Für Software-Ingenieure wie mich ist es entscheidend zu verstehen, dass Liquidware kein futuristisches Konzept ist oder etwas, das erst in mehreren Jahren Realität wird.
Denn selbst sehr einfache Liquidware ist bereits realisierbar.
Nehmen wir zum Beispiel an, ich bin ein Ingenieur, der eine Webanwendung für die E-Commerce-Website meines Unternehmens entwickelt.
Eine solche Web-App würde Datenbanken, Verkaufsverwaltungssysteme und Produktversandsysteme auf hausintern verwalteten oder über einen Cloud-Dienst vertraglich genutzten Servern hosten. Wenn ein Benutzer einen Kauf tätigt, würden diese Systeme miteinander verknüpft, um die Zahlungsabwicklung und den Produktversand zu steuern.
Wesentliche Geschäftssysteme und Datenbanken dieser Art können nicht beliebig geändert werden.
Das Design der Weboberfläche eines E-Commerce-Shops, das dem Benutzer präsentiert wird, kann jedoch so angepasst werden, dass es für einzelne Benutzer bequemer ist, ohne dabei erhebliche Probleme zu verursachen. Natürlich wäre es ein Problem, wenn die Änderungen eines Benutzers die Bildschirme anderer Benutzer beeinflussen würden, aber individuelle, benutzerspezifische Anpassungen sind unproblematisch.
Zum Beispiel sind verschiedene Modifikationen denkbar: Text vergrößern, den Hintergrund in einen dunklen Ton ändern, häufig gedrückte Tasten für eine einfachere Bedienung mit der linken Hand neu positionieren, Artikel auf einer Listenansicht nach Preis sortieren oder die Details von zwei Produkten nebeneinander anzeigen.
Technisch lassen sich diese Modifikationen durch Ändern der Konfigurationsdateien und Programme wie HTML, CSS und JavaScript erreichen, die den Bildschirm im Browser anzeigen.
Aus Sicherheitssicht laufen diese Dateien ursprünglich im Webbrowser. Daher behandeln Teile, die von einem mit Web-Apps vertrauten Ingenieur geändert werden können, nur Funktionen und Daten, deren Änderung sicher ist.
Somit könnte serverseitig der E-Commerce-Web-App ein Mechanismus geschaffen werden, um diese Dateien für jeden angemeldeten Benutzer separat zu speichern, einen Bildschirm zur Kommunikation mit einer Chat-KI hinzuzufügen und dann die HTML-, CSS- und JavaScript-Dateien dieses Benutzers auf dem Server entsprechend dessen Anfragen zu modifizieren.
Würde dieser Text zusammen mit den Konfigurationsinformationen und dem Quellcode der bestehenden E-Commerce-Web-App einer generativen KI präsentiert, würde sie wahrscheinlich die Schritte und die notwendigen Programme zur Implementierung solcher Funktionen bereitstellen.
Auf diese Weise ist Liquidware bereits ein aktuelles Thema; es wäre nicht überraschend, wenn es sich bereits jetzt um ein fortlaufendes Phänomen handeln würde.
Omnidirektionale Ingenieure
Auch wenn der Umfang der KI-gesteuerten automatischen Programmierung wächst und das Liquidware-Zeitalter bereits begonnen hat, kann die Softwareentwicklung noch nicht ausschließlich von generativer KI durchgeführt werden.
Es ist jedoch sicher, dass die Bedeutung der Programmierung in der Softwareentwicklung erheblich abnehmen wird.
Darüber hinaus sind für eine reibungslose Softwareentwicklung umfassende Kenntnisse und Engineering-Fähigkeiten erforderlich, die von der allgemeinen Programmierung bis hin zu Cloud-Infrastruktur, Netzwerken, Sicherheit, Plattformen, Entwicklungs-Frameworks und Datenbanken reichen – also über den gesamten System-Stack, damit das gesamte System funktioniert.
Mitarbeiter mit solchem Wissen und solchen Fähigkeiten werden Full-Stack-Ingenieure genannt.
Traditionell übernahmen einige Full-Stack-Ingenieure das Gesamtdesign, während die verbleibenden Ingenieure sich auf die Programmierung spezialisierten oder sich auf spezifische, nicht-programmierbezogene Bereiche innerhalb des System-Stacks konzentrierten, wodurch Rollen aufgeteilt wurden.
Wenn generative KI jedoch den Programmieraspekt übernimmt, werden die Softwareentwicklungskosten erheblich gesenkt, was zur Planung verschiedener neuer Softwareentwicklungsprojekte führt.
Infolgedessen werden in jedem Entwicklungsprojekt Ingenieure, die lediglich Programme schreiben können, weitgehend überflüssig; stattdessen wird eine große Anzahl von Full-Stack-Ingenieuren gefragt sein.
Darüber hinaus wird in diesem Szenario alleiniges Full-Stack-Wissen und -Fähigkeiten nicht ausreichen. Dies liegt daran, dass die Arten von Software, die in verschiedenen Entwicklungsprojekten benötigt werden, sich diversifizieren werden, was bedeutet, dass die Entwicklung nicht immer mit demselben System-Stack angefordert wird. Des Weiteren wird die Nachfrage nach komplexen Systemen, die mehrere System-Stacks erfordern, zweifellos steigen.
Beispielsweise unterscheidet sich der System-Stack für eine Webanwendung von dem für Geschäfts- oder Kernsysteme. Daher kann ein Full-Stack-Webanwendungsingenieur nicht mit einem Kernsystementwicklungsprojekt betraut werden.
Ebenso haben Webanwendungen, Smartphone-Apps und PC-Anwendungen jeweils unterschiedliche System-Stacks. Im Bereich der eingebetteten Software, wie IoT, variiert der System-Stack für jedes eingebettete Gerät komplett.
Wenn jedoch die Bedeutung der Programmierung abnimmt und die Gesamtkosten für die Softwareentwicklung sinken, wird die Entwicklung komplexer Systeme, die Software mit diesen unterschiedlichen System-Stacks kombinieren, voraussichtlich zunehmen.
Obwohl eine solche Entwicklung die Zusammenstellung mehrerer unterschiedlicher Full-Stack-Ingenieure erfordert, werden Ingenieure, die das gesamte System überblicken und das grundlegende Design übernehmen können, eine entscheidende Rolle spielen.
Dies bedeutet, dass eine Nachfrage nach Ingenieuren mit umfassendem Wissen und Fähigkeiten über zahlreiche System-Stacks hinweg entstehen wird, die die Grenzen einzelner System-Stacks überschreiten.
Solche Ingenieure werden wahrscheinlich als omnidirektionale Ingenieure bezeichnet werden.
Und so wie die Nachfrage nach Ingenieuren, die nur programmieren können, aufgrund generativer KI sinken wird, wird irgendwann eine Ära kommen, in der auch die Nachfrage nach Full-Stack-Ingenieuren, die auf einen einzigen System-Stack beschränkt sind, abnehmen wird.
Wenn Sie in dieser Ära als IT-Ingenieur aktiv bleiben möchten, müssen Sie sofort den Weg einschlagen, um ein omnidirektionaler Ingenieur zu werden.
Die Rolle omnidirektionaler Ingenieure
Die zu entwickelnden Programmiersprachen, Plattformen und Frameworks sind vielfältig.
Ein omnidirektionaler Ingenieur muss jedoch nicht alle davon beherrschen, da er auch Unterstützung von generativer KI erhalten kann.
Wenn man es der generativen KI überlässt, können selbst Programmiersprachen, Plattformen oder Frameworks, die man noch nie zuvor verwendet hat, einfach durch verbale Anweisungen generiert werden.
Natürlich besteht das Risiko, Fehler oder Sicherheitslücken einzuführen oder technische Schulden anzuhäufen, die zukünftige Änderungen erschweren könnten.
Um diese Risiken zu identifizieren und zu mindern, ist Kenntnis der spezifischen Sprache oder Bibliothek notwendig. Dieses Wissen kann jedoch auch von generativer KI bezogen werden. Ein omnidirektionaler Ingenieur muss lediglich in der Lage sein, solide Verfahren und Mechanismen zur Erkennung und Vermeidung dieser Probleme oder zu deren Behebung nach dem Auftreten zu entwickeln.
Diese Verfahren und Mechanismen ändern sich bei unterschiedlichen System-Stacks nicht drastisch. Wenn die Verfahren und Mechanismen zur Vermeidung von Fehlern und Sicherheitslücken sowie zur Sicherstellung zukünftiger Erweiterbarkeit formalisiert sind, kann der Rest der generativen KI oder den in diesen spezifischen Bereichen spezialisierten Ingenieuren überlassen werden.
Omnidirektionale Ingenieure müssen nicht über detailliertes Wissen oder langjährige Erfahrung mit jedem einzelnen System-Stack verfügen.
Eine der Hauptaufgaben eines omnidirektionalen Ingenieurs ist es, zu konzipieren, wie Funktionen verteilt werden und wie mehrere komplexe Softwaresysteme, die kollaborativ über verschiedene System-Stacks hinweg agieren, miteinander interoperieren.
Darüber hinaus ist es auch eine entscheidende Rolle eines omnidirektionalen Ingenieurs, zu überlegen, wie die gesamte Software entwickelt und verwaltet werden soll.
Omnidirektionale Software
Betrachten wir, für welche Art von Softwareentwicklung ein omnidirektionaler Ingenieur benötigt wird.
Zuvor habe ich das Beispiel der Entwicklung einer E-Commerce-Webanwendung genannt.
Unter der Leitung eines Vorstandsmitglieds, das vom Top-Management mit der Auffrischung dieser E-Commerce-Web-App beauftragt wurde, könnte das Planungsteam die folgenden Anforderungen stellen:
Integration einer Benutzer-Community-Plattform: Dies bedeutet die Bereitstellung einer Plattform, die nicht nur für eine dedizierte E-Commerce-App oder -Website dient, sondern auf der Benutzer über die Produkte selbst und deren Verwendung interagieren können. Ziel ist die Kundenbindung, Mundpropaganda-Effekte, Inhaltsanreicherung durch Benutzerbeiträge und die Integration von Feedback (sowohl positive als auch negative) in die Produktentwicklung, neue Produktplanung und Marketing.
Omni-Device-Kompatibilität: Dadurch werden die Benutzer-Community und Produktinformationen von verschiedenen Geräten aus zugänglich, einschließlich nicht nur Web-Apps, sondern auch Smartphone-Apps, Sprachassistenten, Wearables und Smart-Home-Geräten.
Omni-Plattform-Kompatibilität: Dies umfasst nicht nur die unternehmenseigene Benutzer-Community-Plattform, sondern beispielsweise auch Produktlisten und die Freigabe von Bewertungen auf umfassenden E-Commerce-Websites, die Integration mit sozialen Medien sowie die funktionale und informationelle Verknüpfung mit verschiedenen KI-Tools.
Aktualisierung des Geschäftssystems: Während vorübergehend eine Verknüpfung mit bestehenden Verkaufsmanagement- und Produktliefersystemen erfolgt, beinhaltet dies auch die Aktualisierung dieser Systeme. Nach der Aktualisierung umfasst der Plan die Aggregation von Verkaufsdaten in Echtzeit und die Nachfrageprognose sowie die Integration mit Bestandsverwaltungssystemen. Darüber hinaus wird die Verknüpfung mit regional verteilten Bestandssystemen von Lieferunternehmen und Lieferdiensten auf der Spediteurseite schrittweise eingeführt, was eine entsprechende schrittweise Anpassung der Integrationen des Informationssystems erfordert.
Liquidware-Kompatibilität: Alle benutzerseitigen Schnittstellen werden selbstverständlich Liquidware-kompatibel sein. Darüber hinaus werden auch interne Benutzerschnittstellen für Produktentwicklung und -planung (wie Informationsaggregation und Feedback), Systembetriebsabteilungen und Managementberichte vollständig in Liquidware umgewandelt.
Würde ein Entwicklungsplan für solch komplexe Software vorgelegt, würde ein traditionelles Softwareentwicklungsteam ihn wahrscheinlich nicht sofort annehmen. Alternativ würden sie in Diskussionen über die Systemspezifikationen logisch darlegen, dass enorme Entwicklungskosten und -zeiten erforderlich wären, und auf eine erhebliche Reduzierung der Spezifikationen drängen.
Was aber, wenn generative KI den Großteil der Programmierung automatisieren könnte und mehr als die Hälfte der vorgeschlagenen System-Stacks bereits von jemandem im Team beherrscht würde? Und was, wenn das Team eine Erfolgsbilanz bei der erfolgreichen Einführung neuer System-Stacks, Plattformen und Frameworks von Grund auf mit Unterstützung generativer KI vorweisen könnte? Und was, wenn Sie als omnidirektionaler Ingenieur diesen Weg bereits eingeschlagen haben und ihn weitergehen wollen?
Aus dieser Perspektive müsste es sich um ein sehr attraktives Projekt handeln. Sie würden mit einem Planungsteam zusammenarbeiten, das ehrgeizige Vorschläge des Top-Managements einbringt, und mit einem Entwicklungsteam, das das Potenzial hat, sich zu einem omnidirektionalen Softwareentwicklungsteam zu entwickeln.
Hinzu kommt die Sicherheit bestehender Systeme. Es ist auch ein Projekt, das inkrementell durch einen agilen Entwicklungsprozess erweitert werden kann, beginnend mit schnell umsetzbaren, wirkungsvollen Funktionen und dem Sammeln von Feedback von Early-Adopter-Benutzern.
All dies zusammenfassend sollte die Entwicklung dieser omnidirektionalen Software als ein sehr attraktives Projekt erscheinen.
Fazit
Mit der automatischen Programmierung, die von generativer KI vorangetrieben wird, werden Liquidware und die omnidirektionale Softwareentwicklung bereits zur Realität.
In diesem Kontext müssen IT-Ingenieure zunehmend über den Full-Stack hinausgehen und darauf abzielen, omnidirektionale Ingenieure zu werden.
Darüber hinaus wird sich ihr Wirkungsbereich noch weiter ausdehnen und über den Bereich der IT-Systeme hinausgehen, um das omnidirektionale Business Engineering – die Entwicklung organisationaler Aktivitäten selbst, indem Kunden, interne Mitarbeiter und KI miteinander verbunden werden – sowie das omnidirektionale Community Engineering zu umfassen.
Und noch weiter darüber hinaus sehe ich das Aufkommen eines Feldes namens omnidirektionales Social Engineering voraus, das darauf abzielt, die Gesellschaft umfassend zu verbessern.