So wie ich es sehe, kostet ein Fehler (sogar ein Tippfehler oder ein fehlendes ";") in Ihrem Whiteboard-Code Sie oft einige Interviewpunkte. Wenn Sie dies vermeiden, wird zwangsläufig immer wieder ein Korrekturcode erstellt (Zeitverlust und möglicherweise neuronale Energie / Konzentration) oder sogar ein einfacherer (und damit weniger effektiver) Algorithmus verwendet - und beide Methoden sind wieder "kostspielig"!
Warum also nicht einfach schnell Code so elegant und effektiv schreiben, als stünde Ihnen ein (Unit-) Test-Framework zur Verfügung, und diesen dann ganz normal (nur auf dem Whiteboard) testen?
Hat jemand diesen Ansatz ausprobiert / gesehen? Ist die ganze Idee wert?
[das gilt natürlich auch für den Stift-Papier-Koffer]
Antworten:
Ich möchte unbedingt, dass Sie den Whiteboard-Code testen, den Sie schreiben sollen. Ich möchte, dass Sie laut sprechen, während Sie es schreiben, es durchsehen, die meisten von Ihnen begangenen Syntaxfehler erkennen und darauf hinweisen, wie es effizienter sein könnte. Tatsächlich ist das der Grund, warum man es am Whiteboard macht. Es ist keine One-Shot-Write-it-All-Out-Sache. Es ist eine Unterhaltung, die durch Code vermittelt wird und nicht über meinen Schreibtisch, sondern am Whiteboard stattfindet.
Hier sind einige gute Möglichkeiten, um den "Whiteboard-Codierungstest" nicht zu bestehen:
(zB: schreibe es in Fortran, interpretiere "display" oder "print" als "write to the event log", so etwas. Ich könnte es zulassen, wenn du mir vorher sagst, das wären deine Annahmen)
(Wir sind hier Berater. Ich teste das Verhalten von Beratern genauso wie das Codieren. Es ist nur richtig, den Kunden zu fragen, ob er tatsächlich eine Wahl hat. Es ist schwierig, die Gespräche mit Leuten zu kontrollieren, die Sie bezahlen. Dies ist Lektion 1. Es ist eine Markieren Sie gegen Sie in einem beliebigen Thema, aber für das spezielle "Sie stellen einen X-Programmierer ein, aber ich möchte nicht für Sie in X schreiben" haben Sie jetzt zwei große schwarze Markierungen.)
(Sie denken, ich übertreibe, aber ich hatte einen Mann, der mein Problem dramatisch verallgemeinerte. Wenn wir uns an das obige Beispiel halten, würde seine Lösung anstelle von 1 bis 5 eine beliebige Folge von ganzen Zahlen ergeben (woher ?, fragte ich mich) und war 5 Mal so lange wie bei anderen - und er vergaß, die Funktion, die die Arbeit ausgeführt hat, tatsächlich aufzurufen. Wiederholte Aufforderungen und der Hinweis, dass er sie durchlaufen habe, als wäre er der Debugger, führten nicht dazu, dass er bemerkte, dass die Funktion nie aufgerufen wurde.)
Ich sage immer "Magst du das?" "kannst du das verbessern?" "geh mir durch das" und dergleichen. In der Regel wird das fehlende Semikolon in dieser Konversation entdeckt oder das einzelne. Wenn nicht, bezeichne ich es normalerweise als nervenaufreibend.
Andere Dinge, von denen du denkst, dass sie für mich nicht wichtig sind:
Ich empfehle dringend, das Programmieren am Whiteboard zu üben. Ich warne die Befragten immer davor, dass sie dazu aufgefordert werden. Wenn Sie Zugriff auf ein tatsächliches Whiteboard haben, stellen Sie sich einige einfache Probleme und üben Sie diese dort. Es wird Ihrer Leistung und Ihrem Selbstvertrauen helfen.
Tut mir leid, ich weiß, dass ich im Gebiet TL; DR bin, aber hier ist die Sache - beim Codieren am Whiteboard geht es um mehr als nur um Codierung . Es ist ein Test, bei dem Sie mehr als nur die Syntax verstehen. Es gibt viele Verhaltensweisen guter Programmierer, die sich in Ihrer Antwort auf diese Aufgabe zeigen. Wenn Sie denken, dass es nur um das Codieren geht, verpassen Sie den Punkt.
In anderen Gesprächen über Whiteboard-Tests wurde mir gesagt, dass ich einen guten Kandidaten damit ablehnen könnte. Ehrlich gesagt, das ist ein Risiko, das ich eingehen möchte. Jede Einstellungsrunde besteht aus mehreren Personen, die ich einstellen könnte. Einige Leute mit hervorragenden Lebensläufen, die im Frage-und-Antwort-Teil des Interviews gut abschneiden, fallen am Whiteboard auseinander und können offensichtlich keinen einfachen Code in der Sprache schreiben, die sie zu kennen behaupten. Ich könnte einige von diesen gemietet haben. Jedes Werkzeug, das dies verhindert, werde ich weiterhin verwenden. Ich bin nie in einem Boot gelandet, das niemand mieten konnte, weil alle meine Kandidaten am Whiteboard durcheinander geraten sind und ich nicht damit rechne, dass ich es jemals tun werde.
quelle
Ich denke, Sie haben hier eine falsche Annahme gemacht. Es ist nicht zu erwarten, dass ein Kandidat, der Code auf ein Whiteboard schreibt, in der Lage ist, alle ';' perfekt an Ort und Stelle. Wenn Sie an einem Ort interviewen, der Sie dafür bestraft, dann schlage ich vor, dass es sich nicht um eine Organisation handelt, für die Sie arbeiten möchten :-).
quelle
Papier- oder Whiteboard-Tests sind äußerst unwirksam. Ich erinnere mich, dass ich einmal ein Interview hatte, in dem ich nach Fehlern in irgendeinem Code auf Papier suchen musste. Eine davon war, dass die Klasse von einer Schnittstelle geerbt wurde, aber die Implementierung eines Members fehlte. Ich wusste, dass dies wahrscheinlich einer der Fehler war, ich suchte danach und aus irgendeinem Grund konnte ich es einfach nicht sehen (obwohl ich erwähnte, dass ich das als eines der Probleme suchte).
Zufällig bekam ich diesen Job immer noch, aber ich musste darüber nachdenken, was passiert war. In einem realistischen Szenario für diese Art von Dingen werden in dem Moment, in dem etwas nicht stimmt (dies ist C # in Visual Studio) und das Ding nicht kompiliert. Ich überprüfe das nie im wirklichen Leben, weil es nie passiert (es ist unmöglich) und daher bin ich nicht mehr in der Lage, so etwas zu sehen. Fehlende Semikolons sind ein noch extremeres Beispiel dafür - in der realen Welt völlig unrealistisch, es sei denn, Sie schreiben im Editor und senden Ihren Code per E-Mail an eine andere Person, um ihn zu kompilieren!
Wenn jemand bittet, während eines Interviews ein Whiteboard zu verwenden, um etwas zu unterstützen, das er sagen möchte, dann ist das großartig, aber ich würde es niemals umgekehrt machen.
quelle
Ich habe das getan. In einem Interview wurde ich gebeten, eine Lauflängencodierung auf dem Whiteboard zu implementieren. Während ich einen Teil des Codes (mit Erklärung der Abkürzung) so abkürzte, dass er auf das Whiteboard passte, stellte ich mir immer noch eine Sammlung von Tests für dieses Gerät vor. und durchlief eine von ihnen, um meine Lösung zu validieren und zu zeigen, wie das Testen helfen würde. Mir wurde diese Position angeboten, daher gehe ich davon aus, dass das Testen hilfreich oder im schlimmsten Fall nicht ärgerlich war.
quelle
Ich benutze diesen Ansatz, wenn ich Tests für die Schule mache. Ich schreibe zuerst die Funktion, dann schreibe ich nebenher eine kleine Tabelle mit Eingaben, Ausgaben und Variablen. Ich habe auf diese Weise ein paar dumme Fehler entdeckt. Testen, auch auf Papier oder Whiteboard, ist immer besser als nichts zu testen.
Ich bin nicht einverstanden damit, in einer professionellen Umgebung über Semikolons auszurasten.
quelle
Es ist dumm, einen Kandidaten zu bitten, auf einem Whiteboard zu codieren. Es gibt moderne Tools wie Snippits, Jsfiddle und Intellisense. Außerdem sollte kein Techniker erforderlich sein, um sich die Syntax zu merken. Die Syntax wird nachgeschlagen und referenziert. Wenn Sie sich Code merken, haben Sie wahrscheinlich keine Zeit in Ihrer Karriere damit verbracht, das Codieren in einer Umgebung mit mehreren Mandanten, die Optimierung der Syntax oder sogar in einer gehosteten Umgebung zu erlernen.
quelle
Wenn ein Restaurant einen Koch einstellen möchte, bittet der Besitzer ihn nicht, ein "Pot au feu" mit einem Zahnstocher und einer Kappe zu kochen.
Bitten Sie einen Entwickler nicht, in einem Interview auf einem Whiteboard zu codieren.
quelle
Die Kodierung von Whiteboards ist schwierig. Das wurde mir erst vorgestellt, als ich von Disney interviewt wurde. Da ich nicht wusste, was mich erwarten würde und nicht in der Lage war, es zu debuggen, stolperte ich darüber und löste das Problem auf eine Art Pseudocode. Wenn sie fragten, konnte es laufen.
Ich meine sicher, es könnte sein, dass Sie nur die Syntaxfehler korrigieren müssen, richtig. Ich glaube, sie haben einen sehr guten Kandidaten verloren, wenn ich nicht wegen des Whiteboards eingestellt wurde. Ich schaue mir die Qualifikationen an und es sieht so aus, als ob ich für die Stelle qualifiziert bin und den Job machen kann. Ich übertreffe meinen jetzigen Job und wünschte, ich könnte mit ihnen zusammenarbeiten.
Danke für deine Eingabe Kate, ich habe jedes Wort gelesen. Es ist nur für mich als Programmierer, Whiteboard zeigt wirklich nicht Ihre Fähigkeiten. Ich bin ein großartiger Programmierer, der in mehreren Sprachen arbeitet. Ich kannte die Sprache, in der ich programmiert werden sollte, aber an der weißen Tafel vergaß ich plötzlich.
Ich baue eine komplexe Integration und Kreditkartenverarbeitung auf, aber auf einer weißen Tafel konnte ich mich nicht erinnern, wie ich überhaupt die richtige Syntax machen sollte.
Als Arbeitgeber mag ich die Whiteboard-Tests; Ich stelle jedoch einen Programmierer ein, dessen tatsächliche Fähigkeiten ich sehen möchte, wenn sie den Job machen. Es ist großartig, wenn sie kommunizieren können, aber ich muss sehen, dass sie in der Lage sind, Probleme zu lösen.
quelle