Während meiner langen IT-Karriere gelang es mir, beide Seiten der Interviews zu besuchen und all die Brillanz, Armut, den Wahnsinn und die gesunden Gedanken der Testaufgaben zu sehen, die bei technischen Interviews mit Softwareentwicklern ausgegeben wurden.
Von der Seite des Antragstellers (auch bekannt als Entwickler Petya)
Wenn Petya am Anfang der Karriere eines Entwicklers steht, ist er höchstwahrscheinlich an Testaufgaben interessiert und bereit, seine persönliche Zeit damit zu verbringen. Für Entwickler ab Senior Level sind solche Aufgaben bereits langweilig, insbesondere nicht bezahlt. Und da ein Entwickler normalerweise mehr als ein Unternehmen umgeht, kann die für Testaufgaben verschwendete Zeit Tage oder sogar Wochen betragen!
Gibt es wirklich coole Aufgaben? Sie kommen aber sehr selten vor, vielleicht einer von 100. Grundsätzlich ist alles Standard und nicht interessant - Daten von irgendwoher lesen, etwas damit machen, Daten irgendwo schreiben (Datei / Basis / Socket ..). Oder implementieren Sie einen bekannten Algorithmus. Warum ist das so? Ja, da der Mieter in den meisten Fällen nur den Stapel von Lebensläufen auf seinem Desktop ausdünnen muss, werde ich Ihnen später mehr darüber erzählen.
Von der Seite des Arbeitgebers (alias Timlid Vasya)
Vasya hat zwei Dutzend vollständig geeignete Lebensläufe, unter denen Sie einen würdigen Kandidaten für Ihr Team auswählen müssen. Interview alle zwei Dutzend Vasya zu faul, und es gibt keinen Grund, und er beschließt, die Zeile ein wenig zu filtern und die würdigste zu wählen. Natürlich weiß Vasya, dass man den Weg gehen kann, wie in einem berühmten Witz:
Warum brauchen wir Verlierer?Das Ende des Arbeitstages. Zwei Rekrutierungsmitarbeiter sitzen, alt und jung.
Alt:
- Nun, ich bin fertig. Nach Hause gehen?
Junge, die ein Bündel unverarbeiteter Lebensläufe betrachten:
- Ja, ich habe noch viel Arbeit.
Der Alte kommt, teilt die Packung in zwei Teile, wirft einen in die Urne. Jung:
- Wie ?!
Alt:
"Sie hatten kein Glück." Warum brauchen wir Verlierer?
Aber Vasya beschließt, einem anderen weit verbreiteten Weg zu folgen - eine Testaufgabe zu vergeben und sie an alle Kandidaten zu senden. Und dann beginnt der Zirkus mit Pferden, was die Absurdität der Testaufgaben zeigt.
Interviewer
Eine der schlechtesten Optionen für beide Parteien, wenn der Teamleiter aus irgendeinem Grund (beschäftigt, ohne Kompetenzen, dumm faul, zum Mittagessen gegangen) anstelle von sich selbst ein Mitglied seines Teams zu einem Interview schickt und eine Entscheidung über seinen Rückruf trifft. In diesem Fall nimmt der Teamleiter höchstwahrscheinlich nicht seinen Platz im Unternehmen ein.
Vorlaufzeit und Umfang der Aufgabe
Ich habe Aufgaben eine halbe Stunde und eine Woche lang erledigt. Im Durchschnitt verstehen die meisten Arbeitgeber, dass es sich nicht lohnt, den Kandidaten länger als ein paar Stunden zu benötigen.
Qualität von Code und Design
Hier versuchen Arbeitgeber zu erkennen, was ihnen bei der Festlegung von Aufgaben bei der eigentlichen Arbeit vorenthalten wird - Code mit Kommentaren, die mit Komponententests abgedeckt sind, immer mit Codestil, und es gab Zeiten, in denen Sie ein kurzes Tutorial zum Programm benötigten. In der Praxis sind in der Praxis völlig unterschiedliche Anforderungen viel prosaischer.
Auftragsformat
Sie finden sowohl Standardaufgaben zu Hause als auch Perversionen wie:
- Schreiben Sie eine Entscheidung an die Tafel (dies wird normalerweise von westlichen Unternehmen gemacht).
- Schreiben Sie eine Lösung im Editor auf dem Laptop des Unternehmens
- Schreiben Sie eine Lösung aus der Ferne im Paarprogrammiermodus
Was sieht Vasya am Ausgang?
Einige der Kandidaten fallen einfach ab, weil sie zu faul sind, um kostenlos zu arbeiten, andere mögen die Aufgabe selbst nicht, andere erfüllen nicht alle Bedingungen, die Vasya sorgfältig vorgeschrieben hat, und sie machen ein wenig Unrecht. Infolgedessen wird die Zahl der Bewerber wirklich geringer, aber keineswegs nach den von Vasya erwarteten Grundsätzen. Im Laufe der Zeit sieht Vasya, dass die Qualität der abgeschlossenen Testaufgabe und die Effektivität des neuen Entwicklers im Team schwach miteinander korrelieren und dass die nächsten Kandidaten nicht auf der Testaufgabe bestehen und zur nächsten Stufe der Entwicklerbewertung übergehen.
Was möchten Sie Vasya sehen?
In seinen rosa Träumen sieht Vasya, dass der Kandidat freudig und enthusiastisch mit der Arbeit an der Testaufgabe beginnen und seinen bisher besten Code herausgeben wird, der durch Tests auf keinen Fall möglich ist, eine kompetente (aber nicht übermäßig komplizierte) Struktur aufweist und großzügig mit vernünftigen Kommentaren aufgepeppt wird.
Was geben Testaufgaben in der Realität?
Die Lücke zwischen der Testaufgabe und der eigentlichen Arbeit ist so groß, dass es sehr naiv wäre, das Ergebnis einer kleinen Aufgabe 3 Stunden lang auf die lange Arbeit des Entwicklers zu projizieren. Hinter den Kulissen bleibt noch viel (Debugging, Fehlerbehebung, Refactoring, die Architektur des Projekts ist komplizierter als bei
Hello World , Interaktion mit Kollegen), wodurch der Nutzen solcher Aufgaben praktisch auf Null sinkt. Mit ungefähr dem gleichen Effekt können Sie einfach eine Münze werfen und schnell entscheiden, ob der Kandidat geeignet ist oder nicht.
Es ist gut, den Autor einzuholen, wahrscheinlich gibt es in coolen Büros weniger Unsinn bei Aufgaben
Ein bekannter Fall ist, wenn der Autor des Paketmanagers
Homebrew nicht zu Google gebracht wurde, nur aus dem Grund, dass er beim 7. Interview keinen Algorithmus an die Tafel schreiben konnte, wie der Binärbaum invertiert werden kann. Wie viele harte Jungs Unternehmen durch solche verschwommenen Aufgaben verlieren - das kann man nur erraten.

Welche Testaufgaben werden überhaupt nicht benötigt?
Da ich auf der Website von Vasya war, gab ich manchmal Testaufgaben, um nach der Implementierung etwas zu besprechen. Aber nur, wenn der Entwickler selbst nicht dagegen ist. Dies funktioniert gut für Junior- und Middle-Entwickler, wenn sie keinen Code haben, den sie demonstrieren können. Senior'ov und höher kann von einer kleinen Testaufgabe nicht gewürdigt werden, hier ist ein anderer Ansatz erforderlich.
Können Testfälle wirklich beiden Parteien zugute kommen?
Angesichts der Nachteile traditioneller Testfälle haben einige Unternehmen begonnen, einen Ansatz zu verfolgen, der den Arbeitsbedingungen näher kommt. Der Kandidat erhält eine echte Aufgabe aus der aktuellen Aufgabenliste (Auftragsbestand) des Unternehmens, die von einem Tag bis zu einigen Wochen ausgeführt werden kann und zu einem vertraglichen Satz bezahlt wird. Auf diese Weise erhält der Kandidat die Möglichkeit, mit einem neuen Team im Testmodus zu arbeiten und gleichzeitig Geld für die aufgewendete Zeit zu verdienen. Auf diese Weise können Sie den Kandidaten unter kampfnahen Bedingungen genauer bewerten, aber leider können es sich nur wenige Unternehmen leisten.
Ein akribischer Leser wird fragen: "OK, Autor, wenn keine Testaufgabe, wie können Sie dann den richtigen Senior auswählen?" Und dies ist ein Thema für einen separaten Artikel, bleiben Sie dran!