Bewerbungshilfe Deutschland FlaggeBewerbungshilfe Österreich FlaggeBewerbungshilfe Schweiz Flagge
    TonisBewerbungshilfe
    Zurück zum Blog
    Bewerbung

    Take-Home-Tests und Code-Assessments bestehen: Strategie und Technik

    3. Juni 2026
    Take-Home-Tests und Code-Assessments bestehen: Strategie und TechnikKI-generiert

    Take-Home-Tests gehören in vielen Tech-Bewerbungsprozessen zu den anspruchsvollsten Schritten. Sie zeigen unter realistischen Bedingungen, wie du Code schreibst, kommunizierst und Abwägungen erklärst. Viele scheitern daran nicht aus Mangel an Können, sondern an fehlender Strategie. Wer bewertet, schaut selten nur darauf, ob der Code läuft, sondern auch auf Problemverständnis, Code-Qualität, Reife im Engineering und Kommunikation. Wer in allen Bereichen überzeugt, sticht heraus, auch wenn die Lösung nicht perfekt ist.

    1. Das Zeitmanagement diszipliniert einteilen

    Die meisten Take-Homes haben ein offizielles Zeitfenster (z.B. "circa 4 Stunden") und ein Abgabefenster (z.B. "innerhalb von 7 Tagen"). Beides musst du ernst nehmen. Die 4 Stunden sind ein Signal des Unternehmens, wie viel Aufwand sie erwarten. Wer 20 Stunden investiert, liefert oft Over-Engineering und disqualifiziert sich, weil die Lösung nicht zur Stellengröße passt.

    Eine mögliche Zeiteinteilung für eine Aufgabe mit vier Stunden: eine halbe Stunde Lesen und Notizen, etwa 20 Minuten Architekturskizze, rund zwei Stunden Umsetzung, eine halbe Stunde Tests, eine halbe Stunde README und Feinschliff und ein paar Minuten für die Schlusskontrolle. Das ist knapp, hilft aber, nicht in Details zu versinken.

    2. In den ersten 30 Minuten lesen, nicht coden

    Der größte Fehler ist sofortiges Loscoden. Lies die Aufgabe zweimal, einmal komplett, einmal mit Notizen. Markiere explizit Pflichtanforderungen, Wünschenswertes und Stretch-Goals. Identifiziere implizite Anforderungen, wie beispielsweise "Daten persistent speichern", was Tests gegen einen DB-State impliziert.

    Erkenne offene Fragen: Wenn etwas mehrdeutig ist, schreib eine kurze E-Mail mit konkreten Annahmen, etwa: "Ich gehe davon aus, dass X gilt, weil Y. Bitte korrigieren Sie mich, falls nicht." Das zeigt, dass du aktiv kommunizierst. Wenn keine Antwort kommt, halte deine Annahmen im README fest.

    3. Die Architektur vorab aufzeichnen

    Bevor du eine Zeile schreibst, skizzierst du die Architektur auf Papier oder in einem Mermaid-Diagramm. Welche Komponenten, welche Datenflüsse und welche externen Abhängigkeiten gibt es? Zehn Minuten Skizze sparen zwei Stunden Refactoring.

    Wenn die Aufgabe eine API ist, definiere zuerst das Schema (z.B. OpenAPI-Schnipsel). Wenn die Aufgabe ein Frontend ist, definiere zuerst die Component-Hierarchie und den State-Tree. Wenn die Aufgabe im Data-Bereich liegt, definiere zuerst Input- und Output-Schema sowie die Pipeline-Stages.

    4. Konkrete Code-Qualität liefern

    Idiomatic Code in der jeweiligen Sprache schlägt clevere Tricks. Wenn die Aufgabe in TypeScript ist, nutze Typen sauber, vermeide any und nutze Discriminated Unions, wo es passt. In Python nutzt du Type Hints, dataclasses, schlanke Funktionen und eine sinnvolle Modul-Struktur. In Go setzt du auf einfache Strukturen, kein over-abstracted Interface-Geflecht und klare Error-Returns. In Rust nutzt du idiomatic Result-Handling und vermeidest unnötige Lifetimes.

    Eine saubere Modul-Struktur ist ein starkes Signal. Die Trennung von Domain-Logik, IO und Adaptern (Hexagonal Architecture im Kleinen) zeigt, dass du in Schichten denkst. Bei einer 4-Stunden-Aufgabe heißt das nicht volle Clean Architecture, sondern eine simple Trennung in beispielsweise handlers, services und repositories.

    5. Tests als stärksten Differentiator nutzen

    Tests sind ein Punkt, an dem viele Kandidatinnen und Kandidaten Chancen verschenken. Sie liefern Code ohne Tests oder mit einem einzigen Test für den Normalfall. Liefere stattdessen Unit-Tests für die Kernlogik mit mehreren Fällen inklusive Grenzfällen, einen Integrationstest für den kompletten Ablauf und gegebenenfalls einen Test, der dokumentiert, wie sich das System in einem Grenzfall verhält.

    Wähle das Test-Framework, das in der Sprache üblich ist, etwa pytest in Python, Vitest oder Jest in TypeScript und go test mit tabellengesteuerten Tests in Go. Eine hohe Testabdeckung ist ein gutes Signal, aber kein Selbstzweck. Wichtiger ist, dass die Tests die kritischen Pfade abdecken.

    6. Error Handling und Edge Cases explizit einbauen

    Code, der nur den Happy Path behandelt, signalisiert Juniorität. Behandle explizit leere Inputs, ungültige Formate, Timeouts bei externen Calls, Race Conditions (wenn relevant) und Concurrency-Limits. Wenn du eine Schwachstelle bewusst nicht behandelst, schreib es ins README ("Race Conditions zwischen Concurrent Writes sind nicht abgedeckt, weil die Aufgabe einen Single-Writer-Use-Case spezifiziert. Skalierung würde Optimistic Locking erfordern.").

    7. Das README als Hauptdarsteller aufbauen

    Das README ist oft das erste, was der Reviewer liest. Nutze eine erprobte Struktur: Kurze Beschreibung (was ist es, was tut es), Setup-Anleitung (Kommandos zum Starten, Testen, Builden, idealerweise als Makefile oder Just-File), Architektur-Übersicht (5 bis 10 Zeilen oder ein Diagramm), wichtige Entscheidungen (3 bis 5 Trade-offs mit Begründung) und die Sektion "Was würde ich mit mehr Zeit anders machen" (3 bis 5 Punkte).

    Der letzte Punkt ist entscheidend. Er zeigt, dass du dir der Limitierungen bewusst bist, ohne defensiv zu wirken. Ein Beispiel für Senior-Sprech: "Mit mehr Zeit würde ich eine Background-Queue für die Email-Versendung einführen, weil der aktuelle Synchron-Call den HTTP-Response blockiert."

    8. Git-Commits als Qualitätsmerkmal nutzen

    Reviewer schauen oft in den Git-Log. Mache 5 bis 10 logische Commits mit klaren Messages, anstatt eines einzigen "final" Mega-Commits. Konventionelle Commit-Messages (feat:, fix:, refactor:, test:) zeigen Reife. Wenn du etwas verworfen hast, kann ein Refactor-Commit das dokumentieren. Vermeide Commits mit "wip" oder "asdf".

    9. Patterns je nach Tech-Bereich anwenden

    Im Backend (API) nutzt du REST oder GraphQL nach Vorgabe, ein sauberes Schema, Input-Validation (Zod, Pydantic, Joi), saubere Error-Responses (RFC 7807 Problem Details, wo passend), Logging mit strukturierten Feldern und einen Health-Endpoint.

    Im Frontend hältst du Komponenten klein und testbar, wählst das State-Management bewusst (oft reicht useState plus Context, kein Redux für eine 4-Stunden-Aufgabe), baust Loading- und Error-States ein und achtest auf Accessibility-Basics (semantic HTML, aria-labels, keyboard Navigation) sowie ein responsives Default-Design.

    Im Data-Bereich lieferst du klar definierte Input- und Output-Schemas, idempotente Pipelines, Logging von Statistiken (Anzahl gelesen, geschrieben, übersprungen), Testdaten mit klaren Edge Cases und einen kurzen Performance-Vergleich, wenn er relevant ist.

    Fazit

    Vermeide die typischen Stolperfallen: Binde keine externen Libraries ein, die das Problem komplett für dich lösen (das wird als Cheating gewertet). Setze keine kompletten Frameworks auf, wenn die Aufgabe minimalistisch ist. Klebe Tests nicht erst im allerletzten Commit drauf (das sieht man sofort im Git-Log) und nutze keine Code-Generatoren ohne Disclosure (AI-generierten Code nicht verschweigen). Überziehe niemals die Abgabefrist ohne vorherige Kommunikation.

    Take-Home-Tests sind eine Bühne, auf der du Reife im Engineering zeigen kannst, in einem Umfang, den ein Live-Interview selten erlaubt. Wenn du für deinen Lebenslauf und dein Anschreiben Unterstützung willst, kannst du deine Bewerbung schreiben lassen.

    Häufige Fragen

    Soll ich AI-Tools wie Copilot beim Take-Home nutzen?

    Wenn es nicht explizit verboten ist, ja, aber transparent. Schreib im README, welche Tools du genutzt hast und wo du die Outputs validiert hast.

    Was, wenn ich die Zeit nicht einhalten kann?

    Liefer pünktlich, was du hast, und dokumentiere klar im README, was fehlt und wie du es lösen würdest. Das ist immer besser als verspätet abzugeben.

    Brauche ich 100 Prozent Testabdeckung?

    Nein. Wichtiger als eine hohe Zahl ist, dass die kritischen Pfade und Grenzfälle gut getestet sind. Testabdeckung als Selbstzweck wirkt mechanisch.

    Brauchst du Hilfe bei deiner Bewerbung?

    Professionelle Bewerbungshilfe von Toni, persönlich und diskret.

    Zur Bewerbungshilfe

    Wo suchst du einen Job?

    Wähle dein Land für Unterstützung nach den Gepflogenheiten deines Marktes, jeder Markt hat seine eigenen Regeln.

    Hast du eine Frage zu deiner Bewerbung?