Was sind die Vor- und Nachteile für den Arbeitgeber von Code -Fragen während eines Interviews? [abgeschlossen

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/21230

  •  22-10-2019
  •  | 
  •  

Frage

Der Joel -Test Frage Nr. 11 lautet: "Schreiben neue Kandidaten während ihres Interviews Code?". Was sind Argumente für und gegen neue Kandidaten, während des Interviews Code zu schreiben und eine Entscheidung darüber zu treffen?

War es hilfreich?

Lösung

Ich sehe die Nachteile nicht. Ein Interview hat viele Teile, und ein Kandidat sollte einige Male "die Kette" befürworten.

Ich interviewe ~ 10 Leute wöchentlich. Ich schätze die Tatsache, dass HR die gesamte Hintergrundarbeit geleistet hat, sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr zu schätzen und mir viele Notizen zu präsentieren. Wenn sie zu mir kommen, ist es Zeit für mich, ihre Tests zu erzielen.

Die Tests hängen vollständig von der Position ab. Im Allgemeinen versuche ich zu untersuchen:

  • Allgemeine Programmierkenntnis. Können Sie Operatoren effektiv verwenden? Können Sie sich ein numerisches System mit einem Radix vorstellen, der nicht 10 ist?

  • Wissen Sie, wie wir das tun, was wir Sie anstellen?

  • Bewertung Ihrer Beiträge zu Open -Source -Projekten, die Sie aufgelistet haben

Ich versuche es kurz zu halten und macht Spaß. Wenn ich ins Büro gehe, greife ich die Antworten, schaue sie über und führe dann ein sekundäres Interview. Um engagiert zu werden, müssen Sie normalerweise drei Interviews durchstehen.

Ich masse auch fest, wie gut Sie sich in das Team einfügen, das Sie empfangen wird. Dieses Team zählt auf mich, um das effektiv zu tun.

Es ist eine Sache, Fragen in Meta -Form zu beantworten. Es ist eine andere, tatsächlich Code zu produzieren. Wenn ich Sie einstellen möchte, muss ich wirklich sehen, dass Sie Code produzieren.

Andere Tipps

Mit Entschuldigung bei Scott Whitlock:

Nachteile:

  • keiner

Profis:

  • Er spart viel Zeit und Herzschmerz auf der Straße, wenn Sie verhindern, dass Sie jemanden einstellen, der nicht programmieren kann
  • Erfordert, dass Sie eine technische Person im Interview haben

Wenn Sie einen Jongleur einstellen würden, wären Sie verrückt, wenn Sie ihn nicht für Sie jonglieren lassen. Oder ein Musiker, den Sie vorsprechen würden. Ansonsten bekommst du Sachen wie das toller Yo-yo "Master" K-Strass.

Auf einem Whiteboard durch etwas zu gehen, ist das Programmierer, das einem schnellen Demo -Jonglieren entspricht.

Ich finde es sehr nützlich, und ich mache es immer, aber da die Vorteile so gut abgedeckt wurden, werde ich nur über die (offensichtlichen) Negative diskutieren.

Ich denke, Code -Tests sind ziemlich unwahrscheinlich, dass Sie falsch positive Ergebnisse geben: Die Chancen sind niedrig, dass jemand, der tatsächlich keinen Code schreiben kann, in einem Interview geschafft wird, zumindest wenn Sie eine Ausweitung von Fragen mit zunehmenden Schwierigkeiten haben. (Vielleicht ist das wahrscheinlichste Szenario, dass sie betrügen, indem sie einen Freund fragen, ob es kein persönliches Interview ist.)

Die Probleme sind mehr auf der falsch negativen Seite: Codestests führen Sie dazu, die Person, die tatsächlich der beste Kandidat ist, abzulehnen?

Lampenfieber

Sie haben vielleicht jemanden, der tatsächlich ein wirklich guter Entwickler ist, aber in diesem Interview sehr nervös ist und im Wesentlichen Lampenfieber bekommen. Die Leistung unter Druck ist in gewissem Maße wichtig, aber der Umgang mit Lampenfieber ist kein wichtiger Teil des Programmierers (im Vergleich zu anderen Berufen), und es wäre bedauerlich, jemanden abzulehnen, der schlecht darunter leidet. Dies kann zusammengesetzt werden: Wenn die Person eine Frage nicht beantworten kann, die sie wissen, die sie beantworten sollte, können sie möglicherweise enger werden. Oder, Wie in dieser Frage, Sie haben das Gefühl, dass sie nicht gleichzeitig reden und codieren können.

Minderung: Beginnen Sie mit einigen Fragen zu Kenntnissen zu ihren Hintergrund-, Zielen usw., bevor Sie sich in technische Fragen einlassen. Beginnen Sie vielleicht mit einigen einfacheren technischen Fragen, damit sie etwas Schwung bekommen. Seien Sie während des Interviews kein Schwanz (streiten sich über Semikolonen usw.).

Es ist eine laute Maßnahme

Interessante Codefragen haben möglicherweise mehr als eine korrekte Antwort. Wenn eine Person eine korrekte Antwort schreibt und eine andere eine korrekte und effizientere Antwort schreibt, wie viel Gewicht sollten Sie das aufnehmen?

In gewissem Maße ist dies wie das Problem mit einigen "Puzzle" -Fragen: Die Person hat entweder den Einblick oder nicht und Sie erhalten ein nahezu binäres Ergebnis. Intelligenz beeinflusst wahrscheinlich die Wahrscheinlichkeit, diesen Einblick zu haben, aber nur wenige Male gibt Ihnen eine grobe Maßnahme.

Dies stört mich in Codefragen (obwohl ich sie immer noch benutze). Die beste Minderung, die ich mir vorstellen kann, besteht darin ein Teil des Problems. Das zu erkennen, dass das besser ist als nichts ist ein gutes Zeichen. Wenn sie dann mehr entdecken, können sie es effizienter oder eleganterer Code machen. Vermeiden Sie es so weit wie möglich, Fragen zu stellen, die binäre Antworten erhalten.

Es ist nicht wirklich repräsentativ

Das Programmieren ist keine Aufgabe, zehnminütige algorithmische Probleme nacheinander zu lösen: Es gibt viel mehr Arbeit über das Verständnis und das Entwerfen größerer Systeme und die Konzentration über längere Zeiträume, um nichts über die zwischenmenschlichen Fähigkeiten zu schweigen. Codefragen testen dies nicht wirklich.

Code -Fragen sind jedoch nicht die einzigen Fragen, die Sie stellen werden: Sie können ihren Hintergrund, ihre Referenzen, ihre Open -Source -Arbeit (falls vorhanden) betrachten, um Hinweise auf anhaltende Anstrengung, Kreativität und zwischenmenschliche Fähigkeiten zu finden.

Es ist eine notwendige, aber nicht ausreichende Bedingung: Wenn Sie keine kleinen Probleme lösen können und Sie keinen nicht trivialen Code schreiben können, ist das ganze Big-Picture-Denken in der Welt nicht Ich werde Sie zum produktiven Entwickler machen.

Jeder könnte das lösen

Nein, anscheinend nicht. Wie der berühmte Fizzbuzz -Beitrag Hinweise darauf, dass Probleme, die Sie vielleicht für eine triviale Falle halten, nicht nur neue Absolventen, sondern auch Menschen mit jahrelanger Branchenerfahrung sind. Ich weiß nicht warum. Entweder ist der Code-Test ein schlecht Algorithmischer Code (was möglich ist).

Es lohnt sich zu erkennen, dass Sie wirklich viel erledigen können, ohne algorithmische Code zu schreiben. Menschen verdienen viel Geld mit Apps, deren Wert in der Grafik- oder Geschäftslogik liegt, nicht in dem, was Sie als "Programmierung" bezeichnen könnten, und das ist in Ordnung. Aber wenn Sie tatsächlich Programmierer brauchen, passt es nicht gut.

Es kann nicht gut kalibriert sein

Wenn Sie eine Frage stellen, scheint die Antwort Ihnen möglicherweise sehr gut zu sein. Wenn Sie jedoch eine ansonsten vergleichbare Frage aus heiterem Himmel oder eine Frage gestellt haben, die nicht zu Ihren eigenen Interessen und Ihrem Hintergrund verzerrt ist, kann dies viel schwieriger sein.

Minderung: Führen Sie die Tests über einige Entwickler durch, die Sie bereits kennen, und sehen Sie, wie es ihnen geht. Vielleicht hat jemand in Ihrem Team, von dem Sie wissen, dass er sehr schlau ist, Probleme mit einem von ihnen und Sie können in Betracht ziehen, es anzupassen. Vielleicht denken sie an eine bessere oder andere Antwort.

Es ist zu sehr wie Trivia

Ich denke, Code -Fragen können sicherlich nach Trivia einsteigen, wenn Sie darauf bestehen, dass die Menschen dunkel apis auswendig kennen oder die Syntax perfekt erhalten oder sich an die genaue Definition eines nicht trivialen Algorithmus erinnern. Diese sind alle vernünftig, um sich auf Dokumente, Websuche oder Compiler -Fehler zu verlassen, um sie aufzunehmen, und haben wenig mit echtem Fachwissen zusammen. Nicht einmal zu wissen, wo die API wahrscheinlich ist, ist vielleicht ein Hinweis, dass die Person sie in letzter Zeit nicht benutzt hat, aber das ist nicht unbedingt ein Problem, solange sie nicht auf ihrem Lebenslauf liegen.

Die Antwort darauf ist also ziemlich einfach: Stellen Sie keine trivialen Fragen und lassen Sie sich nicht auf triviale Fehler aufhalten. Erinnern Sie den Kandidaten, wie die API genannt wird, oder lassen Sie ihn nachschlagen. Syntaxfehler reparieren; Testen Sie nicht auf Personen, die sich Datenstrukturdefinitionen auswendig lernen.

Wie vergleichen Sie?

Wenn Sie zwei Kandidaten haben und beide die Fragen gut beantworten, wie wählen Sie dann zwischen ihnen aus? Sie könnten den auswählen, der am schnellsten fertig war, aber vielleicht fängst du an, Hasen über Schildkröten zu pflücken. Sie könnten eine weitere Runde machen und viel schwierigere Fragen stellen, aber ich bin mir darüber auch nicht sicher. Vielleicht geben Sie ihnen nur ein A+ und versuchen, zwischen ihnen nach anderen Kriterien zwischen ihnen zu wählen (oder versuchen, das Geld zu finden, um beide zu mieten.)

Ein Zusammenhang, den ich mir vorstellen kann, ist, dass es schwierig ist, vor anderen Leuten laut zu "zu codieren". Ich fällt es schwer, sogar mit jemandem zu tippen, der über meine Schulter schaut, und ich bin nicht allein. Ich merke, wenn mich jemand zu seiner Workstation anruft, um bei etwas zu helfen, fangen er plötzlich an, Tippfehler zu machen, die falsche Code-Abschluss auszuwählen, sogar ausgesprochene Fehler-keine davon hätten er gemacht, wenn ich nicht genau dort gesessen hätte. Zur Hölle, ich habe gesehen, wie Leute das Menü für Cut & Paste -Operationen verwenden, nur weil sie beobachtet wurden. Dies ist kein normales Verhalten, und die Codierer, über die ich spreche, sind exzellente Programmierer und außerdem ziemlich klug.

Ich hatte kürzlich ein Interview, in dem mich der Interviewer fragte, wie ich eine bestimmte Operation codieren würde, und sagte: "Zeig mir einfach die Mathematik." Nun, ich musste zuerst über das Problem nachdenken, bevor ich in die Mathematik kam, also ließ ich mich säumen und hielten. Was ich zunächst auf das weiße Brett legte, war peinlich und ich hatte das Gefühl, dass ich zu diesem Zeitpunkt verloren habe. Ich bekam schließlich den A-Ha-Moment und fand die Antwort (tatsächlich, als es mir schließlich in den Sinn kam, was er war Ja wirklich fragte), aber das "Chaos", das ich bevor ich dort bin, machte mich sehr unwohl. Trotzdem bekam ich den Job, aber wenn der Interviewer weniger geduldig gewesen wäre, hätte ich vielleicht nicht.

Ich denke, wenn Sie den Befragten eine Codierungsaufgabe geben, geben Sie ihnen allein etwas Zeit, um sie auf einem Computer auszuarbeiten, vielleicht sogar in einer IDE, mit der sie vertraut sind. Lassen Sie sie den Code für Sie schreiben und sprechen Sie dann darüber. Fragen Sie sie, warum sie die Dinge auf eine bestimmte Weise gemacht haben und ob ein anderer Weg möglicherweise nicht besser ist. Sie werden mehr von dieser Art von Prozess herausfinden, als sie darum bitten, (im übertragenen Sicht) in eine Tasse direkt vor Ihnen zu pinkeln.

Nachteile: Keine. Jedes Mal, wenn Sie einen PC einrichten, einen Codetest entwickeln und diese überprüft haben, sparen Sie in Zukunft unerzählte Kopfschmerzen.

Vorteile: "Vertrauen, aber verifizieren" - Ronald Regan. So oft habe ich von Menschen gesehen und gehört, die endlich von einer Position losgelassen habe, wo man im Interview denkst, dass Sie einen Rockstar bekommen würden. Der Beweis liegt im Pudding; Ich möchte sehen, was sie tun können. Es wird darstellen, was passiert, sobald Sie Zeit und Geld investieren, um jemanden einzustellen und ein neues Projekt vor sich zu stecken.

Nachteile:

  • Erfordert, dass Sie eine technische Person im Interview haben

Profis:

  • Er spart viel Zeit und Herzschmerz auf der Straße, wenn Sie verhindern, dass Sie jemanden einstellen, der nicht programmieren kann

Als ich für meinen aktuellen Job interviewte, erhielt ich eine Liste von Fragen, die vom Personalvermittler Code schreiben sollten. Ich war sehr beeindruckt, weil die Fragen offensichtlich von jemandem geschrieben wurden, der ein tiefes Wissen über SQL hatte, also funktioniert es in beide Richtungen.

Du Ja wirklich Möchten Sie, dass die Person den Code im Interview schreibt - noch besser, lassen Sie sie für x Zeiten eine Zeit mit einem Mitglied in Ihrem Team kombinieren (was auch immer Sie sich in Zeit/Arbeitskräften bequem leisten können).

Es ist so ziemlich eine der einzigen Möglichkeiten, wie Sie erkennen können, ob diese Person codieren kann oder nicht.

Ich bevorzuge die Paarprogrammierung leicht, da sie ihre Teamarbeit zeigt, gibt ihnen eine echte IDE zum Arbeiten und lässt sie an einem „echten“ Problem arbeiten (die andere Person in dem Paar kann sie an allen Umweltspezifikationen anfeuern, die der Befragte konnte nie vernünftigerweise von übergeordnet sein.

Wir haben begonnen, diese Einstellungsrichtlinie zu verwenden, und wir sind sehr zufrieden mit den Ergebnissen.

Sie beurteilen einen Vogel nach seinen Federn und einen Programmierer nach seinem Code.

Als ich mit der aktuellen Firma begann, für die ich arbeite, baten sie mich, einen C -Code zu schreiben, der das Paritätsbit einer binären Eingabe generiert oder überprüft (je nachdem, ob Sie codieren oder decodieren). Dies war eine Interviewfrage genau, weil diese Art von Problemen während der Arbeit gelöst werden. Natürlich denke ich an nicht Paritätsprüfung, sondern an eine niedrige Arbeit.

Alle bisherigen Antworten (die ich gelesen habe) hat die Tatsache nicht angesprochen, dass Der Joel -Test ist nicht (gerecht) eine Best -Practice -Liste für Unternehmer Aber eine Checkliste, um Ihre zu erleichtern Bewertung eines potenziellen Arbeitgebers.

Die Sache ist ... Wenn sie ihre Kandiates gründlich testen, dann stellen sie wahrscheinlich Leute ein, die ihre Sachen kennen ... das bedeutet für dich

  1. Weniger Kopfschmerzen und auch
  2. die erhöhte Chance von Lernen Etwas von Ihren Mitarbeitern

Anstatt dass er nach ihnen fixiert wird ...

Ich würde sagen:

Profis

  • Zeigt, dass der Kandidat mindestens ein passables Programmierkenntnis hat, da Lebensläufe hergestellt/verziert werden können
  • Wenn der Interviewer den Code mit dem Kandidaten diskutiert, im Gegensatz zu einem schriftlichen Test, könnte dies ein guter Indikator dafür sein Anpassungen für den Kandidaten

Nachteile

  • Könnte für Kandidaten beleidigend sein, wenn die Fragen einen roten/trivialen Unsinn sind, der während des Jobs niemals auftauchen würde (z. "Schreiben Sie eine Blasenart", wenn alle modernen Frameworks, die man für den Job verwenden würde "Wenn es ein Einbau gibt Reverse Methode oder ähnlich oder für schriftliche Tests wie "Was sind die Argumente an die Foo Methode der Bar Klasse ", wenn ein Idiot googeln oder die Dokumentation verwenden kann) im Gegensatz zu Architektur-/Designfragen, die zeigen, dass der Kandidat kann Aufgaben zuende bringen und Geschäftsprobleme lösen.

Ein Profi ist, dass es zeigt, dass jemand grundlegendes Programm über Programmierung oder was auch immer hat (das letzte Mal, als ich darauf gestoßen bin, war ich überrascht, wie einfach die SQL -Frage war). Es kann auch als Grundlage für eine technische Diskussion dienen und gefragt, warum der Kandidat so und dergleichen getan hat und wie sie verbessert werden könnte.

Es braucht Zeit im Interview, das für andere Dinge verwendet werden könnte. Darüber hinaus ist das Schreiben von Code auf einem Whiteboard keine natürliche Umgebung, und einige Menschen werden mehr und weniger ernsthafte Probleme damit haben. Es kann dazu führen, dass Sie einen Entwickler vermissen, der ohne normale Werkzeuge oder Referenzen nur nervös wird.

Programmierung ist eine hochtechnische Fähigkeit mit einer Reihe klarer "Erbringung". Entweder kann ein Kandidat sie liefern oder nicht. Es gibt also keine "Nachteile", technische Fragen zu stellen. Es ist vollständig zu sagen: "Zeigen Sie mir einen Code für diese Anwendung oder" Zeigen Sie mir den Code für eine Anwendung, die Sie bereits geschrieben haben. "

Nicht zu tun, könnte zu einem Ergebnis wie dem folgenden führen: Ein reicher Mann interviewte einen Tutor, um seinen Kindern beizubringen, Schach zu spielen (als eine spendende Übung). Der Tutor öffnete ein kariertes Brett und begann über die 64 Quadrate zu sprechen, berührte aber kein Schachstück. Der Vater drückte die Zeit und stellte trotzdem den Tutor ein. Und der Tutor brachte den Kindern bei, Checker zu spielen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
scroll top