
Ich bin kein Personalvermittler für große Unternehmen, aber ich habe viel Erfahrung mit kleinen Unternehmen und ein wenig gesunden Menschenverstand.
Bereits 2013 habe ich auf AboutEcho.com eine sehr erfolgreiche Einstellungskampagne durchgeführt, bei der neun leitende Ingenieure eingestellt wurden. Meine russischsprachigen Leser konnten hier darüber lesen .
All dies gibt mir das Vertrauen, die Methoden zu kritisieren, mit denen die Internetgiganten bis heute Ingenieure einstellen.
Streben Sie nicht nach der besten Lösung
Wenn Sie zu einem Interview ankommen, stellt der Interviewer ein Problem für Sie dar und erwartet eine Lösung in 0 bis 2 Minuten. Wenn Sie sich mehr Zeit nehmen, werden sie wirklich aufgeregt sein und sie bitten, etwas zu sagen.
Das ist verständlich - schließlich haben sie nur 45 Minuten Zeit und wollen viele Dinge mit Ihnen besprechen.
Ich kann nicht verstehen, wie Sie an der Qualität der Lösung gemessen werden, die Sie innerhalb von zwei Minuten gefunden haben. Denn so funktioniert menschliche Kreativität nicht. Es ist leicht, viele Ideen zu entwickeln, aber es ist seltsam zu erwarten, dass das Beste immer an erster Stelle steht. Selbst Genies können nicht in kurzer Zeit vorhersehbar die besten Ideen der Welt hervorbringen.
Kreativität ist die Fähigkeit, den Ideenfluss, den Sie sich einfallen lassen, zu bewerten und zu filtern. Wenn Sie wirklich daran interessiert sind, bitten Sie die andere Person, mehrere Ideen zu vergleichen und zu bewerten. Überprüfen Sie, ob eine Person die Eigenschaften der vorgeschlagenen Lösung bewerten kann. Ob er die Vor- und Nachteile klar sieht?
Und wenn Sie in zwei Minuten nach der besten Lösung fragen, testen Sie Ihr Glück, nichts weiter. Sind Sie im Geschäft, erfolgreiche Mitarbeiter einzustellen? Oder fähig?
Fragen Sie nicht nach Rätseln
Wie kann ich überprüfen, ob eine verknüpfte Liste eine Schleife enthält? Passt eine N-dimensionale Box in eine andere N-dimensionale Box? Können Sie zwei Variablen ohne die dritte austauschen? Wie finde ich den kürzesten Abstand zwischen zwei sich bewegenden Schiffen? Finden Sie alle Permutationen von N Elementen, indem Sie nur N-1 Permutationen durchführen?
Es macht Spaß, über diese Rätsel zu sprechen, und ihre Lösungen können sehr hilfreich sein. Als Kind liebte ich es, wenn viele von ihnen Math Fun and Essays lasen . Versteh mich nicht falsch, sie sind komisch.
Egal wie lustig sie sind, dies sind nur Anekdoten. Die Eigenschaft eines Puzzles ist, dass Sie entweder die Antwort darauf kennen oder nicht. Das sagt dir nichts anderes. Es hat nichts mit zukünftiger Leistung, Geschicklichkeit, Fähigkeit oder irgendetwas anderem zu tun. Wenn Sie eine bestimmte Antwort kennen, bedeutet dies nicht, dass Sie über einen Apparat verfügen, mit dem Sie echte Probleme allgemein und vorhersehbar lösen können. Das einzige, was es Ihnen sagt, ist, dass sich die Person in dieser Situation befand und jemand eine Lösung mit ihr geteilt hat. Nicht mehr und nicht weniger. Hör einfach schon auf.

Wie kann man gerettet werden, bevor die Kerze das Seil verbrennt?
Seien Sie offen für Alternativen
Dies ist etwas zu erwarten, aber große Unternehmen scheinen immer noch darauf hereinzufallen. Wenn der Befragte eine alternative Lösung anbietet, haben Sie als Interviewer die Möglichkeit, etwas zu lernen. Dies ist auch eine gute Gelegenheit für eine eingehendere Diskussion, wenn sich die vorgeschlagene Lösung als unmöglich oder schlecht herausstellt.
Ich wurde jedoch einmal entlassen, um eine alternative Lösung mit der gleichen Komplexität vorzuschlagen (und mit einem Vortrag über "die einzig wahre Herangehensweise an dieses Problem" belastet), und bei einer anderen Gelegenheit führte ich strikt zu einer spezifischen Lösung. Im letzteren Fall wollte der Interviewer wirklich alle meine Bedenken ignorieren und nur das diskutieren, was er als Lösung für das Problem ansah, und hinterließ später eine "nicht beeindruckende" Bewertung über mich.
Niemand weiß alles. Sei offen. Hör mal zu. Meditieren. Ja, auch wenn Sie jemanden interviewen.
Seien Sie tolerant gegenüber Fehlern
Einzelne Fehler werden aus einem bestimmten Grund allgemein als eines der schwierigsten Probleme in CS angesehen - jeder macht sie. Fehler sind Teil des Lebens eines Programmierers und nicht etwas, das man loswerden muss. Ein guter Programmierer weiß nur, was er dagegen tun muss. Die Qualität eines Programmierers hängt NICHT davon ab, wie wenige Fehler er macht.
Wenn Sie nur Leute auswählen, die während des Interviews keine Fehler gemacht haben, erhalten Sie auf magische Weise kein Team von Programmierern, die immer fehlerfreien Code schreiben. Sie wissen einfach nicht, wie sie sich verhalten werden, wenn sie unvermeidlich Fehler machen.
Fehler sind also eigentlich gut, denn Sie werden lernen, wie diese Person sie korrigiert. Beurteilen Sie keine Fehler, bewerten Sie, wie der Gesprächspartner mit ihnen umgeht:
- einfacher Code,
- Teile und herrsche,
- Selbsttests,
- Invarianten,
- Erklärung,
- kompilieren und ausführen,
- testen.
Oh, tut mir leid wegen der letzten beiden. Ich habe vergessen, dass Sie sie ihre Programme nicht ausführen lassen. Was hast du dann erwartet?
Lass mich das überprüfen!
Ernsthaft, was schreibt ein Programm auf ein Whiteboard?
Ich freue mich, über Algorithmen zu diskutieren - da die Diskussion über abstrakte Dinge effizienter ist.
Aber Programme für echte Programmierer in ein Notizbuch schreiben? Ohne sie überhaupt laufen zu lassen? Was ist der Sinn? Das Abrufen des ersten Codeentwurfs macht nur ein Zehntel des gesamten Prozesses aus, gefolgt von Kompilieren, Validieren, Optimieren, Testen, Validieren usw. Wer machen wir Witze? Dies sind wesentliche Bestandteile des Workflows eines Programmierers. Es ist nützlich, den Code nur dann zu betrachten, wenn er dies alles bereits durchlaufen hat, und nicht vorher.
Es ist, als würde man den Künstler bitten, ein Pferd zu zeichnen und es dann in der Mitte der ersten Skizze anzuhalten, wenn man die vier vertikalen Linien der Beine sieht und beurteilt. Wie viel lernst du über sie?

Entdecken Sie tiefer
Fünf kurze Interviews? Oder zwei lange?
Mit fünf erhalten Sie fünf unabhängige Meinungen, was besser ist als zwei. Aber wie tief kannst du in 45 Minuten tauchen? Die Praxis zeigt, dass es ausreicht, 20 bis 30 Codezeilen zu schreiben und ein paar wirklich einfache Fragen zu stellen (was ist die Schwierigkeit? Wie teste ich?).
Der nächste Interviewer wiederholt einfach den gleichen Vorgang bis zum vorherigen. Das wird nicht lange dauern. Nicht für lange.
Warum nicht zwei machen und sie wirklich solide machen? Zum Beispiel eine vor dem Mittagessen und eine nach dem Mittagessen? Drei Stunden sind auch nicht viel, aber zumindest haben Sie die Möglichkeit zu sehen, wie eine Person den Code testet, wie sie ihn ändert, wie sie mit Anforderungen arbeitet - alles im bereits festgelegten Kontext, ohne alle 45 Minuten zurückzusetzen und von vorne zu beginnen ...
Mit so viel Zeit können Sie ihn sogar bitten, den Code so zu schreiben, als wäre er Teil eines Systems, nicht nur ein abstraktes algorithmisches Problem in einem Vakuum, und ein oder zwei weitere Dinge über seine tatsächlichen Eigenschaften zu lernen.
Und wenn Sie mehr Meinungen wollen? Haben Sie ein paar Interviewer im Raum, damit sie später streiten.
Entdecken Sie den Hintergrund
Ich habe vierzehn Jahre Erfahrung (zum Zeitpunkt des Schreibens, 2019). Ich würde gerne über funktionale Programmierung, verteilte Systeme, Konsens, Replikation, Co-Authoring, CRDT, parallele Architekturen, Frameworks für Benutzeroberflächen, Teamprozesse, Produktdesign und Benutzererfahrung sprechen. Ich habe praktische und Forschungserfahrung in all diesen Bereichen. Alle von ihnen sind von direktem Interesse für mehr oder weniger alle Internetgiganten, die ich interviewt habe.
Wurde ich jemals danach gefragt? Nein.
Ich erhalte fünf Mal hintereinander die Meldung "Stellen Sie sich vor, Sie haben eine Funktion, die eine Liste erstellt ...". Die fünf Aufgaben auf Schulebene sollten Ihnen eine angemessene Vorstellung davon geben, was? Wie genau habe ich Cormen et al. Gelesen? Um ehrlich zu sein, werden sie auch selten danach gefragt.
Passen Sie Ihr Interview stattdessen an die Erfahrung des Bewerbers an. Sprechen Sie darüber, was er gut kann. Sie haben die Möglichkeit, tiefgreifende Fragen zu stellen und mehr über den Erfahrungsstand und die Vorteile zu erfahren, die sich daraus für Ihr Unternehmen ergeben.
Machen Sie den Prozess reibungslos
Falsche Richtung? Verspätete Tickets? Antragsformular, bei dem der Original-Adobe Reader speziell installiert werden muss? Ein billiges Ultrabook mit einem ungewohnten Tastaturlayout und einem schlechten Webeditor ohne Verknüpfungen, die selbst auf einem lokalen Computer langsamer werden? Entschuldigung, ich bin im Büro des fähigsten IT-Unternehmens der Welt, oder?
In meinem Fall führte ein Personalvermittler fünf Interviews pro Tag durch. Jeden Tag fünf Leute. Multipliziert mit der Anzahl der Personalvermittler in diesem Unternehmen. Stellen Sie sich vor, alle diese Kandidaten sind leicht frustriert über den Prozess. Täglich. Jahr für Jahr.
Sie könnten denken, dass es keine Rolle spielt. Hängt davon ab. Es gab eine Folge der TV-Show "Louis", in der der Name des Comics an der Tür stand. Deshalb argumentierte er: Ja, dieser Fehler ist leicht zu machen, aber auch leicht zu beheben. Es spielt keine Rolle, es ist nur für einen Tag, wenn Sie auch nur ein bisschen besorgt sind, machen Sie es bitte richtig.
Ja, ich glaube, dass jeder es besser machen kann.

Abschließend
Wenn Sie Software-Ingenieure einstellen, sind die Praktiker großer Unternehmen nicht Ihre Freunde. Gesunder Menschenverstand, Fairness, Toleranz, echtes Interesse und Offenheit sind Freunde.
Gute Einstellung!