Nenn dich nicht artisanaler Programmierer
Don't call yourself an artisanal programmer
Der Autor wehrt sich gegen die Umdeutung von Begriffen: Wer auf LLMs verzichtet, um korrekten Code zu schreiben, wird als „artisanaler Programmierer“ abgestempelt, während „Software Engineer“ für diejenigen reserviert bleibt, die KI-generierten Code als einzige vernünftige Lösung akzeptieren. Er verweist auf Hillel Waynes Crossover-Projekt, das genau diese Rollen vertauscht, und plädiert für „AI-free software engineering“ statt „artisanal“. Die Umdeutung sei eine Identitätsattacke, die ohne sachlichen Grund in kürzester Zeit die öffentliche Wahrnehmung verschoben habe.
Someone who doesn’t use LLMs is not a software engineer, they’re an artisanal coder. It’s an attack on an identity.
- jlamberts
Beim Engineering geht es darum, etwas zu schaffen, das einen Zweck erfüllt, und dabei innerhalb eines Satzes von Einschränkungen zu arbeiten. Ein Teil davon ist die Erkenntnis, dass „100 % korrekt/zuverlässig unter allen Umständen“ ein unrealistisches Ziel ist, da Implementierungszeit und -kosten eine dieser Einschränkungen sind.
Ein guter Ingenieur wird diesen Kompromiss zwischen Robustheit und Kosten anerkennen und sich entsprechend verhalten. Wenn du beispielsweise an sicherheitskritischen oder sehr grundlegenden Systemen wie Betriebssystemen, Medizintechnik usw. arbeitest, solltest du stark zugunsten der Robustheit tendieren. Wenn nicht, kann dies leicht ein Akt von Overengineering sein. Die Aufgabe des Ingenieurs ist es, den richtigen Punkt entlang der Kosten-Korrektheits-Kurve für das zu findende Ding zu finden.
Das war schon immer so, und LLMs ändern nur bestimmte Teile der Gleichung. Zum Beispiel ist das Schreiben von Code weit weniger ein Engpass als zuvor, sodass „wir können es einfach mit einer Wegwerf-Implementierung versuchen und sehen, ob das funktioniert“ plötzlich wirtschaftlich rentabel ist. Es stellt sich auch heraus, dass viele Dinge in der Praxis nicht so korrekt sein müssen, wie einige von uns vielleicht geglaubt haben.
Wir können immer noch Freude daran haben, qualitativ hochwertige Dinge herzustellen, aber das ist oft eher ein Akt des Handwerks als des Engineerings.
- cortesoft
Seltsamerweise dachte ich, die Begriffe wären umgekehrt … Ich stelle mir einen Handwerker als jemanden vor, der Qualität über Quantität schätzt und alles schön und langlebig macht, während es bei einem Ingenieur eher um Produktivität, Toleranzen und Effizienz geht. Ein Handwerker stellt bessere Qualität her, skaliert aber nicht so wie ein Ingenieur und der Fabrikprozess, obwohl Massenprodukte Qualität zugunsten von Quantität opfern.
- barrkel
Ein guter Teil des Engineerings besteht darin, zuverlässige Systeme aus unzuverlässigen Teilen zusammenzusetzen.
Du baust Schutzmaßnahmen, Redundanz, Verteidigung in der Tiefe, Wiederherstellungssysteme ein. Du baust Modelle des Systems und beweist Eigenschaften darüber.
Software ist im Kern Automatisierung. LLMs ermöglichen die Automatisierung der Konstruktion von Software selbst. Sie sind viel schneller und billiger als Menschen und sie sind unzuverlässiger. (Menschen sind auch unzuverlässig!)
Die unmittelbare Herausforderung dieser Zeit ist es, herauszufinden, wie man im Großen, über einen längeren Zeitraum hinweg, zuverlässig zuverlässige Software konstruiert. Das ist eine ingenieurtechnische Herausforderung, und der einzige Weg, auf die andere Seite zu gelangen, ist der Versuch, es zu tun. Die Dinge werden rau sein, es wird eine kambrische Explosion von Techniken geben, die meisten Ansätze werden scheitern, und viele weitere werden nicht überleben, wenn sich die Modelle in Qualität und Leistungsfähigkeit verbessern. Aber wir werden es herausfinden.
Dinge von Hand herzustellen, wie in der Zeit vor dem agentischen Programmieren, kann auch Engineering sein, aber es ist nicht die zentrale Herausforderung dieser Zeit, und es wird bald ein Hobby oder möglicherweise eine Art Luxusgut sein. Du wirst handgeschriebene Software genauso wenig wollen wie ein handgefertigtes Auto. Sie wird nicht die Präzision, Leistung oder Zuverlässigkeit von maschinell hergestellter Software haben.
- tibbar
Ich bevorzuge den Begriff „klassisch ausgebildeter Programmierer“. :-)
- spawrks
Gibt es nicht einen Unterschied zwischen dem, was Code tut, und dem Code selbst? Ich habe wirklich schöne Software gesehen mit schrecklich zu lesendem, aber effektivem Code, und ich habe schönen Code gesehen, der, obwohl technisch erstaunlich, nichts von Substanz bewirkte. Software ist wie Holzbearbeitung, sie umfasst alle Stufen der Sorgfalt und Produktergebnisse.