Code-Aufgaben gestalten, die Kandidaten nicht hassen

Ein '2 bis 3 Stunden'-Test, der heimlich 8 bis 10 verschlingt, bringt Sie auf Reddit in Verruf. Gut zugeschnittene erreichen 92% Abschlussquote. Hier sind die sieben Designregeln.

Ernest Bursa

Ernest Bursa

Founder · · 13 Min. Lesezeit
How to Structure Code Assignments Candidates Don't Hate

Eine gut strukturierte Code-Aufgabe ist eine zeitlich begrenzte, praxisnahe Programmierübung, die die Arbeitsleistung besser vorhersagt als Whiteboard-Interviews und dabei die Zeit der Kandidaten respektiert. Arbeitsstichproben-Tests weisen laut der Meta-Analyse von Schmidt und Hunter aus dem Jahr 1998 im Journal of Applied Psychology einen Validitätskoeffizienten von 0,33 für den Berufserfolg auf. In Kombination mit einem strukturierten Folgeinterview steigt diese Validität auf 0,63. Der Unterschied zwischen einer Code-Aufgabe, die Kandidaten respektieren, und einer, die sie auf Reddit öffentlich zerreißen, liegt in sieben Designentscheidungen.

Warum Whiteboard-Interviews verloren haben

Traditionelle Live-Coding-Interviews mindern die kognitive Leistung eines Kandidaten allein durch den Stress, beobachtet zu werden — so eine Studie der North Carolina State University aus dem Jahr 2020, veröffentlicht im Journal of Systems and Software. Der Kandidat löst ein konstruiertes algorithmisches Rätsel an einem Whiteboard, während ein Interviewer jeden Tastendruck beobachtet und die Uhr tickt. Das misst Angsttoleranz, nicht Ingenieurskompetenz.

Die Branche hat dies erkannt. Der DevSkiller Technical Hiring Report 2023 stellte fest, dass Take-Home-Coding-Tests zum dominierenden Format der technischen Bewertung geworden waren und das Live-Coding verdrängt hatten. Branchenumfragen zeigen durchgehend, dass eine Mehrheit der Entwickler Take-Homes gegenüber Whiteboard-Interviews bevorzugt.

Doch der Wandel schuf neue Probleme. Unternehmen ersetzten ein kaputtes Format durch ein anderes. Sie tauschten 45-minütige Angst-Tests gegen 20-stündige unbezahlte Arbeitsmarathons. Das Werkzeug änderte sich; die Respektlosigkeit blieb.

Was Kandidaten an Code-Aufgaben wirklich stört

Der Widerstand gegen Code-Aufgaben richtet sich nicht gegen das Konzept, sondern gegen die Umsetzung. Über Hacker News, Reddits r/ExperiencedDevs und die sozialen Medien der Engineering-Szene hinweg gruppieren sich die Beschwerden um drei konkrete Fehler.

Irreführende Zeitschätzungen

Die häufigste Beschwerde: Aufgaben, die als “2-3 Stunden” beworben werden, aber tatsächlich 8-10 Stunden dauern. CodeSubmit berichtet, dass gut abgegrenzte Aufgaben Abschlussraten von bis zu 92 % erreichen. Doch wenn Unternehmen Kandidaten bitten, Full-Stack-Anwendungen von Grund auf zu bauen, schnellen die Abbruchraten in die Höhe. Die Kluft zwischen beworbener und tatsächlicher Zeit zerstört sofort das Vertrauen.

Das Überengineering-Wettrüsten

Bei vagen Anweisungen fühlen sich Kandidaten gezwungen, über das Ziel hinauszuschießen. Sie fügen umfassende Testsuites, Docker-Konfigurationen und ausgefeilte Dokumentation hinzu, weil sie keine Ahnung haben, was die Bewertungskriterien wertschätzen. Offene Aufgabenstellungen verwandeln eine Programmierübung in ein Wettrüsten, bei dem der Kandidat mit der meisten Freizeit gewinnt.

Schweigen nach der Einreichung

Kandidaten investieren Stunden unbezahlter Arbeit, reichen ihren Code ein und hören nichts. Kein Feedback. Keine Absage-E-Mail. Nur Stille. In Entwickler-Communities gilt “Ghosting” nach einer Code-Aufgabe als eine der respektlosesten Verhaltensweisen eines Unternehmens. Manche Kandidaten haben sogar den Zugang zu ihren GitHub-Repositories widerrufen, nachdem sie geghostet wurden — ein deutliches Zeichen dafür, dass die Beziehung zerbrochen ist.

Wer durch schlecht abgegrenzte Aufgaben ausgeschlossen wird

Unbegrenzte Take-Home-Aufgaben schaffen ein Diversitätsproblem, das die meisten Einstellungsteams nie ansprechen. Der Kandidat, der ein ganzes Wochenende in ein unbezahltes Projekt investieren kann, ist statistisch gesehen eher jung, ungebunden und ohne Betreuungspflichten.

Berufstätige Eltern, pflegende Angehörige und Kandidaten mit mehreren Jobs haben nicht den Luxus, ein Wochenende einer spekulativen Bewerbung zu widmen. Ein Einstellungsprozess, der umfangreiche unbezahlte Zeit erfordert, schließt diesen Talentpool systematisch aus.

Neurodivergente Kandidaten und Kandidaten mit Behinderungen stehen vor zusätzlichen Hürden. Zeitlich begrenzte Druckumgebungen können Leistungsangst auslösen. Starre, überwachungsintensive Coding-Tests sind oft nicht barrierefrei gestaltet. Eine schlecht abgegrenzte Take-Home-Aufgabe ist nicht nur ein operativer Engpass — sie ist eine Pipeline, die diverse Talente herausfiltert und dabei eine enge Zielgruppe bevorzugt.

Die Lösung ist strukturell: Zeitlimits durchsetzen, alternative Bewertungsformate anbieten und Workflows für Nachteilsausgleich von Anfang an einbauen, statt sie als Ausnahme zu behandeln.

Lokaler Kontext

In Deutschland ist diese Fairness nicht bloß eine Frage des guten Stils, sondern gesetzlich vorgeschrieben. Das Allgemeine Gleichbehandlungsgesetz (AGG) verpflichtet Arbeitgeber, das gesamte Auswahlverfahren — von der Stellenausschreibung bis zum Assessment — frei von Benachteiligung u. a. wegen Alter, Geschlecht, Behinderung, Religion, sexueller Identität oder ethnischer Herkunft zu halten (§§ 1, 7 AGG). Verstöße können abgelehnte Bewerber zu Entschädigungsansprüchen berechtigen (§ 15 AGG). Eine unbegrenzte, einseitig exkludierende Code-Aufgabe ist damit nicht nur schlechtes Recruiting, sondern ein rechtliches Risiko.

Die sieben Regeln für Code-Aufgaben, die funktionieren

Diese Regeln basieren auf Best Practices zur Bewertung, wie sie interviewing.io, Karat und Hired empfehlen, kombiniert mit Daten von CodeSubmit und DevSkiller. Wenden Sie alle sieben zusammen an; eine auszulassen untergräbt die übrigen.

1. Ein striktes Zeitlimit von 2-4 Stunden durchsetzen

Gestalten Sie die Aufgabe so, dass sie tatsächlich an einem Abend abgeschlossen werden kann. Verlassen Sie sich nicht auf das Ehrensystem. Nutzen Sie eine Plattform, die erfasst, wann der Kandidat beginnt, und die Arbeit automatisch einreicht, wenn die Zeit abläuft. Das verhindert das Wettrüsten und schafft gleiche Bedingungen.

Ein festes Zeitlimit schützt Sie auch rechtlich. Wenn jeder Kandidat das gleiche Zeitfenster erhält, eliminieren Sie den Vorteil, der Kandidaten mit mehr Freizeit zugutekommt.

Lokaler Kontext

Ein striktes Zeitlimit entbindet Sie in Deutschland allerdings nicht von Ausgleichspflichten. Schwerbehinderte Bewerber haben nach § 164 SGB IX Anspruch auf angemessene Vorkehrungen; in Eignungstests, Assessment-Centern und vergleichbaren Auswahlinstrumenten — wozu eine zeitlich begrenzte Code-Aufgabe zählt — sind ihnen Nachteilsausgleiche wie eine verlängerte Bearbeitungszeit zu gewähren. Öffentliche Arbeitgeber müssen geeignete schwerbehinderte Bewerber nach § 165 SGB IX zudem grundsätzlich zum Vorstellungsgespräch einladen. Planen Sie Zeitverlängerungen daher von vornherein als regulären Bestandteil des Verfahrens ein — nicht als Ausnahme auf Zuruf.

2. Ein vollständiges Starter-Template bereitstellen

Bewerten Sie nicht die Fähigkeit eines Kandidaten, Webpack zu konfigurieren oder ein Datenbankschema einzurichten. Stellen Sie ein vorkonfiguriertes Repository mit Scaffolding, Abhängigkeiten, Datenbankschemata und Testframeworks bereit. Der Kandidat sollte das Repository öffnen und innerhalb von Minuten mit der Geschäftslogik beginnen können.

Das spiegelt wider, wie echte Ingenieurarbeit funktioniert. Niemand startet jeden Sprint ein Greenfield-Projekt von Grund auf. Man arbeitet innerhalb bestehender Codebasen, bestehender Konventionen und bestehender Architektur.

3. Aufgaben an reale Arbeit angleichen

Bitten Sie den Kandidaten, ein kleines Feature zu bauen, einen bestehenden Bug zu beheben oder eine spezifische API zu integrieren. Vermeiden Sie abstrakte algorithmische Rätsel, konstruierte Datenstruktur-Übungen oder alles, was wie eine Hochschulklausur aussieht.

Die besten Aufgaben fühlen sich wie eine realistische Aufgabe in der ersten Arbeitswoche an. “Hier ist unsere API. Fügen Sie einen Endpoint hinzu, der X tut, und schreiben Sie Tests dafür.” Das zeigt Ihnen genau, wie der Kandidat am ersten Tag arbeiten wird.

4. Ihr Bewertungsraster veröffentlichen

Teilen Sie den Kandidaten vor Beginn genau mit, was die Prüfer bewerten werden. Ein transparentes Bewertungsraster sollte Folgendes abdecken:

  • Code-Lesbarkeit und Namenskonventionen
  • Fehlerbehandlung und Edge-Case-Abdeckung
  • Testqualität (nicht Quantität)
  • Architekturentscheidungen und Trennung der Zuständigkeiten
  • Git-Hygiene (Commit-Nachrichten, logische Commits)

Wenn Kandidaten die Kriterien kennen, hören sie auf zu raten und beginnen, ihre tatsächlichen Fähigkeiten zu demonstrieren. Sie erhalten aussagekräftige Signale; die Kandidaten erhalten Klarheit.

5. Menschliches Feedback garantieren

Verpflichten Sie sich, zu jeder Einreichung konstruktives Feedback zu geben, unabhängig vom Einstellungsergebnis. Das ist nicht verhandelbar.

Das Feedback muss kein vollständiges Code-Review sein. Drei bis vier spezifische Beobachtungen darüber, was gut funktioniert hat und was verbessert werden könnte, kosten einen Prüfer 10 Minuten. Diese 10-Minuten-Investition verhindert eine vernichtende Glassdoor-Bewertung über Ihren Prozess.

6. Alternative Bewertungsformate anbieten

Nicht jeder starke Entwickler erbringt im Take-Home-Format seine beste Leistung. Geben Sie Kandidaten die Möglichkeit:

  • Einen Open-Source-Beitrag zu präsentieren, den sie bereits geleistet haben
  • Eine Live-Pair-Programming-Sitzung zu einem ähnlichen Problem durchzuführen
  • Ein früheres Portfolio-Projekt durchzugehen und Architekturentscheidungen zu diskutieren

Flexibilität signalisiert Respekt. Sie erweitert auch Ihren Talentpool um Kandidaten, die hervorragende Entwickler sein könnten, aber Einschränkungen haben, die ein Take-Home erschweren.

7. Umfangreiche Projekte vergüten

Wenn Ihre Bewertung tatsächlich mehr als vier Stunden erfordert, bezahlen Sie den Kandidaten. Beauftragen Sie ihn zu einem fairen Stundensatz und behandeln Sie es als bezahlte Probearbeit.

Automattic zahlt 25 $/Stunde für Testprojekte von 5-40 Stunden. Linear führt 2-5-tägige bezahlte Probearbeiten durch, bei denen Kandidaten echte Features bauen. Für die Zeit eines Kandidaten zu bezahlen ist nicht nur ethisch — es signalisiert, dass Ihr Unternehmen die geleistete Arbeit wertschätzt.

Warum GitHub-Integration wichtig ist

Das Bereitstellungsmedium ist genauso wichtig wie der Inhalt. Browserbasierte Coding-Sandboxes hindern Kandidaten daran, ihre bevorzugte IDE zu nutzen, beschränken den Zugang zu Debugging-Tools und abstrahieren die Versionskontrolle vollständig. Sie entfernen genau die Signale, die Sie messen möchten.

GitHub-integrierte Code-Aufgaben lösen dieses Problem. Der Kandidat klont ein Repository, arbeitet in seiner lokalen Umgebung, erstellt Branches, schreibt Commits und reicht per Pull Request ein. Das spiegelt wider, wie er tatsächlich im Job arbeiten wird.

Für Prüfer potenzieren sich die Vorteile. Sie können die Commit-Historie des Kandidaten untersuchen, um zu verstehen, wie er das Problem aufgeschlüsselt hat. Sie können die Commit-Nachrichten lesen, um die Kommunikationsqualität zu bewerten. Und einen Pull Request zu begutachten ist etwas, das jedes Engineering-Team bereits täglich tut — der Bewertungsprozess fühlt sich natürlich an statt künstlich.

Die Meta-Analyse von Schmidt und Hunter belegte, dass die Kombination von Arbeitsstichproben (Validität 0,33) mit strukturierten Interviews (Validität 0,51) die stärksten zusammengesetzten Vorhersagen der Arbeitsleistung liefert. Eine als Pull Request eingereichte Code-Aufgabe, gefolgt von einer Live-Code-Review-Diskussion, ist in der Praxis genau diese Kombination.

Bewertungsformat Vorhersagevalidität Quelle
Arbeitsstichproben-Test 0,33 Schmidt & Hunter, 1998
Strukturiertes Interview 0,51 Schmidt & Hunter, 1998
Unstrukturiertes Interview 0,38 Schmidt & Hunter, 1998
Arbeitsstichprobe + strukturiertes Interview Höchster Gesamtwert Schmidt & Hunter, 1998

Validitätskoeffizienten aus der Meta-Analyse von Schmidt & Hunter von 1998 im Journal of Applied Psychology.

Einreichungen ohne Verzerrungen bewerten

Eine strukturierte Code-Aufgabe ist nur die halbe Miete. Ohne einen disziplinierten Bewertungsrahmen verfälscht der Bias der Prüfer die Ergebnisse.

“Yelp-Bewertungs”-Scoring vermeiden

Der häufigste Fehler: Prüfer hinterlassen ein subjektives “einstellen/nicht einstellen”-Urteil basierend auf Bauchgefühl. Dieser Ansatz ist stark anfällig für Affinitätsbias: Prüfer bevorzugen unbewusst Kandidaten, deren Coding-Stil ihrem eigenen ähnelt. Ein React-Entwickler könnte einen Kandidaten benachteiligen, der Vanilla JavaScript bevorzugt — nicht weil die Lösung schlechter ist, sondern weil sie unvertraut wirkt.

Reviews am Bewertungsraster verankern

Jeder Prüfer sollte anhand des veröffentlichten Bewertungsrasters bewerten und spezifische Beobachtungen dokumentieren. Nicht “Code-Qualität ist gut”, sondern “Kandidat hat User-Inputs im API-Handler in Zeile 47 ordnungsgemäß bereinigt.” Nicht “Architektur ist schlecht”, sondern “Geschäftslogik ist im UserController mit der Darstellungsschicht vermischt.”

Spezifische Beobachtungen sind diskutierbar. Bauchgefühle nicht.

Pull-Request-Reviews nutzen

Wenn Code als GitHub Pull Request eingereicht wird, können Prüfer Inline-Kommentare zu bestimmten Zeilen hinterlassen. Das spiegelt genau die asynchrone Kommunikation wider, die der Kandidat im Job erleben wird. Es entsteht außerdem ein permanenter Bewertungsnachweis, den mehrere Teammitglieder einsehen können.

Mit einer Live-Diskussion nachfassen

Das aussagekräftigste Signal liefert das Gespräch über den eigenen Code des Kandidaten. Warum haben Sie diese Bibliothek gewählt? Wie würden Sie 100-mal so viel Traffic bewältigen? Was würden Sie überarbeiten, wenn Sie mehr Zeit hätten?

Dieses Gespräch offenbart Kommunikationsfähigkeiten, Anpassungsfähigkeit und technische Tiefe, die Code allein nicht zeigen kann. Es gibt dem Kandidaten auch die Gelegenheit, die Kompromisse zu erklären, die er innerhalb des Zeitlimits eingegangen ist.

Was führende Unternehmen anders machen

Die besten Engineering-Organisationen sind über die einfache Take-Home-Aufgabe hinausgegangen. Jede hat das Bewertungsformat an ihre tatsächliche Arbeitsumgebung angepasst.

Bezahlte Probearbeiten

Automattic (WordPress) führt obligatorische bezahlte Testprojekte durch, 5-40 Stunden zu 25 $/Stunde. Kandidaten arbeiten an echten Aufgaben, kommunizieren über Slack und GitHub und demonstrieren, wie sie in einer vollständig verteilten Umgebung arbeiten. Linear führt 2-5-tägige bezahlte Probearbeiten durch, bei denen Kandidaten an Kickoff-Meetings teilnehmen, Features bauen und Ergebnisse präsentieren. Ein nahezu einstimmiges “Strong Yes” des Panels ist erforderlich, um ein Angebot auszusprechen.

Praxisnahe Live-Übungen

Stripe verzichtet komplett auf Take-Homes. Ihr Interview-Loop umfasst eine “Integration Round”, bei der Kandidaten eine unbekannte Codebasis navigieren, um eine neue API zu integrieren, und eine “Bug Bash”-Runde, die sich auf das Debuggen realer Issues aus GitHub konzentriert. Diese Übungen testen, wie ein Entwickler unter realistischen Bedingungen arbeitet — nicht unter konstruierten.

Asynchrones Code-Review

GitLab stellt Kandidaten bis zu 24 Stunden vor dem Interview einen Merge Request zur Verfügung. Der Kandidat begutachtet den MR asynchron und hinterlässt Kommentare und architektonische Kritik. Dies bildet die Grundlage einer 90-minütigen Live-Diskussion und Pair-Programming-Sitzung. Das Format spiegelt GitLabs Remote-first- und Async-Kultur perfekt wider.

Gesprächsbasiertes Screening

Basecamp (37signals) vermeidet Logikrätsel vollständig. Sie bewerten Kandidaten anhand praktischer Code-Einreichungen und legen großen Wert auf das Anschreiben und die schriftliche Kommunikation. Das technische Interview ist ein kollaboratives Gespräch, kein Verhör.

Der gemeinsame Nenner: Jedes Unternehmen stimmt sein Bewertungsformat darauf ab, wie sein Team tatsächlich arbeitet. Wenn Sie ein Remote-first-Team mit asynchroner Arbeitsweise sind, testen Sie asynchrone Fähigkeiten. Wenn Sie täglich Pair Programming machen, testen Sie mit Pair Programming. Die Bewertung sollte eine Vorschau auf den Job sein.

Wie Kit Code-Aufgaben handhabt

Die Code-Aufgaben-Funktion von Kit ist um die sieben obigen Regeln herum konzipiert. Jede Entscheidung im Workflow adressiert einen spezifischen Fehlermodus, der den Unmut von Kandidaten auslöst.

Automatische GitHub-Repository-Bereitstellung

Wenn ein Kandidat die Code-Aufgaben-Phase erreicht, erstellt Kit automatisch ein privates GitHub-Repository, das von Ihrem unternehmensspezifischen Template geklont wird. Das Template enthält alle Scaffolding-Strukturen, Anweisungen und Testsuites, die der Kandidat benötigt. Er klont das Repo, öffnet es in seiner bevorzugten IDE und beginnt sofort mit dem Programmieren. Keine Sandbox. Kein unbekannter Editor. Kein Umgebungs-Setup.

Deadline-Durchsetzung mit integriertem Nachteilsausgleich

Kit erfasst den exakten Zeitpunkt, an dem ein Kandidat die Aufgabe beginnt, und setzt ein konfigurierbares Zeitlimit durch. Wenn die Deadline erreicht ist, sichert das System automatisch das Repository und reicht den aktuellen Stand des Codes ein. Das verhindert, dass Kandidaten 20 unbezahlte Stunden in einen 3-Stunden-Test investieren.

Kit enthält einen integrierten Workflow für Zeitverlängerungen. Recruiter können zusätzliche Zeit für Kandidaten gewähren, die Nachteilsausgleich aufgrund von Betreuungspflichten, Behinderungen oder anderen Einschränkungen beantragen. Nachteilsausgleich ist Teil des Prozesses, kein nachträglicher Gedanke.

Teambewertung über Pull Requests

Nach der Einreichung gewährt Kit dem festgelegten Prüfer-Panel automatisch Repository-Zugang und benachrichtigt es, dass der Pull Request zur Überprüfung bereitsteht. Die Prüfer nutzen native GitHub-Funktionen, um Inline-Kommentare direkt im Code zu hinterlassen.

Die vollständige Commit-Historie des Kandidaten ist sichtbar und zeigt, wie er das Problem iterativ gelöst hat. Hat er die Architektur vorab geplant? Hat er unterwegs umstrukturiert? Sind die Commit-Nachrichten aussagekräftig? Diese Signale sind in einer Browser-Sandbox unsichtbar, aber in einem echten Git-Workflow offensichtlich.

End-to-End-Pipeline-Integration

Die Code-Aufgaben-Phase verbindet sich mit Kits umfassender Hiring-Pipeline. Bewertungen und Feedback der Prüfer fließen in das Kandidatenprofil ein. Die nächste Phase (typischerweise eine Live-Code-Review-Diskussion) wird automatisch ausgelöst. Nichts geht verloren, weil der gesamte Prozess in einem System lebt.

Ihre Code-Aufgabe heute erstellen

Der Unterschied zwischen Unternehmen, die Top-Entwickler anziehen, und solchen, die sie abstoßen, liegt oft im Design der Bewertung. Die Forschung von Schmidt und Hunter ist eindeutig: Arbeitsstichproben in Kombination mit strukturierten Interviews liefern die stärksten Vorhersagen der Arbeitsleistung. Aber das Format funktioniert nur, wenn Sie die Zeit der Kandidaten respektieren, Ihre Kriterien veröffentlichen und Feedback geben.

Beginnen Sie mit den sieben Regeln. Setzen Sie ein Zeitlimit durch. Stellen Sie ein Starter-Template bereit. Veröffentlichen Sie Ihr Bewertungsraster. Geben Sie Feedback. Bieten Sie Alternativen an. Bezahlen Sie für umfangreiche Arbeit. Nutzen Sie eine echte Entwicklungsumgebung statt einer Sandbox.

Kit automatisiert den operativen Aufwand, damit Sie sich auf die Gestaltung großartiger Assessments konzentrieren können, statt Repositories und Deadlines zu verwalten. Starten Sie Ihre kostenlose Testphase und richten Sie Ihre erste Code-Aufgabe in unter 10 Minuten ein.

Verwandte Artikel

Bereit, smarter einzustellen?

Kostenlos starten. Keine Kreditkarte erforderlich. Richte deine erste Hiring-Pipeline in wenigen Minuten ein.

Kostenlos starten