Wie ermittelt man die Fähigkeiten eines Softwareentwicklers im Vorstellungsgespräch?

Ich stehe in meiner Karriere vor einer neuen Herausforderung, bei der ich einige Vorstellungsgespräche führen muss, und ich muss feststellen, ob der Bewerber die Fähigkeiten, die er/sie in seinem/ihrem Lebenslauf auflistet, wirklich beherrscht.

Wie mache ich das? Mach ich:

  • Eine Aufgabe vorbereiten?
  • Stellen Sie konkrete technische Fragen zu dem, was wir brauchen?
  • Mach etwas anderes?

Edit: Es werden zwei Personen das Interview führen. Der andere Kollege kommt aus der Personalabteilung. Ich muss mich nur über die technischen Kenntnisse (Programmier- und Architekturfähigkeiten) des Bewerbers sicher sein.

Es scheint mir, dass diese Frage besser zu Programmers SE als zu PM passt :-/
Ich denke, diese Frage gehört zum Thema, denn ein PM muss die richtigen Kandidaten für seine Projekte finden und dafür ist ein gutes Vorstellungsgespräch sehr wichtig.
Ich habe vor einigen Minuten einen Blogeintrag von Joel Spolsky zu diesem Thema gelesen ... joelonsoftware.com/articles/FindingGreatDevelopers.html
Kayser, wenn Sie nicht die Antworten erhalten, nach denen Sie suchen, sollten Sie eine Bearbeitung vornehmen , um weitere Einzelheiten über das Projekt und das Team, das Sie aufbauen möchten, hinzuzufügen.
Diese Frage wird auf Meta PMSE diskutiert. Beteiligen Sie sich am Gespräch .
@TiagoCardoso danke für den Hinweis. Manchmal bin ich wütend auf Joel, weil er Dinge niedergeschrieben hat, bevor ich es herausgefunden habe :-). Es ist gut, dass er nicht wie Apple ist und jeden verklagt, weil er seine Ideen benutzt ;-)

Antworten (10)

Das kann eine Herausforderung sein, es ist immer möglich, dass jemand gut testet, aber in der „realen Welt“ keine Leistung erbringen kann. In der Vergangenheit habe ich bei Vorstellungsgesprächen mit Kandidaten folgende Prioritäten gesetzt:

  1. Persönlichkeit. Sie können einen neuen Mitarbeiter jederzeit schulen, um technisch kompetent zu werden. Du kannst sie niemals zu einem anständigen Menschen erziehen, wenn sie es nicht schon sind. Unter dieser allgemeinen Überschrift fasse ich Eigenschaften wie Ehrlichkeit, Diskretion, Direktheit, Mut usw. zusammen. All die "Soft Skills", die es einem leicht machen, mit jemandem zu arbeiten ... aber notorisch schwer einzuschätzen sind.
  2. Geistesschärfe. Wenn Sie eine langfristige Einstellung in Betracht ziehen, ist es besser, jemanden zu finden, der ein Problem aufschlüsseln, es durchdenken und dann den von ihm entwickelten Plan ausführen kann, als jemanden, der nicht wirklich denken kann. Sie könnten eine Art Logikrätsel verwenden, um sie darauf zu testen.
  3. Fähigkeit zu lernen. Ich würde niemanden einstellen, der keine Ahnung hat, was in der Position getan werden muss, in die er versetzt wurde, aber die Technik ändert sich, und wenn er nicht weiterlernen kann, bleibt man bei jemandem hängen, der großartige Lochkarten macht wenn Sie wirklich jemanden brauchen, der in JAVA programmieren kann.
Wie kann ich sicher sein, dass der Bewerber lernfähig ist?
@Kayser - Es gibt eine Reihe von Stellvertretern, z. B. Bildungsniveau, berufliche Zertifizierungen, Kurse zur beruflichen Entwicklung usw. Wenn sie während des Interviews fortlaufende Schulungen in die Diskussion einbringen, möchten sie wahrscheinlich lernen (und genießen). Diese Faktoren beseitigen nicht das Risiko, dass der Bewerber nicht leicht lernen kann, aber sie können dieses Risiko verringern.
Ich würde "Leidenschaft" für das Feld hinzufügen. Ich versuche, eine Person zu einem Thema zu bringen, über das sie viel weiß oder gerade aktiv lernt und für das sie sich begeistert. Wenn ich das sehe, habe ich eine Person, die willens und begierig ist zu lernen. Und das sind 90 % der Programmierung. Ohne sie stagnieren deine Fähigkeiten, und egal wie gut du heute bist, in 5-10 Jahren wirst du für mich nutzlos sein.

Erstens hat das Interview als Prädiktor für zukünftige Leistungen eine sehr geringe Aussagekraft. Selbst strukturiert ist es nicht hilfreich oder sehr nützlich. Das Testen der kognitiven Fähigkeiten und das Durchführen von „Arbeitstests“ sind zwei der führenden Leistungsindikatoren mit einer Gültigkeit, die sich r0,5 annähert oder um die herum ( Hunter & Hunter 1984 ).

Das Erstellen von Aufgaben oder Testfragen ist also genau das Richtige für Sie. Das Testen von Prädiktoren muss jedoch selbst getestet werden. Ist dies keine leichte Aufgabe. Diejenigen, die Auswahlwerkzeuge erstellen, investieren eine Menge Zeit und Geld, und die Zuverlässigkeit und Gültigkeit dieser Werkzeuge ist immer noch fraglich. Vielleicht ist es am besten, das zu kaufen, was bereits entwickelt und getestet wurde, aber bereiten Sie sich darauf vor, Geld auszugeben.

Wenn Sie dies nicht können, machen Sie es sich mit einer 50/50-Chance, die richtige Auswahl zu treffen, wirklich bequem.

+1 für aktuelle Wissenschaft zu einer Interviewfrage. So selten.
Es sei darauf hingewiesen, dass sich sein Zitat auf Einstiegsjobs bezieht
Wie stark werden sich Ihrer Meinung nach die Werte ändern?

Aufbauend auf Marcins Antwort.

Der Guerilla-Leitfaden für Vorstellungsgespräche (neueste Version ist am besten!) ist sehr nützlich.

Es hat mir sehr geholfen, als ich vor einigen Jahren während eines Expansionsschubs zum ersten Mal technisches Personal für die Einstellung auswerten musste (ich stellte Elektronikentwicklung und Embedded-Programmierung ein, nicht nur Allzweck-Codierer für Unternehmenssoftware).

Ich bin mir bei all seinen Behauptungen nicht 100% sicher - Glauben Sie nicht wirklich, dass es eine wertvolle Möglichkeit ist, immer 6 Personen zu haben, die eine Person nacheinander interviewen, um die Zeit von 6 Personen zu verbringen, wenn sie auch Projektarbeit haben, aber dem muss ich zustimmen „Schlau und erledigt die Dinge“ ist so ziemlich die beste Zusammenfassung eines guten Mitarbeiters, den Sie jemals bekommen werden, und wenn Sie diese beiden Indikatoren im Auge behalten, plus vielleicht eine Prise „technische Kultur“, werden Sie auf dem besten Weg sein, es zu werden die technische Seite der Dinge ausgewertet.

Außerdem - es gibt nichts Wahreres als das:

„Sag niemals: „Vielleicht, ich weiß es nicht.“ Wenn Sie es nicht sagen können, bedeutet das: Keine Einstellung. Es ist wirklich einfacher, als Sie denken. Sie können es nicht sagen? Sagen Sie einfach nein! Wenn Sie auf dem Zaun stehen, bedeutet das: Keine Einstellung. Sagen Sie niemals: „Nun, Ich schätze, aber ich mache mir ein bisschen Sorgen wegen …“ Das ist auch ein No Hire. Übersetzen Sie das ganze Geschwätz mechanisch in „Nein“ und alles wird gut.“

Als jemand, der einmal einem schlecht ausgefallenen Vielleicht zugestimmt hat (ich entschuldigte mich im Vorstellungsgespräch für schlechte Leistungen im Eignungstest und schlechte Erklärungen, weil sie selbstsicher wirkten - aber jetzt weiß ich, dass ich es nicht hätte tun sollen), kann ich das sagen es ist die Art von Dingen, die einem Entwicklungsteam viel Schaden und Stress zufügen....

Abgesehen von den Informationen von Joel müssen Sie alle verfügbaren Tools verwenden, um Ihre neuen Teammitglieder zu gewinnen, ohne Ihre gesamte produktive Zeit in Anspruch zu nehmen.

Ich hatte einen Personalvermittler, den unser Unternehmen einsetzt, der grundlegende Mathematik- und Logiktests hat, und bei einigen verschiedenen Einstellungssitzungen erwiesen sich diese als ein großartiger Indikator für Leute, die bei technischen Vorstellungsgesprächen und bei der eigentlichen Arbeit danach gut abgeschnitten haben. Nach allem, was ich gesehen habe, sollten Sie davon ausgehen, dass jeder geeignete Bewerber für einen technischen Job in diesen Dingen zu den besten 5 % der Bevölkerung gehört, selbst an einem wirklich schlechten Tag ... Der Personalvermittler führte auch eine psychologische „DISC“-Analyse durch Bericht, der immer interessant zu lesen war, aber ich glaube, darauf könnte ich verzichten, wenn ich die Rekrutierungsrechnung aus eigener Tasche bezahle....

Für die Programmierseite meiner Auswertungen habe ich auch ein paar Softball-C-Fragen verwendet, wie in diesem Artikel beschrieben. Ich würde sie eher als geführte Diskussionen denn als tatsächliche Tests betrachten - Es geht nicht nur darum, dass sie es können, sondern auch darum, wie schnell sie sind und wie selbstbewusst sie sind, und die Diskussionen, die Sie dabei führen. Als Bonuspunkte wurden meine aus vereinfachten Teilen unserer bestehenden Codebasis hergestellt, sodass sie mir auch einen kleinen Einblick in die Funktionsweise ihres Denkprozesses mit unserer bestehenden „Code-Kultur“ gaben und mir einen Blick darauf gaben, wie sie damit umgingen sind uns wichtig, wie Zustandsmaschinen.

Interessanterweise habe ich sogar einen jungen Mitarbeiter getestet, der bei den grundlegenden Eignungstests hervorragend abgeschnitten hat, aber keine wirkliche C-Erfahrung hatte, indem ich ihm die für einen dieser Tests erforderlichen "allgemeinen C-Details" gegeben und mich auf seine Logik konzentriert habe, um die Funktionsweise zu erklären , und fügen Sie dann Funktionen hinzu. Er ist wirklich gut geworden.

Ähm, Sie möchten also, dass Bewerber im 95. Perzentil der Fähigkeiten liegen. Zahlen Sie auch im 95. Perzentil für den Bereich des Kandidaten ? Wenn nicht, wird Sie diese Art von Nichtübereinstimmung von Werten und Kriterien schließlich beißen.

Die effektivste Interviewtechnik, die ich gefunden habe, um Programmierer zu interviewen, ist eine Whiteboard-Sitzung, bei der wir eine Fallstudie aus dem wirklichen Leben durcharbeiten, gefolgt von einem Programmiertest.

Die Whiteboard-Sitzung gibt eine gute Vorstellung davon, wie gut der Kandidat sein Verständnis des Problems artikulieren und teilen kann und wie er es lösen würde.

Der Programmiertest gibt einen Anhaltspunkt, nur einen Anhaltspunkt, wie gut ihre Kenntnisse in der Sprache sind, die sie im Job verwenden werden. Ich verwende gerne etwas Sprachspezifisches, wie das „Elastic Racetrack“-Problem in Flash und eine Übung, bei der der Kandidat einige Unit-Tests schreiben muss, um das Verhalten einer API zu testen, wie z. B. eine einfache Sortiermethode.

Normalerweise führe ich Programmierer-Interviews als Paar, bestehend aus einem leitenden Entwickler und mir – dem Projektmanager – durch.

Die Zeit während des Interviews ist zu kurz, um sich über die Programmierfähigkeiten eines Entwicklers zu informieren, aber es ist wichtig, mehr über seine Persönlichkeit zu erfahren, also führen Sie ein persönliches Gespräch .

Wenn ich den Lebenslauf eines neuen Kandidaten erhalte, beginne ich sofort, auf Github nach Code von ihm oder ihr zu suchen, um zu sehen, wie er oder sie die Codierung durchführt . Wenn ich keine finde, gebe ich ihm eine Übung, um zu sehen, wie es ihm geht. Ich sende einen Link zu diesem Repository mit einer kurzen Beschreibung der Übung. Ich erkläre nicht zu viel, weil ich wissen will, wie er Probleme alleine lösen kann. Wie Sie sehen können, hat ein Typ die Aufgabe erledigt und er hat es großartig gemacht. Wenn ich nicht allzu viel über die Domain weiß, bitte ich einen erfahrenen Entwickler um Hilfe. Mit diesem Ansatz weiß ich, was für ein Entwicklertyp der Kandidat ist. Die Teamfähigkeit und andere soziale Kompetenzen können im persönlichen Gespräch überprüft werden .

Es gab eine Zeit, in der das Unternehmen spotify nicht nach Lebensläufen fragte, sondern nach Github-Repository-Links.

Die Übungsidee ist ein netter Hinweis. Für die nächsten Vorstellungsgespräche kann ich etwas Ähnliches vorbereiten. Aber jetzt reicht die Zeit nicht

Programmierübungen:

Als Antwort auf diese Frage werden Sie oft „Codierungsübungen“ hören. Und obwohl diese Übungen sicherlich einen gewissen Wert haben (sie testen sicherlich den Wunsch einer Person für die Position, da sie bis zu 20 Stunden unbezahlte Arbeit leisten muss!), sollten Sie sie vorsichtig verwenden.

Ein Problem besteht darin, dass diese Übungen meistens nicht mit dem Projekt/der Rolle zusammenhängen. Was mir verrückt vorkommt. Wenn Sie Übungen mit einem Kandidaten durchführen, stellen Sie sicher, dass diese darauf ausgelegt sind, seine Fähigkeit zu testen, die Arbeit zu erledigen.

Es gibt viele andere Möglichkeiten, um herauszufinden, ob ein Programmierer ein guter Kandidat ist – ohne auf eine einzige Codezeile zu schauen!

Holen Sie sich etwas Facetime:

Man kann so viel sagen, wenn man nur mit jemandem spricht. Vom Tonfall und Tonfall ihrer Stimme bis hin zu ihrer Körpersprache. Sich auf einen Audio- oder E-Mail-Austausch zu beschränken, verweigert Ihnen diese wertvolle Charaktereinsicht.

Viele Freelancer-Plattformen versuchen, sich vor Disintermediation zu schützen, indem sie den direkten Telefonkontakt stark entmutigen. Stattdessen setzen sie auf einfache Online-Tests und spielbare Peer-Rating-Systeme. Obwohl an keiner der Methoden etwas auszusetzen ist, müssen sie mit persönlicheren Techniken kombiniert werden, um ein vollständigeres, genaues Bild eines Kandidaten zu erhalten.

Fragen Sie nach ihrer Meinung:

Fragen Sie sie nach ihrer bevorzugten Programmiersprache und warum. Die Art und Weise, wie sie antworten, wird viel verraten. Wenn jemand eine starke Meinung zu einem Thema hat, ist das ein guter Indikator dafür, dass er sich dafür begeistert

Überprüfen Sie sie auf GitHub:

Wie viel tragen sie bei großen und Open-Source-Projekten zur Branche bei? Sie erhalten nicht nur einen Einblick in ihre Programmierung, sondern auch einen großartigen Einblick in ihre Denkweise und Leidenschaft. Open-Source-Projekte sind eine Art und Weise, wie Menschen der Branche etwas zurückgeben, indem sie helfen, Dinge für ein größeres Wohl zu reparieren. Das klingt jetzt nach jemandem, den ich in meinem Team haben möchte

Wie oft liefern sie, was sie codieren?

Mit Code zu basteln ist eine Sache. Ein komplettes Produkt versenden zu können, ist eine andere. Informieren Sie sich über Projekte, die sie abgeschlossen haben, die sie nicht abgeschlossen haben und was passiert ist

Wie gut sind sie gesprochen?

Sind sie gute Kommunikatoren? Wenn sie sich wie eine Black Box verhalten, werden Sie Schwierigkeiten haben, mit ihnen zusammenzuarbeiten und ein Team um sie herum einzustellen.

Wie gut schreiben sie?

Dies ist dem obigen Punkt ähnlich, aber deutlich genug, um eine Rolle zu spielen. Ein großartiger Autor ist oft besser in seinem Job, sei es im Marketing oder in der Programmierung. Mein Rat ist hier einfach: Wenn Sie zwischen ähnlich aussehenden Kandidaten feststecken, stellen Sie immer den besseren Autor ein.

Verwenden Sie eine Probezeit:

Es ist eine sichere und faire Möglichkeit, sie in einem Projekt zu testen, ohne sie für ihre Zeit zu bezahlen. Bei Scalable Path geben wir Kunden einen Monat Zeit, um einen Entwickler zu bewerten. Wenn es gut oder schlecht passt, wird es offensichtlich sein. Und wenn nicht, ersparen sich beide Seiten viel Ärger und Risiko, indem sie die Situation erst einmal ausprobieren.

Abgesehen von den Kodierungsübungen können diese Methoden auch von Nicht-Programmierern verwendet werden und sind daher für PMs bei Vorstellungsgesprächen sehr nützlich.

Würden Sie einen Zauberer engagieren, ohne ihn zu bitten, Ihnen einige Zaubertricks zu zeigen? -Joel Spolsky.

Lesen Sie Joles Leitfaden: Der Guerilla-Leitfaden für Vorstellungsgespräche

Sie haben Recht. aber man kann einen komplexen Auftrag nicht in kurzer Zeit erteilen. Und eine einfache Aufgabe reicht nicht aus, um zu sehen, was er kann.
Es klingt ein wenig nach "billig, schnell, gut": sehr schnell günstige und gute Mitarbeiter finden :). Vergessen Sie nicht, dass die Bedingung kein weißes Blatt Papier ist. Schauen Sie sich seine/ihre Erfahrung an. Nach Dingen zu fragen, auf die er/sie stolz ist, könnte interessant sein – was denkst du?

Das Vorstellungsgespräch ist nur ein Teil des Einstellungsprozesses. Das Gespräch mit Referenzen und früheren Arbeitgebern ist ein weiterer wichtiger Aspekt. Nutzen Sie das Vorstellungsgespräch, um mehr über den Kandidaten, seine Erfahrungen und behauptete Expertise zu erfahren. Sprechen Sie dann mit Referenzen und früheren Arbeitgebern, um die gleichen behaupteten Erfahrungen und Fähigkeiten zu validieren / eine andere Perspektive zu erhalten.

Für mich ist der bessere Weg eine kurze Paar-Programmiersitzung mit SMB vom Team. Hier ist ein Beispiel für die Verwendung von Cyber-Dojo in Vorstellungsgesprächen (Video).

Es dauert zwischen 20 Minuten und 1 Stunde und zeigt das wahre Niveau der Fähigkeiten.

Hallo NetRat, im Allgemeinen erwarten wir, dass Referenzlinks eine Stack Exchange-Antwort unterstützen, damit sie für zukünftige Besucher in den kommenden Jahren wertvoll ist. Wenn die Verbindung jemals unterbrochen würde, wäre Ihre Antwort nutzlos. Erwägen Sie, eine Bearbeitung vorzunehmen, um die Punkte aus dem Video zusammenzufassen. Dadurch wird sichergestellt, dass Ihr Beitrag für zukünftige Besucher über Jahre hinweg nützlich ist. Viel Glück und willkommen bei PMSE!

Wenn Sie ein Projektmanager sind, sollten Sie die technischen Aspekte der Interviews dem Team oder den Funktionsmanagern überlassen. Als Projektmanager, selbst wenn Sie über technische Fähigkeiten verfügen, liegen die technischen und taktischen Details wirklich nicht in Ihrer Verantwortung.

Der Zeitaufwand für Vorstellungsgespräche kann auch von Ihren eigentlichen Aufgaben des Projektmanagements ablenken.

Wenn Sie jedoch an Vorstellungsgesprächen teilnehmen, konzentrieren Sie sich auf die Soft Skills. Als Projektmanager müssen Sie mit dieser Person zusammenarbeiten, und Sie möchten sicher sein, dass diese Person ein Teamplayer ist und jemand ist, mit dem Sie arbeiten und kommunizieren können.

In diesem Fall klingt es so, als ob Sie als Beobachter am Vorstellungsgespräch teilnehmen möchten, meistens beim HR-Interview, und möglicherweise als Beobachter beim technischen Interview.