- Bei LLMs sind Software Engineers grob in zwei Lager gespalten
- Manche halten sie für eine revolutionäre Technologie, die die Branche umkrempelt
- Andere sehen darin lediglich eine übertriebene Fata Morgana
- Der Autor des Beitrags hat persönlich den Eindruck, LLMs nützlich einzusetzen, und stellt vor, wie er sie effektiv nutzt
Schreiben von Produktionscode
- Die Autovervollständigung von Copilot wird beim Schreiben von Code immer genutzt
- Die meisten Autovervollständigungs-Vorschläge betreffen wiederholtes Boilerplate wie Funktionsargumente oder Typeingaben
- Im eigenen Kernarbeitsbereich (z. B. Ruby on Rails) hält er den von ihm selbst geschriebenen Code für besser
- In Bereichen mit geringerer fachlicher Expertise übernimmt er häufiger die von Copilot vorgeschlagene Logik
- Beispiel: wenn in Sprachen wie Golang oder C kleine taktische Änderungen nötig sind
- Mit Copilot versteht er schneller Syntax und idiomatische Coding-Styles in weniger vertrauten Sprachen
- Da ihm das Fachwissen fehlt, lässt er solche Änderungen unbedingt von Experten des jeweiligen Bereichs reviewen
- So kann man auf dem Niveau eines „smarten Praktikanten“ einiges erledigen, aber ein Validierungsprozess ist unverzichtbar
Schreiben von Einmal-Code
- Beim Schreiben von Einmal-Code, der nicht in Produktion ausgerollt wird, nutzt er LLMs deutlich aktiver
- Wenn Code nur zu Forschungszwecken einmal ausgeführt und anschließend weggeworfen wird, ist Wartbarkeit weniger wichtig
- Beispiel: öffentliche Daten aus einer API holen, klassifizieren und mit Regex kurz validieren
- In solchen Fällen konnte er laut eigener Aussage 2- bis 4-mal schneller arbeiten
- Für Code, der einmal geschrieben und dann weggeworfen wird, sind LLMs sehr effizient
Lernen neuer Bereiche
- Als nützlichsten Anwendungsfall nennt er, LLMs wie On-Demand-Nachhilfelehrer zu verwenden
- Beispiel: Als er Unity zum ersten Mal lernte, stellte er Modellen wie ChatGPT-4o fortlaufend Fragen
- Nicht nur „Wie funktioniert X?“, sondern auch Anschlussfragen wie „Wie hängt X mit Y zusammen?“ sind möglich
- Er nutzt sie auch, um sein Verständnis zu überprüfen, etwa mit Fragen wie „Habe ich das richtig verstanden?“
- Im Lernprozess kopiert er seine Notizen direkt hinein und lässt sie prüfen
- Bedenken wegen Halluzinationen
- Seit GPT-3.5 seien Halluzinationen aus seiner Sicht im Allgemeinen nicht stark hervorgetreten
- Die meisten Bereiche, die er im Alltag lernen wolle, seien bereits gut etablierte Felder, daher sei das Risiko falscher Antworten gering gewesen
- Bisher habe er über LLMs noch keine falschen Informationen gelernt
Der letzte Bugfix
- Wenn er wirklich feststeckt, zeigt er Copilot oder Claude die gesamte Datei und die Fehlermeldung und bittet um Hilfe
- In den meisten Fällen sind LLMs verwirrt und liefern keine brauchbare Lösung
- Trotzdem gab es ein paar Fälle, in denen das LLM auf etwas hingewiesen hat, das er übersehen hatte, und ihm so Zeit sparte
- Da die Leistung nicht so gut ist wie erhofft, fragt er nicht mehrfach nach, sondern höchstens einmal
Korrektur von Tippfehlern und Denkfehlern
- Texte (ADRs, technische Zusammenfassungen, interne Dokumente usw.) lässt er nicht vollständig von LLMs ghostwriten
- Er ist der Ansicht, dass er selbst klarer schreiben kann, und mag den typischen Stil von LLMs nicht
- Für Grammatikprüfung oder die Korrektur von Tippfehlern gibt er Entwürfe manchmal in ein LLM ein und holt Feedback ein
- LLMs finden Rechtschreibfehler gut und schlagen gelegentlich interessante Perspektiven vor
- Statt sich in mehreren Iterationen Änderungsvorschläge geben zu lassen, prüft er nur einmal Feedback auf der „groben Ebene“
Zusammenfassung
- Einsatzbereiche für LLMs
- „Smarte Autovervollständigung“ mit Copilot
- Kurze taktische Änderungen in wenig vertrauten Bereichen (Experten-Review zwingend erforderlich)
- Schreiben von Forschungs-Code, der einmal benutzt und dann weggeworfen wird
- Ununterbrochen Fragen stellen, wenn man neue Technologien oder Domänen lernt
- Als letzter Ausweg ein Versuch zur Bugbehebung, wenn man feststeckt
- Korrektur von Rechtschreibung/Tippfehlern und logischen Fehlern in englischen Dokumententwürfen auf hoher Ebene
- Bereiche, in denen er LLMs noch nicht einsetzt
- Das vollständige Schreiben eines Pull Requests in Bereichen, die er gut kennt
- Das komplette Verfassen technischer Dokumente wie ADRs
- Das Verstehen komplexer Architekturen innerhalb großer Codebasen
6 Kommentare
Ist das ... ein Staff Engineer ...?
Ist wohl ein GitHub Staff Engineer.
Für mich wirkt das auch nicht wie auf Staff-Engineer-Niveau ... eher passend für Assistant-Level, würde ich sagen.
Im Titel gibt es einen Übersetzungsfehler: Nicht „wie ein Staff Engineer“, sondern „als Staff Engineer“.
👍!!
Hacker-News-Kommentare
Als „Staff Engineer“ sind LLMs sehr schlecht darin, idiomatischen Code zu schreiben oder zu lehren, und sorgen stattdessen dafür, dass man mehr Zeit für Code-Reviews aufwendet. Mit LLMs Code zu schreiben birgt das Risiko, schlechte Praktiken zu lernen und von mehr Code, Boilerplate und nichtdeterministischen Ergebnissen abhängig zu werden. LLMs können für Ideenfindung oder das Erkunden unzuverlässiger Informationen nützlich sein, aber sich bei der Codegenerierung auf sie zu verlassen, ist verrückt.
Beim Beheben von Bugs gibt es die Methode, Copilot zu verwenden, die gesamte Datei anzuhängen und die Fehlermeldung einzufügen, um Hilfe zu bitten. „Reasoning“-Modelle liefern dabei deutlich bessere Ergebnisse; wenn man oft die gesamte Codebasis einfügt und die Fehlermeldung erklärt, finden sie häufig die Ursache des Problems.
LLMs sind für Boilerplate-Code oder Autovervollständigung nützlich, haben aber bei komplexen Aufgaben Grenzen, weil sie die Business-Logik nicht verstehen. Für das schnelle Schreiben von Unternehmensdokumenten sind sie jedoch sehr nützlich.
Ich arbeite bei GitHub und war direkt an Copilot beteiligt.
Wenn man eine statisch typisierte Sprache und eine gute IDE verwendet, kann die Funktion „smart auto complete“ weniger nützlich sein. Die Autovervollständigung von Intellij fühlt sich in den meisten Fällen an, als könne sie Gedanken lesen.
Eine Reflexion darüber, warum Softwareingenieure negative Gefühle gegenüber LLMs haben. Viele Menschen neigen dazu, nach absoluten Maßstäben zu urteilen, und das schränkt ihre Fähigkeit ein, Werkzeuge effektiv zu nutzen.
Wie man AI bei der Wartung eines Python-Projekts nutzt. Sie hilft dabei, Vorgehensweisen aus anderen Sprachen nach Python zu übertragen.
Die Erfahrung, mit ChatGPT Utility-Code zu schreiben, war gut. In Code-Reviews werden oft nur Kleinigkeiten angemerkt, aber wenn Verbesserungsmöglichkeiten gefunden werden, ist es weiterhin wertvoll.
Nach dem Wechsel von VSCode zu Cursor ist der Agent-Modus mit Sonnet beeindruckend. Wenn ein erfahrener Entwickler ihn anleitet, kann er erheblich zur Produktivitätssteigerung beitragen.
Ich nutze LLMs, um Tippfehler und logische Fehler in Dokumenten zu korrigieren. Mit Graphite Reviewer stelle ich es so ein, dass es sich auf echte Bugs und Fehler konzentriert. AI ist nicht perfekt, aber als Werkzeug zur Codekorrektur nützlich.