14 Punkte von GN⁺ 7 시간 전 | 2 Kommentare | Auf WhatsApp teilen
  • Uncle Bob, bekannt durch "Clean Code", erklärt, dass das Zeitalter gekommen ist, in dem KI Code überwältigend viel schneller als Entwickler schreibt, und fordert einen Wandel der Rolle von Entwicklern
  • Da KI Aufgaben, die früher einen Tag dauerten, in nur 5 Minuten erledigen kann, ist die Zeit vorbei, in der Entwickler Code selbst schreiben
  • Gleichzeitig verleiht das Entwicklern enorme Macht, sodass Dinge möglich werden, die früher undenkbar waren
  • Test Coverage war schmerzhaft, doch Entwickler können KI nun anweisen, für Test Coverage zu sorgen, und mit einem Mutation Tester die tatsächliche Wirksamkeit der Tests überprüfen
  • In Kombination mit Analysetools für zyklomatische Komplexität (cyclomatic complexity) lässt sich KI anweisen, die Codequalität auf ein deutlich höheres Niveau als bisher zu heben

Skript des beigefügten Videos

> Sehen wir der Wahrheit ins Auge. KI schreibt Code um ein Vielfaches schneller als ihr. Für Aufgaben, für die ihr einen Tag braucht, braucht KI 5 Minuten. Es ist vorbei. Die Zeit, in der ihr Code selbst schreibt, ist vorbei. Ich weiß. Akzeptiert es.
>
> Aber genau das gibt euch im Gegenteil enorme Macht. Denn jetzt könnt ihr Dinge tun, von denen ihr früher nicht einmal zu träumen gewagt habt.
>
> Denkt zum Beispiel an Test Coverage. Ich weiß, wie schmerzhaft das war. Man musste all diese verfluchten Tests schreiben. Und nur weil es Tests gab, hieß das noch lange nicht, dass der Code korrekt funktionierte. Man ließ die Code Coverage laufen, grinste kurz und sagte: "Na ja, schön und gut, aber das heißt nicht, dass der Code funktioniert … nur, dass er ausgeführt wird."
>
> Jetzt kann man das beheben. Denn jetzt gibt es Power. Weist die KI an, den Code abzudecken, und lasst danach einen Mutation Tester laufen. Ja, das ist ein Tool. Und auch dieses Tool könnt ihr einfach von der KI erstellen lassen. In 5 Minuten. Danach lasst ihr die KI dieses Tool ausführen. Das Tool verändert den Source Code und führt alle Tests aus. Wenn die Tests nicht fehlschlagen? Dann schreibt es Tests, die sie fehlschlagen lassen. Dann habt ihr echte Test Coverage.
>
> Ich schwöre, dann habt ihr echte Test Coverage.
>
> Und wisst ihr, was ihr noch tun könnt? Ihr könnt die Qualität des Codes analysieren. Ihr könnt ein Tool schreiben, das sich die zyklomatische Komplexität ansieht. Tatsächlich gibt es bereits ein großartiges Tool. Ein 20 Jahre altes Tool. Es heißt CRAP. Ein guter Name. Ich weiß nicht, wofür das steht. Ich will es auch gar nicht wissen. Es ist eine Kombination aus Test Coverage und zyklomatischer Komplexität. Ihr könnt die KI anweisen, den CRAP-Score auf 5 oder unter 4 zu senken. Dann zerlegt die KI große Funktionen in kleine Teile und deckt alles mit Tests ab.
>
> Denkt darüber nach, welche Macht ihr habt. Ihr könnt die Codequalität auf ein Niveau heben, das es so noch nie gab.
>
> Ich weiß. Ich bin dieser alte Clean-Code-Typ. Aber ich sage es ganz offen: Wenn ihr die KI richtig antreibt, könnt ihr Code viel, viel sauberer machen.

2 Kommentare

 
GN⁺ 6 시간 전
Reddit-Meinungen
  • Klingt wie Mark Hamill mit seiner üblichen Schurkenstimme

    • Hier geht es fast schon in Richtung Joker. Hat er schon immer wie eine Comicfigur gesprochen?
    • Klingt wie der Verwalter der Versicherungsgesellschaft, für den der Vater in The Incredibles gearbeitet hat
    • Hat für mich eher starke Lewis Black-Vibes. Ich habe die ganze Zeit darauf gewartet, dass es in eine wütende Tirade übergeht, aber das blieb leider aus
    • Hat mich eher an die Szene aus Matrix erinnert, in der Neo verhört wird. So ein „Hello Mr Anderson“-Gefühl
  • Das wirkt wirklich wie ein Entwickler, der schon alles mitgemacht hat

    • Stimmt. Ich glaube auch nicht, dass ich jemals wieder so etwas wie if (f == -1) { printf("open failed\n"); exit(1); } schreiben werde
      Die AI schreibt das stattdessen und versieht es mit separaten Fehlertypen und Meldungen samt aussagekräftigen Parametern für alle möglichen Fehlerursachen. AI ist nicht so faul wie ich, also kann ich mich jetzt auf die Dateiverarbeitungslogik konzentrieren
  • Es fühlt sich an, als kämen wir jetzt in ein Zeitalter, in dem der Großteil des Codes Boilerplate ist. Entscheidend ist dann die Fähigkeit, Anforderungen gut zu vermitteln, und Wege zu haben, die Sicherheit (OWASP) und Performance des erzeugten Codes laufend zu prüfen

    • War Code nicht schon immer größtenteils Boilerplate? Klar, coole Algorithmen zu schreiben ist schön, aber am Ende muss man daraus ein Produkt machen und CRUD, Berechtigungen, UI, Multiplattform-Support, Bezahlung usw. drumherum bauen
    • Es klingt, als wäre ein Large Language Model ein Transpiler, der ein High-Level-DSL zuverlässig in echten Code umwandelt, aber genau das ist es überhaupt nicht
      Es ist extrem nichtdeterministisch, und selbst aktuelle Modelle schwanken im Lauf eines Tages oft zwischen „gut genug“ und „fast unbrauchbar“
      Natürliche Sprache war in der Vergangenheit, ist heute und wird auch künftig mehrdeutig und ungenau sein, daher wird dieses Problem vermutlich nie wirklich gelöst. Deshalb verwendet man mathematische Formeln und nicht „hm, addiere X zu Y und wenn es in Z hineingeht, denk gut nach“
    • Bis zu dem Punkt „man braucht nur noch die Fähigkeit, effektiv zu vermitteln, was man braucht“ ist es noch ein weiter Weg
      Ich arbeite gerade noch daran, mit Claude einen guten Umgang mit Berechtigungen hinzubekommen, und die Art, wie neue Aktionen/Berechtigungsänderungen implementiert wurden, war das perfekte Beispiel für Code nach dem Motto „funktioniert irgendwie, bis es irgendwann kaputtgeht“
      Claude schreibt guten Code, aber nicht immer guten Code
      Was man bei AI verstehen muss: Im „Denken“ ist sie Menschen nicht überlegen, sie ist nur schneller. Wenn man sie etwas machen lässt, macht sie es meistens auf eine Art, wie es viele Menschen auch tun würden, und das ist bei Code oft nicht besonders gut
      Schon früher konnte man mehrere Entwickler einstellen, ihnen sagen, was man will, und ein fehlerhaftes Ergebnis bekommen, bei dem eine neue Änderung gleich drei andere Stellen kaputtmacht. Claude macht genau dasselbe, wenn man es einfach laufen lässt. Ich habe es selbst gesehen, und die Antwort ist immer: reingehen, den geschriebenen Code lesen und anweisen, ihn so zu refaktorieren, dass er robuster ist und weniger leicht kaputtgeht
      Solange man mit Claude Code schreibt, braucht man weiterhin die Fähigkeit zu beurteilen, ob dieser Code etwas taugt. Genauso wie man auch Ergebnisse prüfen muss, wenn man damit einen Lebenslauf oder Buchhaltungsunterlagen schreiben lässt
      Wir werden Code nicht mehr so schreiben wie früher, aber die Fähigkeit, das Erzeugte zu lesen und anhand von Erfahrung zu prüfen, bleibt weiterhin nötig
      Das Problem ist, dass alle denken: „Ich kann Englisch, also kann ich Claude dazu bringen, ein Programm zu bauen.“ Aber nur weil man Englisch spricht, kann man Claude noch lange keine Doktorarbeit schreiben lassen, die Hawking-Strahlung widerlegt. Man hätte nämlich überhaupt keine Möglichkeit zu beurteilen, ob das Ergebnis stimmt
    • Dazwischen liegen noch ein paar weitere Stufen
    • Es fühlt sich eher an wie direkt nach der Zeit, in der der meiste Assembler Boilerplate war
  • Es gibt heute mehr angestellte Programmierer als damals, als Microsoft Scaffolding eingeführt hat. Und auch als Sprachen wie Basic es ermöglichten, statt Assembler menschenlesbare Befehle einzugeben, gab es mehr Programmierer als in der Zeit davor, als man Code noch auf Lochkarten stanzte
    Computer wurden schon immer mit Befehlssätzen programmiert, die immer weniger eingeschränkt und leichter zu lesen und zu schreiben waren
    Bob Martin ist jemand, den ich respektiere, aber hier liegt er meiner Meinung nach falsch. Menschen werden weiterhin Computerbefehle schreiben. Nur eben nicht mehr in einem begrenzten Satz konkreter Anweisungen, sondern in einer Sprache, die viel weniger eingeschränkt und viel menschenlesbarer ist
    Nichts ist vorbei. Es hat gerade erst angefangen. Programmieren hat eine neue Sprache bekommen, und ihr Name ist English

    • Was in dieser Diskussion alle vergessen: Das Ziel ist nicht, exakt dieselbe Arbeit zu coden wie am Tag vor der Erfindung von Vibecoding
      Schon jetzt produzieren wir rekordverdächtige Mengen an Software, und das wird noch schneller werden. Wir werden mehr Code schreiben als zuvor, und selbst wenn alles viel schneller wird, werden am Ende mehr Menschen in irgendeiner Form mit Software arbeiten. Weil der Output so billig geworden ist, und das kommt dem Jevons-Paradoxon ziemlich nahe
      Zu denken „diesmal ist es anders“ ist arrogant, und selbst kluge Menschen können sich schwer vorstellen, was vielschichtiges exponentielles Wachstum bedeutet. Nicht nur Large Language Models werden besser
      Deshalb halte ich das für zutreffend
    • Dann erklär Sprache doch mal mit derselben Logik
    • Er meinte sogar, man müsse nur noch Tests reviewen und keinen Code mehr, und das wirkt auf mich schon fast wahnhaft. Klingt, als würde er nur Hobbyprojekte anfassen, die nie in Produktion gehen
    • Uncle Bob hat dazu einmal einen Tweet gepostet
  • Das ist doch wirklich der Höhepunkt der Blase, oder? Ich rufe es genau jetzt aus ☎️

  • Die Art, wie er darüber spricht, setzt Metriken für Softwarequalität, professionelles Testing und jahrelanges Verständnis von Codequalität voraus
    Solche Tools gibt es noch längst nicht ausreichend. Zumindest sind sie nicht breit genug etabliert. Ich bin mir nicht einmal sicher, ob die Branche das annehmen wird
    CI/CD-Praktiken waren auch nicht besonders schwer umzusetzen, trotzdem haben viele Unternehmen sie nicht vollständig eingeführt und stattdessen weiter ineffizient gearbeitet, indem sie einfach mehr Leute eingestellt haben. So wird es auch diesmal wieder laufen, solange AI nicht all das standardmäßig für sie übernimmt. Mit den heutigen Tools wie Claude Code, Cursor und Codes reicht es jedenfalls nicht

    • Das habe ich buchstäblich selbst gebaut
    • Warum gehst du davon aus, dass er das nicht spöttisch oder ironisch gemeint hat? Die Tools sind noch meilenweit davon entfernt, auf die beschriebene Weise nützlich zu sein
  • Er wirkt wie die Matrix mit diesem Typen als Agent

    • Meinst du nicht eher den Architect?
  • Um AI richtig zu steuern, braucht man erstklassige technische Tiefe. Wenn man AI einfach immer weiter Code hinzufügen lässt, ist das nicht wartbar
    Außerdem habe ich bisher noch von keinem marktreifen Produkt gehört, das ausschließlich von AI betrieben wird. Also mal langsam

  • Als Nächstes machen wir dann wohl auch noch Vibecoding mit dem menschlichen Gehirn

 
nodelay 5 시간 전

Die Meinungen auf Reddit wirken überwiegend negativ oder sarkastisch.
In einer Situation, in der dank AI Dinge wie Test-Coverage und E2E-Tests, die bisher immer wieder aufgeschoben wurden, tatsächlich konsequent vorangebracht werden, wirkt diese Haltung eher zynisch.