CV Generator

Stell dir vor, du arbeitest im Homeoffice, wie alle in deiner Firma. Du kontaktierst einen Kollegen, der ein neues Projekt übernehmen soll.

Me Guten Morgen Carl, wie läuft’s? Könntest du bitte eine neue App erstellen, um einen Lebenslauf zu generieren? Ich schicke dir die Spezifikationen...
Carl Super, ja, mir geht’s gut, hoffe dir auch. Schick sie einfach rüber.
Me [Spezifikationen senden]
Carl

Oh, schönes Projekt. Also, das musst du tun: 1. Erstelle eine Datei namens app.py mit folgendem Inhalt... [zehn Dateien später]

Wenn du willst, kann ich dir auch eine grüne Version machen

Me Wow, das ging schnell! Klasse, danke. Aber beim Ausführen bekomme ich die Fehlermeldung: ZeroDivisionError: division by zero.
Carl Oh ja, das habe ich schon erwartet! Das liegt an einer Einschränkung in der Mathematik. In der aktuellen Algebra-Version kann man nicht durch null teilen.
Me OK, kannst du das bitte beheben?
Carl

Klar, hier ist eine GETESTETE Version der Anwendung. Ersetze einfach [zwölf Dateien später].

Wenn du willst, kann ich dir jetzt eine optimierte, voll funktionsfähige, GETESTETE Version mit ALLEN Features geben. Willst du das?

Me [nach dem Kopieren und Einfügen von allem vor dem letzten Satz] Ich dachte, das hast du schon gemacht? Ich bekomme einen 500‑Fehler auf allen Seiten.
Carl Gut, das liegt am Routing. Ersetze einfach <http> durch <html>.
Me In welcher Datei? Kannst du bitte die vollständigen Dateien liefern? Es wäre super, wenn du mir ein ZIP mit allen Dateien schicken könntest. Und hast du das wirklich getestet?
Carl OK, ehrlich gesagt habe ich es nicht getestet. Aber ich schicke dir jetzt ein ZIP mit einer funktionierenden Version. Es läuft definitiv jetzt.
Carl
Me Hast du mir gerade ein Bild von einer ZIP‑Datei geschickt?
Carl Ja, sorry, ich kann keine ZIPs erstellen, also dachte ich, ich schicke dir ein Bild!
Me Ich brauche eine Pause, bis morgen!
Am nächsten Tag:
Me Guten Morgen, können wir mit unserem Projekt weitermachen?
Carl Welches Projekt?
Me ...
Me Ich schicke dir alles [Inhalt von 14 Dateien senden].
Carl Wow, willst du, dass ich das neu schreibe? Der Code ist ein klassisches Beispiel für etwas, das eine komplette Überarbeitung und viele Optimierungen braucht!
Me Du hast den Code doch erst gestern geschrieben.
Carl Also willst du, dass ich deinen Code optimiere?
Me Naja... mach einfach, was nötig ist...
Carl Hier bitte, zwanzig neue Dateien zum Copy‑&‑Paste.
Me seufz Ich bekomme einen 500‑Fehler auf allen Seiten, und die Routen unterscheiden sich: /project-delete, /skill/delete, /certificate/delete/<string:item_id>...
Carl Stimmt, lass uns einen einheitlichen Ansatz für alle Routen verwenden. Hier sind 21 neue Dateien.
Me Danke, ich behebe ein paar Fehler selbst, damit wir wenigstens etwas haben, das nicht abstürzt.
Carl Wenn du willst, kann ich...
Me Nein danke!
Nachdem die Fehler behoben sind, brauchst du Daten:
Me Hi, kannst du mir bitte helfen? Ich habe folgende Daten, die in JSON‑Dateien migriert werden müssen.
Charlotte Klar, kein Problem, hier sind deine JSON‑Dateien...
Me Ähm, warum hörst du mitten drin auf?
Charlotte Willst du, dass ich dir die vollständige Version schicke?
Me Ja?
Charlotte Hier ist die vollständige Version der Dateien.
Me Es hört wieder mitten drin auf.
Charlotte Soll ich dir jetzt alles schicken?
Me Ja, gibt es damit ein Problem?
Charlotte Ich kann nicht so viele strukturierte Daten in einem Durchgang senden. Ich kann dir alles in einer Datei geben. Willst du das?
Me Super! Los geht’s!
Charlotte Download: projects.json
Me Ich kann die Datei nicht herunterladen!
Charlotte Ja, ich kann keine Dateien senden, also dachte ich, ich zeige dir mit Text, wie ein Download aussehen würde.
Me ...
Charlotte Ich kann dir alles in Teilen schicken.
Me Gut.
Charlotte Hier ist der erste Teil.
Me OK.
Charlotte [zweiter Teil].
Me OK.
Charlotte ... [vierzehnter Teil] Soll ich mit der nächsten JSON‑Datei weitermachen?

Also, was ist eigentlich das Problem mit KI‑generierter Software?

Meiner Meinung nach hat es viel zu lange gedauert, bis eine funktionierende Version da war. Es gibt inzwischen einen „Play“-Button in ChatGPT, mit dem man Code direkt ausführen kann. Theoretisch könnte ChatGPT also ein paar Dinge testen, bevor es Code liefert — aber das passiert nicht. Nach über zwei langen Tagen hatte ich endlich eine funktionierende Version (inklusive einiger Teile in Hugo, die man unter About → Skills sehen kann). Ohne manuelle Eingriffe war es praktisch unmöglich, eine lauffähige Version zu bekommen.

Ein weiteres Problem ist, dass der Code ständig komplett neu geschrieben wird. Statt spezifische Funktionen zu einer getesteten und funktionierenden Basis hinzuzufügen, wird die gesamte Anwendung neu erstellt, was wiederum vollständige Tests erfordert. Es gibt keinerlei Eingabevalidierung, keine Testfälle und kein Fehlerhandling im generierten Code. Die Anwendung kann einfach abstürzen. Ich hätte meine Erwartungen vielleicht genauer formulieren können, aber außer Datumsauswahlfeldern wurde nichts automatisch ergänzt. Ein menschlicher Entwickler hätte vermutlich Eingabevalidierung, Sicherheitsprüfungen und Fehlerbehandlung von Anfang an eingebaut.

Ich habe ChatGPT alle erstellten Dateien gegeben, und es hat eine sehr detaillierte Analyse jedes Aspekts und jeder Schwachstelle der Anwendung geliefert, sowie eine Zusammenfassung:

KategorieBewertungCoPilot
Architektur6/106/10
Sicherheit4/104/10
UX7/106/10
Codequalität7/107/10
Wartbarkeit6/105/10

Ehrlich gesagt war ich ziemlich beeindruckt von der detaillierten Analyse, die ChatGPT geliefert hat. Andererseits: Was würdest du von einem Entwickler halten, der die Best Practices kennt, sie aber konsequent nicht umsetzt?

Wir wissen alle, dass gerade bei Schnittstellen, die nur von vertrauten technischen Mitarbeitern genutzt werden, Fehlerbehandlung und Eingabevalidierung nicht immer sehr detailliert umgesetzt werden. Manchmal erwarten wir einfach, dass die Leute eine Exception lesen können, um zu verstehen, was schiefgelaufen ist. Aber wäre es nicht großartig, wenn man diese einfachen, aber zeitaufwendigen Aufgaben einer KI überlassen könnte?

Der CV‑Generator war — und ist — ein sehr schönes Experiment, und ich werde vielleicht irgendwann daran weiterarbeiten. Je mehr ich ihn nutze, desto mehr habe ich das Gefühl, dass etwas Ähnliches für viele Freelancer interessant sein könnte. Er eignet sich gut für ein solches Experiment, da er lokal läuft, ohne Internetverbindung, in einem Container, der nur eine kleine Angriffsfläche bietet. Der Teil auf meiner Homepage wird als statische Website ausgeliefert; der einzige aktive Code läuft auf dem Client‑Computer über JavaScript.

Es gibt wahrscheinlich KI‑Modelle, die einen besseren Job machen als das allgemeine ChatGPT. Ich denke trotzdem, dass ChatGPT (oder andere KI) für Prototyping geeignet ist. Bevor ich die Idee für das gesamte Projekt hatte, habe ich ChatGPT gebeten, einen kleinen Teil der Funktionalität als Proof of Concept zu liefern, und das hat nach ein paar Versuchen funktioniert. Ich muss zugeben, dass ich nur sehr begrenzt manuell eingegriffen habe, und jedes Mal, wenn ich es tat, wurde der Prozess deutlich schneller. Wenn ich mit diesem Projekt weitermache, werde ich meine Methode definitiv ändern: von „lass die KI arbeiten und schauen“ hin zu „lass die KI Features generieren, optimiere und korrigiere manuell“. Außerdem würde ich das Projekt in kleinere Dateien aufteilen, in der Hoffnung, dass ChatGPT dann gezielt an einzelnen Aufgaben arbeiten kann, statt immer wieder alles neu zu schreiben.

Abschließend sei gesagt: Bitte beachte, dass der Quellcode auf GitHub veröffentlicht ist, dieses Projekt also Open Source ist.
Wenn du in einem Unternehmen arbeitest, insbesondere in einem Softwareentwicklungsunternehmen, stelle sicher, dass die Nutzung von KI mit den Richtlinien deiner Firma übereinstimmt.
Eine vollwertige Closed‑Source‑Anwendung kann sehr unterschiedliche Anforderungen an den Datenschutz haben im Vergleich zu einem Open‑Source‑Projekt.

Comments

Ihre Privatsphäre ist uns wichtig. Kommentare werden über Drittanbieter bereitgestellt (Giscus + GitHub). Beim Laden können personenbezogene Daten (z. B. Ihre IP-Adresse) an diese Anbieter übertragen werden. Weitere Informationen finden Sie in unserer Datenschutzerklärung.

Übersetzungen: