Im Rahmen eines Interviews: Was ist der beste Weg , um zuverlässig zu identifizieren , wenn jemand eine ist ein ausgezeichneter Programmierer . Damit meine ich, dass er einer von denen ist, die 10-15 mal effizienter / schneller / besser sind als seine Kollegen am unteren Ende des Spektrums.
Viele von uns haben vom FizzBuzz-Problem gehört, um die Schwachen auszumerzen . Sicherlich ist es ein ernstzunehmender Indikator dafür, dass ein Bewerber ein schwacher Kandidat ist, sich 5-10 Minuten Zeit zu nehmen, um dieses Problem zu lösen. Ich gehe davon aus, dass ein guter Indikator dies so schnell lösen kann, wie Sie schreiben können. Dies scheint jedoch nicht ausreichend zu sein.
Ist es vielleicht so, als würde er ihm ein mäßig kompliziertes Buggy-Programm geben und sehen, wie schnell er es finden und alle Probleme damit identifizieren kann?
quelle
Antworten:
Ich entschuldige mich bei allen, die sich nicht für lange Antworten interessieren, aber ich denke, es ist ziemlich wichtig, Ihre Kandidaten zu qualifizieren, bevor Sie sie einstellen. Jeder, der eine beträchtliche Anzahl von Interviews in dieser Branche durchgeführt hat, weiß, dass die meisten Kandidaten die ersten 15 bis 30 Minuten eines Interviews nicht durchhalten werden. Daher wird der größte Teil dieser Liste nicht benötigt. Denken Sie nur daran, wie teuer es ist (finanziell und emotional), jemanden zu entlassen, bevor Sie meine Liste als übertrieben abtun. Ich habe versucht, meine Interviewthemen hier in der Reihenfolge ihrer Wichtigkeit aufzulisten.
Allgemeine Intelligenz (Denksportaufgaben / Logikrätsel)
Informatik-Kenntnisse
Programmierübungen
Kenntnis objektorientierter Programmiertechniken und gängiger Entwurfsmuster
Algorithmusanalyse (Laufzeit- O (n) -Komplexität und Speicheranforderungen)
Einsatz von Tools und Methoden
Kenntnis allgemeiner Sicherheitslücken und Angriffe
Grundlegende Mathematik
Kryptographie
Diskrete Mathematik
Vielleicht möchten Sie auch das Buch Programming Interviews Exposed lesen . Es ist eine gute Referenz zum Thema.
quelle
Ah, die ewige Frage.
Ich habe in diesem Jahr viele Interviews geführt (ich habe morgen zwei Kandidaten geplant), und meiner Erfahrung nach geht es bei der Einstellung mehr um Bauchgefühl und menschliche Fähigkeiten und weniger um technisches Wissen.
Nehmen Sie sich Zeit mit Lebensläufen. Einige Lebensläufe können innerhalb von Sekunden abgelehnt werden, andere dauern eine halbe Stunde. Manchmal denke ich viel länger über einen Kandidaten nach, der auf einem Lebenslauf basiert, als ich ihn interviewe. Einige Male habe ich Interviewfragen speziell für diesen Kandidaten vorbereitet, obwohl ich normalerweise keine Fragen vorbereitet habe.
Technisches Wissen - es gibt ein Minimum, das ich möchte, und das ist normalerweise ziemlich einfach zu sagen. Wenn Sie Zweifel haben, sprechen Sie während des Interviews über Projekte, die er im Lebenslauf erwähnt hat, und gehen Sie so weit wie nötig. Dies ist in der Regel mehr als genug, um Ihnen zu sagen, was er weiß und was ihn zum Ticken bringt. Bildung ist nicht wichtig, frühere Jobs sind wichtig, mögliche persönliche Projekte haben eine hohe Punktzahl.
Fragen Sie nach, was er tun und wohin er mit seiner Karriere möchte. Brauchen Sie, was er hat, und können Sie angeben, was er will? Gegen Ende des Interviews frage ich normalerweise nach einem bevorzugten Gehalt. Wenn er nicht in meiner Reichweite ist oder ich für das, was er weiß, nicht so viel bezahle, beenden wir das Interview.
Vor allem muss der Kandidat in das Team passen, und ich muss zuversichtlich sein, dass wir in der Lage sind, zusammenzuarbeiten. Ich muss ihn nicht mögen, aber ich muss in der Lage sein, mit ihm umzugehen, und er muss in der Lage sein, mit mir umzugehen. Wenn das nicht der Fall ist, werde ich bestehen, weil ich sein technisches Wissen nicht nutzen kann. Wenn dies der Fall ist und er schnell lernt, hindert mich sein mangelndes technisches Wissen nicht daran, ihn einzustellen.
Ich habe Mädchen aus der Personalabteilung geschult, mir Lebensläufe zu übergeben, sobald sie diese erhalten. Ich plane das Vorstellungsgespräch so schnell ich kann persönlich (idealerweise übermorgen, nachdem ich einen Lebenslauf für gute Lebensläufe erhalten habe). Dann bekommt er eine halbe Stunde oder eine Stunde Interview mit mir und mindestens einem Mitarbeiter (normalerweise meinem Chef oder Teammitglied), wo ich ihn kennenlerne und alle Fragen beantworte. Auch wenn ich seinen Antrag vor Ort ablehne, bekommt er 20-30 Minuten Führung durch das Unternehmen und ich spreche darüber, was wir tun und wie wir es tun. Dann schicke ich ihn für einen Psychotest und ein bisschen wirklich grundlegender Papierkodierung / SQL an die Personalabteilung. Beide Tests spielen für meine Entscheidung fast nie eine bedeutende Rolle, es ist eher eine Bestätigung, die ich im Interview richtig beurteilt habe. Nach den Ergebnissen ist es ein 15-minütiges Gespräch, in dem ich ihm ein Angebot mache. Wenn wir die Bedingungen aushandeln, mit denen wir beide zufrieden sind, wird er eingestellt.
Englisch: emagazine.credit-suisse.com/app/art ... = 157 & lang = en Dies ist ein Prozess, für den ich durch die Bürokratie eines Unternehmens kämpfen musste, nachdem ich ein paar großartige Kandidaten vermisst hatte, und der funktioniert, weil ich über die Einstellung von Mitarbeitern entscheide (obwohl ich den Rat sowohl von HR als auch von Mitarbeitern höre, meinen Kollegen) Wort ist endgültig). Mehr Entscheider, längerer Prozess. Je länger der Prozess dauert, desto mehr müssen Sie Google sein, um den Zuschlag zu erhalten.
Sobald ich sicher bin, dass das kein Spiel ist, beende ich das Interview, er bekommt die Firmenführung und es ist vorbei. Dies kann bis zu zwei Minuten dauern, während Sie ein Interview planen. Auch wenn Sie einen Kandidaten ablehnen, verkaufen Sie das Unternehmen. Wenn Sie gute Arbeit geleistet haben, kann eine gute Einstellung durch Mundpropaganda eines abgelehnten Kandidaten erfolgen.
Auch ein Tipp. Senden Sie Ablehnungsschreiben (oder E-Mails) für jede Bewerbung, die Sie erhalten. In meiner jetzigen Firma überlasse ich das normalerweise der Personalabteilung (abgesehen von denen, die ich während des Interviews erzähle), aber irgendwann war es von unschätzbarem Wert, von abgelehnten Kandidaten eine begeisterte Antwort in den Zeilen von "DANKE! Du bist die erste Firma, die es tatsächlich gibt antwortete, anstatt mich fragen zu lassen, ob sie eines Tages antworten werden! "
quelle
Diese Antwort ist ein wenig über den Tellerrand hinaus, aber ich denke, es ist ein wertvoller Punkt.
Die besten Programmierer interviewen selten. Sie müssen nicht . Wenn Ihr Unternehmen sich weltweit besonders verändert oder aufregend geheim hält oder mehrere Programmierer, die sie respektieren, dorthin gegangen sind, können sie sich bewerben, aber großartige Programmierer erhalten Jobs über ihr Netzwerk von Mitarbeitern, nicht durch Zusendung von Lebensläufen.
Also: Der beste Weg, einem exzellenten Programmierer in einem Vorstellungsgespräch davon zu erzählen, ist, dass er nicht da ist .
quelle
Jede Antwort muss Codebeispiele enthalten. Wenn Sie einen Programmierer einstellen, ohne seinen Code zu sehen, möchten Sie einen Koch einstellen, ohne zu versuchen, zu kochen.
quelle
Möglicherweise kommt ein "exzellenter" Programmierer nicht zu Ihnen, um ein Interview zu führen. Sie müssen ihn wahrscheinlich jemand anderem stehlen.
quelle
Eine Möglichkeit, den leidenschaftlichen Programmierern von den "Ich will nur einen Job" -Programmierern zu erzählen, besteht darin, sie zu fragen, welches Buch sie diese Woche lesen. Fragen Sie sie dann nach den Büchern, die sie in den letzten Wochen gelesen haben.
Ich habe herausgefunden, dass die leidenschaftlichen Programmierer IMMER lesen, und normalerweise wird die Liste ein paar Programme / Comp enthalten. Sci. Bücher in der letzten Liste.
Es geht nicht nur darum, "mit dem Beruf Schritt zu halten" - leidenschaftliche Programmierer haben ein Verlangen und eine Vorliebe für das Programmieren und neigen dazu, Material zu einer Vielzahl von Themen zu verschlingen - nicht nur zu der Sprache, die sie gerade verwenden, sondern auch zu Methoden und anderen Sprachen (insbesondere neue oder "seltsame" oder alte), andere Aspekte der IT (vielleicht Robotik oder KI oder Spiele oder ...)
Wenn sie überhaupt keine aktuelle Bücherliste haben, dann sind sie meiner Erfahrung nach wahrscheinlich kein großer Programmierer.
Prost,
-R
quelle
Es gibt verschiedene Zeitskalen, in denen jemand "schnell" sein kann: Einige clevere Leute können schwierige Rätsel in Sekunden lösen, aber einige clevere Leute produzieren eine Menge guten Codes in einem Monat, auch wenn sie bei Interviewfragen möglicherweise nicht so schnell sind.
Fragen Sie die Kandidaten, ob sie in einem Open-Source-Projekt aktiv sind, in dem Sie einen Teil ihres Codes überprüfen und einige Zeit damit verbringen können, die Mailinglistenarchive und Commit-Protokolle dieser Projekte zu lesen. Das sagt Ihnen mehr als alles, was die Kandidaten in einem Interview zeigen können. (Natürlich kann dies das Interview nicht ersetzen , da nicht alle guten Programmierer Open Source-Arbeit leisten.)
quelle
Das Buch " Smart and Gets Things Done: Joel Spolskys Kurzanleitung zur Suche nach dem besten technischen Talent " kann hilfreich sein, um eine Antwort zu finden.
Inhaltsverzeichnis:
Der Artikel von Joel "The Guerrilla Guide to Interviewing (Version 3)" kann ebenfalls hilfreich sein.
Und der Artikel "Done, and Gets Things Smart" von Steve Yegge zum Thema.
quelle
Stellen Sie ihnen eine Reihe von Fragen, bei denen sie codieren müssen, und die Fragen werden schwieriger. Wenn sie die Herausforderung zu mögen scheinen, haben Sie wahrscheinlich eine Live-Herausforderung.
Wenn sie die erste einfache Frage wie "Write a for Loop" oder etwas dummes nicht beantworten können, dann wissen Sie, dass diese Person nicht codieren kann.
quelle
Lassen Sie sie auf einem Whiteboard codieren. Nur so können Sie feststellen, ob sie wissen, wie man Code schreibt.
quelle
Sie sollten vor allem die Arbeit beurteilen, die sie bereits geleistet haben. Jeder Code oder jede Idee, die jemand während eines angstbesetzten Interviews generiert, ist ein schlechter Beweis dafür, was er tatsächlich in einem Team produzieren kann.
Verwenden Sie bei Codierungsproblemen IM mit so etwas wie codepad.com und lassen Sie sie bequem von zu Hause aus ausführen. Schreiben Sie einen Großteil Ihres Codes auf ein Whiteboard vor Ihrem Chef, mit einer Frist von 30 Minuten und Ihrem Bonus auf der Leitung? Ich nicht.
Ist das Interview also sinnlos? Nein, aber der Schwerpunkt sollte darauf liegen, dass sie erklären, was sie getan haben und was sie genau beigetragen haben.
Sie werden auch allen Arten von psychologischen Vorurteilen ausgesetzt sein, sobald Sie jemanden von Angesicht zu Angesicht treffen. Stellen Sie nicht versehentlich einen Programmierer ein, weil dieser einen besseren Blickkontakt hergestellt hat oder größer ist als jemand anderes. Um diese zu umgehen, führe ich so viele Interviews wie möglich über IM / E-Mail durch, bevor Sie sie persönlich treffen.
quelle
Die Sprache spielt keine Rolle. Logik tut. Ich meine, IDEs und Compliers sind heutzutage so gut, dass jeder gute Programmierer jede Sprache (ok, vielleicht nicht Assembler) in einer Woche lernen kann. Werden Sie in ein paar Wochen anständig und werden Sie in ein paar Monaten sehr gut.
Es ist sein Gehirn, das Sie bestätigen müssen. Und das machst du, mein Reden. Ich bitte sie, einfache Probleme zu lösen. Nicht indem ich Code schreibe, sondern indem ich mich durch ihre Logik bewege, um zu einer Lösung zu kommen.
Aber ich gebe zu, wenn er keine einfache Schleife mit 1 bis 10 schreiben kann, hast du Probleme.
quelle
Erstens gibt es eine Möglichkeit, sich eine Vorstellung zu machen, bevor das Interview überhaupt beginnt:
Wenn sie einen Blog haben oder zu einem oder mehreren Open Source-Projekten beitragen, schauen Sie sich einfach den Code und die Artikel an, die sie geschrieben haben. Zuallererst haben sie Initiative, um Dinge zu erledigen, wenn sie beides getan haben. Sie können diese Dinge auch mit den Arbeitserfahrungen vergleichen, die sie in ihrem Lebenslauf aufgeführt haben, und erhalten eine Vorstellung davon, ob sie nach der Arbeit nach Hause gehen und mehr lernen oder nach 17 Uhr nach Hause gehen und die Arbeit vergessen.
Haben sie im Wesentlichen eine Leidenschaft für das Programmieren oder nicht? Das ist die eigentliche Frage.
quelle
Einen guten Programmierer im Interview zu haben, ist meiner Meinung nach am besten.
Nur ein Experte kann beurteilen, ob der Bewerber nur viele Interviewfragen kennt oder ob er tatsächlich über die Probleme nachdenkt und ins Detail gehen kann. Denken Sie daran, Sie möchten keine Mitarbeiter einstellen, die Interview-Rätsel lösen, sondern sie einstellen, um die eigentliche Arbeit zu erledigen.
Rätsel sollen Leute ausschließen, die die Grundlagen nicht richtig verstehen. Wenn Sie Ihre Fähigkeiten testen möchten, bereiten Sie einige Dinge vor, über die Sie (oder Ihr "guter Programmierer") ins Detail gehen und sich auf die konzentrieren können, über die der Bewerber eine Weile nachdenken muss. Wie geht er mit Problemen um, deren Lösung er nicht sofort kennt?
quelle
Ich denke nicht, dass Sie im Interview über Leidenschaft sprechen sollten. Ehrlich gesagt klingt es so, als ob ein Unternehmen, das nach Leidenschaft sucht, wirklich bedeutet, für die Idee für kein Geld zu arbeiten.
Leidenschaft garantiert nicht einmal Exzellenz. Ich verbringe fast mein ganzes Leben damit, zu programmieren, über das Programmieren zu lesen, verrückte Sprachen wie Erlang oder Clojure zu lernen, und ich werde für nichts bezahlt. Trotzdem nerve ich beim Programmieren.
Ich denke, exzellente Programmierer sollten einen Überblick über erfolgreiche Projekte haben, an denen sie aktiv beteiligt waren. Daher ist es im Interview nicht notwendig, einen Programmierer dazu zu bringen, etwas zu schreiben, das über das grundlegende FizzBuzz hinausgeht. Sprechen Sie über ihre vergangenen Projekte und was sie getan haben. Stellen Sie Programmierer ein, um Rubiks Würfel zu lösen und Murmeln zu zählen, oder arbeiten Sie an langen und großen und anstrengenden Softwareprojekten mit mehr als 50 Coe-Zeilen?
quelle
http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/
Aus dem Artikel:
Die Kriterien in Aufzählungszeichen
Zusammenfassend sind hier einige Indikatoren und Gegenindikatoren aufgeführt, die Ihnen helfen sollen, einen guten Programmierer zu erkennen.
Positive Indikatoren :
Negative Indikatoren :
Programmieren ist ein Tagesjob
Ich möchte nicht wirklich "reden", auch wenn ich dazu ermutigt werde
Lernt neue Technologien in firmensponsorierten Kursen
Ich arbeite gerne mit der von Ihnen ausgewählten Technologie. „Alle Technologien sind gut.“
Scheint nicht zu schlau
Beginn der Programmierung an der Universität
Alle Programmiererfahrung ist im Lebenslauf
Konzentriert sich hauptsächlich auf ein oder zwei Technologie-Stacks (z. B. alles, was mit der Entwicklung einer Java-Anwendung zu tun hat), ohne Erfahrung außerhalb davon
quelle
Ein ausgezeichneter Programmierer kann auch mit Gleichgesinnten mit niedrigerem Spektrum arbeiten. Solange sie die Prüfung bestehen können und sich nicht in ihrem Ego suhlen, haben Sie einen guten Kandidaten, nicht wahr?
Dieser Fizzbuzz-Test ist allerdings ein bisschen lustig. Die Lösung, die ich mir vorstellen kann, verwendet den Modulo-Operator. Was ich nur aus dem Ausarbeiten von Zeichensatzkoordinaten kenne (nie in der Schule oder im College erwähnt). Wüsste der durchschnittliche Programmierer überhaupt davon oder hatte ich Mistausbildung?
quelle
Ein Kriterium, das ich benutze, ist es, die Art der Sprachen und Werkzeuge zu sehen, an denen er gearbeitet hat, entweder in akademischen oder in professionellen Projekten, und was genau er erreicht hat. Hat er immer auf Anwendungsebene mit Standardbibliotheken gearbeitet (immer ein C # - oder VB6-Typ?) Oder hat er unter Linux ein Projekt mit C durchgeführt, das sich mit Hardcore-Dingen wie Zeigern, Speicherverwaltung, Rekursion, Prozesssynchronisierung, gegenseitigem Ausschluss, Ereignissen usw Wenn er diese grundlegenden Konzepte immer unter einer Abstraktionsebene verwendet hat, werde ich bezweifelt sein.
Dies ist offensichtlich zusätzlich dazu, dass er Code schreibt. Nichts ist ein Ersatz dafür. Ich gehe jedoch auf die Tatsache ein, dass einige Leute Code schneller schreiben können als andere, und dass die Leute im Rampenlicht eines Interviews unterschiedliche Reaktionszeiten haben.
quelle