Vor ein paar Tagen stieß ich auf LinkedIn auf eine interessante Schlagzeile, die eine kühne Aussage enthielt: „Tech-Unternehmen will mit GitHub Copilot die Produktivität von Programmierern um 50 % steigern.“ Was die Situation noch seltsamer machte, war, dass der Autor des Beitrags kein Programmierer war.
Trotz der Dreistigkeit der Überschrift glaube ich, dass dieses Thema zu einer interessanten Analyse und Diskussion führen kann.
Die beeindruckenden Fähigkeiten der KI-Tools, die der Öffentlichkeit heute zur Verfügung stehen, lassen sich nicht leugnen. Im Bereich Programmierung unterstützen sie Entwickler bereits maßgeblich, optimieren ihre Abläufe und steigern die Produktivität. Mit den richtigen Tools können Probleme schneller gelöst werden.
Für diejenigen, die sich mit Programmierung nicht auskennen, mögen diese KI-Tools jedoch fast mystisch wirken und den Eindruck erwecken, dass sie jedes Problem schnell und automatisch lösen können. Aber wir wissen, dass die Realität ganz anders aussieht.
Die Begeisterung, die diese Tools hervorrufen, ist völlig berechtigt, und bevor Sie sich ein falsches Bild über mich machen, sollten Sie wissen, dass auch ich einer von ihnen bin. Ich glaube jedoch, dass nicht jeder vollständig versteht, wozu diese Tools in der Realität fähig sind.
Auf der einen Seite gibt es Programmieranfänger, die Angst davor haben, durch Maschinen ersetzt zu werden.
Auf der anderen Seite suchen CEOs nach magischen Lösungen, um Kosten zu senken oder die Produktivität zu steigern, vielleicht ohne ein klares Verständnis der tatsächlichen Arbeit eines Programmierers.
„ChatGPT (oder Copilot), erstellen Sie eine Seite zum Verkauf von Tickets für eine Show in Node.js. Das Backend sollte auf durchschnittlich 2.000 Anfragen pro Sekunde vorbereitet und ausfallsicher sein. Richten Sie einen Lastenausgleich ein, um Anfragen auf verteilte zu verteilen Servern. Stellen Sie sicher, dass Caches funktionsfähig sind und tatsächlich die Serverlast reduzieren. Instrumentieren Sie Echtzeit-Überwachungstools. Und natürlich sollte die Datenbank mit einer guten Replikationsstrategie geclustert werden.“
Ich weiß, das Beispiel ist übermäßig übertrieben. Aber es verdeutlicht die Komplexität der Implementierung von etwas, das jemandem, der kein Programmierer ist, einfach erscheinen mag.
Das Schreiben von Code ist nur ein Teil der Arbeit eines Programmierers, und ich bin sicher, dass generative KIs darin hervorragende Leistungen erbringen, aber es ist nicht alles, was ein Programmierer tut.
Wir Programmierer verbringen einen erheblichen Teil unseres Tages damit, keine einzige Codezeile zu schreiben. Es ist notwendig, zunächst die Anforderungen neuer Funktionen zu verstehen, Gespräche und Anpassungen mit Stakeholdern zu führen, die technische Architektur zu entwerfen und schließlich alle diese Informationen in Code zu übersetzen.
Und vergessen wir nicht, dass dieser Code im Kontext geschrieben werden muss, wenn man bedenkt, wie er zum Rest der vorhandenen Codebasis passt.
Ich meine damit, dass diese KI-Tools zwar sehr nützlich sind, aber keine Zauberei bewirken. Aber sie können gute Helfer für Programmierer sein.
Eine der Lektüren, die meine Sicht auf Software-Engineering erheblich erweiterte, war das klassische Buch „The Pragmatic Programmer“ von Dave Thomas und Andrew Hunt. In einem der Kapitel geht es um eine merkwürdige Debugging-Technik: die Gummiente.
Die Grundidee der Gummiente-Programmierung besteht darin, den Code oder das Problem, mit dem Sie konfrontiert sind, laut zu erklären, als würden Sie es einer Gummiente erklären. Indem Sie das Problem verbalisieren oder den Code Schritt für Schritt beschreiben, finden Sie oft eine Lösung oder gewinnen eine neue Perspektive auf das Problem.
ChatGPT eignet sich hervorragend zum Konversieren und darüber hinaus zum Konversieren im Kontext. Könnte diese künstliche Intelligenz die Weiterentwicklung der Gummiente von Dave Thomas und Andrew Hunt sein?
Es gibt bereits Erweiterungen für Visual Studio Code, die sich in ChatGPT integrieren lassen und es als Gummiente verwenden. Sie können sie sich hier ansehen.
Mir gefällt, dass GitHub sein Produkt Copilot genannt hat, und das passt zum Konzept der Gummiente. Das Tool zielt darauf ab, eher ein Co-Pilot als der eigentliche Pilot zu sein. Es ist der Assistent des Programmierers, seine Gummiente.
Diese Botschaft richtet sich an diejenigen, die sich Sorgen um die Zukunft ihrer Programmierkarriere machen: Entspannen Sie sich! Aber entspannen Sie sich nicht so sehr, denn die harte Realität ist, dass es die Grundlagen der Softwareentwicklung sind, die einen guten Programmierer ausmachen, und nicht nur der Code.
Mit der Popularisierung von Computern für die breite Öffentlichkeit in den 70er und 80er Jahren fühlten sich Buchhaltungs- und Finanzfachleute durch Tabellenkalkulationssoftware bedroht. Eine Maschine, die Tausende von Zeilen und Spalten speichern kann und niemals Rechenfehler macht. Wer würde das ablehnen?
Es stimmt, dass Tabellenkalkulationen leistungsstark waren und immer noch sind, und sie stellten eine Bedrohung für die Arbeitsplätze von „Tabellenkalkulationsschreibern“ dar. Allerdings wussten diejenigen, die die Daten interpretierten, den geschäftlichen Kontext verstanden und Buchhaltungskonzepte anwandten, sicherlich, wie man Tabellenkalkulationen nutzt, anstatt sie zu kritisieren.
Programmierer sind nicht nur Codeschreiber. Fürchten Sie sich nicht vor Ihrer neuen Badeente; Verwenden Sie es stattdessen. Und vielen Dank, ChatGPT, dass Sie mir bei der Zusammenstellung dieses Artikels geholfen haben.
Auch hier veröffentlicht