Eine Programmieraufgabe schreckt Kandidaten ab, sollten wir sie fallen lassen?

Es ist das erste Mal, dass ich HR mache, und wir suchen einen Entwickler. Das Auswahlverfahren besteht aus drei Runden: Technisches Telefoninterview, Programmieraufgabe (0,5 - 1 Std. Herausforderung) und schließlich ein Interview mit dem oberen Management und mir.

Das Problem, das ich habe, ist, dass, wenn ich einigen Kandidaten (meistens frischgebackene Absolventen mit bereits 1 oder 2 technischen Praktika ) die Programmieraufgabe gebe, sie diese nicht nur nicht im vorgegebenen Zeitrahmen (eine Woche) abschließen, sondern auch Ich höre nichts mehr von ihnen, es sei denn, ich verfolge sie.

Ich denke darüber nach, die Programmieraufgabe fallen zu lassen, aber ich denke wirklich, dass es helfen kann, festzustellen, wer die in seinem Lebenslauf aufgeführten Sprachen wirklich beherrscht.

Wie kann ich unseren Einstellungsprozess verbessern?

AKTUALISIEREN, DA DIESE FRAGE GEPOSTET WURDE

Zum größten Teil werden viele Kandidaten von den Programmiertests abgeschreckt, was sehr frustrierend ist, da ich VIELE Kandidaten durchgehen muss, um einen zu finden, der dazu bereit ist. Nachdem dies gesagt wurde, habe ich einige gefunden, die bereit sind, sie zu tun, und im Allgemeinen habe ich Folgendes festgestellt:

a) Es zeigt, dass sie eine gute Einstellung zum Unternehmen und zur Rolle haben , wenn sie bereit sind, die Extrameile zu gehen , um sie zu erfüllen.

b) Sie haben Programmierfähigkeiten. Sicher, sie haben vielleicht geschummelt, aber wenn sie es versucht haben, ist eine gute Einstellung für uns viel wichtiger, da sie viel leichter zu handhaben sein werden.

Seitdem habe ich einen Diplom-Entwickler eingestellt, der die Übung versucht und erfolgreich abgeschlossen hat. Er erfüllte auch alle zusätzlichen „Bonuspunkte“ für die Aufgabe. Es ist noch zu früh, um zu sagen, wie gut er in seiner Rolle ist, da er erst vor kurzem angefangen hat.

Manchmal vermeide ich es , Entwicklern diese Übung zu geben, wenn sie bereits ein starkes Portfolio haben, das für gute Marken arbeitet, und eine Erfolgsbilanz. Denn um bei den großen Marken einzusteigen, müsste er eigene Aufnahmetests machen.

ZWEITES UPDATE, SEIT DIESER FRAGE GEPOSTET WURDE

Aus dem Diplom-Entwickler ist ein Star-Mitarbeiter geworden. Wir haben ihn behalten und ihm eine Gehaltserhöhung gegeben.

Wenn jemand nicht die Mittel hat, um eine Aufgabe für ein Vorstellungsgespräch zu erledigen, würde ich nicht erwarten, dass er Aufgaben als Angestellter erledigt. Anders wäre es, wenn Sie Feedback erhalten, dass die Aufgabe für den vorgegebenen Zeitrahmen zu schwierig ist, aber ich nehme an, dass sie überhaupt kein Feedback geben. In welchem ​​Land sind Sie/aus welchem ​​Land nehmen Sie Kandidaten auf? So oder so glaube ich nicht, dass das Entfernen eines Tests für eine Anstellung in diesem Fall ein gültiger Weg nach vorne ist, es hört sich so an, als würden Sie die falschen Kandidaten jagen.
Aus eigener Erfahrung als Einsteiger-Entwickler sprechend, ist die Nachfrage so hoch, dass ich mit einem Online-Programmiertest jeden Vorstellungsgesprächsprozess überspringen kann und problemlos ein gutes Angebot erhalte (Anmerkung: kein technisches Vorstellungsgespräch mit Programmierfragen , das sollten Sie tun, ich beziehe mich auf einen 2-4-stündigen Test, der während meiner Freizeit durchgeführt wurde und nach dem ich möglicherweise nie wieder etwas höre oder nicht) Es genügt zu sagen, dass die Nachfrage nach wirklich erfahrenen Leuten wahrscheinlich noch höher ist. Warum sollten Sie durch Ihre Reifen springen, wenn sie jede Woche, wenn nicht jeden Tag E-Mails von Personalvermittlern erhalten?
Vorstellungsgespräche mit Programmieraufgaben vermeide ich, es sei denn, der Job ist überdurchschnittlich. Ich sehe keinen Grund, ein paar Stunden mit einem Unternehmen zu verbringen, für das ich ein Vorstellungsgespräch führe, wenn man bedenkt, dass ich viele Vorstellungsgespräche ohne Tests bekommen kann.
Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .
Vertrauen Sie mir, Sie wollen Kandidaten abschrecken, die nicht programmieren können. Möglicherweise möchten Sie den Inhalt und/oder Ihren Präsentationsansatz überarbeiten (laden Sie sie beispielsweise zu einem Vorstellungsgespräch vor Ort ein, paaren Sie sie mit einem Programmierer und lassen Sie sie eine Stunde lang in einem Raum mit einer Workstation und einem Paarprogramm sitzen die Übung). Aber es ganz loszuwerden ist eine sehr schlechte Idee .
Persönlich sehe ich es als rote Fahne an, dass Kandidaten nicht als Teil ihres Vorstellungsgesprächs kodiert werden. Wenn potenzielle zukünftige Kollegen an den Arbeitsplatz kommen, ohne technische Fähigkeiten zu zeigen, und ich dabei helfen werde, ihren Code zu pflegen, könnten das schlechte Zeiten sein. Außerdem ist dies einer der Punkte beim Joel-Test .
Ich glaube, dass die Quelle Ihrer Kandidaten entscheidend ist. Personalvermittler sind an dem einfachen Ausweg interessiert. Vor Ort werden sie (umständlich) dafür bezahlt, Menschen von Sozialversicherungsbeiträgen zu befreien, also konzentrieren sie ihre Bemühungen darauf. Wenn Sie kein SS bekommen, sind sie einfach nicht interessiert (Zitat „Vergeuden Sie nicht Ihre Zeit, verschwenden Sie nicht unsere Zeit“.) Folglich werden mein Abschluss und meine 40-jährige Erfahrung von Personalvermittlern niemals potenziellen Arbeitgebern präsentiert - und die meisten Arbeitgeber bestehen darauf, ausschließlich Personalvermittler einzusetzen.
Dieser Blog-Beitrag zum Thema „Technische Interviews bringen mich zum Weinen“ von einem ehemaligen Entwickler der Google Now Khan Academy ist der Meinung, dass eine Aufgabe, für die Sie eine Woche Zeit haben, bei weitem die beste Art ist, technische Interviews zu führen.
@FreeAsInBeer Ich mache genau das Gegenteil. Ich glaube, dass ein Mitarbeiter nicht beurteilt werden kann, wenn er keine sinnvolle Arbeit leistet, also würde ich lieber in ein Unternehmen eintreten, das auf Probe einstellt, als mit jemandem zusammenzuhängen, der nicht feuerbar ist, weil „er einen abstrakten Test übertroffen hat, also muss er es sein gut in völlig unabhängigen Szenarien aus dem wirklichen Leben". Was ich bei einem Junior besonders suche, ist, dass sein Code für den Rest des Teams leicht lesbar und wartbar ist, nicht dass er das P-vs-NP-Problem an seinem ersten Arbeitstag löst.
@Agent_L Ja, eine Probezeit zu haben ist immer eine gute Idee, und das machen wir hier. Das Problem ist, dass Sie bis zu dem Zeitpunkt, an dem Sie herausgefunden haben, dass sie nicht gut sind, 3-4 Monatsgehälter ausgegeben und Zeit verloren haben. Lohnt es sich?
Was sagt Ihnen eine Code-Challenge über einen Kandidaten? Nichts. Selbst wenn Sie es im Büro als Teil eines regulären Vorstellungsgesprächs tun, werden Sie ihnen entweder a) ein triviales Problem präsentieren, das Ihnen nichts sagt, oder b) Sie ihnen ein Problem präsentieren, das nicht vernünftig sein kann innerhalb weniger Minuten abgeschlossen , es sei denn, der Kandidat hat es zuvor gesehen. Was wiederum nichts aussagt. „Bestimmen Sie, ob eine verknüpfte Liste eine Schleife enthält“ ist eine solche „Fallfrage“, die unangemessen ist und die Inhaber eines Doktortitels in Informatik seit 30 Jahren ratlos macht, aber die Lösung ist einfach, sobald sie bekannt ist.
Du verfolgst das nicht zufällig, oder? In einer idealen Welt bin ich sicher, dass es der perfekte Weg ist, Programmierer aus der Perspektive eines Arbeitgebers einzustellen, aber die meisten talentierten Programmierer werden vor #5 verschwunden sein. Niemand möchte, dass seine Zeit mit etwas verschwendet wird, das nicht garantiert ist (und lassen Sie uns nicht erwähnen, dass in den USA ein so schwieriger Einreiseprozess letztendlich durch die zweiwöchige Kündigungsfrist untergraben wird, bevor jemand entlassen wird).
@Cat'r'pillar, weil Sie dann wissen, dass Sie mit Leuten zusammenarbeiten werden, die die Fähigkeiten haben, den Test zu bestehen, und dass es eine gewisse Herausforderung geben wird, dort zu arbeiten. Wenn dich die Stelle gar nicht so sehr interessiert, gibt es natürlich keinen Grund, zu einem Vorstellungsgespräch zu gehen.
@ Draco18s nicht unbedingt, Sie können "einfache" Aufgaben entwickeln, die viel Technologie verwenden, um ein Beispiel zu nennen, ein Feedback-Formular, bei dem die Daten an einen Server gesendet werden. Das allein erfordert AJAX, Jquery, Javascript, CSS, HTML und JSON. Wenn der Kandidat das kann, ist es sicher nicht die komplexeste Sache aller Zeiten, dann weiß ich zumindest, dass er alle oben genannten Technologien bis zu einem gewissen Grad kennt, was das Risiko reduziert.
@bobo2000 Oder Sie fragen den Kandidaten direkt oder schauen sich sein Portfolio an. Wenn sie sich auf eine Full-Stack-Position bewerben und Full-Stack-Erfahrung haben, was sagt Ihnen die Code Challenge eigentlich, was Sie noch nicht wussten?
@Draco18s, das ist Teil des Problems, wenn ich Bewerbungen erhalte, haben sie oft kein Portfolio oder keinen Github-Account
@bobo2000 Haben sie einen beruflichen Werdegang? Ist eine ihrer Referenzen ein Manager aus einer ähnlichen Position, die sie zuvor innehatten? Wenn "nein", dann sind sie zu jung für die Position, für die Sie einstellen, und wieder sagt Ihnen die Code-Herausforderung nichts. Es sei denn, Sie stellen einen Junior-Entwickler ein, in diesem Fall benötigen sie nicht alle diese Fähigkeiten.
@Draco18s Ich stelle gerade Absolventen ein, die ein oder zwei technische Praktika hinter sich haben, und um ehrlich zu sein, ist es nicht immer der beste Ansatz, einen früheren Manager zu fragen, wenn der Bewerber mit ihm nicht zurechtkam, aber ansonsten ein fähiger Programmierer war.
@bobo2000 Zwischenmenschliche Beziehungen sollten bei der Frage nach technischen Fähigkeiten ausgeschlossen werden können. Eine Code-Challenge ist immer noch das falsche Werkzeug für die anstehende Aufgabe. nomachetejuggling.com/2014/06/24/…
@Draco18s nicht alle Manager sind ethisch – ich habe einmal mit einem gearbeitet, der ziemlich rachsüchtig war, weshalb ich das, was sie sagen, mit einer Prise Salz nehme.
@bobo2000 Wenn der Manager nachtragend ist, wird der Kandidat ihn nicht als Referenz angeben. Ich meine es ernst.
@aroth, aber diese Art von Aufgabe schreckt nicht aufgrund ihrer Fähigkeiten ab, sondern wählt Personen aus, die ihre Zeit nicht so sehr schätzen, und kann tatsächlich die Qualität der Kandidaten beeinträchtigen
@Draco18s Wenn es dein einziger Job ist, hast du manchmal keine große Wahl.
@bobo2000 Das mag sein, aber die Code-Herausforderung sagt Ihnen immer noch nichts. Es gibt keine Antwort, die für alle Personen, die an der Überprüfung der Antwort beteiligt sind, objektiv richtig ist.
@JamesRyan oder es wählt diejenigen Kandidaten aus, die wirklich für dich arbeiten wollen.
@bobo2000 nein, es wird nicht unterschieden zwischen denen, die wirklich für dich arbeiten wollen, und denen, die wirklich für irgendjemanden arbeiten wollen. Und außerdem wissen sie noch nicht, bis sie tatsächlich für Sie gearbeitet haben, ob sie gerne für Sie arbeiten werden, also wählen Sie auf diese Weise auch keine begeisterten, glücklichen Mitarbeiter aus.
Sie können 90 % in 1 Stunde von dem lernen, was Sie in mehreren Stunden lernen werden. Den Rest werden Sie erst sehen, wenn sie ein paar Wochen Zeit hatten, sich einzugewöhnen und Ihre Arbeitsweise (oder auch nicht) zu lernen. Diese langwierigen Herausforderungen sind Zeitverschwendung und ehrlich gesagt unhöflich, um die Leute durch Reifen springen zu lassen. Unternehmen wie Facebook und Google müssen Tausende von Bewerbern ausmerzen, Sie nicht.
@RonBeyer Wenn ich als Kandidat glaube, dass die Aufgabe zu viel Zeit in Anspruch nimmt, werde ich keine Zeit damit verbringen, Feedback zu geben. Was bringt mir das? Fahren Sie einfach mit der nächsten Gelegenheit fort. Ist meine Entscheidung gut oder schlecht für das Unternehmen? Keine Ahnung, egal. Verbringen Unternehmen viel Zeit damit, Kandidaten Feedback zu geben, mit denen sie sich entschieden haben, nicht weiterzumachen?
Ich habe Kodierungstests gesehen, die richtig durchgeführt wurden – aber nicht als Filterpass vor dem Vorstellungsgespräch. An einem Ort, an dem ich gearbeitet habe , haben sie mich nach 80 % der technischen Interviews in einen Raum mit einer VM-Entwicklungsumgebung, einem Anforderungsdokument und einer Testsuite gebracht, die speziell für den (eher spezialisierten) Job erstellt wurde, für den sie mich eingestellt haben. Als es fertig war, hatten alle Ingenieure Gelegenheit, mich nach meiner Wahl zu fragen. Dies war (1) respektvoll gegenüber meiner Zeit (sie baten mich nicht, Zeit zu verbringen, bis sie meine eigene versenkt hatten) und (2) zeigten Anstrengung ihrerseits (das Bauen dieses Werkzeugs für eine Position, die sie nur eine besetzten) .
... wenn ein Programmiertest so strukturiert ist, wo die Ingenieure des Unternehmens ihre eigene Zeit investieren - und er wird nur nach vorherigen Interviews präsentiert -, liest es sich weniger als "Wir respektieren Ihre Zeit als Kandidat nicht". , und mehr als "wir kümmern uns wirklich, wirklich darum, ein erstklassiges Ingenieurteam aufzubauen". Ich nahm diesen Job an (der in einem Geschäft war, das ein erstklassiges Team hatte), nachdem ich an vielen anderen Orten vorbeigekommen war, an denen ich die Code-Test-Sache vor dem Telefonanruf ohne Respekt vor Ihrer Zeit durchgeführt hatte.
Wenn Sie erwarten, dass der Kandidat für Sie programmiert, bezahlen Sie ihn für seine Zeit. Nur weil sie nach einem Job suchen, heißt das nicht, dass sie noch keinen Job haben oder dass ihre Zeit nicht wertvoll ist. Wenn Sie darüber nachdenken, verbrennen Sie bereits bares Geld in Form von Mitarbeiterstunden, nur um sie zu interviewen. Sie bitten also den Kandidaten, weitere 2-4 Stunden zu „interviewen“, und sparen sich dennoch die Zeit, die Sie an Mitarbeiterstunden gekostet hätten, um ihn für weitere 2-4 Stunden zu interviewen. Wenn Sie also den Kandidaten für seine Teststunden bezahlen, geben Sie kein Geld mehr aus.
@CharlesDuffy-Vor-Ort-Tests funktionieren nur, wenn sich der Kandidat im selben Land befindet. Wenn Sie Kandidaten im Ausland interviewen, die nach einer Stelle in Großbritannien suchen, ist dies keine praktische Lösung.
@bobo2000 Ferninterviews mit Kandidaten aus einem anderen Land sind sehr selten und werden im Allgemeinen nur durchgeführt, wenn sehr spezielle Fähigkeiten erforderlich sind. Das Risiko, dass sie Schwierigkeiten beim Umzug haben, ist viel zu hoch und in den meisten Fällen gibt es einen gleichwertigen lokalen Bewerber.
@JamesRyan ist es eigentlich nicht, gerade viele Absolventen machen technische Praktika im Ausland, und die gehen auf die besten Schulen. Ich habe vor ein paar Tagen einen interviewt, der ein Cambridge-Absolvent ist.
@bobo2000 Nun, diesen Unsinn auf Absolventen zu ziehen, ist sogar noch schlimmer, weil sie nicht die Erfahrung haben, um zu testen. Auch wenn sie einen Cambridge-Absolventen haben, würden sie sich in Großbritannien um Jobs bewerben, bevor sie die Uni beenden, also denke ich, dass Sie Müll reden.
@JamesRyan Viele der Absolventen, die ich interviewe, haben 1 oder 2 technische Praktika absolviert, tatsächlich ist der Cambridge-Absolvent derzeit in Hongkong, um eines zu absolvieren. Im Rahmen seines Praktikums baut er eine RESTful API.
Mussten Sie eine 2-stündige HR-Aufgabe erledigen, um zu beweisen, dass Sie gut im HR sind, bevor Sie eingestellt wurden?
@DA. Das ist nicht meine berufliche Rolle, ich bin PM. Ich mache es nur zufällig, da es sonst niemanden gibt ... und das ist nebensächlich, wenn Sie ein selbstbewusster Programmierer sind und daran interessiert sind, für das Unternehmen zu arbeiten, was ist die große Sache? Wenn überhaupt, wenn sie es nicht tun, werden sie wahrscheinlich ausgesondert, da sie nie so sehr daran interessiert waren, für das Unternehmen zu arbeiten (oder nicht so zuversichtlich in ihre Programmierfähigkeiten).
@bobo2000 Punkt ist, dass die meisten Menschen keine Profis brauchen, die mehrstündige „Tests“ absolvieren, um „ihren Wert zu beweisen“. Idealerweise verschafft man sich durch Vorstellungsgespräche, Lebensläufe, Portfolios, Ausbildung und Referenzen ein gutes Bild des Kandidaten. Dass wir Entwickler dazu verpflichten, ist im Allgemeinen wirklich eine seltsame Sache.
@DA und was machst du, wenn sie kein Portfolio, keinen Github-Account haben, sondern nur einen Lebenslauf mit einem Haufen unbekannter Unternehmen darauf? Woher wissen Sie, dass der Typ bei x, y gut geschriebenen Code geschrieben hat?
@bobo2000 wende das auf jeden Beruf an
@DA. Ich habe mir gerade den Lebenslauf eines früheren Mitarbeiters angesehen, der entlassen wurde, nachdem er seit seinem Eintritt in das Unternehmen viel darüber gehört hatte. Er hatte alle Fähigkeiten auf dem Papier, TDD/BDD, Ruby on Rails, Rspec, aber als es darauf ankam, wurde er gefeuert, weil er arm war ... die schlechte Einstellung kostete das Unternehmen Rekrutierungszeit, Ressourcen und Code von schlechter Qualität die inzwischen umgeschrieben wurde. Damals gab es kein Screening-Verfahren. Entwickler werden viel zu gut bezahlt, um nicht überprüft zu werden. Wenn sich jemand beworben hat und schlecht in der Verwaltung war, ist das weniger schlimm, da er kein digitales Haus baut
@ bobo2000 wenden Sie das jedoch noch einmal auf JEDEN Profi an. Woran erkennt man, dass ein Arzt gut operiert? Woher weißt du, dass ein Pilot gut Flugzeuge fliegen kann? Ich sage nicht, dass Tests schlecht oder gut sind. Ich weise nur darauf hin, wie seltsam es scheint, dass Entwickler einer der wenigen Berufe zu sein scheinen, in denen wir das starke Bedürfnis verspüren, sie immer zu testen. Ich würde argumentieren, dass die Einstellung eines Entwicklers, der auf dem Papier gut aussah, aber in Wirklichkeit nicht ein Versagen des Einstellungsmanagers war, der möglicherweise die Referenzen nicht vollständig überprüft oder ein ausführliches Interview gegeben hat. Ein letzter Punkt ist, dass eine Person in einem Test großartig abschneiden und dennoch die täglichen Metriken nicht erfüllen kann
@DA. denn ein schlechtes Entwicklungsteam kann ein Tech-Startup ruinieren, bei dem die Qualität des Produkts ein Schlüsselfaktor für seinen Erfolg ist. Ohne jegliche Form von Tests kann der Entwickler das Interview beschuldigen; Referenzen können voreingenommen sein (ihr Freund könnte die Referenz geben) und obwohl ich zustimme, dass ein Test sowieso nicht die Antwort ist, werden Sie in Kombination mit einem technischen Telefoninterview wahrscheinlich eine wirklich gute Vorstellung von den Fähigkeiten des Kandidaten bekommen. Es geht darum, das Risiko einer Fehlbesetzung zu verringern, nicht zu beseitigen.
Haben Sie Lust, eine Kopie eines der Beispiele zu zeigen? Ich bin wirklich gespannt, wie schwer es ist. In jedem Fall, wie reichen die Kandidaten ihre Ergebnisse ein? Ich finde ideone.com eine großartige Möglichkeit, einfache Tests durchzuführen. Sie erstellen eine Vorlage mit der "Eingabe", fügen sie in ihren Code ein und liefern Ihnen die Quelle und die "Ausgabe". Halten Sie Einsendungen fest, um zu sehen, ob Kandidaten nur von CareerCup oder StackOverflow kopiert und eingefügt werden. Versuchen Sie, große einstündige Probleme in 3-5 Teile zu zerlegen, damit die Kandidaten nicht das Gefühl haben, dass es sich um eine Alles-oder-Nichts-Prüfung handelt.
@Dogbert Kann es nicht öffentlich veröffentlichen, aber ich strukturiere den Test so, dass ich die Kernaufgabe habe und dem Kandidaten Bonuspunkte für zusätzliche Aufgaben vergebe. So war es zum Beispiel für den Javascript-Test ähnlich, den Test mit Jquery, Javascript, CSS, HTML, Ajax zu absolvieren, wo Bonuspunkte für das Absolvieren des Tests in einem JS-Framework wie AngularJS vergeben werden. Der Test selbst wird eine sehr einfache Funktionalität sein. Ich hatte kürzlich einen Bewerber, der die Aufgabe in AngularJS erledigte, obwohl es nicht erforderlich war, sehr beeindruckt von seiner Einstellung. Habe ihn gleich eingestellt.
@Dogbert Ich denke auch, dass ich vor allem nach jemandem suche, der es zumindest versucht, da es mir eine gute Vorstellung von seiner Einstellung zu der Rolle gibt und wie sehr er es will.
@bobo2000 Interessant, dass Kandidaten den Test nicht einmal versuchen würden. Nun, vielleicht ist es ein besserer Filtermechanismus, als Sie anfangs dachten. :)
@Dogbert, dass der Test am Ende gut für uns funktioniert hat - schließlich hat sich jemand gefunden, der es versucht und gut abgeschlossen hat (Bonuspunkte), er hat sich als wirklich guter Mitarbeiter herausgestellt. Er braucht sehr wenig Training, keine Schmerzen, um damit umzugehen, und kommt voll auf Touren.
@bobo2000 Gut zu hören! Hoffentlich geht es mit diesem Ansatz für Ihr Unternehmen weiterhin gut.
Genau das ist auch meine Erfahrung. Ich mache den Programmiertest beim Vorstellungsgespräch auf einem Whiteboard, was normalerweise etwa eine Stunde dauert. Etwa 90 % der Kandidaten scheitern daran. Die restlichen 10 % sind es absolut wert, die anderen 10 % nicht einzustellen. Wir machen das auch mit älteren Kandidaten, erwarten aber einen höheren Standard.
Der Markt ist auf der Seite der erfahrenen Entwickler, die diese trivialen dummen Tests überspringen können.
@SuperUberDuper Ich gebe erfahrenen Entwicklern den Programmiertest nicht, wenn sie ihre Fähigkeiten bereits in ihrem Lebenslauf bewiesen haben, indem sie eine starke Erfolgsbilanz bei der Arbeit für angesehene Marken vorweisen können. Anders sieht es jedoch bei Praktikanten/Absolventen aus, denen oft jegliche kaufmännische Erfahrung fehlt. Daher ist es wichtig, herauszufinden, ob sie Potenzial haben und die Grundlagen bereits vorhanden sind, um sie zu formen. Es sagt auch viel über ihre Einstellung zum Job aus, wenn sie sich eine Auszeit nehmen und den Test absolvieren können.
@bobo2000 genau, gute Punkte
@RonBeyer Ich denke, du machst einen unfairen Vergleich. Als Angestellter haben Sie sich verpflichtet, diese Arbeit zu erledigen, Sie haben einen Vertrag mit dem Unternehmen und Sie werden für Ihre Zeit bezahlt. Aber als einfacher Interviewpartner gibt es keine Verpflichtung zu einer professionellen Beziehung, weder von Ihnen noch vom Unternehmen, weder implizit noch explizit. Daher ist die Ablehnung einer mehrstündigen Programmieraufgabe im Rahmen eines Vorstellungsgesprächs etwas ganz anderes, als wenn ein Mitarbeiter etwas Ähnliches ablehnt.
@RaduMurzea, der Schlüssel ist, einen Programmiertest zu entwerfen, der 30 Minuten bis maximal 1 Stunde dauert. Wenn sich der Kandidat nicht darum kümmert, werden wir ihn ablehnen, da dies viel über seine Einstellung zu der Rolle aussagt.
Audition-Projekte unterscheiden sich von der Kodierung von Interviewfragen. Zumindest ein Projekt kann interessantere Aufgaben beinhalten und Ihnen die Freiheit geben, zu wählen, was und wie Sie etwas implementieren. Codierungstests sind normalerweise sehr konzentriert und ehrlich gesagt ziemlich langweilig.
„gute Einstellung zum Unternehmen und zur Rolle“ – Stellen Sie sich vor, der Befragte bekommt 10 solcher Aufgaben pro Woche und alle Unternehmen denken gleich. Aus seiner Sicht ist der Interviewer realitätsfern.
@Pithikos Viele Unternehmen führen heutzutage technische Vorstellungsgespräche. Google ist sehr streng. Wir sind nicht Google, nein, aber das bedeutet nicht, dass wir unsere Standards senken sollten, indem wir keinen technischen Screening-Prozess haben, der das Risiko einer schlechten Einstellung erhöht.
@Pithikos hat auch gerade nachgesehen, Facebook hat eine Interview-Kodierungsaufgabe zum Mitnehmen für eine Position
Es ist in Ordnung, während des Interviews eine sehr kurze (5-10 Minuten) Programmierübung zu geben, aber Sie können nicht erwarten, dass die Leute eine Stunde ihrer Zeit verschwenden. Die Befragten wissen nicht, dass nur sehr wenige ihn absolvieren. Fazit ist, dass Sie denken können, was Sie wollen, aber wenn sie nichts Außergewöhnliches an Ihrem Unternehmen sehen, werden sie sich nicht darum kümmern, Ihnen zu gefallen, nicht nur bei einer geringen Chance, dass Sie sie unter den potenziellen Zehn zurückrufen oder Hunderte von Menschen, die denselben Test absolviert haben. Sie gehen einfach weiter zum nächsten Unternehmen.
Außerdem habe ich gerade bemerkt, dass Sie ihnen den Test am Telefon geben! Versetzen Sie sich für einen Moment in ihre Lage. Sie haben dich noch nicht einmal getroffen. Sie wissen nichts über Ihr Unternehmen, und Sie verschwenden bereits ihre Zeit mit aus ihrer Sicht sinnlosen Spielchen. Wie würden Sie in dieser Situation reagieren? Sie erwähnen Google und Facebook, und es tut mir sehr leid, es Ihnen sagen zu müssen, aber Sie sind weder Google noch Facebook. Außergewöhnliche Unternehmen können es sich leisten, von ihren Bewerbern außergewöhnliche Anstrengungen zu verlangen, gewöhnliche Unternehmen nicht. Du kannst nichts tun, außer damit umzugehen.
@Demonblack ja, absolut, dies bedeutet, dass wir weniger Kandidaten bekommen werden, aber deshalb haben wir, wenn wir am Ende jemanden einstellen, die Wahrscheinlichkeit einer schlechten Einstellung verringert und stellen im Allgemeinen Leute ein, die keine Erfahrung haben, aber extrem motiviert sind zu lernen . Es dauert nur länger, es zu tun, und für diejenigen, die auf ihre Fähigkeiten vertrauen, stört es sie nicht im Geringsten.
@bobo2000 Dann glaube ich, dass mir hier etwas fehlt. Übrigens denke ich, dass Sie mit Ihrer Methode auch eine geringere Wahrscheinlichkeit für eine gute Einstellung haben, aber das ist nebensächlich. Wenn Sie tatsächlich bekommen, was Sie wollten, was ist das Problem?
Als ich diese Frage (vor einem Jahr) veröffentlichte, hatten wir Probleme mit diesem Prozess, und meine Frage war, ob es ein zu schwerer Ansatz war, aber ich habe es seitdem optimiert und es funktioniert jetzt gut.
Ähm kurze Frage, wie kann ein Programmierer bei einer Aufgabe schummeln. 80 % unserer Arbeit besteht darin, Code aus dem Internet zu beziehen.

Antworten (24)

Sie benötigen einen Programmiertest. Aber es sollten 5-10 Minuten sein. 30 Minuten höchstens. Es gibt keinen 2-Stunden-Test, der Ihnen genau sagt, wie gut ein Programmierer ist. Sie werden nicht erkennen können, ob sie ständig wartbaren Code schreiben, oder ob sie immer richtig kommentieren, oder ob sie mit unlesbarem Durcheinander von 'klugen' Lösungen für Probleme usw. aufwarten. In 2 Stunden das einzige, was Sie werden zu erreichen, ist herauszufinden, wer offen darüber lügt, eine Sprache/Programmierung zu kennen.

Nur sollten Sie in der Lage sein, Betrug in weitaus weniger als 2 Stunden zu erkennen. 5 Minuten FizzBuzz schreiben und 2-3 kurze Fragen zu sprachspezifischen Funktionen werden Ihnen sagen, ob sie absolut wertlos sind. Und das ist ungefähr das Beste, was Sie in einem Vorstellungsgespräch tun können.

Lassen Sie mich Ihnen sagen, was ich denken würde, wenn ich eine zweistündige Prüfung für das Privileg erhalten würde, ein Interview zu führen:

„Entweder denken diese Leute, dass dies einen Wert hat, was bedeutet, dass sie keine Ahnung haben, was sie tun, ODER sie wissen, dass dies Zeitverschwendung ist, aber aus irgendeinem Grund (wahrscheinlich blindlings der Bürokratie der Personalabteilung folgend) sind sie bereit, die des Kandidaten zu verschwenden Stellen Sie sich vor, was sie glauben, damit davonkommen zu können, wenn sie mich bezahlen.

Auf jeden Fall möchte ich dort nicht arbeiten."



Es gibt noch etwas, was Kandidaten abschrecken könnte : Die Dauer Ihres Vorstellungsgesprächs. Sie haben Leute, die ein Telefoninterview führen. Dann ein Test zum Mitnehmen, den sie eine Woche lang abschließen müssen. Dann gehst du die Tests durch. Dann vereinbaren Sie ein persönliches Gespräch mit dem Management. Dann (nehme ich an) machst du ein paar persönliche Interviews. Dann kehren Sie zu dem Typen zurück, den Sie einstellen möchten. Was braucht das? 2 Wochen? Länger?

In dieser Zeit habe ich bereits 3 Angebote eingeholt. Ich habe eins angenommen und fange nächste Woche an. Glaubst du, ich mache deinen 2-Stunden-Test?

Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .
Aber es sollten 5-10 Minuten sein. 30 Minuten höchstens. - Es muss nicht so kurz sein, aber wenn sie es vor Ort tun, bevor sie gehen, würde sich die Abschlussrate erhöhen. Es spielt keine Rolle, ob es sich um eine 2-stündige Herausforderung handelt, wenn Sie sie im Haus machen lassen, kommen sie nicht nach Hause und entscheiden, dass es die Mühe nicht wert ist. Aber im Allgemeinen stimme ich zu, dass eine schnelle Herausforderung vom Typ Fizz Buzz wahrscheinlich ähnliche Ergebnisse liefert wie ein eingehenderer Test, wobei weniger Aufwand erforderlich ist, um die Ergebnisse zu bewerten. Und wenn es 3-4 Wochen dauert, einen Einstellungsprozess zu durchlaufen, habe ich schon woanders angefangen.
Ich habe nichts gegen längere Vorstellungsgespräche – ich denke, das variiert etwas. Es geht darum, ob Kandidaten irgendwo oder bei Ihrem Unternehmen arbeiten wollen . Geben Sie mir ein oder zwei Wochen Zeit, um meine Hausaufgaben zu machen und herauszufinden, ob/wo ich umziehen möchte und wie viel das kosten wird, und ich werde das Angebot eher annehmen. Eile mich, und ich könnte nicht.
Nein, Sie brauchen keine Programmiertests. Was Sie brauchen, ist eine Probezeit.
@Agent_L Ein Mitarbeiter, der 40.000 US-Dollar verdient, kostet (im Durchschnitt) 16.000 US-Dollar, um ihn zu ersetzen. Ein Mitarbeiter, der 80.000 Dollar verdient, kostet 120.000 Dollar, um ihn zu ersetzen. Das ist ein wahnsinniger Betrag für eine Probezeit, um die Hälfte Ihrer Kandidaten auszusortieren, wenn Sie stattdessen einen 5-minütigen Test kostenlos durchführen könnten. Im Ernst, warum um alles in der Welt würden Sie jemanden einstellen und anfangen, ihn für mehrere Wochen/Monate zu bezahlen, nur um herauszufinden, dass er in seinem Lebenslauf gelogen hat? Warum tun Sie das, wenn Sie 5 Minuten aufwenden können und ihnen keinen Cent zahlen, um dasselbe herauszufinden?
Sie müssen jedoch wissen, wie vertraut sie mit der Plattform sind, auf der sie arbeiten sollen. je nach benötigtem erfahrungsgrad kann der aufwand an konzeption und architektur für ihren test sehr unterschiedlich sein.
@ Shane WAS? Du bezahlst sie nur dafür, wie viel sie gearbeitet haben. Wenn sie gelogen haben, ist es in den ersten paar Tagen offensichtlich und dann lässt du sie gehen (nicht einmal erwähnen, dass, wenn er es geschafft hat, dich in dem Interview zu täuschen, dann stelle ihn als Verkäufer ein). 40.000 $/Jahr sind nur 158 $ pro Tag. Was Sie zitiert haben, sind die Kosten für die Einstellung der falschen Person, die ausschließlich auf der Fähigkeit zur Testlösung basieren. Und er braucht Monate, um zu erkennen, dass er kein Teamplayer ist. Ihre Lösung kostet 16.000 $, nicht meine.
@Agent_L: Die Kosten einer fehlgeschlagenen Einstellung sind weitaus höher als die falsch ausgegebenen Löhne. Dazu gehören beispielsweise die Notwendigkeit, die Einstellung erneut vorzunehmen, und der gesamte Verwaltungsaufwand, der mit dem Hinzufügen einer Person zu Ihrem Personal verbunden ist. Ich weiß nicht, woher Shanes Zahlen stammen, aber sie scheinen nicht unvernünftig zu sein. Wahrscheinlich sind diese 16.000 zusätzlich zu dem Gehalt, das die schlechte Einstellung erhalten hat. Da Sie alternative Lösungen vorschlagen, waren Sie vermutlich Personalchef oder arbeiten in irgendeiner Funktion im Zusammenhang mit der Personalbeschaffung?
Es scheint mir, dass eine Probezeit, um einen Job zu bekommen, viele mittelmäßige / schlechte Programmierer anziehen würde, während die sehr guten 1-2 Monate lang nicht für Sie arbeiten werden, um herauszufinden, ob sie eingestellt werden. Nur meine Meinung
"Es muss nicht so kurz sein, aber wenn sie es vor Ort tun, bevor sie gehen, würde die Abschlussrate erhöht. ..." - Ich persönlich würde es tun lassen, bevor sie vor Ort eingeladen werden. Lassen Sie sie es tun, wenn sie einen Lebenslauf einreichen. Warum Zeit mit Kandidaten verschwenden, die Mindest- oder Grundstandards nicht erfüllen?
@Agent_L es hängt davon ab, wo Sie arbeiten. In einigen Ländern, wenn Sie einen Job antreten, können Sie nach 2 Tagen nicht nur für den Mann arbeiten, es kann Wochen oder Monate dauern, und in der Zwischenzeit müssen Sie sie bezahlen.
@Agent_L Ich lebe in einem dieser Länder, in denen es wirklich schwierig ist, jemanden zu feuern, nachdem er eingestellt wurde. Sie müssen einen formellen Prozess durchlaufen, der Monate dauert.
Es ist erwähnenswert, dass dieselben Prinzipien für alle Tests gelten, nicht nur für Programmiertests. Alle "Hausaufgaben"-Tests diskriminieren beschäftigte und gefragte Menschen und neigen dazu, die falschen Dinge zu testen (Domänenwissen, das bei der Arbeit gelernt werden kann, nicht Fähigkeiten , die dies nicht können). Ich hatte genau dasselbe in einem Team, das Grafikdesigner mit einer mehrstündigen Hausaufgabe „Design X in unserem Markenstil“ rekrutierte, die ich durch eine Art Sprudel im Vorstellungsgespräch für kreatives Denken ersetzte .
@GustavBertram Ja, ich lebe in Polen, wo es so schwierig ist, jemanden zu feuern, dass niemand mehr einen richtigen Arbeitsvertrag bekommt. Vertrag mit vordefinierter Laufzeit, Übertragung von IP-Rechten, Vertrag zur Ausführung einer bestimmten Aufgabe, Gelegenheitsarbeitsvertrag – die Optionen sind endlos. Alles, was Sie brauchen, ist der gemeinsame Wille, Einschränkungen zu umgehen.
@Shane, die Kosten einer schlechten höheren Statistik sind sehr interessant. Hast du dafür eine Quelle? Ich glaube Ihnen und stimme zu, dass schlechte Einstellungen viel kosten, aber die Zahlen kamen mir so hoch vor. Vielen Dank!
Ich verstehe nicht alle Leute, die sagen, dass @Agent_L falsch ist und es teurer wird. Der Prozess wird gemacht, damit sie dich aus welchem ​​Grund auch immer entlassen können, und sie mussten dir nur ein Monatsgehalt zahlen. Man könnte sagen, dass der Einstellungsprozess Geld usw. kostet, aber niemanden einzustellen, kostet sie auch Geld.
@EpicKip Du stellst also jemanden ein, um einen Job zu erledigen. Nehmen wir an, ihr Monatsgehalt beträgt 1000 $. Anstatt produktiv zu sein und 2000 Dollar Gewinn für das Unternehmen zu erzielen, tun sie nichts. Dann dauert es einen Monat, bis jemand Neues gefunden wird. Mit einer guten Einstellung könnte das Unternehmen nach Umsatz und Gehalt 4000 Dollar in der Tasche haben. Stattdessen sind es 1000 Dollar Schulden aus der Ausgabe des Gehalts. Das sind 5000 Dollar, die das Unternehmen verloren hat. Es gibt noch andere Faktoren, wie zum Beispiel, wie Sie bei der Arbeit effizienter werden, je länger Sie dort sind, aber das ist im Wesentlichen das Wesentliche.
@Shane Sie können nicht alles aus einem Test finden. Ich bin Programmierer und jeder Ort, der einstellt (zumindest in den Niederlanden), stellt Sie auf der Grundlage einer 1-monatigen Probezeit ein (sie haben ein Vorstellungsgespräch und vielleicht einen sehr kleinen Test). Und niemanden aufgrund eines langen/falschen Einstellungsprozesses einzustellen, wird das Unternehmen mehr Geld über die Zeit hinaus kosten.
„Sie haben ein Vorstellungsgespräch und vielleicht einen sehr kleinen Test.“ Uhh, ja. Das ist genau der Teil, über den wir hier sprechen. Die Frage bezieht sich auf diesen Interviewteil und ob man vielleicht einen sehr kleinen Test machen soll oder nicht. Und in meinem ersten Absatz geht es ausführlich darum, dass „man in einem Test nicht alles finden kann“. Da Sie aus den Niederlanden kommen, gibt es vielleicht eine kleine Sprachbarriere? Aber ich würde vorschlagen, dass Sie die Frage und meine Antwort noch einmal lesen, weil ich denke, dass wir hier mehr zustimmen als uns widersprechen.
@Draco18s Erster Absatz: „ Eine Sache, die mir bei der Jobsuche in letzter Zeit aufgefallen ist, ist die Anzahl der Unternehmen, die darauf bestehen, dass Sie ihnen ein Codebeispiel nach Spezifikation schreiben. Nicht irgendein Codebeispiel, sondern eine voll funktionsfähige, vollständige Anwendung. Dies ist aus mehreren Gründen absurd. “ Er fährt fort: „ Joel Spolsky spricht darüber, wie wichtig es ist, Entwickler während ihres Interviews zu bitten, Code zu schreiben. Er geht aber auch detailliert darauf ein, wie er dies in seinem eigenen Unternehmen interpretiert: Nämlich, Er bittet die Leute, während des Interviews Funktionen zu schreiben. “ Das ist identisch mit dem, was ich sage. 1/2
@Shane Quick, schreiben Sie mir auf einem Whiteboard eine Funktion, die bestimmt, ob eine einfach verknüpfte Liste eine Schleife enthält oder nicht. Gehen. Außerdem können Sie die Datenstruktur nicht ändern oder eine neue Liste erstellen.
2/2 Er schließt mit den Worten: „ Stellen Sie in einem Interview ein paar technische Fragen, die Code erfordern. “ Die Beschwerde, die er über Codierungstests vorbringt, bezieht sich auf die Art von Test, nach der das OP gefragt hat. Diese Antwort empfiehlt dasselbe. Ich bin auch nicht der Meinung, dass es zeigt, dass sie nicht lernen können. Es zeigt, dass sie zumindest etwas gelernt haben. Ihr Programmierstil ist nicht „Google für Codebeispiele und Hoffnung“. Abgesehen davon, dass Sie die Fähigkeit zeigen, Programmieren 101 gelernt zu haben, kann nicht viel, was Sie im Interviewprozess tun, zeigen, dass jemand im Laufe der Zeit lernt. Oder zumindest würde ich gerne hören, wie Sie das in ein paar Minuten herausfinden können.
Ja, das wäre eine anständige Frage – vorausgesetzt, Ihr Shop arbeitet mit Technologien, die verknüpfte Listen verwenden. Obwohl ich persönlich kein Fan von künstlichen Grenzen bin, wie Sie sie haben.
Ein langwieriger Take-Home-Test vor dem ersten persönlichen Gespräch ist ein Witz.
"Aber es sollten 5-10 Minuten sein" - dann verlieren Sie viele gute Kandidaten, die nur etwas Zeit brauchen, um verschiedene Lösungen zu überlegen usw. 30 Minuten sind sinnvoll.

Lassen Sie mich zunächst sagen, dass die Einstellung von Mitarbeitern im Allgemeinen eine erbärmlich ungenaue Wissenschaft ist, und Sie werden verschiedene Ergebnisse erzielen, egal was Sie versuchen. Trotzdem hatte ich das Gefühl, dass ich meine Gedanken dazu teilen sollte.

Ich denke, Programmierübungen sind ein Reinfall, vor allem, weil Sie Leute finden werden, die verzweifelt sind und viel zu viel Zeit haben, um sie zu erledigen. Wenn sie einen Vollzeitjob haben, müssten Sie fragen, wie viel Zeit/geistige Energie sie ihrem derzeitigen Arbeitgeber nehmen, um für jemanden zu arbeiten, der sie nicht einmal bezahlt. Willst du, dass sie dir solche Dinge antun?

Wenn sie gut sind, führen sie außerdem höchstwahrscheinlich Vorstellungsgespräche mit vielen Arbeitgebern. Ratet mal, welche sie priorisieren werden? Diejenigen, die nicht darum bitten, Projekte abzuschließen, bevor sie überhaupt mit einem technischen Leiter telefonieren.

Es gibt auch das Problem des Plagiats. Sicher, sie werden im persönlichen Gespräch herausgefunden, aber bis dahin haben Sie bereits die Zeit von (vermutlich) hochbezahlten Leuten im Unternehmen verschwendet, die diese Person interviewen.

Mein jetziges Unternehmen hat es gut gemacht, und das ist der Weg, den ich an Ihrer Stelle einschlagen würde. Geben Sie ihnen eine kleine Aufgabe, die nur etwa 90-120 Minuten dauern sollte, und sagen Sie ihnen, sie sollen in den Kommentaren begründen, warum sie diese Art der Problemlösung gewählt haben. Dies ist etwas, das in einer Nacht erledigt werden kann und Ihnen einen Einblick in ihre Denkweise geben wird.

Ich kann Ihnen jetzt sagen, dass ich ihnen danke sage, wenn ich ein Projekt bekomme, das mehr als 8 Stunden dauert, aber ich bin nicht interessiert. Ich habe einen guten Job und ein Leben. Wenn ein Manager dies als Problem ansieht, sagt mir das, dass ihm meine Work-Life-Balance im Job egal wäre (insbesondere, wenn es ihm egal ist, bevor ich sie habe). Kein Unternehmen außer vielleicht Google, Apple oder Facebook könnte damit durchkommen.

Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .
@Aron Es ist wirtschaftlich nicht sinnvoll, sie für die Durchführung des Tests zu bezahlen, wenn man bedenkt, wie viele Entwickler wir interviewen. Gleichzeitig bin ich offen für Vorschläge, wie der Prozess verbessert werden kann. Meine einzige Sorge ist, wenn ich das nicht tue und wir am Ende eine schlechte Einstellung machen, weil sich herausstellt, dass der Typ nicht programmieren kann (es ist passiert), wird es uns auf lange Sicht viel mehr kosten.
Stimmen Sie anderen hier nicht zu und +1, wünschte, ich könnte mehr hinzufügen, wegen "Ich denke, Programmierübungen sind eine Pleite". Sie gehen irgendwie darauf zurück, indem Sie eine Programmierherausforderung vorschlagen, aber trotzdem. Ich stimme Ihnen zu, sie sind lächerlich und funktionieren überhaupt nicht, weil ich mit vielen Leuten zusammengearbeitet habe, die diese Tests anscheinend bestanden haben, aber inkompetent sind. Tatsächlich haben viele Leute, mit denen ich gearbeitet habe, nicht ihre eigentliche Arbeit gemacht, sondern saßen da und studierten Interview-ähnliche Fragen, damit sie sich für andere Programmierjobs im Job bewerben konnten. Dieser Prozess muss sterben.
Google und Facebook haben beide hochgradig optimierte Rekrutierungsverfahren und beide verwenden keine Tests zu Hause als Teil dieser Verfahren.
Dies muss geschrieben worden sein, bevor der Fragesteller die Länge des Tests geklärt hat, denn es ist jetzt eine schreckliche Antwort.
@stannius Das stimmt nicht. Facebook hat ein Zuhause-Projekt als Teil ihres Interviewprozesses. Ich habe es genommen
"geben Sie ihnen eine kleine Aufgabe, die nur vielleicht 90-120 Minuten dauern sollte" Dies scheint Ihrer eigenen Beschreibung nach schlimmer zu sein als eine Programmieraufgabe, die 30 - 60 Minuten dauert, womit sie derzeit beauftragt sind.
Google bietet auch eine (online und zeitgesteuerte) Programmierungsbewertung für zu Hause an. Auch wenn es gar nicht lange dauert.
Nun, entweder ist es ein neues Verfahren (im letzten Jahr), es wird nicht für ihre Büros in der Gegend von Seattle verwendet, oder sie lassen es nicht jeden tun.
@stannius - Meiner Erfahrung nach haben Sie zumindest für Google Recht mit dem Take-Home-Testteil. Sie werden Sie jedoch während des Interviews dazu bringen, Code zu schreiben. Wiederholt. Typischerweise auf einem Whiteboard und vor mehreren verschiedenen Interviewern (die alle Mitglieder des Entwicklungsteams sind). Außerdem lautet die Antwort nicht "Übungen zum Mitnehmen sind eine Pleite", sondern "Programmierübungen sind eine Pleite". Was sehr unterschiedlich ist. Sowohl Google als auch Facebook verwenden unbedingt Programmierübungen, wenn sie Programmierer interviewen. Dieser Teil dieser Antwort ist einfach falsch .
@aroth Ich bezog mich in diesem Zusammenhang auf Programmierübungen zum Mitnehmen, nicht auf solche, die während des Interviews auf einem Whiteboard durchgeführt werden. Ich würde das für jedes Unternehmen erwarten, für das ich Vorstellungsgespräche führe, egal was passiert.
Erinnerst du dich an die Leute in der High School, die überhaupt nicht schlau waren? Ja, diese Leute werden in irgendeiner Form mit Ihnen zusammenarbeiten. Sie können Programmierer, Ärzte, Anwälte, Klempner, Professoren, was auch immer sein – es gibt dumme Leute, die diesen Job machen. Das Problem ist, dass es zu viele Stellen zu besetzen gibt und nicht genug engagierte, fleißige und kluge Leute, um sie zu besetzen. Deshalb gibt es die Lügner, die Betrüger, die Braunnasen in jedem Bereich, in jeder Art von Job. Ich habe Horrorgeschichten von Programmierern gehört, die buchstäblich nicht einmal einen Computer einschalten können. Keine Möglichkeit dagegen anzukämpfen.
90-120 Minuten? Wenn Sie mir gesagt haben, dass ich im Rahmen des ersten Gesprächs zwei Stunden lang eine Übung machen soll, hoffen Sie besser, dass Ihre angekündigten Gehaltszahlen deutlich höher sind als die der Konkurrenz, denn sonst gehe ich und alle anderen, die nicht arbeitslos sind, auch . Nur verzweifelte Menschen akzeptieren diese Art von Zeitverschwendung, und auf Kosten der Ungerechtigkeit sind diese in der Regel nicht die besten Programmierer.
Sie würden also niemanden einstellen, der Vollzeit und auch an anderen persönlichen oder Open-Source-Projekten arbeitet? Sie werden niemanden dazu bringen, 100 % seiner Programmierbandbreite für Ihr Unternehmen auszugeben. Ich hoffe, sie konnten ihren Kindern bei den Hausaufgaben helfen.
Selbst Google, Apple oder Facebook verlangen kein 8+h Take-Home-Projekt. Doch viele Kandidaten sind dazu bereit. Ganz einfach, weil Take-Home-Projekte ein riesiges Warnsignal sind.

Meiner Erfahrung nach scheiden Take-Home-Projekte schlechte Programmierer nicht aus und führen wahrscheinlich dazu, dass gute Programmierer einen Job finden, bei dem sie nicht durch einen Reifen springen müssen, um mit dem Personalchef zu sprechen.

Denken Sie so darüber nach. Ein guter Programmierer kann leicht telefonische und persönliche Interviews erhalten. Jeder zusätzliche Hürden, durch den sie springen müssen, bedeutet, dass sie den einfacheren Weg nehmen und von jemand anderem interviewt (und eingestellt) werden, der genauso viel bezahlt. Wenn Sie Leute dazu bringen, durch Reifen zu springen, stellen Sie sicher, dass sie von Anfang an sehen, dass es sich lohnt.

Ein schlechter Entwickler kann so lange brauchen, wie er will. Sie werden nicht sehen, dass sie 4x so lange brauchen; Sie sehen nur den abgeschlossenen Test. Sie werden auch nicht sehen, dass sie sich an Google oder ihren Kumpel wenden, um Hilfe bei einer ifAussage zu erhalten.

Mein letztes Unternehmen hat dies getan, und die überwiegende Mehrheit der Leute, die wir zu einem persönlichen Vorstellungsgespräch eingeladen haben, scheiterte am Fizz-Buzz (etwa 65 %). Ich denke, das ist passiert, weil wir versehentlich gute, vielbeschäftigte Leute aussortiert haben, die kein Interview mit einem anderen Unternehmen brauchten, und gleichzeitig ein einfaches Interview vor schlechten Programmierern baumeln ließen.

Was wir meiner Meinung nach stattdessen hätten tun sollen

Anstatt den Leuten eine Aufgabe zum Mitnehmen zu geben, deren Benotung 15 bis 20 Minuten dauerte, hätten wir ein 15 bis 20-minütiges Skype-Interview führen sollen, in dem wir Fragen wie Fizz Buzz gestellt haben. Dies hätte die gleiche Zeit in Anspruch genommen, aber ich hätte wahrscheinlich die schlechten Programmierer vor einem zweistündigen persönlichen Interview aussortiert.

FYI -> Hier ist ein sehr detaillierter Artikel über Fizz-Buzz und allgemeine Interviewpraktiken.

Ich wurde einmal gebeten, eine Programmieraufgabe auf hackerearth.com zu erledigen und wurde gebeten, persönliche Daten einzugeben, um mich zu registrieren. Es war eine sofortige Abzweigung. Darüber hinaus war die Programmieraufgabe selbst kein zuverlässiger Indikator für die Fähigkeit. Ich stimme zu, dass sich solche Take-Home-Aufträge nicht wirklich lohnen.
Das einzige Mal, dass ich eine Programmieraufgabe mit nach Hause genommen habe, hat mich der Personalchef gejagt, weil ich nicht einen Tag Zeit hatte. Danach habe ich entschieden, ob ich wieder einen Auftrag zum Mitnehmen bekomme, um zu sagen, dass ich kein Interesse an dem Job habe.
Zeit allein reicht nicht aus, um eine Aufgabe ordnungsgemäß zu erledigen.
Das Problem mit der Fizz-Buzz-Interview-Codierungspraxis ist, dass Sie Zahlen haben, die sowohl durch 3 als auch durch 5 teilbar sind. Das ist das erste, was mir in den Sinn kommt, und wie würden Sie die Reihenfolge in diesen Situationen wünschen. Es sei denn, Sie wollen nur Daten.
@Chad was gibt es zu bestellen? coliru.stacked-crooked.com/a/bab3aa8f4ea44fcd
@TechnikEmpire Sie haben Zahlen, die beide durch 3 und 5 teilbar sind. Sie erhalten also sowohl Fizz als auch Buzz, die in einer Iteration ausgegeben werden. Die Reihenfolge, welche der beiden zuerst kommt, hängt davon ab, wie Sie Ihre Teiler anordnen, z. B. 3 zuerst oder 5 zuerst. Etwas, das ich in Ihrem Codebeispiel gesehen habe, haben Sie genau gleich gemacht.
@Chad oh okay, wusste nur nicht, was du meinst.
@TechnikEmpire Übrigens nur zum Spaß, ich habe es in der alten Schule gemacht. coliru.stacked-crooked.com/a/31dc2f5cbbc0e76b
@TechnikEmpire Hat wirklich Spaß gemacht, Ihren Code zu lesen, interessant zu sehen, wie weit C++ gekommen ist.
@Chad Schön. das ist mir fremd, weil ich printf noch nie in meinem Leben benutzt habe. lol
Bitte erzählen Sie mir mehr über diese ifAussagen - sind das diejenigen, die einen Velociraptor-Angriff verursachen?
@CodeJockey Ja, wenn Aussagen böse sind, hält Cmon Man mit den 10000000 willkürlichen "Standards" Schritt, die zufällige Leute und Unternehmen erfinden, um zu entscheiden, wer elitärer ist als der nächste Typ. Meine Güte, du hast den Test für das Vorstellungsgespräch nicht bestanden, du musst ein schlechter Programmierer sein (das ist offensichtlich Sarkasmus).
Meine Lieblingsmethode für FizzBuzz, wenn ich die Wahl der Sprache habe (keine Mathematik, if-Anweisungen oder technisch gesehen sogar Schleifen):filter fb{@($_,"Fizz","Buzz","FizzBuzz")[0+(@(2)[$_-match'[^05]$'])+(@(1)[$_-notmatch'(^([369][0369]?|[258][147]|[147][258]))$'])]}1..100|fb
@CodeJockey: Und ich würde Sie bitten, eine Version zu schreiben, die ich verstehen kann.
@gnasher729 - deshalb würdest du mir entweder keine Sprachauswahl geben oder mich (wenn du die Zeit hättest) bitten, zu erklären, wie mein Beispiel funktioniert. Im Fall meines Beispiels da oben (PowerShell) verwenden Sie statt Mathematik (also mehr als einfache Addition und Multiplikation) reguläre Ausdrücke; Anstelle von if-Anweisungen verwenden Sie die automatische Auswahl von Array-Indizes; und anstelle einer Schleife verwenden Sie eine Reihe von Ganzzahlen, die in einen Filter geleitet werden.
@gnasher729 - dies ist die besser lesbare Version, die ich zu Rosetta Code hinzugefügt habe, falls Sie interessiert sind: rosettacode.org/wiki/…
Sie haben mein ganzes Problem mit besonders schwierigen Problemen bei der Programmierung von Whiteboards erklärt. Großartige Programmierer werden sich nicht die Mühe machen, es zu studieren – sie schwimmen bereits in Angeboten. Ehrgeizige, aber mittelmäßige Programmierer wissen, dass sie im Nachteil sind und lernen. Das Endergebnis dieser Art von Tests – was das Endergebnis des meisten Interview-Unsinns ist – ist, dass das Signal vollständig im Rauschen verloren geht.
@CodeJockey Sie würden sowohl den Wartbarkeitstest als auch den Smartass-Test nicht bestehen :-) Nur (etwas) Scherze über letzteres; aber ersteres ist extrem wichtig. "Clevere" Lösungen werden beim Code-Review abgeschossen

Eine gegensätzliche Ansicht von jemandem in den Schützengräben auf beiden Seiten dieser Frage. Ich vermute, dass diese Antwort Ablehnungen hervorrufen wird, aber es ist eine hochinformierte Meinung, die sich über mehrere Jahrzehnte in diesem Geschäft entwickelt hat. Weil ich das gerne mache, schreibe ich immer noch jeden Tag Code für meinen Lebensunterhalt und als Hobby in meiner "reichlichen Freizeit", aber ich war auch der letzte Entscheidungsträger bei der Einstellung von ein paar Dutzend Programmierern und habe geholfen, Interviews zu führen und über die Einstellung einer ziemlich großen Anzahl mehr beraten.

Lawrence hat Recht: Die Einstellung ist erschreckend ungenau. Aber wir werden mit der Zeit immer besser darin. Mehr als persönliche Chats, mehr als Trivia-Fragen, kurze Programmierungsherausforderungen vor Ort sind ein zunehmend wesentlicher Bestandteil davon: nicht nur für das Können, sondern auch für die Einstellung.

Beachten Sie, dass ich "kurz" gesagt habe . Wir geben Kandidaten einen Laptop, der mit einer ordnungsgemäß installierten Eclipse (unserer gewählten IDE) ausgestattet ist, wenn sie zum Vorstellungsgespräch kommen. Richtig eingerichtet bedeutet, dass sie Zugriff auf die jdk-Quelle haben, aber kein Internet haben, und sie werden gebeten, während des Tests keine Mobiltelefone zu verwenden. Sie haben eine Stunde Zeit, um zwischen null und fünf Probleme zu lösen, angefangen bei „FizzBuzz“, bis hin zu etwas in der Größenordnung eines einfachen Multi-Threaded-Producer/Multiple-Consumer-Systems.

Niemand hat jemals alle fünf in einer Stunde gelöst, und ich erwarte nicht, dass es jemals jemand tun wird (ich kann Lösungen für fünf in bequem weniger als einer Stunde schreiben, aber natürlich habe ich die Probleme gesehen und sie alle zuvor gelöst, also bin ich es kein fairer Test).

Übrigens haben wir vermeintlich erfahrene Programmierer daran gescheitert , FizzBuzz richtig hinzubekommen. Lassen Sie mich das noch einmal sagen: Wir hatten eine Handvoll Kandidaten, die FizzBuzz nicht richtig ausgefüllt haben. Normalerweise, indem man Anweisungen nicht befolgt, aber das Lesen der Spezifikation ist ein wesentlicher Bestandteil des Entwicklerdaseins.

Wir lassen sie Code schreiben, während sie hier vor Ort sind, anstatt ihnen aus mehreren Gründen Hausaufgaben zu geben, teils wegen des Betrugsrisikos, teils um jedem Kandidaten die gleiche Chance zu geben, die Probleme zu lösen. Wir rotieren auch Probleme in und aus dem Challenge-Set und diskutieren anschließend Lösungen mit den Kandidaten.

Ich fühle mich sehr stark zu diesem Thema. Ich habe noch nie erlebt, dass ein Kandidat wegen unseres Programmiertests eine Stelle abgelehnt oder das Vorstellungsgespräch abgebrochen hat. Dies kann jedoch durch die Tatsache beeinflusst werden, dass wir den Personalvermittlern, die uns betreuen, mitteilen, dass der Prozess eine Vor-Ort-Programmierung umfasst. Wir sehen also vielleicht einfach nicht die Kandidaten, die denken, dass es "unbezahlte Arbeit" ist, eine Stunde Code zu schreiben. Wenn ja, gute Besserung. Wenn sie denken, dass eine Stunde Codieren eher „Arbeit“ ist als eine Stunde Quizfragen zu beantworten, oder dass ihre Antworten auf Testprobleme etwas Nützliches hervorbringen können, brauche ich ihre Einstellung nicht.

Wir hatten einmal einen Kandidaten, der sich über den Test beschwerte, weil er dachte, er sei zu alt, um sich beweisen zu müssen (das ist keine Spekulation - er sagte es). Und er hat die Herausforderungen gut gemeistert, und er hatte all die Erfahrung, die wir wollten. Aber er war ein schrecklicher Angestellter: Er dachte anscheinend auch, er sei zu alt, um Anweisungen zu geben oder zu lernen, und schließlich mussten wir ihn gehen lassen.

Eines der Dinge, die ich im Laufe der Jahre, in denen wir dies tun, entschieden habe, ist, dass jedes Unternehmen, das nicht testet, mich weniger wahrscheinlich als Mitarbeiter einstellen wird. Wie ihre Antworten auf Fragen, wie sie für Quellcodeverwaltung usw. verwenden, sagt mir die Frage, ob ein Unternehmen testet, viel darüber aus, wie gut es im Geschäft der Softwareentwicklung ist.

Also, was sollten Sie tun? Sie sollten das tun, was für Ihre Organisation funktioniert, aber mein Rat ist, die Tests fortzusetzen, aber sie vor Ort als Teil des Vorstellungsgesprächs durchzuführen. Sagen Sie ihnen im Voraus, dass dies Teil des Prozesses ist, und tun Sie dies, bevor sie sich mit dem oberen Management treffen (aber Sie sollten sie zuerst treffen, um sie zu beruhigen). Und wirklich: Überspringen Sie das Interview mit dem oberen Management, wenn es scheitert. Machen Sie sich keine Sorgen um die Popularität bei Kandidaten oder Postern im Internet. Die Kosten einer schlechten Einstellung sind viel schlimmer als die Kosten einer Verzögerung, bis Sie eine gute Einstellung vorgenommen haben .

Ich erwarte keine Abwertungen. Sie stimmen perfekt mit den anderen Antworten überein und argumentieren für kürzere Tests vor Ort und gegen lange Tests zu Hause. Das Einzige, was ich persönlich ablehne, ist die „Kein Internet“-Klausel. Für einen Entwickler ist das Internet eines der grundlegenden Werkzeuge ihres Handels - wenn man es wegnimmt, zeigt man, wie gut sie ohne Internet auskommen, was für 99 % der Entwicklungsjobs irrelevant ist.
@Peter Es kann sogar besser sein, den Internetzugang zuzulassen und nur zu sehen, wohin sie gehen. Gehen sie zu StackOverflow, um etwas zu überprüfen? Kommen sie hierher, um sich zu beschweren? (Natürlich sollte eine solche Überwachung dem Programmierer ausdrücklich mitgeteilt werden und seine Zustimmung erfordern, um weiterhin Kontroversen zu vermeiden.)
Ehrlich gesagt widerspricht Ihre Antwort den anderen Antworten / der allgemeinen Meinung überhaupt nicht. IMO gibt es einen (großen) Unterschied zwischen "erledigen Sie diese Aufgabe in Ihrer Freizeit, um eine Chance auf diese Position zu haben" (OP-aktueller Prozess) und "lass uns gemeinsam Ihre Fähigkeiten und Eignung für das Unternehmen bewerten" (was Sie vorschlagen). .
Bei meinem derzeitigen Arbeitgeber machen wir etwas Ähnliches, und das kommt der Antwort, die ich geschrieben hätte, am nächsten. Eine Sache, die ich hinzufügen möchte (vielleicht könnten Sie als Option oder Anmerkung für OP hinzufügen?): Wir erlauben den Internetzugang und führen die Tests als „Paarcodierungsübung“ mit Teammitgliedern durch, mit denen die Person zusammenarbeiten würde. Der Coding-Partner hilft beim Erklären der Ziele, beantwortet Fragen, hilft bei Bedarf weiter – also ganz so, wie man in der Praxis zusammenarbeiten würde. Wir können nicht nur die technischen Fähigkeiten beurteilen, sondern bekommen auch ein gutes Gefühl dafür, wie der Kandidat mit anderen zusammenarbeitet.
@NeilSlater Ich bin für den Vor-Ort-Ansatz, aber was ist, wenn der Kandidat im Ausland ein technisches Praktikum macht? Ich interviewe einen Kandidaten in Hongkong, der sich genau in dieser Situation befindet und nach dessen Ende nach Großbritannien zurückkehren möchte.
@bobo2000: Wenn es sich bei Kandidaten um Sonderfälle handelt, müssen Sie herausfinden, was zu tun ist. Ich könnte den Pair-Programming-Test für Ihr Beispiel über Videokonferenzen durchführen und etwas mehr Zeit dafür einplanen. Vielleicht ist dies die Grundlage für ein anderes Workplace SE Q&A? Wie auch immer, ich denke nicht, dass die Sorge um alle möglichen Sonderfälle Sie davon abhalten sollte, einen durchdachten Standardansatz zu haben, und es ist ziemlich normal anzunehmen, dass ein Teil des Interviews vor Ort am Arbeitsplatz stattfindet.
Stimme @Peter zu. Wenn ich mit Ihnen ein Vorstellungsgespräch führen würde, würde mich die „Kein Internet“-Sache denken lassen, dass Sie das Auswendiglernen einer API mehr schätzen als das Verstehen der Konzepte, was mich dazu bringen würde, zweimal darüber nachzudenken, bevor ich einen Job oder ein Angebot von Ihrem Unternehmen annehme. Ansonsten stimme ich der Antwort im Allgemeinen zu und der letzte Satz trifft besonders zu.
@reirab Ich war nicht klar. "Kein Internet" bedeutet nicht "Api auswendig lernen". Jede anständige IDE (wir verwenden Eclipse) verlinkt Sie auf die jdk-Quelle. Ich bin unter Windows, also ist "Open Declaration" an die F3-Taste gebunden. Ich habe viel getroffen . Ich wäre enttäuscht von einem Kandidaten, der das nicht tut. I have just edited my answer to make clear that the jdk sources are available to the candidate.
@CPerkins Stapelüberlauf? Vielleicht, weil ich kein Java-Typ bin, aber zu hören, dass kein Internetzugang vorhanden ist, wäre ein großes Warnsignal für mich. Ich möchte meine Zeit nicht damit verschwenden, Räder neu zu erfinden. Es sei denn, die Aufgaben sind so grundlegend (z. B. Fizzbuzz), dass jeder Programmierer sie sofort lösen könnte. Ich würde denken, Sie würden sehen wollen, wie ich Probleme löse , die IDE ist nur ein Werkzeug von vielen, die dafür notwendig sind.
@JaredSmith ja das bin ich, warum? Wir machen natürlich auch verbales Design, gehen bisherige Arbeiten durch, all das. Aber so machen wir es. Ich fühle mich wohl in dem Wissen, dass es uns ein paar ansonsten gute Kandidaten kosten könnte. Das "kein Internetzugang" ist Absicht. Es geht um die Fähigkeit des Kandidaten, solveProbleme aus seinem eigenen Wissen und Können zu lösen, unterstützt durch die jdk-Quellen, wo nötig, um uns (auch mich) an die Details der API zu erinnern, anstatt nach der Lösung eines anderen zu googeln oder einen Freund um Hilfe zu bitten .
+1 explizit für "Eines der Dinge, die ich im Laufe der Jahre entschieden habe, ist, dass jedes Unternehmen, das nicht testet, mich weniger wahrscheinlich als Mitarbeiter einstellen wird." Ein Unternehmen, das sich um meine Programmierfähigkeiten kümmert, wird viel wahrscheinlicher meine Stimme bekommen als ein Unternehmen, das nur mein Wort über die Fähigkeiten nimmt und meine Persönlichkeit mag. Auch diese sind wichtig, aber nicht ausschließlich.
@Peter Ich stimme dir zu, aber nur für die schwierigeren Übungen. Niemand sollte das Internet brauchen, um FizzBuzz oder andere triviale Übungen zu lösen, aber Sie möchten keinen guten Programmierer verlieren, nur weil er sich nicht an eine obskure Syntax erinnern kann, die er einmal und nie wieder verwendet hat und die im Internet zu finden ist fünf Sekunden. Googeln ist genauso eine Entwicklungsfähigkeit wie das Codieren selbst - ich kenne Leute, die absolut schlecht darin sind. Sie suchen stundenlang nach etwas, das mit den richtigen Schlüsselwörtern in wenigen Minuten gefunden werden kann.

Warum keine Heimtests?

Selbst wenn wir die Möglichkeit des Betrugs und den Rückwärtsfilter ignorieren, der dazu führt, dass gute und ehrliche Kandidaten Unternehmen mit Codierungstests für zu Hause meiden, ist der Wert von Codierungstests für zu Hause begrenzt.

Wenn es sich um eine leitende Position handelt, kann ein leitender Entwickler mit Menschenkenntnis innerhalb von weniger als 10 Minuten sagen, ob der leitende Entwickler am anderen Ende der Leitung gut ist oder sich nur etwas ausdenkt. Wir werden nicht wissen, wie gut genau, aber wir werden so viel wissen, wenn nicht mehr, als uns jeder denkbare Codierungstest für zu Hause sagt.

Wenn es um eine Junior-Position geht, erwarten wir nicht viel in Bezug auf technisches Know-how. Wir suchen Enthusiasmus, Lernbereitschaft und Talent - nichts davon wird bei einem Coding-Test zu Hause entdeckt. Es gibt zu viele Dinge, die Junioren vergessen dürfen. Wenn wir sie einstellen, müssen wir sie sowieso ausbilden.

Wie stattdessen testen?

Geben Sie ihnen als Filter einfach 10 Minuten Zeit, um eine FizzBuzz- Variante vor Ort während der ersten Interviewrunde zu lösen, oder, wenn Sie mit guten Lebensläufen überschwemmt werden und einen weiteren Filter benötigen, tun Sie dies vor der ersten richtigen Interviewrunde über Skype.

Sobald sie die Filter bestanden haben, müssen Sie mehr über die Programmierfähigkeiten Ihrer Kandidaten erfahren. Ich empfehle, 30 Minuten bis höchstens 2 Stunden entweder mit Paarprogrammierung oder Code-Reviews zu verbringen – echte Arbeit und keine Übung. Wiederholen Sie 1-2 Mal mit verschiedenen Partnern. Der Vorteil von Pair Programming und Code Reviews liegt darin, dass der Entwickler bereits über ausreichende Kenntnisse verfügt, die er einbringen kann.

Machen Sie sich keine Sorgen, dass der Test für jede Einstellung anders ist – das Ziel des Einstellungsprozesses ist nicht, die Person zu finden, die in ein paar messbaren und wiederholbaren Tests am besten abschneidet. Das Ziel ist es, eine einzelne Person einzustellen, die die Arbeit gut macht.

Sie machen sich etwas vor, wenn Sie glauben, dass jemand innerhalb von 10 Minuten sagen kann, ob die Person am anderen Ende des Telefons gut ist.
Begeisterung und Lernbereitschaft? Was ist mit vorhandenem Wissen oder Lernfähigkeit?
@djechlin Nett zu haben, aber für einen Junior nicht annähernd so wichtig. Natürlich, wenn sie behaupten, begeistert vom Programmieren zu sein und bereit zu lernen, aber nichts wissen, dann würde ich ihren Enthusiasmus in Frage stellen. Ich habe das Glück, noch nie jemanden getroffen zu haben, der lernwillig, aber nicht lernfähig war.
lol, Ihr Kriterium funktioniert also, weil Sie es so anpassen, dass es bedeutet, was immer Sie brauchen, wenn Sie einen Kandidaten sehen, den Sie mögen oder nicht. Warum nicht einfach "hat Funken" oder "fehlt Funken", es ist einfacher.
Abgesehen davon, dass ich einen fortgeschrittenen Mathekurs unterrichte, habe ich definitiv bereit, aber nicht fähig getroffen.
@djechlin Du hast Recht. Bereinigt um "Talent".
@Dunk Ich stimme nicht zu. Ich würde 10 Minuten brauchen, um zu entscheiden, ob sie "IRGENDWELCH gut" sind. Aber es würde viel länger dauern, um zu sehen, ob sie "gut genug" waren. Der Sinn von Vorstellungsgesprächen besteht darin, Kandidaten nach und nach auszusortieren. Was das OP getan hat, ist das Äquivalent einer "Suche nach Würdigkeit" zu schaffen.
Um ehrlich zu sein, viele der von uns befragten Junioren haben 1 oder 2 technische Praktika gemacht, weshalb wir sie testen. Wenn Sie ein Junior sind und noch nie ein MVC-Framework verwendet oder ein Programm erstellt haben, in dem Sie eine API-Integration durchgeführt haben, bin ich mir nicht sicher, ob ich sie an Bord bringen möchte. Die Zeit und die Kosten, die es kostet, jemanden von Grund auf neu zu schulen, machen das Wagnis nicht lohnenswert.
+1000 für den Teil „10 Minuten am Telefon mit einem leitenden Entwickler“. Wenn Sie wissen möchten, ob sich ein Entwickler auskennt, verbinden Sie ihn mit einem anderen Entwickler, dessen Meinung Sie vertrauen, und er wird es schneller klären als jeder Test. Kurze, persönliche Tests sind in Ordnung, wenn Sie darauf bestehen (aber alles andere als notwendig), aber die viel zuverlässigere Methode zum Aussortieren schlechter Kandidaten besteht darin, dass ein Peer tatsächlich mit ihnen interagiert.
Ich musste zu weit scrollen, um das zu finden!
Nun, Aron, wenn du tatsächlich die Leute, die "irgendwie gut" sind, in 10 Minuten aussortieren könntest, dann verschwendest du deine Zeit als Entwickler. Unternehmen würden wirklich, wirklich viel Geld an Leute zahlen, die sie mit nichts als guten Entwicklern ernähren könnten. Verdammt, wenn Sie wirklich weiter entwickeln wollten, würden Sie wahrscheinlich immer noch ein Vermögen verdienen, indem Sie einen Tag in der Woche Entwickler überprüfen, und Sie hätten genug Geld, um Ihre eigene Entwicklungsfirma zu finanzieren und das zu tun, was Sie interessiert. Zumal Ihr Unternehmen nur die „guten“ Entwickler einstellen würde.
In Bezug auf: "Keine Übung, die auf echtem Code basiert, sondern echte Arbeit", dies erfordert einige Vorbehalte / Erklärungen. Es wird Sie in vielen Ländern in rechtliche Schwierigkeiten bringen, wenn Ihr Bewerbungsprozess Kandidaten beinhaltet, die echte Arbeit leisten, die Ihrem Unternehmen wohl zugute kommen könnte, ohne dass sie bezahlt werden. Es spielt keine Rolle, ob Sie der Meinung sind, dass der Betrag zu gering ist, oder ob Sie diese Codeüberprüfung nicht verwenden werden - es handelt sich um tatsächliche Arbeit, und viele Gesetzgebungen verlangen, dass die Kandidaten bezahlt werden (oder sogar als eingestellt gelten, wenn auch vorübergehend) zu diesem Zeitpunkt) .
Ich habe 10 Jahre Erfahrung und mir wurde ein Rollentest zugeschickt, für den ich 2-3 Tage gebraucht hätte, um ihn richtig zu machen, unnötig zu erwähnen, dass ich kicherte und ablehnte.
Sie können die (sehr) guten nicht in 10 Minuten identifizieren, aber Sie sollten in der Lage sein, die (sehr) schlechten zu identifizieren

Hier ist ein weiterer Punkt, den ich in den vorhandenen Antworten nicht sehe (von denen ich denke, dass sie das Thema im Allgemeinen gut abdecken). Ich würde mir genau und ernsthaft ansehen, wie lange es tatsächlich dauert, bis die Leute fertig sind. Ich hatte vier Vorstellungsgespräche, bei denen ich eine Programmierübung absolvieren musste, die jeweils anders durchgeführt wurden (und jedes seine eigenen Vor- und Nachteile hatte). Zwei der vier (Nummern 3 und 4 unten) haben viel länger gedauert als angegeben, und beide habe ich aufgrund des damit verbundenen Schwierigkeitsgrades aufgegeben. Ich habe sie unten beschrieben und aus meiner Sicht vom Besten zum Schlechtesten geordnet.

  1. Während des technischen Interviews setzten sie mich an einen Computer, der eine abgespeckte Version ihrer Codebasis hatte, und ließen mich drei relativ kurze Probleme lösen (einen Fehler finden und beheben, den sie absichtlich hinzugefügt hatten, ein neues Feld hinzufügen eine Infotabelle usw.). Sie gaben mir genau eine Stunde dafür, und nach einer Stunde gingen sie meine Lösung und meine Herangehensweise an die Probleme durch. Das gab ihnen einen besseren Einblick in mich als Programmierer, während sie meine Zeit respektierten, indem sie sie kurz und bündig hielten.
  2. Während des technischen Interviews ließen sie mich ein Problem durcharbeiten, auf das sie während der Entwicklung auf einem Whiteboard gestoßen waren, während sie Ideen von ihnen abprallen ließen. Dies war die kürzeste Option, gab ihnen aber dennoch die Möglichkeit zu sehen, wie ich Probleme bewältige und wie sehr ich die notwendige Arbeit tatsächlich erledigen kann.
  3. Während des technischen Vorstellungsgesprächs (für eine Junior-Stelle in der Webentwicklung von Ruby on Rails) gaben sie mir die Aufgabe, eine Webanwendung von Grund auf neu zu erstellen, die zu einer Website navigiert, mehrere Formulare ausfüllt, wenn sie angezeigt werden, Daten von der resultierenden Seite kratzt und präsentiert das für den Benutzer. Sie sagten, dies sollte eine schnelle Übung sein, und es könnte für einen hochrangigen Webentwickler gewesen sein, aber nachdem ich zu diesem Zeitpunkt nur ein Jahr Berufserfahrung hatte, verbrachte ich vier Stunden damit, alles zum Laufen zu bringen, bevor ich aufgab und ging zu Hause (alle Interviewer waren Stunden vor mir gegangen, weil es ein Nachmittagsinterview war, sie sagten, ich solle das fertige Programm einfach speichern, wenn ich fertig bin). Dies ist eine lächerliche Aufgabe für die aufgeführte Position, die ihnen keine Ahnung von meinen Programmierfähigkeiten gab, und schien mir, als wollten sie nur versuchen, kostenlose Arbeit aus dem Deal zu bekommen. Unnötig zu sagen, dass ich den Job nicht einmal wollte, als ich an diesem Tag ging.
  4. Bevor sie überhaupt ein technisches Interview hatten, gaben sie mir den Auftrag, eine Webanwendung zu erstellen, die eine API nutzen würde, die ihr Unternehmen verwendet, um „etwas Interessantes zu tun“. Das war genau so umfassend, wie es sich anhört. Dazu musste ich Folgendes tun, bevor ich überhaupt versuchte, die Anwendung zu erstellen: Erstellen Sie ein Entwicklerkonto für die API, laden Sie das API-Entwicklungskit herunter, erstellen Sie eine öffentlich zugängliche Webanwendung (mit einem anderen Entwicklerkonto), lernen Sie die API kennen und erstellen Sie Daten Repository, auf das mit der API zugegriffen werden soll. Dies dauerte natürlich viele Stunden, nur um loszulegen, und kurz nachdem ich mit der Webanwendung selbst begonnen hatte, bekam ich ein anderes Vorstellungsgespräch und kurz darauf ein Jobangebot, sodass ich die Arbeit an der Aufgabe abbrach.

Um Ihre Frage direkter zu beantworten, sollten Sie eine Programmierübung machen? Ja, aber stellen Sie sicher, dass es darauf zugeschnitten ist, das zu testen, was Ihnen wirklich wichtig ist, und dass es dem Befragten nicht viel zusätzliche Arbeit abverlangt. Möchten Sie mehr über ihr algorithmisches Denken erfahren? Geben Sie ihnen ein Algorithmusproblem. Möchten Sie mehr über ihren Programmierstil erfahren? Geben Sie ihnen ein Codierungsproblem. Möchten Sie mehr über ihren Entwicklungsprozess erfahren? Besprechen Sie mit ihnen ihren Prozess, während sie ein Problem lösen.

Interviewer gaben auf und gingen nach Hause?! FFS, du wolltest dort sowieso nicht arbeiten. Ich wäre 2 Minuten nach ihnen gegangen.
Sie gaben nicht so sehr auf, sondern gingen einfach von der Arbeit nach Hause. Nachdem sie mir die Aufgabe gegeben hatten, überließen sie mich einfach mir selbst, um das Problem zu lösen, und weil es ein Nachmittagsinterview war und ich solide vier Stunden an dem Problem arbeitete, gingen sie schließlich nach Hause. Ein paar der Angestellten waren noch da, als ich ging, und mir wurde klar, dass es an der Zeit war, das Handtuch zu werfen, als diese Jungs das Abendessen ins Büro bestellten

Lassen Sie mich beginnen mit:

  • Mir wurden Tests gegeben, die ich zu Hause absolvieren musste und die zwischen 15 Minuten und 10 Stunden dauerten.
  • Ich habe Online-Tests zum Durchlaufen bekommen.
  • Ich wurde damit beauftragt, die Antwort auf FizzBuzz und andere modische Internettests auf Whiteboards zu schreiben.
  • Ich wurde nach den quadratischen vs. runden Kanaldeckeln gefragt.

Kurz gesagt, ich habe mich mit so ziemlich allen unterschiedlichen Methoden befasst, mit denen Entwickler Interviews führen möchten. Um ganz ehrlich zu sein – ich bezweifle ernsthaft, dass die überwiegende Mehrheit der Leute, die mich interviewten, überhaupt verstanden haben, was die potenziellen Ergebnisse jedes dieser Tests waren, und letztendlich nur Leute eingestellt haben, ob sie ihnen „gefallen“ haben oder nicht.

Bevor Sie überhaupt eine Stellenanzeige aufgeben, sollten Sie sich hinsetzen und genau durchgehen, was Sie einzustellen versuchen, und „Entwickler“ ist keine Antwort, zumindest ist es keine richtige. Eine gute Antwort darauf wäre so etwas wie "Hypothekendomain-Experte".

Jemanden zu finden, der ein bisschen Code schreiben oder bei Google nach der Anwendung eines bestimmten Musters suchen kann, ist trivial im Vergleich dazu, jemanden zu finden, der in dem Geschäft, in dem Sie tätig sind, tätig war und dieses Wissen nutzen kann. Mit anderen Worten, wenn ich für eine Hypothekendokumentationsfirma einstellen würde, würde ich jemanden nehmen, der über den Unterschied zwischen einem 15-jährigen Festkredit und einem ARM-Darlehen sprechen kann, und jemandem, der einen Bubble-Sort-Algorithmus in 2 Minuten schreiben könnte. Der Grund dafür ist, dass "normale" Geschäftsleute alle möglichen seltsamen Anforderungen stellen und Domänenexperten leichter auf den Punkt kommen, was benötigt wird, während jemand, der nichts weiß, gerne Dinge hinzufügt, die nutzlos sind oder die App wirklich schlecht machen.

Um auf die Fragen zurückzukommen, stellen Sie nur Go-/No-Go-Fragen .

Ist es wichtig, dass die Person Ihnen den Unterschied zwischen einer virtuellen und einer abstrakten Methode erklären kann? Kann sein, ist es normalerweise nicht. Ich würde wetten, dass ein guter Teil der Entwickler kaum weiß, wann sie diese Schlüsselwörter verwenden sollen, aber sie sind nicht Ihre Superstars, sie sind die Basis, die ohne die visuellen Designer nicht programmieren kann.

Ist es wichtig zu erkennen, wann eine Abfrage für die SQL-Injektion geöffnet ist? Für eine Sr-Position - absolut; für eine Jr. Position Nr. Dies ist etwas, das leicht trainiert und über Code-Review gehandhabt werden kann. Daher der Grund, warum Sie die sr wollen. sie in- und auswendig zu kennen - damit sie den Nachwuchs ausbilden können.

Ist es wichtig, dass sie den genauen Maximalwert eines Int32Datentyps kennen? Normalerweise nicht - für dieses Niveau an trivialem Wissen ist Google da; aber vielleicht ist Ihre Anforderung das Codieren auf speicherbeschränkten Geräten - in diesem Fall: absolut.

Ich interviewe und stelle Entwickler ein. Ich schicke keine Tests nach Hause – es ist zu einfach, sich von einem Freund helfen zu lassen. Ich benutze keine Online-Testseiten - angesichts der Tatsache, dass das Scoring automatisiert werden muss, ist es trivial zu spielen. Ich fordere die Kandidaten nicht auf, die Antwort auf Fizzbuzz aufzuschreiben – fast jeder hat diesen Test gesehen und sollte die Antwort auswendig kennen; alle anderen sind im letzten jahr ins feld eingestiegen und sind sowieso jr.'s. Ich stelle auch keine Trivia-Fragen - die Antwort aufsagen zu können, bedeutet normalerweise nur, dass Sie die Frage schon einmal gehört haben.

Was ich tue, um Leute zu interviewen:

  • Ich bitte sie, ein oder zwei frühere Projekte zu beschreiben. Alles, worum es mir an dieser Stelle geht, ist, es ihnen bequem zu machen und sie zum Reden zu bringen. Dies ist ein Go/No Go, denn wenn ich nicht verstehe, was sie sagen, kann ich nicht mit ihnen arbeiten.

  • Ich stelle ihnen ein paar spezifische Fragen in der Technologie, die sie verwenden müssen. Wenn es sich um einen SQL-Server handelt, frage ich nach der Aktualisierung bei einem Join. Wenn es sich um HTML handelt, gebe ich ihnen eine 10-zeilige HTML-Datei mit ein paar CSS-Klassen und frage sie, was die Ausgabe ist. Dies sind triviale Fragen für Leute mit Erfahrung in diesen Bereichen und sondert Anwärter schnell aus.

  • Wenn ich nach einem Sr.-Entwickler suche, stelle ich Fragen zum Domänenwissen. Keine Grenzfälle, sondern Kernprinzipien. Wenn ich Sie brauche, um ein Projekt für ein Buchhaltungs-Backend zu leiten, sollten Sie sich besser mit den grundlegenden Buchhaltungsprinzipien auskennen.

  • Wenn ich nach einem Jr.-Entwickler suche, frage ich nach Lieblingsprojekten. Alles, was ich wissen möchte, ist die Art der verwendeten Technologie. Dies sollte Ihnen einen Hinweis darauf geben, was sie wirklich tun wollen. Mit anderen Worten, ein C#-Entwickler wird wahrscheinlich keine Lieblingsprojekte in PHP durchführen. Ich erwarte ehrlich gesagt nicht zu viel von einem Junior-Entwickler, außer dass er trainierbar ist. Wenn sie aktiv an einem Lieblingsprojekt arbeiten, kann ich sie schulen. Wenn sie der Typ sind, der Leute braucht, die ihnen sagen, was sie tun sollen, gibt es weitaus größere Unternehmen, in denen diese Leute arbeiten können.

Ich denke mir diese Fragen nicht spontan aus, die möglichen Antworten werden im Voraus berücksichtigt und passen zu einem Go / No Go-Muster. Wenn eine Frage nicht dazu passt, ist sie nicht relevant. Ich frage auch jeden Kandidaten die gleichen, es sei denn, ich bin zu 100 % davon überzeugt, dass ich ihn nicht einstellen werde. An diesem Punkt werde ich das Vorstellungsgespräch abbrechen.

Wenn Sie aus irgendeinem Grund immer noch darauf bestehen, einen Test nach Hause zu schicken, stellen Sie sicher, dass die Fähigkeiten, die erforderlich sind, um diesen Test in angemessener Zeit erfolgreich abzuschließen, tatsächlich Fähigkeiten sind, die Ihnen wichtig sind.

Ich hatte ein Unternehmen, das mir einen Take-Home-Test gab, bei dem es darum ging, einen benutzerdefinierten Kryptografiedienstanbieter zu schreiben. Ich habe den Test gemacht, weil er irgendwie interessant war; sie haben mich eingestellt. Zu keinem Zeitpunkt meiner Zeit dort habe ich irgendetwas getan, das auch nur im Entferntesten mit Sicherheit, Kryptographie oder sogar Mathematik zu tun hatte, als ein paar Zahlen hinzuzufügen. Ich frage mich, wie viele Leute sie mit diesem Test vertrieben haben?

Danke für deine Antwort, gute Antwort. Wir haben einen ähnlichen Ansatz ohne den Take-Home-Test.
Ein guter Entwickler kann sich Domänenwissen besser aneignen, als ein guter Domänenexperte lernen kann, gut zu programmieren. Sie verengen unnötig Ihren Einstellungspool, und Ihr Unternehmen wird darunter leiden.
@DavidThornley: Sie und ich haben wahrscheinlich unterschiedliche Definitionen für einen großartigen, guten und einen mittelmäßigen Entwickler. In meiner Welt wird ein großartiger Entwickler die richtigen Fragen stellen und sich schnell Domänenwissen aneignen. Ein guter Entwickler kann das, was ihm gesagt wird, im Allgemeinen gut umsetzen, stellt aber keine intelligenten Fragen dazu. Ein mittelmäßiger stellt überhaupt keine Fragen und muss seine Arbeit oft mehr als normal wiederholen. Leider ist es viel schwieriger, einen großartigen Entwickler zu finden, als einen guten zu finden, der die Domain bereits kennt.
"der genaue Maximalwert eines Int32-Datentyps" ... ähm, es ist INT_MAX, nicht wahr?

Aus Sicht einer Person, die einen Job sucht, vermeide ich im Allgemeinen Orte, deren Codierung länger als 1 Stunde dauert. Einmal ging ich an diesen Ort, der ein fast 3-tägiges Java-Codierungsprojekt erforderte. Ich habe alles gemacht und der Typ war sogar beeindruckt davon, aber sie haben mir gesagt, dass sie nach der zweiten Interviewphase jemand anderen eingestellt haben. Wenn ich danach zu einem Unternehmen komme, würde ich jedes Projekt ignorieren/übergeben, das mehr als ein paar Stunden zur Fertigstellung benötigt. Meine Zeit ist genauso wertvoll wie ihre und ich verschwende sie lieber nicht mit Dingen, die mich nicht weiterbringen.

Wenn Ihre Codierungsübung zu lang ist, sind die Leute vielleicht nicht bereit, die Zeit zu investieren. Ich würde versuchen, sie so zu reduzieren, dass sie höchstens eine Stunde dauert, aber gleichzeitig ein Verständnis für Codierung und vielleicht demonstriert Setzen Sie eine Frist darauf wie "Bitte bis COB morgen abschließen" oder so etwas. Sie können immer noch etwas online „kopieren und einfügen“, machen es sich aber schwer, indem sie spezifisch sind und nicht etwas, das Sie online lesen.

Ein aussagekräftiger Lebenslauf, Referenzen und die Fähigkeit, an einem kurzen Test teilzunehmen, sind möglicherweise alles, was Sie brauchen. Bleib dran und viel Glück bei der Jobsuche.
Amazon hat sich vor ein paar Jahren an mich gewandt und mich gebeten, einen 3-stündigen Test mit 3 verschiedenen Rätseln zu machen, um UND-Code herauszufinden. Ich habe alle 3 ausgelöscht, aber nur eine zu meiner Zufriedenheit beendet. Es hat irgendwie Spaß gemacht, aber das Fehlen jeglicher Art von Feedback war sehr enttäuschend. Ein Jahr später hatte ich ein weiteres Programmierinterview mit ihnen, aber dieses Mal kam ein Mitglied des Teams auf ein Rätsel und wir haben es gemeinsam codiert. Ich habe den Job nicht bekommen, aber ich habe in diesen 90 Minuten paarweiser Programmierung genauso viel gelernt wie in einem halben Semester herkömmlicher Schulbildung.
Das einzige Mal, als ich ein „mit nach Hause nehmen“ Programmierproblem hatte, antwortete das Unternehmen nie, nachdem ich meine Lösung eingereicht hatte. Ich habe mich nach einer Woche mit ihnen in Verbindung gesetzt und der Manager sagte, er habe es bekommen, aber noch keine Zeit gehabt, es sich anzusehen. Sie haben nie zurückgerufen und ich auch nicht.
"Der Typ war sogar davon beeindruckt, aber sie sagten mir, dass sie jemand anderen eingestellt haben." Aber nicht beeindruckt genug, um Sie einzustellen? Haben sie dir gesagt warum?
@DaveisNotThatGuy Es ist wie der Test des OP. Der Test wurde nur durchgeführt, um ein persönliches Interview zu erhalten; Es wird nicht verwendet, um sie einzustellen, sondern nur um sicherzustellen, dass sie sich auskennen, bevor sie sie in Betracht ziehen. Sie waren beeindruckt, dass ich die Aufgabe abgeschlossen und die richtigen Ergebnisse erzielt hatte. Ich schätze, sie waren einfach nicht beeindruckt von meinem Interview.
Obwohl sie Sie später als guten Programmierer bezeichneten, wussten sie, bevor Sie das erste Vorstellungsgespräch verließen, dass Sie in der No-Hire-Spalte waren. Wie hättest du den Programmiertest anders machen können, um das auszugleichen und in die nächste Runde zu kommen? Scheint dir kaum fair zu sein.

Früher habe ich fest an Codierungstests und Whiteboard-Codierung geglaubt, aber ich habe angefangen zu erkennen, dass sie ziemlich nutzlos sind, weil

Was testest du überhaupt?

Ein Whiteboard-Test oder kurzer Programmiertest gibt Ihnen einen Einblick in das Individuum, aber wirklich nicht so viel. Es sei denn, Sie planen, dass jemand seine Zeit damit verbringt, Code auf einem Whiteboard oder Code im FizzBuzz-Stil zu schreiben.

Was willst du ?

Sie wollen jemanden, der:

  • leidenschaftlich
  • bereit zu lernen
  • Probleme lösen können*
  • recht technisch
  • wird Ihrem Team helfen, sich zu verbessern

* Beachten Sie, dass die meisten Entwickler ihre Probleme lösen, indem sie wissen, nach welchen Begriffen sie in Google suchen müssen.

Das Letzte , was Sie einstellen möchten, ist jemand, der nicht gut zu Ihrem Team passt, weil er es nach unten ziehen wird.

Wie können Sie diese testen?

  • Fragen Sie sie nach einem Projekt, das ihnen Spaß gemacht hat. Wenn sie nicht bereit sind, darüber zu sprechen, versuchen Sie, sanften Unglauben auszudrücken, z. B. "Sie können X nicht, oder?" Wenn es etwas ist, wofür sie leidenschaftlich sind, werden sie dich korrigieren. Dies wird Ihnen auch helfen zu erfahren, ob sie technisch sind oder nicht.
  • Fragen Sie sie nach Dingen, die sie kürzlich gelernt haben. Oder was sie aus dem Projekt gelernt haben, an dem sie gearbeitet haben.
  • Fragen Sie sie nach dem letzten Mal (oder einer Zeit), in der ihnen etwas Wissen fehlte. Wie bekamen sie die Informationen, die sie brauchten? Sind sie zu einem Teamkollegen gegangen? Haben sie im Internet gesucht?
  • Fragen Sie sie, ob sie Verbesserungen an ihrem aktuellen/letzten Team sehen möchten. Brauchten sie bessere Commit-Nachrichten? Mehr Code-Reviews? Weitere Tests? Mehr Automatisierung?
  • Fragen Sie sie, welche Technologie sie begeistert und warum.

Wenn Sie jemanden haben, der technisch kompetent in diesem Gespräch ist, ist es das Einfachste auf der Welt zu sagen, ob diese Person die Schlimmste sein wird. Ein Beispiel: Wir hatten einen Jungen, der zu einem Interview kam – er sagte, dass seine Java-Kenntnisse auf einer Skala von 1 bis 10 wie 7 bis 8 seien. Ich glaube nicht, dass er überhaupt wusste, dass Java in eine JAR-Datei kompiliert wurde, die später von der JVM in Maschinensprache kompiliert wurde. Ich würde mich vielleicht auf 2 oder 3 einstufen und das weiß ich .

Tatsächlich wurde ihm dieselbe Frage von unserem CTO in einem Interview am Vortag gestellt, und unser CTO rief ihn daraufhin an und erklärte ihm, dass er auf keinen Fall ein 7-8 sei.

Unser CTO fragte ihn auch nach seinem Lieblingsprojekt, das mit Handscannern zu tun hatte. Aber er konnte nichts darüber erklären, wie sie arbeiteten oder die Tatsache, dass sie Umfragen nutzten, um Warteschleifen zu verhindern. Er konnte nicht eine einzige technische Sache erklären.

Der Typ wurde nicht eingestellt.

Finden Sie heraus, nach welchen Attributen Sie suchen, und finden Sie dann heraus, wie Sie diese testen können

Aber ich muss wirklich sehen, wie sie kodiert!

Okay, das ist in Ordnung – aber wenn sie nicht in einem Silo programmieren wird, ist es das Beste, sie als Auftragnehmerin für ein kleines, klar definiertes Projekt einzustellen. Vielleicht fügen Sie die Möglichkeit hinzu, einige Dateien von einem FTP-Server herunterzuladen und sie dann in Ihrer Datenbank abzulegen. Etwas Einfaches, das nicht viel/kein Domänenwissen erfordert.

Lassen Sie Ihre Kandidaten mit einem oder zwei bestehenden Mitarbeitern zusammenarbeiten und bezahlen Sie sie für ihre Zeit. Sie werden genau sehen, wie sie arbeiten und wie gut sie mit dem Team zusammenarbeiten. Kommunizieren sie gut? Sind sie leicht frustriert? Sind sie hartnäckig?

Es gibt Dinge, die Sie tun können, um bessere Mitarbeiter einzustellen ... aber ein Programmierwettbewerb gehört wahrscheinlich nicht dazu.

Sie sprechen einige gute Punkte an, aber ein Nachteil von „Am besten stellt man sie als Auftragnehmerin für ein kleines, genau definiertes Projekt ein“ ist, dass die meisten Kandidaten ein Vollzeitangebot einer Einstellung durch einen Vertrag vorziehen werden. Wenn sie mehrere Angebote haben, nehmen sie die "sicherere" Option.
@RQDQ stimmte zu. Ich denke, es ist die am wenigsten effektive Form der Befragung ... aber es ist die effektivste Form der Befragung mit Code.
Das alte „versuchen, bevor du kaufst“. Obwohl die gesamte Branche diesen Weg geht und meine nächste Position wahrscheinlich ein 3-6-Monatsvertrag sein wird, bin ich traurig über die darin verankerte Angst. Wann haben wir aufgehört, unsere Hausaufgaben zu machen, und wann haben wir Angst bekommen, jemanden zu feuern?
@JoshuaDrake Arbeitslosigkeit, das ist der Zeitpunkt ;)

Wie andere angemerkt haben, werden einige Entwickler möglicherweise von einer 1-2-stündigen Programmierübung abgeschreckt, um sich für einen Job zu bewerben. Was besser funktionieren könnte, ist eine Whiteboard-Sitzung, bei der der Kandidat während des Vorstellungsgesprächs ein Problem auf einem Whiteboard löst. Dies gibt Ihnen die Möglichkeit, ein persönliches Vorstellungsgespräch zu führen und gleichzeitig sicherzustellen, dass sie über technische Fähigkeiten verfügen.

Diese Probleme sollten nicht extrem schwierig sein oder einen Entwickler zum Stolpern bringen. Ein klassisches Beispiel ist FizzBuzz . So können Sie sehen, wie sie denken, und wissen auch, dass sie zumindest programmieren können und nicht googeln müssen, wie man eine Schleife macht.

Versagt irgendjemand wirklich bei FizzBuzz?
@PatriciaShanahan: Ja, Sie wären die ganze Zeit überrascht über die Bandbreite der Qualität. Ein Nebeneffekt der Nachfrage nach Entwicklern ist, dass viele Leute versuchen möchten, als einer eingestellt zu werden, selbst wenn sie nicht ganz bereit oder gut genug sind, können sie sich davon überzeugen, dass sie bei der Arbeit lernen könnten. Ein anständiger kurzer technischer Test hilft wirklich dabei, zu verhindern, dass versehentlich jemand eingestellt wird, der das Gespräch zwar führen, aber in der Praxis nicht liefern kann, und diese Situation ist so häufig, dass Sie eine Art Interviewtechnik benötigen , um sie zu filtern.
Die Nützlichkeit von FizzBuzz wird in Programmers SE diskutiert: programmers.stackexchange.com/questions/15623/fizzbuzz-really
Das hat bei uns sehr gut funktioniert. Während eines guten Vorstellungsgesprächs sitzt das gesamte Team am Whiteboard, um gemeinsam mit dem Kandidaten die Lösung zu entwickeln. =)
@NeilSlater - FizzBuzz war großartig, als es zum ersten Mal herauskam. Das war vor fünf Jahren, als diese Diskussion stattfand, noch ein gutes Unterscheidungsmerkmal. Das ist jetzt nicht so toll. Eine Sache, in der sich die US-Bildung hervorgetan hat, ist, Kindern beizubringen, wie man bei einem standardisierten Test übertrifft. FizzBuzz (zusammen mit allem Ähnlichem) hat jetzt den Status eines standardisierten Tests erreicht.
@DavidHammen: Interessant. Sie könnten "FizzBuzz-Test" jedoch einfach so umdefinieren, dass es "jede einfache Programmierherausforderung ähnlich wie FizzBuzz" bedeutet. Ein ähnliches Problem zu finden, sollte nicht schwer sein.
@PatriciaShanahan Ich habe in meiner jetzigen Position 2 Vorstellungsgespräche geführt. FizzBuzz-Erfolg ist 0/2.
@NeilSlater Viele Leute kennen FizzBuzz jetzt auch. Beachten Sie, dass ich gesagt habe: „Ein klassisches Beispiel ist …“ Ich wollte nicht andeuten, dass FizzBuzz das A und O eines Whiteboarding-Tests ist, aber die allgemeine Idee bleibt die gleiche. Geben Sie dem Kandidaten ein triviales Problem, das er lösen soll, und beobachten Sie, wie er es löst.
@NeilSlater Ich würde zustimmen, WENN wir nicht immer noch sehen würden, dass Kandidaten FizzBuzz scheitern . Das heißt, wir machen FizzBuzz nicht isoliert, wenn sie einfach eine grundlegende Implementierung ohne Fehler oder Diskussionen schreiben, bitten wir sie, sie auf andere Weise zu implementieren. Die Nachbereitung neigt dazu, diejenigen zu zeigen, die verstehen, was tatsächlich passiert, anstatt sich an eine bestimmte Implementierung zu erinnern. Das Follow-up überprüft auch einige menschliche Interaktionsfähigkeiten.
@PatriciaShanahan: Ich bin mir ziemlich sicher, dass sie FizzBuzz nicht verstehen, aber die Anforderungen verstehen. Zum Beispiel das Drucken sowohl der Zahl als auch des Textes (z. B. 1, 2, 3Fizz, 4, ...), wenn die Anforderungen erfordern, dass nur der Text gedruckt wird (z. B. 1, 2, Fizz, 4). Oder wenn sie strenger sind (hehe), reicht es nicht aus, separate Fizz und Buzz anzuhängen, um FizzBuzz zu erstellen, sondern Sie sollten stattdessen zum Beispiel eine dritte Zeichenfolge "FizzBuzz" auf Modulo 15 verwenden.
FizzBuzz, wenn ich in einem Interview danach gefragt würde, würde ich es als Gelegenheit nutzen, um schlechte Interviewer auszusondern. Es testet eine Sache "wissen Sie, was der Modulo-Operator ist". Etwas, das ich selten im Produktionscode verwende. Was für eine komplette Zeitverschwendung.
@AdrianThompsonPhillips Das war mein erster Eindruck, bis ich Leute mit 10 Jahren Erfahrung sah, die den Unterschied zwischen einem Zuweisungsoperator und dem Gleichheitsoperator nicht kannten oder nicht wussten, wie man eine Schleife schreibt usw. Es gibt leider einige sehr unter- qualifizierte und überwältigende Kandidaten.
@silencedmessage Ich stimme voll und ganz zu, Fragen zu diesen Dingen zu stellen, wäre viel besser als historische Fragen zu verknüpften Listen, Modulo, Bitverschiebungen und Wertvertauschungen zwischen zwei Registern zu verschleiern.

WERDEN SIE DEN CODIERUNGSTEST NICHT LOS!!!!

Wenn Sie Programmierer werden wollen, müssen Sie Code schreiben, der etwas bewirkt. Quizfragen zu beantworten ist nicht so wichtig. Über vergangene Erfahrungen zu plaudern ist gut, aber keinesfalls ein Ersatz dafür, programmieren zu können.

Tun Sie, was nötig ist, um Menschen dazu zu bringen, den Test zu machen und diesen Job zu bekommen. Machen Sie es kürzer oder bezahlen Sie sie. Bringen Sie sie an einem Wochenende vorbei, damit jeder Zeit hat, diese Person in Aktion zu beobachten.

Dies hängt wirklich davon ab, ob es Personen gibt, die die Ergebnisse der Tests/Beobachtungen interpretieren können. Möglicherweise möchten Sie einen Dritten mit diesem Screening beauftragen, wenn Sie nicht wissen, wie es geht. Nur die richtige Antwort zu finden, ist nur die halbe Miete. Entwickler brauchen Google-Kenntnisse, aber es gehört noch viel mehr dazu. Wenn ein Programmierer den Test schneller durchführen kann, ist das ein Plus.

Abhängig von Ihrem Projekt bevorzugen Sie möglicherweise eine fließende Sprache, damit der Entwickler sofort effizient arbeiten kann. Auf der anderen Seite könnten Sie auf lange Sicht leiden, wenn Sie sich für den weniger erfahrenen Programmierer entscheiden, der mit einem Schlüsselmerkmal Ihrer App hängen bleibt, oder er baut eine so schlechte Struktur auf, dass es schwierig ist, sie zu ändern und zu warten. Vielleicht wären Sie mit einem guten Programmierer besser dran gewesen, der bereit ist, sich anzupassen und die erforderliche Sprache zu lernen. Es gibt viele Entwickler, die vor bestimmten Stacks, Frameworks, Sprachen, Tools und Betriebssystemen absolut davonlaufen werden.

Entwickler sind kritische Positionen, deren Besetzung sehr teuer ist. Ich verstehe Ihre Sorge, dass Sie zu viele gute verjagen, aber Sie brauchen nur einen. Sparen Sie nicht.

Ihre Aufgabe ist es, dafür zu sorgen, dass Sie keinen schlechten Programmierer einstellen, und nicht jeden, der sich bewirbt, richtig zu bewerten. Es werden Fehler gemacht. Sichern Sie Ihre Wette ab und machen Sie nicht das Schlimmste.
Das ist genau der Grund, warum wir es eingeführt haben, es gibt zu viele Cowboy-Entwickler da draußen, die eine Million Sprachen in ihrem Lebenslauf haben, aber letztendlich nicht programmieren können. Es ist auch die bestbezahlte Position im Unternehmen, also können wir es uns nicht leisten, das Risiko einer schlechten Einstellung einzugehen ... es hat uns auf der anderen Seite ein paar Mal den Arsch gerettet, ein paar Leute, von denen ich vermutete, dass sie schwach waren Kandidaten am Telefon nach einem technischen Interview, haben ihre Job-App in letzter Minute zurückgezogen, nachdem ich in der zweiten Runde den Coding-Test eingeführt habe. Es ist mir in den Sinn gekommen, einfach das technische Telefoninterview zu machen.
@bobo2000 - Sie müssen die Länge des Tests wirklich gegen die Verfügbarkeit von Talenten in Ihrem Bereich abwägen. Wenn es sich um einen Markt für Programmierer handelt, müssen Sie leider Zugeständnisse machen. Als eine Art „A/B“-Test könnten Sie zufällig ein paar Kandidaten auswählen, um eine kürzere Version des Tests zu geben und zu sehen, ob sie mehr Interesse zeigen.
@bobo2000 Da verstehe ich etwas nicht: In anderen Kommentaren sagst du, dass du hauptsächlich frische Absolventen als Bewerber hast, aber hier sagst du, dass du die bestbezahlte Position im Unternehmen besetzen willst. Irgendetwas passt nicht wirklich zusammen. Können Sie erklären, wie diese beiden Tatsachen zusammenpassen?
Ein Codierungstest ist eine Sache. Ein Codierungstest, der mehr als 8 Stunden dauert, ist eine ganz andere Sache.
@bobo2000 "Ich gebe einigen Kandidaten ( meistens frischen Absolventen ) die Programmieraufgabe" + "Es ist auch die bestbezahlte Position im Unternehmen" = hier stimmt etwas nicht.
Ich habe das Gefühl, dass die "frischen" Absolventen nicht mehr auf das Versprechen von Romantik und Reichtum von dem dünn finanzierten Startup hereinfallen. Gut für sie! Ich habe diese letzte Blase zweimal gemacht, und keiner dieser Müllhalden ist noch da.
@RaduMurzea: In der Start-up-Welt sind Programmierer, selbst frisch aus dem College kommende Programmierer, in der Regel die bestbezahlten Leute, gefolgt von den Vertriebsmitarbeitern und dann den CEOs/Gründern. Nach ein paar Jahren werden Sie in der Regel feststellen, dass die Managergehälter steigen, da sie es nicht mehr für zu riskant halten, etwas mehr Geld auszugeben, anstatt zu reinvestieren. Nach etwa fünf Jahren verdienen Verkäufer mehr als Programmierer, wenn das Unternehmen gut verdient. Aber am Anfang geben die Gründer normalerweise viel Geld aus, um sicherzustellen, dass sie die besten Programmierer bekommen, die sie sich leisten können.
@slebetman - wie er sagte. Für ein Start-up mit knappen Ressourcen ist die Verhinderung der Einstellung eines schlechten Programmierers der Schlüssel zum Wachstum, da sie das Produkt entwickeln.
Wenn Sie sich beim Aufbau Ihres Unternehmens auf frische Absolventen verlassen, haben Sie ein Problem.
@sevenseacat Um ehrlich zu sein, können sich die meisten kleinen Unternehmen keinen leitenden Entwickler leisten. Ein guter Senior-Entwickler kostet zwischen 50.000 und 100.000, und ein mittlerer Entwickler liegt zwischen 40.00 und 50.000. Befindet sich das Start-up in einer Wachstumsphase, wie es bei uns der Fall ist, dann sind Sie auf Junioren beschränkt. Die Kunst besteht darin, jemanden zu finden, der in Praktika schon viel gelernt hat. Sie werden wahrscheinlich nach ein oder zwei Jahren (nachdem sie die Starterfahrung gesammelt haben) weiterziehen, aber bis dahin werden hoffentlich mehr Ressourcen vorhanden sein. Auch die Ausbildung nehme ich hier sehr ernst.
@DaveisNotThatGuy Ich habe in vielen als Ex-Entwickler gearbeitet und stimme Ihnen zu. Das Problem bei vielen ist, dass sie einen Junior einstellen und nicht in ihre Ausbildung investieren, sondern erwarten, dass sie wie ein Senior programmieren. Jetzt, wo ich das Management bin, habe ich die Möglichkeit, etwas anders zu machen, vorausgesetzt, sie haben eine gute Basis, von der aus sie arbeiten können.
Fragen Sie sich, ob Sie wirklich in der Lage sein werden, einen Junior-Entwickler auszubilden? Bist du qualifiziert, einen Junior auszubilden? Habt ihr Zeit? Haben Sie dafür andere, erfahrene Entwickler? Wie sieht dein Trainingsplan aus? Welche Fortschritte erwarten Sie? Haben Sie Standards zum Erstellen Ihres Codes veröffentlicht, an denen Sie den Neuen messen können? Die meisten Startups haben keine davon. Wenn Sie keine dieser Fragen beantworten können, stellen Sie keinen Neuling ein. Sie und er werden es bereuen.
Deshalb meide ich Startups wie die Pest, das macht keinen Sinn. „Stellen Sie jemanden ein, der wahrscheinlich keine gute Arbeit leistet, aber billig ist, sodass Sie später viel mehr für die Reinigung ausgeben müssen.“
Rufen Sie mich nicht an einem Wochenende zu einem Vorstellungsgespräch an. Ich reserviere meine Wochenenden für andere Dinge als die Arbeit (außer natürlich in Krisenzeiten). Wenn es sich lohnt, mir einen betreuten Programmiertest zu geben, lohnt es sich, ihn während der normalen Arbeitszeiten zu betreuen.

Meiner Meinung nach ist das Problem, das Sie hier haben, nicht unbedingt der Programmiertest. Zuerst haben Sie das telefonische technische Interview und dann einen Heimarbeitstest vor einem persönlichen Interview. Es klingt, als würden Sie Ihre Kandidaten auf Distanz halten und es bis zur letzten Minute belassen, bevor Sie sie treffen. An welchem ​​Punkt erwarten Sie, dass sich Kandidaten entscheiden, für Sie zu arbeiten?

Ich gehe davon aus, dass Ihre Stellenanzeige den meisten ähnlich ist und sich daher auf den Standort, das Gehalt und eine (Wunsch-)Liste mit Fähigkeiten konzentriert. Die Kandidaten wissen nicht wirklich, woran sie arbeiten würden, irgendetwas über die Umgebung oder die Menschen, mit denen sie interagieren müssten. Sie haben ihnen den Job noch nicht verkauft, hier fordern Sie sie auf, ihre technischen Fähigkeiten zweimal unter Beweis zu stellen, bevor sie eine einzige Frage zu der Arbeit stellen dürfen.

Ich schlage vor, dass Sie versuchen, das Format des technischen Telefoninterviews in ein 30- bis 45-minütiges Gespräch über den Job zu ändern, einschließlich zahlreicher Gelegenheiten für Fragen von den Kandidaten, dann 15 Minuten mit technischen Fragen als Bildschirm, damit Sie immer noch die Möglichkeit haben, auszuwählen die besseren Bewerber, ohne es zu beschwerlich zu machen.

Ich würde auch in Betracht ziehen, die Programmierherausforderung vor den Vorstellungsgesprächen vor Ort durchzuführen. Es würde den Kandidaten machbarer erscheinen, ihnen einen Anreiz geben, mit dem Prozess auf Kurs zu bleiben, und Sie würden den Vorteil haben, die tatsächliche Zeit zu beobachten, die für die Herausforderung aufgewendet wird (ich denke, Sie werden überrascht sein).

Vielen Dank dafür, was soll ich tun, wenn der Kandidat nicht im selben Land ist und daher nicht vor Ort kommen kann, um die Aufgabe zu erledigen? Ich werde morgen einen Kandidaten interviewen, der in Hongkong ist, wir sind in Großbritannien. Nach dem persönlichen Gespräch erwarten wir, dass die Kandidaten entscheiden, ob sie für uns arbeiten möchten.
Sie müssen das Interview den Umständen anpassen. Trotzdem müssen Sie dem Kandidaten den Job verkaufen und dürfen ihn nicht nur mit Tests bewerfen. Darüber hinaus ist der gesamte Prozess eine Übung, um Vertrauen zwischen Ihnen beiden aufzubauen. Sie möchten, dass Ihr Kandidat genau weiß, worauf er sich einlässt; Wenn ein internationaler Umzug erforderlich ist, möchten Sie vielleicht etwas mehr Zeit damit verbringen, sich besser kennenzulernen.
Verwenden Sie die Bildschirmfreigabe, wenn jemand nicht persönlich vorbeikommen kann.
@user70848 Der Zweck der Programmierherausforderung besteht darin, sicherzustellen, dass der Kandidat eine Programmieraufgabe bewältigen kann. Bildschirmfreigabe ist eine schreckliche Art, dies zu tun, da Sie eine Stunde damit verbringen müssten, den Kandidaten zu beobachten, und er sich zweifellos selbstbewusster fühlen würde, als wenn er es wirklich tun würde. Wenn der Job andererseits Paarprogrammierung erfordert, wäre dies eine gute Möglichkeit, dies aus der Ferne zu tun.
@koan Das stimmt, aber wenn Sie sich buchstäblich eine halbe Welt von jemandem entfernt befinden, ist dies eine viel billigere und einfachere Lösung, um beiden Parteien bei der Entscheidung zu helfen, ob sie mehr Zeit und Energie investieren möchten. Es ist nicht so, dass Sie keine weitere Programmieraufgabe haben können, wenn Sie sich wieder persönlich treffen.

Ich mag Take-Home-Tests im Rahmen von Vorstellungsgesprächen aus vielen der bereits genannten Gründe nicht – verlängert den Einstellungsprozess, entwertet die Zeit des Bewerbers, bekomme möglicherweise sowieso keinen Rückruf usw.

Mein Hauptproblem ist, dass es unrealistisch ist, wie das Team tatsächlich arbeitet, und den Interviewprozess einseitig macht. Ein Bewerber möchte, ob dieser Ort gut zu ihm passt, einschließlich der Kultur, wie das Team Probleme angeht und löst. Sie suchen in erster Linie auch nach Eignung, einschließlich ihrer Arbeitsweise und ob sie über die richtigen Fähigkeiten verfügen. Ein Take-Home-Test bietet einem Bewerber keine Gelegenheit, die weichen Qualitäten eines Arbeitsplatzes zu bewerten, und Arbeitgeber erfahren nicht, wie der Bewerber das Problem angegangen ist.

Eine bessere Lösung könnte darin bestehen, dem Bewerber ein offeneres Problem zu geben, das auf jede Art von kreativer Weise gelöst werden kann. Sie könnten es sogar auf die Sprache X beschränken. Anstatt es per E-Mail einzusenden, laden Sie sie zurück, um es sich selbst und dem oberen Management zu präsentieren. Es gibt ihnen Autonomie und Anreiz, gute Leistungen zu erbringen, weil es ein weiteres Vorstellungsgespräch verspricht und zeigt, dass es Ihnen wichtig ist, ihre Meinung zu erfahren.

Wenn Sie einen Test verwenden müssen, um zu überprüfen, welche Kandidaten es zu einem Vorstellungsgespräch mit dem oberen Management schaffen, würde ich den Test in das Vorstellungsgespräch aufnehmen, damit Sie ihren Denkprozess gemeinsam besprechen können.

Möchten Sie Programmierer einstellen , die nicht programmieren können ?

Ich wage zu behaupten, dass Sie dies nicht tun.

Programmierer einzustellen, die nicht wirklich Probleme lösen und Code schreiben können, ist eine gute Möglichkeit, ein Technologieunternehmen zu ruinieren. Und Sie werden nicht erfolgreich darin sein, die Programmierer auszusortieren, die nicht wirklich programmieren können (und davon gibt es viele da draußen), wenn Ihr Einstellungsprozess nicht eine Art Programmiertest beinhaltet.

Sind Sie bereit, Ihre Standards zu senken, weil jeder versucht, Programmierer einzustellen?

Vielleicht bist du es, aber ich denke nicht, dass du es sein solltest. Wie in den Kommentaren und Antworten erwähnt, gibt es Kandidaten, die sich nicht die Mühe machen, Programmierübungen als Teil eines Vorstellungsgesprächs zu machen, weil sie das einfach nicht brauchen, um einen Job zu bekommen .

Aber sind das wirklich die Leute, die Sie einstellen wollen? Diejenigen, die den Weg des geringsten Widerstands gehen, tun, was für sie kurzfristig am vorteilhaftesten ist, und sich nicht wirklich genug um Ihr Unternehmen kümmern, um eine einfache Programmierübung zu absolvieren? Das scheinen keine positiven Attribute zu sein, und sie geben nicht viel Vertrauen in die Fähigkeit, diese Kandidaten langfristig zu halten (was auch für ein Technologieunternehmen wichtig ist, da die Lernkurven in der Regel steil sind und die Kosten dafür hoch sind der Austausch von bestehendem Personal ist sehr hoch).

Also lassen Sie diese anderen Unternehmen die Programmierer haben, die nicht einmal gestört werden können. Sie wollen sie sowieso nicht einstellen. Im Gegensatz zu ihnen haben Sie einen Plan. Eine, die nicht auf dem Trugschluss „Ein Programmierer ist ein Programmierer“ basiert. Ihr Fokus sollte auf Qualität und Nachhaltigkeit liegen, nicht auf Bodycount.

Ist es ein Problem, Kandidaten abzuschrecken?

Generell nein, solange sie aus gutem Grund abgeschreckt werden. Sie wollen keine Leute einstellen, die nicht auf dem neuesten Stand sind. Und einige der Leute, die sagen, dass sie aufgrund der hohen Nachfrage "nicht gestört werden", könnten dies tatsächlich als Ausrede benutzen, um zu vertuschen, dass sie "nicht wirklich gut im Programmieren sind und die ganze Woche brauchen würden, um eine 1-stündige Übung zu absolvieren". Lage.

Es ist gut , diese Kandidaten abzuschrecken. Sie wollen die fähigen, motivierten Kandidaten einstellen. Solange Sie diese nicht auch verscheuchen, sind Sie gut.

Jeder Kandidat, den Sie nicht abschrecken, müssen Sie ausprobieren und bewerten. Und das kann schwierig sein, wenn Sie Ihren technischen Kandidaten keine technischen Übungen zur Bewertung geben.

Wie kann ich unseren Einstellungsprozess verbessern?

Überprüfen Sie den Inhalt Ihrer Programmierübung. Ist es sinnvoll und angemessen für einen Interviewkontext?

Sie wollen nichts, was Tage (oder sogar Stunden) dauern wird, um fertig zu werden. Was Sie wollen, ist etwas Einfaches, um die Leute auszusortieren, die einfach nicht programmieren können , idealerweise mit genügend Raum für Nuancen, damit sich die Leute, die wirklich gut programmieren können, von anderen abheben können. Denken Sie daran, was Sie erreichen möchten (Aussortieren ungelernter und nicht seriöser Kandidaten) und stellen Sie sicher, dass Ihre Inhalte auf dieses Ziel zugeschnitten sind. Gehen Sie nicht über Bord.

Wenn Sie bereits technisches Personal haben, können Sie es verwenden, um Ihre Übung zu überprüfen (und/oder bei der Gestaltung zu helfen).

Überlegen Sie auch, wie Sie die Übung durchführen. Wenn Sie ihnen einfach eine Dokumentation geben und sagen "Hier, machen Sie das in der nächsten Woche und mailen Sie es mir", wird das wahrscheinlich nur minimal effektiv sein.

Besser wäre es, wenn Sie die Übung über ein Webportal durchführen können, bei dem die Kandidaten einchecken und die Übung starten können, und sobald sie beginnen, beginnt ein Timer von 1 Stunde herunterzuzählen. Dann reichen sie entweder innerhalb dieser Stunde etwas ein oder nicht. Das ist weniger offen, behält den Fokus des Kandidaten besser bei und bietet eine klare Deadline/Timebox, sodass 1) Sie nicht die ganze Woche auf ein Ergebnis warten müssen, das niemals kommen wird, und 2) unqualifizierte Kandidaten dies nicht tun Verschwenden Sie eine Woche ihrer Zeit mit dem Versuch, Ihre Programmierübung abzuschließen. Sie bekommen 1 Stunde, sie lösen entweder das Problem oder sie tun es nicht, und Sie kennen das Ergebnis sofort.

Und noch besser wäre es, sie zu einem Vorstellungsgespräch vor Ort einzuladen. Stellen Sie sie einem Mitglied Ihres Entwicklungsteams vor. Schließen Sie sie in einem Raum zusammen mit einer Arbeitsstation ein. Lassen Sie Ihren Entwickler mit einigen allgemeinen/weichen Interviewfragen beginnen und dann mit dem Kandidaten paarweise programmieren, um die Programmierübung zu lösen. Dadurch erfahren Sie nicht nur, ob der Kandidat programmieren kann oder nicht, sondern auch, wie gut er mit Ihrem Team zusammenarbeitet. Ihr Entwickler sollte auch in der Lage sein, viele zusätzliche Informationen zu sammeln, die Sie einfach nicht erhalten, wenn Sie sich einen Haufen Code ansehen, den ein Kandidat geschrieben und Ihnen dann per E-Mail geschickt hat.

Endeffekt

Nein, Sie wollen Ihre Programmierübung nicht loswerden. Vielleicht möchten Sie es jedoch auf geeignete Inhalte überprüfen, sicherstellen, dass die Lösung nicht zu lange dauert, und auch prüfen, wie Sie es in Ihren übergreifenden Interviewprozess einfügen.

Eine selbstgesteuerte Übung zum Mitnehmen ist wahrscheinlich nicht der beste Ansatz. Aber die Lösung dafür ist nicht, die Übung ganz abzuschaffen. Jedenfalls nicht, es sei denn, Sie sind damit einverstanden, beschissene Programmierer einzustellen.

Es ist besser, viele schlechte und eine Handvoll gute Kandidaten abzuschrecken, als die Schleusen zu öffnen und ein paar schlechte einzustellen.

Es gibt mehr Jobs als Menschen, jeder Tech-Lead kann ein paar Minuten damit verbringen, den Code von jemandem auf Github zu lesen und auf die Notwendigkeit alberner Hausaufgaben verzichten, um mir eine einfache UI-App kostenlos zu erstellen, um JSON zu nutzen.
Sie sagen: "Kümmern Sie sich nicht wirklich genug um Ihr Unternehmen, um eine einfache Programmierübung zu absolvieren": Die meisten Unternehmen sind vollständig austauschbar - sie sind weder Weltretter noch Weltzerstörer. Warum sollte sich jemand um sie kümmern, bevor er eine Beziehung mit dem Unternehmen und seinen Mitarbeitern aufbaut? Suchen Sie nicht nach Sorgfalt, suchen Sie nach einem besseren Weg, um Fähigkeiten zu identifizieren.
Sie wollen Ihre Standards nicht senken, weil es ein heißer Markt für Programmierer ist. Sie möchten es ihnen leicht machen, sich zu bewerben, und zusätzliche Hürden vermeiden, durch die sie springen müssen, denn in einem heißen Markt bewerben sich die guten Leute bei Unternehmen, bei denen es einfach ist, sich zu bewerben. Sie können von Leuten einstellen, die woanders keinen guten Job bekommen.

Als direkte Antwort auf Bobos Antwort (was die akzeptierte Antwort ist, weil der Typ sie geschrieben und selbst akzeptiert hat, was ich ehrlich gesagt ein bisschen erbärmlich finde):

Sie kommen von einer völlig falschen Prämisse. Ich will nicht für dich arbeiten . Woher kommt Ihnen die Idee, dass jemand für Sie arbeiten möchte ? Sie sind nur eines von vielen Unternehmen, die einen Job anbieten. Ich will nicht für dich arbeiten. Ich möchte Ihr Unternehmen bewerten, und wenn Sie sich von allen anderen durchsetzen, dann möchte ich für Sie arbeiten.

Es gibt ein Dutzend Firmen, bei denen ich arbeiten kann, du stehst nur irgendwo in der Schlange. Ich schaue mir zuerst an, welche Unternehmen es gibt, schicke ihnen meinen Lebenslauf, sie können ihn lesen und entsprechend beeindruckt sein oder nicht, dann haben Sie normalerweise ein kurzes Telefongespräch, in dem sie mir zeigen, dass sie einen interessanten Job haben, und ich zeige, dass ich die Fähigkeiten habe , und jeder Codierungstest könnte ganz am Ende kommen.

Mit Ihrem Take-Home-Test stehen Sie ganz am Ende der Warteschlange. Um dies zu kompensieren, müssten Sie eine Gehaltsspanne angeben, die 10.000 £ höher ist als andere. Einen Job zu finden ist sowieso zeitaufwändig; jemand, der es zehnmal zeitaufwändiger macht, steht am Ende der Liste. Wenn ich die Wahl habe, einen Lebenslauf zu schicken, ein Telefoninterview mit zehn Unternehmen zu führen und Hausaufgaben für Sie zu machen, raten Sie mal, was ich tun werde.

Sie finden also Kandidaten, die für Sie arbeiten wollen, weil sie woanders keine Stelle bekommen .

Eine Sache scheint niemand erwähnt zu haben; Auch wenn der Test nicht Ihr Thema ist, sollten Sie nach anderen Wegen suchen, um Talente anzuziehen.

Wenn Sie auf der Grundlage ihrer vorhandenen veröffentlichten Arbeit nach guten Leuten suchen, müssen Sie den Test nicht mit ihnen durchführen .

Wenn Sie nur über Personalvermittler und Filter geschickt werden, sind Sie anfällig für die Tatsache, dass Ihre Bedürfnisse und die Bedürfnisse der Personalvermittler nicht perfekt aufeinander abgestimmt sind. Sie wollen jemanden bei dir platzieren. Sie wollen einen Top-Level-Ingenieur. Wenn sie einen Top-Level-Ingenieur finden, ist das großartig, weil Sie zu ihnen zurückkehren werden, aber wenn sie es nicht können (und Top-Level-Ingenieure neigen dazu, Dinge am Laufen zu haben, die wenig Zeit für Interviews lassen), werden sie sich damit zufrieden geben Platzierung eines moderaten Ingenieurs mit einem schönen Anzug. Der Verlust für sie ist ein bisschen langfristiger Ruf, aber das ist gering im Vergleich zum Verfehlen ihrer Ziele. Wenn dies in Ihrem Fall nachweislich nicht zutrifft, halten Sie an diesem Personalvermittler fest und lassen Sie ihn niemals gehen (*),

Was Sie tun möchten, ist nachweislich interessante Kandidaten zu finden. Suchen Sie in StackOverflow und GitHub nach Top-Ingenieuren (ich habe gehört, dass StackOverflow ein Tool hat, das dabei hilft ), suchen Sie nach technisch interessanten Unternehmen, die gute Software produziert haben, aber ihre Finanzen oder Monetarisierung vermasselt haben und gerade 10 Top-Level-Ingenieure entlassen haben. Verbringen Sie Zeit damit, an Universitäten zu arbeiten und bei Abschlussprojekten zu helfen. Identifizieren Sie gute potenzielle Kandidaten und freunden Sie sich mit ihnen an, vorzugsweise persönlich, alternativ per Fernzugriff; Selbst wenn sie Angebote haben, treffen sich gute Ingenieure mit guten Ingenieuren. Außerdem können sie Ihnen sagen, wie sie über Ihren Einstellungsprozess denken.

Klingt nach viel Arbeit? Es sollte . Einer der Gründe, warum die Einstellung so „schwer“ erscheint, ist, dass Sie versuchen, sie so effizient wie möglich zu gestalten. Je mehr Zeit, Intelligenz und Ressourcen Sie darauf verwenden, desto einfacher ist es. Ob diese Ressourcen besser für den Versand von Produkten ausgegeben werden sollten, ist die ewige Managementfrage. Aber wenn Sie viel Zeit mit "Mist-Programmierer-Filtration" verbringen, verbrennt das Geld. Zumindest die oben beschriebenen Schritte haben über den Einstellungsprozess hinaus einen inhärenten Wert.

(*): Verdammt, stellen Sie sie ein .

Ja, das ist derzeit mein Ansatz. Sie wären überrascht über die Menge an Entwicklern, die keine öffentlich verfügbaren „Git-Repos“ haben,
Guter Punkt. Es besteht jedoch das Risiko, sich auf veröffentlichten Code zu verlassen - nicht jeder codet in seiner Freizeit (verschiedene Hobbys, familiäre Verpflichtungen usw.). Während viele Leute davon ausgehen, dass „Codes in der Freizeit“ mit technischem Können korreliert, ist mir das nicht klar. Ich kenne gute Entwickler, die andere Dinge außerhalb der Arbeit machen.
@sleske das stimmt, ich programmiere in meiner Freizeit (CS Major/Ex-Entwickler) und veröffentliche meinen Code nie in öffentlichen Repositories. Aber das ist wahrscheinlich ein Teil des Problems, ein Kandidat könnte leicht zu einem Vorstellungsgespräch gehen und mit Schlagworten über seine Fähigkeiten lügen.
@sleske Ich stimme zu, weshalb "Git-Repos überprüfen" eine kleine Aussage in einem viel größeren Absatz ist (und ich habe sie jetzt tatsächlich gelöscht). Wenn Sie sich einen professionellen Entwickler ansehen, der seine Arbeit nicht veröffentlicht, dann schauen Sie sich das Unternehmen an, für das er gearbeitet hat. Ist es ein gutes Unternehmen? Macht es gute Arbeit? Warum haben sie es verlassen? An welchem ​​Aspekt haben sie gearbeitet? Es gibt viele zugehörige Daten, die Sie verwenden können, die nützlicher sind als Ihre Tests. und wenn sie diese Daten nicht haben, können Sie die Tests verwenden . Aber wenn doch, verwenden Sie es anstelle der Tests.
@bobo2000 Veröffentlichte Arbeiten gehen über Github-Beispiele hinaus; siehe meinen Kommentar oben.
Ich bin immer amüsiert, wenn Leute sagen, dass sie sich an mich gewandt haben, weil sie von meinen Github-/öffentlichen Projekten begeistert sind, und dann wollen sie immer noch, dass ich 3 Tage mit ihnen verbringe.
@grasshopper Sehen Sie, ich kann es aus der Perspektive "Wie möchten Sie eigentlich in der Nähe sein" sehen, aber sie sollten Sie nicht fragen, ob Sie wissen, was ein boolescher Wert ist.
@ Grasshopper gut gesagt, guter Herr! Es ist so nervig. Ich fühle mich schlecht, wenn sie den Hausaufgabentest schicken und ihnen sagen, dass sie gehen sollen, meine Zeit ist wertvoller.
@SuperUberDuper gute Dame in meinem Fall.
@grasshopper Ich bin mir sicher, dass sie hübsch ist ;)
Zu „Jagd durch Stack Overflow und GitHub nach Top-Ingenieuren“ : Stack Overflow hat seine Rekrutierungsplattform geschlossen .

Ich denke, Sie haben Ihre Frage etwas falsch formuliert, aber die Art und Weise, wie Sie sie formuliert haben, spiegelt ein weit verbreitetes Missverständnis über die Einstellung von Programmierern wider. Werden die Kandidaten durch die Programmieraufgabe „abgeschreckt“ oder filtern sie wegen der Aufgabe Ihr Unternehmen aus der eigenen Betrachtung heraus?

Eine Anekdote, um meinen Standpunkt zu verdeutlichen: Bei der Jobsuche vor nicht allzu langer Zeit sah ich eine Stelle in einem Unternehmen, die durchschnittlich erschien. Die Art und Weise, wie sie ihren Programmierprozess beschrieben, ließ es ziemlich gut klingen, aber es gab nur sehr wenige Details, also war ich skeptisch. Vielleicht waren sie ein guter Arbeitsplatz, vielleicht auch nicht. Aber ich dachte, ich würde mich darum kümmern, zu einem Telefonbildschirm zu gelangen, damit ich die Details herausfinden und sehen könnte, ob sie so gut sind, wie sie scheinen.

Ich klickte auf die Stellenausschreibung und wurde sofort gebeten, ein Anschreiben zu verfassen. Pfui. Ich denke, jeder Kandidat hasst Anschreiben. Ich kannte diese Firma nicht oder benutzte ihre Produkte nicht, also was könnte ich über sie sagen? Ich habe sie gegoogelt, ihre Website und Produktangebote gelesen, herausgefunden, wo ich wahrscheinlich in ihr Organigramm passen würde, wenn ich eingestellt werde, und mir ein paar Absätze einfallen lassen, in denen ich mich selbst „verkaufe“.

Als nächstes stellte ich meinen Lebenslauf und Zugang zu meinem LinkedIn zur Verfügung – aber sofort danach baten sie mich, meine relevante Berufserfahrung mit Daten und Beschreibungen auszufüllen. Diese Informationen befinden sich sowohl auf meinem LinkedIn als auch in meinem Lebenslauf. Es war lächerlich, dreimal dieselben Informationen angeben zu müssen. Ich habe den Browser-Tab geschlossen. 5 Minuten später bewarb ich mich bei einem anderen Unternehmen, das einige wirklich coole Vorteile bot, die das erste nicht hatte. Ich könnte mich tatsächlich schneller bei einem anderen Unternehmen mit besseren Leistungen bewerben, als ich durch die Reifen springen könnte, die das erste Unternehmen von mir wollte.

Sie müssen sicher sein, dass Ihre Kandidaten insbesondere in Ihr Unternehmen investiert sind, bevor Sie ihnen irgendwelche Reifen präsentieren, durch die sie springen müssen, sonst springen sie nicht. Machst du das?

Beispiele für Qualitätsvorteile, die ich häufig bei Technologieunternehmen sehe:

  1. Fernarbeit.
  2. Kostenlose Computer/Monitore als Unterzeichnungsbonus.
  3. Das Unternehmen trägt zu angesehenen Open-Source-Projekten bei.
  4. Kostenerstattung für professionelle Schulungen und/oder Konferenzen.
  5. Gelieferte Mittagessen.
  6. Flexible Arbeitszeiten.
  7. Möglichkeit, mit neuen oder unbekannten Technologien zu arbeiten.
  8. „Startup-Kultur“ – auch bekannt als Politik-/Bürokratiemangel.
  9. Eigenkapital des Unternehmens.
  10. Bekanntheitsgrad: Ihr Unternehmen oder Ihr Produkt ist bekannt. Kandidaten erwähnen gerne, wo sie arbeiten, und hören, wie die Leute antworten: „Oh, toll! Ich mag ihre Produkte.“
  11. Gemeinnützige oder revolutionäre Unternehmensziele/Vision. Menschen schreiben gerne Code, der das Leben der Menschen verbessert.
  12. Überdurchschnittliche Bezahlung. Geld deckt eine Vielzahl von organisatorischen Sünden ab.
  13. Jährliche Firmenrückzüge an kühle Orte.

Diese Liste ist nicht vollständig, aber wenn Ihr Unternehmen ein oder mehrere Dinge nicht wie die Artikel auf dieser Liste anbietet, dann könnte jedes Hindernis in Ihrem Einstellungsprozess einen Kandidaten dazu bringen, nach einem zu suchen, das dies tut.

Nehmen wir also an, dass Sie Ihren Kandidaten aus irgendeinem Grund keine Anreize wie die oben genannten anbieten oder anbieten können, um sie davon zu überzeugen, kostenlos Code für Sie zu schreiben. Was kannst du dann tun? Ich habe zwei Alternativen, die die meisten Kandidaten gegenüber arbeitsintensiven Programmieraufgaben bevorzugen werden:

Alternative Nr. 1 – Zahlen Sie ihnen einen Stundensatz, um Ihre Programmieraufgabe zu erledigen, als ob sie ein Auftragnehmer wären. Das ermutigt sie, es ernst zu nehmen, sowohl aus beruflichen Gründen als auch weil... sie bezahlt werden. Das kostet Sie Geld, aber jede Form des Recruitings auch. Wenn Sie wirklich gut sind, können Sie sogar einen Weg finden, einen tatsächlichen Fehler in Ihrem Code zu diagnostizieren und zu beheben. In diesem Fall erhalten Sie etwas Nützliches für Ihr Geld.

Alternative Nr. 2 - Sie haben wahrscheinlich bereits kostenlosen Code geschrieben, den sie Ihnen zeigen, wenn Sie nur fragen. Die meisten Programmierer haben Code auf Github, Bitbucket, Q&A-Websites wie Stack Overflow oder könnten Ihnen Code zur Verfügung stellen, den sie noch nicht veröffentlicht haben.

Warum sie Code schreiben lassen, der ihnen egal ist, wenn Sie sie stattdessen ein Leidenschaftsprojekt mit Ihnen teilen lassen könnten? Es ist garantiert weniger langweilig, als zum 100. Mal eine weitere Lösung für dasselbe allgemeine Problem zu lesen. Und da der Code bereits geschrieben ist, sparen Sie und Ihr Kandidat Zeit. Außerdem erhalten Sie einen Einblick, welche Art von Code sie gerne schreiben, was Einblicke in ihre Persönlichkeit gibt und wie gut sie zu Ihrer Unternehmenskultur passen.

Betreff: überdurchschnittliche Bezahlung: Nach meiner Einstellungserfahrung bezahlt man am besten, man zieht alle möglichen Trittbrettfahrer an, die glauben, sie könnten mit der Rolle prahlen und sind nur am Geld interessiert (man sieht das ständig im C-Level-Typ: -) ). Ziehe niemals Leute nur mit dem Geld an.

Was ist Ihr geschäftliches Problem?

Abgesehen von allen Argumenten für oder gegen bestimmte Tests läuft alles auf einen Kompromiss hinaus - mehr Filter werden einige gute Kandidaten abschrecken, weniger Filter werden schlechte Kandidaten durchlassen, die Sie möglicherweise bald nach der Einstellung ersetzen müssen.

Es läuft alles darauf hinaus, Ihre Geschäftssituation statt allgemeiner Praktiken zu betrachten.

Haben Sie derzeit ein Problem, bei dem Ihnen qualifizierte Kandidaten fehlen und Sie nicht so schnell einstellen können, wie Sie Ihre Geschäftsziele erreichen müssen? Sie müssen diese anfängliche Programmieraufgabe fallen lassen.

Haben Sie derzeit ein Problem, bei dem Sie mit der Qualität Ihrer letzten Einstellungen nicht zufrieden sind? Dann müssen Sie weitere Filter wie diesen implementieren.

Haben Sie beide Probleme und sind beide gleich schmerzhaft? Herzlichen Glückwunsch, Sie haben die richtige Balance für diesen Kompromiss gefunden.

Ich denke wirklich, dass es helfen kann festzustellen, wer die in seinem Lebenslauf aufgeführten Sprachen wirklich beherrscht.

Wenn das wirklich Ihr Ziel ist, würde ich einen anderen Ansatz in Betracht ziehen. Wie andere Antworten zeigten, JA, Sie sollten immer eine Codierungsfrage haben, aber Codierungsfragen gehen selten auf Details der Sprache ein. Einige Fragen, die ich gesehen habe und die zum Testen nützlich sind:

  1. Vergleichen und kontrastieren Sie Java und C (oder was auch immer zwei Sprachen relevant sind, im Lebenslauf des Kandidaten stehen usw.)
  2. Welche Funktionen sollten Ihrer Meinung nach der Sprache hinzugefügt werden? (Oder noch besser, was denken Sie über diese spezielle vorgeschlagene/kürzliche Änderung der Sprache?)

Ingenieure, die das ein oder andere gesehen haben, wissen, wie man diese Fragen ziemlich einfach und in nur wenigen Minuten beantwortet.

..oder schreiben Sie Fizz Buzz.
Übrigens kann ich diese beiden Fragen in vielen Sprachen beantworten, in denen ich kein Hallo Welt schreiben kann.
Ich fand sie nützlich. Es ist extrem schwierig, sie zu "bestehen", wenn Sie nichts Intelligentes darüber sagen können, wie unterschiedlich die Ansätze zwischen den Sprachen sind, wie unterschiedlich die Speicherzuweisung ist, wie unterschiedlich die Parallelitätsprimitive sind usw., und so großartig wie die FizzBuzz-Frage ist, tut sie es nicht eignen sich gut, um darüber zu diskutieren.
@ James Einverstanden. Und selbst wenn sie kein Hallo Welt in Java schreiben können, wenn sie Java mit verschiedenen anderen Sprachen vergleichen und gegenüberstellen können, sind sie wahrscheinlich nützlicher als jemand, der ein Hallo Welt schreiben kann, aber Java nicht mit anderen Sprachen vergleichen und gegenüberstellen kann.

IMHO besteht eine Chance von fast 0%, dass ein frischgebackener Hochschulabsolvent einen schwierigen Programmiercode auf Einstiegsebene ausführen kann. Wenn Ihr Codierungstest eine Woche dauert, sollten Sie in Ihrer Anforderung deutlich erwähnen, dass Sie nach Programmierern mit mindestens 2 Jahren Erfahrung suchen, da meiner Meinung nach viel Erfahrung erforderlich sein sollte, um eine Codierungsarbeit abzuschließen, die eine erfordert Woche zu absolvieren. Und ich denke, wenn Sie nach frischen Absolventen suchen, dann gestalten Sie Ihren Test entsprechend und Sie können viele Ideen im Internet finden, oder Sie können erfahrene Programmierer, die für Sie arbeiten, bitten, einen geeigneten Test für frische Absolventen zu entwerfen.

Ich persönlich würde nicht erwarten, dass ein erfahrener Entwickler einen geeigneten Test schreibt, es sei denn, er hätte während eines Vorstellungsgesprächs Erfahrung damit, was funktioniert oder nicht. Es ist sehr leicht, sich auf etwas zu konzentrieren, von dem Sie selbst wissen, dass es einfach und offensichtlich ist, und das ist schwer zu korrigieren, was unnötig Kandidaten scheitern lässt, die nicht genau wissen, was der Testschreiber tut. Ich denke, diese Situation ist ein Grund dafür, dass Tests wie FizzBuzz populär wurden - sie scheinen auf der richtigen Ebene des geteilten Wissens zu arbeiten, um Kandidaten richtig zu filtern.
@Neil Slater: - Es könnte möglich sein, dass ein erfahrener Programmierer nicht weiß, wie man einen Test für einen Programmierkandidaten der Einstiegsklasse entwirft. Aber es ist gar nicht so schwer zu wissen, was man von einem Einstiegskandidaten erwarten kann. Und als mein vorheriges Unternehmen einen neuen Programmierer einstellen wollte, wusste ich, was ich von einem neuen Programmierer verlangen/erwarten musste, und ich tat entsprechend, und wir stellten einen guten Kandidaten ein. Auch an vielen Orten, an denen ich für Programmierjobs interviewt wurde, wurde ich von leitenden Programmierern dieser Firma interviewt. Deshalb habe ich das vorgeschlagen und es ist eine sehr gängige Praxis.
Dauert tatsächlich 30 Minuten, wenn Sie sich mit Webentwicklung auskennen. Ich gebe ihnen 1 Woche, da ich viele Kandidaten Mitte der Woche interviewe, und es gibt ihnen Zeit, den Test über einen Zeitrahmen zu machen, der zu ihrem Zeitplan passt; Persönliche Verpflichtungen, Arbeit, Studium usw. Ich persönlich würde es vorziehen, wenn die Kandidaten den Test schneller machen, weil ich dadurch Wartezeiten erspare. Ich denke darüber nach, das aufzugeben und einfach Fizzbuzz zu machen, um mein Leben einfacher zu machen.

Dachte, dass ich diese Frage beantworten werde, es ist ein Jahr her, seit sie gepostet wurde, und wir haben uns daran gehalten.

ERGEBNISSE

Positive Ansätze

1) Take-Home-Test sortiert die demotivierten Kandidaten aus und ersetzt sie durch Kandidaten, die wirklich für Sie arbeiten wollen. Alleine dafür lohnt es sich, denn motivierte Menschen = produktive Mitarbeiter. Wenn sie sich nicht die Mühe machen können, eine 1-stündige Aufgabe zu erledigen, sagt das viel über ihre Einstellung zur Stellenbesetzung aus.

2) Ich stimme anderen zu, dass der Take-Home-Test nicht länger als eine Stunde dauern sollte – meiner ist sehr einfach. Ich habe die folgenden Ergebnisse erzielt, nachdem ich es in den Rekrutierungsprozess aufgenommen habe:

a) Einige Kandidaten schließen es nicht ab. Lohnt sich nicht einzustellen.

b) Einige Kandidaten versuchen es, schließen es aber schlecht ab. Lohnt sich nicht einzustellen.

c) Einige Kandidaten schummeln, an diesem Punkt lohnt es sich, nachzufragen zu ihrer Aufgabe. Wir haben dies mit einem neuen Kandidaten gemacht, der sich dann nicht die Mühe gemacht hat, auf unsere E-Mail bezüglich des Auftrags zu antworten. Lohnt sich nicht einzustellen.

d) Einige Kandidaten ziehen plötzlich ihre Bewerbung zurück, wenn sie hören, dass es einen technischen Auftrag gibt, wo sie zuvor VIEL Interesse gezeigt haben. Wahrscheinlich einer Kugel ausgewichen.

e) Einige Kandidaten schneiden sehr gut ab, kommentieren ihren Code und stellen bei ein oder zwei Gelegenheiten eine Dokumentation zur Verfügung. Mieten lohnt sich.

Negative der Annäherung

1) Bewerbungsabbrüche von Kandidaten, die von der Take-Home-Aufgabe abgeschreckt werden, verlängern die Suche nach einem geeigneten Kandidaten. ABER auf der anderen Seite positiv für das Unternehmen, da es die Wahrscheinlichkeit einer gefährlichen Fehlbesetzung verringert.

2) Kann nicht immer sagen, ob jemand geschummelt hat, aber deshalb wird es oft durch ein technisches Telefoninterview unterstützt.

Ergebnis dieses Ansatzes

Einer unserer Mitarbeiter, den ich auf diese Weise eingestellt habe, hat sich als Starmitarbeiter entpuppt. Er arbeitet nach über einem Jahr immer noch für uns. Er ist zuverlässig und technisch begabt.

Sie haben also Ihre gesamte Einstellungsstrategie auf die Leistung eines einzigen Mitarbeiters ausgerichtet. Wow...
Warum genau sollte ich motiviert sein, für Ihr Unternehmen freiberuflich zu arbeiten? Stellen Sie mich ein und Sie werden feststellen, dass ich arbeite, um dem Unternehmen zu helfen. Wenn Sie zu viele zeitraubende Dinge in die Bewerbung investieren, finde ich einen anderen Job und arbeite, um ihrem Unternehmen zu helfen. Machen Sie sich klar, Arbeitgeber, dass nur sehr wenige Menschen daran interessiert sind, speziell für Sie zu arbeiten, und dass die Art von Entwicklern, die Sie wollen, Jobs finden kann, für die Sie sich leichter bewerben können.
@DavidThornley dieser Thread hat seinen Lauf genommen. Es geht um das Risikomanagement, wenn die Leute keine Lust haben, eine 30-minütige Programmierübung zu machen, dann sind sie eindeutig nicht motiviert genug, um eine Rolle spielen zu wollen. Außerdem sind, wie bereits erwähnt, Codierungsübungen eher für Personen mit unbewiesener Erfolgsbilanz geeignet; Praktikanten, Absolventen als erfahrene Mitarbeiter mit viel Erfahrung.
@bobo2000 Du scheinst meinen Punkt zu verfehlen. Angenommen, ich suche einen Job. Ich will einen Job. Die Chancen stehen gut, dass ich nicht besonders daran interessiert bin, für Sie zu arbeiten, aber wenn ich eingestellt würde, würde ich einen guten Job für Sie machen. Je mehr Zeit ich insbesondere für Ihren Bewerbungsprozess aufwende, desto weniger Zeit habe ich, an meinen allgemeinen Chancen auf einen guten Job zu arbeiten. Soll ich Ihren Test machen oder mich auf zwei weitere Jobs bewerben? Wenn dies jetzt ein zentraler Teststandort wäre, der von vielen Unternehmen genutzt würde, wäre es meine Zeit wert.,
@DavidThornley Viele Unternehmen haben Programmiertests als Teil ihres Bewerbungsprozesses, auch aus Erfahrung neigen die besten Kandidaten dazu, diejenigen zu sein, die sich die Zeit dafür nehmen - und es wird viele geben, die das tun werden.
@DavidThornley, um hinzuzufügen, Sie denken vielleicht, dass dies ein unfairer Rekrutierungsprozess ist, aber die Kosten für den Ersatz eines unbewiesenen Entwicklers, der sich als schlechter Entwickler herausstellt, der damit prahlt, sind viel teurer, als ihn gar nicht erst einzustellen.
@bobo2000o Fairness ist nicht der Punkt bei der Rekrutierung. Gute Leute will man gut anhören, um sich zu entscheiden, aber echte Fairness gegenüber Kandidaten wird überhaupt nicht angestrebt. Ich denke, Sie könnten ohne Take-Home einen besseren Einstellungspool erhalten und ihre Grundkompetenz in einer halben Stunde oder so unter Aufsicht testen. Wenn Sie nicht sagen können, ob jemand grundsätzlich kompetent ist, sind Sie sowieso versunken. Den Leuten, mit denen ich rumhänge, ist es egal. Wir werden Jobs bekommen. Es ist Ihnen wichtig.
@DavidThornley Nun, jede Person, die ich mit diesem Ansatz rekrutiert habe, hat sich aufgrund der praktischen Erfahrung als guter Mitarbeiter herausgestellt. Im Gegensatz dazu wäre es für das Unternehmen kostspielig gewesen, wenn ich nie irgendeinen technischen Screening-Prozess gehabt hätte.

Eine ungewohnte Maus oder ein unerwartetes Tastaturlayout (insbesondere Mac vs. PC) oder eine andere IDE können die Leistung dramatisch verlangsamen, ohne dass es zu einem Unterschied in der Kompetenz kommt. Außerdem erfordert eine vollständige Anwendung oft eine Menge Boilerplate-Code, für dessen Eingabe ein Entwickler möglicherweise nicht genug Zeit hat oder sich nicht einmal daran erinnert. Eine neue App komplett von Grund auf neu zu starten, ist eigentlich eine sehr seltene Aufgabe; Die meiste Arbeit konzentriert sich auf die Erweiterung oder Verbesserung des bestehenden Codes.

Daher schlage ich vor, im Vorstellungsgespräch nur sehr kurze und sorgfältig vorbereitete Aufgaben zu stellen. Am besten ist es, eine Funktion zu schreiben, die bestimmte Parameter annehmen und das erklärte Ergebnis zurückgeben muss, und ich würde raten, dies auf Papier zu tun und Computer überhaupt zu vermeiden.

Ich würde sie zu einem Online-Quiz schicken, wo Sie Leute herausfiltern können, die keine Ahnung haben. Zumindest hättest du ein Gefühl dafür, ob sie wissen, wovon sie reden.

Zu Beginn meiner Karriere sagten mir Headhunter: "Sie haben es mit Leuten zu tun, die die Box lesen und eine Bewerbung in ihren Lebenslauf schreiben." Ich nehme an, das kann den Jungen und Naiven immer noch passieren, aber wenn man in ein paar Interviews verarscht wird, lernt man, dass das ein schlechter Rat ist ...

„Kästchen lesen und Bewerbung in den Lebenslauf schreiben“, was heißt das überhaupt?
Früher, als Sie in ein Geschäft gehen mussten, lasen die Leute die Zusammenfassung darüber, was die Software tat (die sich auf der Rückseite der Verpackung befand) und fügten sie in ihren Lebenslauf ein. Heutzutage wäre es vergleichbar damit, die Website zu besuchen oder mit jemandem darüber zu sprechen und sie in Ihren Lebenslauf aufzunehmen, ohne sie jemals zu verwenden.
Online-Quiz sind für mich eine Beleidigung. Sie werden für das Vorstellungsgespräch bezahlt, ich werde nicht dafür bezahlt, kostenlose Tests zu absolvieren.
Ich bekomme auch keine Überstunden dafür, dass ich meine Nächte und Wochenenden damit verbringe, hinter diesen Leuten aufzuräumen.

Ich habe vor kurzem einen Take-Home-Test bekommen. Es war eine ausgewachsene Anwendung, die eine Verbindung zu einem Socket-Server herstellen musste, der einen langsamen Feed simulieren musste. Der Client musste dynamisch aktualisieren, in der Lage sein, den Feed abzubrechen und XML zu schreiben und zu lesen.

Ich möchte irgendwie Sockets lernen, da ich darüber nachdenke, sie für einen Pokerserver zu verwenden, an dem ich schreibe.

Ich wollte XMLreader und XMLwriter lernen.

Zuerst dachte ich, vergiss es. Aber dann habe ich es als Chance gesehen, zu beweisen, was ich kann. Ich habe keinen Informatik-Abschluss, also vermisse ich einige theoretische Sachen. Sie fragten, was die 3 Säulen von OOP seien, und wollten sagen, wen es interessiert.

Meine Botschaft ist, dass Leute, die den Job wollen, den Test absolvieren sollten.

Was meinst du mit "wollte sagen wen es interessiert" ?
Das ist ein Cliffhanger! Was als nächstes geschah? Hast du den Job bekommen? Haben Sie etwas gelernt, das Sie später angewendet haben? Bedeutet "3 Säulen von OOP", dass sie sich nicht um das Ergebnis der Programmieraufgabe gekümmert haben? Was haben sie über die abgeschlossene Programmieraufgabe gesagt?