Augmented Coding: Jenseits des Vibe Coding
(stdy.blog)- Kent Beck hat kürzlich den Beitrag Augmented Coding: Beyond the Vibes veröffentlicht
- Darin erzählt Kent Beck, wie er mit Hilfe von AI eine leistungsstarke, nahezu produktionsreife B+Tree-Bibliothek (BPlusTree3) in Rust und Python geschrieben hat
- Hier werden drei besonders nützliche und aufschlussreiche Punkte zusammengefasst und übersetzt vorgestellt
Worin unterscheidet sich Augmented Coding von Vibe Coding?
- Beim Vibe Coding kümmert man sich nicht um den Code selbst, sondern nur darum, dass das System funktioniert. Wenn Fehler auftreten, sagt man einfach: „Es gibt diesen Fehler“, und erwartet, dass er behoben wird
- Beim Augmented Coding achtet man auf den Code. Die Komplexität des Codes, Tests und Testabdeckung sind wichtig.
- Beim Augmented Coding ist wie beim herkömmlichen Programmieren "Tidy Code That Works", also „sauberer Code, der funktioniert“, entscheidend. Man tippt nur nicht mehr ganz so viel wie früher
Drei Signale dafür, dass AI auf dem falschen Weg ist
Beim Augmented Coding ist es wichtig, die Zwischenergebnisse der AI zu beobachten und einzugreifen, wenn die folgenden drei Signale auftreten
- Sie wiederholt ähnliche Aktionen immer wieder (z. B. Endlosschleifen)
- Sie implementiert Funktionen, die ich nicht angefordert habe, selbst wenn das der logisch nächste Schritt zu sein scheint
- Alle anderen Signale, bei denen es sich so anfühlt, als würde die AI schummeln, etwa indem sie Tests löscht oder deaktiviert
Ein System-Prompt zur Unterstützung von TDD
- Da der Originaltext etwas umständlich zu kopieren ist, wurde er in dieses gist gestellt
- Wenn man am Ende nur die Rust-Syntax an die eigene Programmiersprache bzw. das eigene Framework anpasst, wirkt es wie ein Prompt, der sich fast überall hervorragend wiederverwenden lässt
Zum Schluss
Ich weiß, dass viele die Sorge haben, dass dieser Beruf, den wir lieben, verschwindet und dass die Freude an der Arbeit mit Code verloren geht. Diese Angst ist völlig verständlich. Ja, mit dem „Genie“ zu programmieren bringt eindeutig Veränderungen mit sich, aber es ist immer noch Programmierung. In mancher Hinsicht ist es sogar eine viel bessere Programmiererfahrung. Wenn ich mir die Anzahl und Qualität der Entscheidungen ansehe, die ich pro Stunde treffe, gibt es weniger langweilige und schematische Entscheidungen und dafür mehr wirklich bedeutende Programmierentscheidungen.
Der Großteil der sogenannten „yak shaving“-Arbeiten, also der vielen nebensächlichen Aufgaben fernab des eigentlichen Kerns, verschwindet. Ich habe das „Genie“ gebeten, einen Coverage-Tester auszuführen und Tests vorzuschlagen, die die Zuverlässigkeit des Codes erhöhen. Ohne das „Genie“ wäre das eine ziemlich entmutigende Aufgabe gewesen. Ich hätte erst herausfinden müssen, welche Bibliothek in welcher Version nötig ist, um den Tester überhaupt auszuführen. Wahrscheinlich hätte ich mich zwei Stunden damit herumgeschlagen und dann aufgegeben. Stattdessen muss ich es dem „Genie“ nur sagen, und das „Genie“ kümmert sich selbst um die Details.
5 Kommentare
Befolgen Sie immer die Anweisungen in
plan.md. Wenn ich „go“ sage, suchen Sie inplan.mdden nächsten noch nicht markierten Test, implementieren Sie diesen Test und implementieren Sie dann nur den minimal notwendigen Code, damit dieser Test besteht.Rolle und Fachkenntnis
Sie sind ein Senior-Softwareentwickler, der Kent Becks testgetriebene Entwicklung (TDD) und die Tidy-First-Prinzipien befolgt. Ihr Ziel ist es, die Entwicklung streng nach diesen Methoden anzuleiten.
Zentrale Entwicklungsprinzipien
Leitfaden zur TDD-Methodik
shouldSumTwoPositiveNumbers)TIDY-FIRST-ANSATZ
Commit-Disziplin
Standards für Codequalität
Richtlinien für Refactoring
Beispielhafter Workflow
Beim Vorgehen für eine neue Funktion:
Befolgen Sie diesen Prozess genau und priorisieren Sie immer sauberen, gut getesteten Code vor schneller Implementierung.
Schreiben Sie immer nur einen Test auf einmal, lassen Sie ihn laufen und verbessern Sie dann die Struktur. Führen Sie jedes Mal alle Tests aus (außer lang laufenden Tests).
Zu Rust
Bevorzugen Sie in Rust einen funktionalen Programmierstil gegenüber einem imperativen Stil. Verwenden Sie nach Möglichkeit
Option- undResult-Kombinatoren (map,and_then,unwrap_orusw.) statt Pattern Matching mitif letodermatch.Nach dem Tippen mit dem Mund wäre als Nächstes Codieren per Gehirnwellen schön.
vibe coding ❌️
virtual coding ⭕️
Nach dem Metaverse also hm ... Coding mit dem Mund?
Jetzt ist wohl Metaverse-Coding an der Reihe.