- Betont werden die Ineffizienz von Take-home Assignments in Vorstellungsgesprächen für Softwareentwickler und das Problem der Zeitverschwendung auf Bewerberseite
- Im Bewerbungsprozess bei Kagi Search wurden übermäßig weit gefasste und vage Aufgabenanforderungen erlebt
- Zu einem vorgeschlagenen konkreten Umsetzungsplan wurde das Fehlen von klarem Feedback durch den Manager sowie eine ineffiziente Kommunikation erlebt
- Nach der Einreichung eines mit großem Aufwand entwickelten Projekts wurde die Absage ohne klare Begründung und mit veränderten Maßstäben als unangemessen empfunden
- Es werden Alternativen für bessere Einstellungsprozesse geteilt (z. B. Live-Code-Reviews) sowie das Problem überzogener Anforderungen bei aufgabenbasierten Bewerbungsgesprächen aufgezeigt
Vorwort
- Ein Take-home Assignment ist ein Bewertungsverfahren in Vorstellungsgesprächen für Softwareentwickler, bei dem Bewerber eine Aufgabe erhalten und diese als Code implementieren und einreichen müssen
- Dieser Beitrag möchte anhand der tatsächlich erhaltenen Aufgabe und der dabei gemachten Erfahrung bei einer Bewerbung bei Kagi Search, das ich für ein Unternehmen mit gutem Ruf hielt, auf die Unvernünftigkeit dieses Verfahrens und das Problem der Zeitverschwendung für Bewerber hinweisen
Bewerbung bei Kagi Search
- Es wurde ein Lebenslauf für eine Backend-Entwickler-Position bei Kagi Search eingereicht
- Die Anforderungen für diese Rolle waren wie folgt
- Erfahrung beim Aufbau von Backend-Systemen
- Fähigkeit, mit Go zu arbeiten
- Erfahrung mit der Skalierung und Wartung großer Backend-Systeme
- Fähigkeit zur Zusammenarbeit mit Teammitgliedern wie SREs
- Verständnis von Container-Technologien wie Docker
Einführung in die Interview-Aufgabe und Anforderungen
- Nach dem Bestehen der Unterlagenrunde wurde eine E-Mail mit Informationen zum Take-home Assignment erhalten
- Thema der Aufgabe: „Implementierung eines minimalen, vom Terminal inspirierten E-Mail-Clients“
- Wahlweise als Terminal-Anwendung oder Web-App
- Grundlegende Funktionen zum Anzeigen und Senden von E-Mails
- Freie Wahl eines gefälschten oder echten E-Mail-Backends (IMAP/POP usw.)
- Nur die Verarbeitung von Plaintext-Nachrichten ist verpflichtend, Rich Text ist nicht erforderlich
- Projekteinreichung: GitHub-Repository, bereitgestellte Deployment-Version, inklusive Installationsanleitung
- Es fehlte an klaren Leitlinien, und der Umfang des Projekts war erheblich
- Aufgrund des guten Rufs wurde dennoch entschieden, die Aufgabe zu bearbeiten
Kommunikation mit dem Manager
- Bei Nachfragen zum klaren Umfang der Aufgabe und zu zusätzlichen Funktionen kam nur die vage Antwort, dass „es dem Bewerber freisteht, was zusätzlich eingebaut wird“
- Bevor Zeit und Aufwand in die Aufgabe investiert wurden, wurde ein konkreter Umsetzungsplan (Proposal) geteilt und um eine Rückmeldung dazu gebeten, doch es erfolgte kein besonderes Feedback
Vorschlag und Plan für die Aufgabe
- Umsetzungsplan:
- Web-App auf Basis von Go
- Deployment über AWS ECS Fargate mit SSL
- Integration des E-Mail-Senderdienstes Postmark
- Hinzufügen von Login- und Authentifizierungsfunktionen
- Senden und Empfangen von E-Mails sowie Anzeige in der UI
- Begründung für die Technikauswahl:
- Einsatz verschiedener Technologien mit Bezug zur Backend-Rolle
- Praktischer Systemaufbau durch den Einsatz von Infrastructure-as-Code-Tools
- Umsetzung von Funktionen, die eher einem echten Dienst ähneln, statt nur einer simplen API-Integration
- Wichtige Implementierungselemente:
- Pocketbase (Backend/DB), TEMPL (Templates), Pulumi (IaC), Postmark (E-Mail-Dienst)
- Implementierung von Paging, Login usw.
- Stretch Goal: Stabilität durch Datensicherung und Wiederherstellung
- Fazit: Es wurden vorab ausreichend Erklärungen und Begründungen geliefert, und es wurde eine klare Prüfung und Rückmeldung dazu erwartet
Antwort des Managers und Kommunikationsprobleme
- Ohne konkrete Prüfung kam nur eine kurze Antwort wie „interessanter Vorschlag“
- Es gab keinerlei Feedback zur Eignung des Vorschlags oder zu notwendiger Verbesserung
- Aus Sicht des Bewerbers wirkte das wie ein Mangel an Respekt gegenüber der investierten Zeit und Mühe
Durchführung des Projektauftrags
- Sowohl die vorgegebenen Anforderungen als auch die vorgeschlagenen Punkte wurden vollständig umgesetzt, und dafür wurde eine Woche in Vollzeit investiert
- Es wurden sogar ein Demo-Video des Projekts, ein GitHub-Repository und ausführliche Dokumentation eingereicht
Absage und das dazu erhaltene Feedback
- Nach Erhalt einer automatisierten Absage-E-Mail kam auf die Bitte um Feedback folgende Antwort:
- „Es gab stärkere Einreichungen anderer Bewerber“, „der Wettbewerb bei der Einstellung ist intensiv“
- Problematische Punkte
- Wenn einfache Lösungen bevorzugt wurden, hätte das von Anfang an kommuniziert werden können
- Wenn der Vorschlag unzureichend war, hätte an diesem Punkt Feedback gegeben werden können
- Auch nach der Absage war die Stellenausschreibung weiterhin online, weshalb es nicht als bloßer Wettbewerb, sondern als überzogene Anforderung unnötigen Zeitaufwands beurteilt wurde
- Nach Einreichung des Projekts wurden die Anforderungen noch weiter verschärft, sodass die eingereichte Lösung die Messlatte faktisch angehoben hat
Fazit und Problembewusstsein
- Diese Vorgehensweise ist für viele Jobsuchende unangemessen und kann sogar reale Bedrohungen für den Lebensunterhalt mit sich bringen
- Es wird betont, dass es notwendig ist, überzogene unbezahlte Aufgabenanforderungen abzulehnen oder offen zu kritisieren
- Es sind bessere Einstellungsprozesse möglich, etwa Live-Code-Reviews als Ersatz für projektartige Aufgaben
- Die Fähigkeit, reale Entwicklungsprobleme zu lösen, lässt sich durch asynchrone/synchrone Code-Reviews betrachten
- Es wird auf die Kluft zwischen Leetcode-artigen Aufgaben und den Anforderungen der realen Arbeit hingewiesen
- Es wird dazu aufgerufen, die Kultur von Erschöpfung auf Bewerberseite und unfairer Bewertung zu verbessern
Vorschläge für ein besseres Einstellungsverfahren
- Es werden Alternativen wie Live-Code-Reviews vorgeschlagen, die die Fähigkeiten von Entwicklern sinnvoller bewerten
- Statt timerbasierter Algorithmus-Rätsel sollte stärker auf tatsächliche Fähigkeiten und Problemlösungskompetenz fokussiert werden
1 Kommentare
Hacker-News-Kommentare
Ich erkenne die Fähigkeiten des Bewerbers und seine Leidenschaft für die Arbeit an. Ich wollte nur eine etwas andere Perspektive geben.
„Einen von Terminals inspirierten E-Mail-Client entwickeln und mit Kunden alpha-testen“ ist für einen Engineer in einem frühen Startup eine legitime Anforderung. Selbst wenn es mehr Spezifikationen gibt, hängt vieles vom Urteil des Engineers ab. Der Bewerber scheint zu viel Sicherheit zu wollen.
Dass er vorab wissen wollte, welches Feedback Kagi nach Abschluss der Aufgabe geben würde, ist kein gutes Signal. In so einer Situation kann man keine verbindliche Antwort geben. Vermutlich bewerten sie Hunderte oder Tausende Bewerbungen.
Wenn keine Klärung der Anforderungen nötig war, dann könnte man auch einfach „Errate eine Zahl zwischen 1 und 10“ geben und Leute aussortieren, die die falsche Wahl treffen.
Ich kann nicht zustimmen, dass jemand aussortiert wird, weil er sich Mühe gibt und etwas gut abschließt.
Solche vagen Aufgaben sind in Wahrheit nur eine weitere Methode, auf „Culture Fit“ zu filtern.
Eine Kultur von „erst Code, Feedback später“ war die schädlichste Erfahrung meiner Laufbahn. Dieser Bewerber hat moderne Software-Praktiken befolgt. (Ich bin Hiring Manager in einem Unternehmen mit über 1000 Engineers.)
Ich selbst bin bei meiner letzten Jobsuche auch an einer umfangreichen Take-Home-Aufgabe gescheitert, weil ich nicht wusste, welcher Teil eigentlich bewertet wurde. Seit dieser Erfahrung habe ich eine starke Abneigung gegen solche Aufgaben.
Ich finde, das Unternehmen hätte den Bewerber an diesem Punkt nicht weiter Zeit verschwenden lassen, sondern die Aufgabe dann beenden sollen.
Es gab nicht einmal die grundlegendsten E-Mail-Funktionen (wie das Öffnen einer Mail), und obwohl es eine Bewerbung auf eine Backend-Engineer-Stelle war, wurden in der Praxis externe Produkte wie postmark und turso genutzt; außerdem fehlten grundlegende Features (Plaintext-Formatierung, Anzeige, Ordner usw.).
Es gab zwar Zusatzfunktionen wie eine Admin-Seite und Login, aber selbst minimale Datenstrukturen wie ein Map für Mail-Header fehlten.
Er mag ein guter Engineer sein, aber ich halte ihn für diese Position für ungeeignet.
Auch den Take-Home-Vorschlag fand ich zu ungewöhnlich.
Als ich die ursprüngliche Ausschreibung erneut gelesen habe, stand dort ausdrücklich „minimaler von Terminals inspirierter E-Mail-Client“ und es wurden Referenzen wie aerc, mutt und himalaya genannt. Das ist ein klares Scheitern bei der Interpretation der Anforderungen.
Es wurde ein E-Mail-Client in Terminal- oder Web-App-Form mit grundlegenden Funktionen verlangt, und ich denke, das wurde erfüllt.
Der Teil, sich von terminalbasierten Tools inspirieren zu lassen, ist subjektiv. Wenn es eine Backend-Position ist, könnte es auch ineffizient sein, zu viel Energie in die UI zu stecken.
Wenn man wenigstens Feedback bekommen könnte, wäre das hilfreich für die persönliche Entwicklung, aber selbst das ist in der Realität oft schwer.
Deshalb bin ich gegenüber Take-Home-Aufgaben skeptisch. Sowohl Bewerber als auch Einstellende sollten die Zeit des jeweils anderen respektieren.
Mit 2 bis 3 Stunden kann man einen Bewerber gut genug bewerten. Mit einem Zeitlimit hätte auch der Bewerber innerhalb dieses Rahmens eine passende Lösung präsentieren können, und für das Unternehmen wäre klarer gewesen, was es eigentlich will.
Außerdem muss das Unternehmen klar kommunizieren, ob wirklich „jede Antwort okay“ ist oder ob „die bestmögliche Antwort“ erwartet wird.
Die Absicht einer Take-Home-Aufgabe kann je nach Art sehr unterschiedlich sein — ob es ums Bestehen eines Tests geht, um den Erfüllungsgrad einer Mission oder um Codequalität — und das kann Bewerber leicht verwirren.
Sie birgt vielmehr das Risiko, Menschen auszusortieren, die keine freie Zeit haben und beschäftigt sind.
Unser Unternehmen stellt einfach eine kleine ETL-Aufgabe und setzt ein Limit von 4 Stunden.
Wir legen es so an, dass auch unvollständige Lösungen okay sind, und im Follow-up machen wir Code-Review und Fragen.
Die eigentlichen Fähigkeiten erkennt man in diesem Folgetermin.
Anders als bei einer Vor-Ort-Aufgabe mit fair gleicher Zeiteinheit kann Take-Home wegen unterschiedlich verteilter Zeit unfair sein.
Dann ist eine einstündige Vor-Ort-Coding-Aufgabe vielleicht besser. Wenn Bewerber und Interviewer dieselbe Zeit investieren müssen, respektiert man eher den Wert der Zeit des anderen.
Im Demo-Video sieht man nur eine gewöhnliche Web-App. Es wurde ausdrücklich gesagt, man solle sich von bestehenden Terminal-Mail-Clients wie aerc, mutt und himalaya inspirieren lassen.
Ich frage mich, ob ich etwas übersehe.
Da die terminalspezifische UX noch kein Bereich mit einer klaren „richtigen Antwort“ ist, ist es sogar gut möglich, dass genau das ein Bewertungskriterium war.
Wenn man eine Aufgabe verlangt, sollte es meiner Meinung nach unbedingt ein Follow-up-Gespräch geben.
Ich habe Kagi bereits als zahlender Kunde genutzt, überlege jetzt aber wegen dieser Sache, mein Konto zu kündigen.
Wenn man nicht einmal Zeit für ein Gespräch mit dem Kandidaten hat, sollte man von Anfang an keine solche Aufgabe verlangen.
Wenn man sogar ein Review macht, denke ich, dass der Bewerber ein Recht auf Feedback hat.
Aber in der Realität wählt man unter Dutzenden hervorragender Kandidaten nur einen aus, daher bedeutet eine Absage nicht automatisch „du bist nicht gut genug“.
Auch rechtlich führt eine offizielle Antwort auf „Warum wurde A eingestellt und B abgelehnt?“ in der Praxis oft nur dazu, nach Schwächen zu suchen.
Viele Unternehmen handhaben diesen Punkt gut.
Wenn das Missverständnis der Anforderungen groß ist, kann die Diskussion selbst wegfallen.
Das Unternehmen wollte jemanden, der eigenständig handelt und sich selbst Ziele setzen kann.
Die Unklarheit sollte die Fähigkeit des Bewerbers zeigen, die Antwort aus mehreren Blickwinkeln zu erforschen und daraus eine Lösung zu entwickeln.
Weil das zu einem prototypenorientierten Unternehmen passt, hätte ein passender Kandidat vielleicht 10 Minuten nachgedacht und dann in 60 Minuten das Maximum herausgeholt.
Aber gerade für Entwickler ist die Fähigkeit, solche Fragen zu stellen, eine sehr wichtige Eigenschaft. Deshalb kann man an das Hiring-Verfahren hohe Erwartungen haben und am Ende nur enttäuscht sein.
Tatsächlich liegt es an der unklaren Erklärung.
Ein großartiger Lehrer sorgt dafür, dass möglichst viele es verstehen. Wenn viele Lernende verwirrt sind, liegt das Problem beim Aufgabenersteller.
Studierende an der Universität sollten keine Koans wie ein Zen-Mönch lösen müssen.
Früher hat Vlad die Bewerber direkt bewertet, und die Aufgaben waren auch so aufgebaut.
Mit dem Wachstum des Unternehmens scheinen nun andere Leute zu bewerten.
Vlad hat einen HN-artigen Stil und möchte mit Bewerbern arbeiten, die er als „cool“ empfindet.
Wenn man zum Beispiel ein langes Design-Dokument schreibt und sagt: „Wir werden Galactor verwenden und das Projekt ist flop-ready“, hat das den komplett gegenteiligen Effekt.
Bei der Anforderung „von Terminals inspiriert“ gibt es die Tendenz, Details wie alle Tastaturkürzel und andere konkrete Eigenheiten echter Terminal-Apps zu erwarten.
Ob das ein guter Filter ist, kann man diskutieren, aber wenn man diesen Kontext versteht und die Fähigkeit hat, durchzukommen, wirkt die Aufgabe leicht.
Ich wünschte, Kagi hätte diesen Kontext besser kommuniziert. Es ist schade um die verschwendete Zeit, aber ich hoffe, du findest ein Unternehmen, das besser zu dir passt.
Teams ohne Vielfalt können stagnieren, weil alle an dieselbe Wand stoßen.
Dieses Phänomen ist besonders in Startups häufig, und ich denke, es hängt auch damit zusammen, warum 9 von 10 scheitern.
Eine Aufgabe ohne klare Kriterien zu bewerten, ist unfair.
Letztlich ist es kaum etwas anderes als eine implizite Aufgabe nach dem Muster „Errate die Antwort in meinem Kopf“.
Das wirkt wenig rücksichtsvoll gegenüber Menschen.
Bei so einer Kultur ist unklar, ob jeder erst wie undercover recherchieren musste, um das herauszufinden.
Es wäre besser, wenn auch Bewerber wie ich, die nicht „cool“ genug sind, ein klares Signal bekämen und schnell andere Unternehmen suchen könnten.
Wegen solcher Details würde ich das Review abbrechen.
Von einem einfachen Design-Vorschlag bis zur Implementierungsaufgabe lief alles mit klarem Zeitlimit.
Am Ende wurde ich nicht genommen und bekam keinen klaren Grund genannt.
Vermutlich gab es einfach zu viele Bewerber, aber diese Erfahrung hat mich emotional noch lange beschäftigt. Ich kann die Gefühle des OP nachvollziehen.
Trotzdem hätte ich als Hiring Manager den Autor wahrscheinlich ebenfalls abgelehnt.
Startups wollen Leute, die schnell und pragmatisch arbeiten.
Ich hatte früher einen Kollegen, der erst tagelang allein tief eintauchte, nachdem er sich Meinungen aus dem Umfeld eingeholt hatte — und bis dahin hatten sich die Anforderungen schon geändert, was für niemanden gut war.