it-swarm-eu.dev

Warum sind SW-Engineering-Interviews unverhältnismäßig schwierig (im Vergleich zu Forschungsinterviews)?

Zunächst einige Hintergrundinformationen zu mir. Ich habe einen Doktortitel in CS und war sowohl als Softwareentwickler als auch als Forschungs- und Entwicklungswissenschaftler tätig, beide bei Very Large Corporations, die Sie sehr gut kennen. Ich habe kürzlich den Job gewechselt und für beide Arten von Positionen interviewt (wie ich es in der Vergangenheit getan habe).

Meine Beobachtung: SW-Ingenieur-Vorstellungsgespräche sind viel, viel unverhältnismäßig schwieriger als CS-Forscher-Vorstellungsgespräche, aber der Forscherjob ist höher bezahlt, wettbewerbsfähiger, lohnender, interessanter und hat einen höheren Vorteil.

Hier ist eine typische Interviewschleife für Forscher:

  • Telefoninterview, um zu sehen, ob meine Forschung mit der Forschung des Labors übereinstimmt
  • Persönlich: Präsentieren Sie eine Stunde lang meine jüngsten Forschungsergebnisse (was einer Arbeit von 9 Monaten entspricht) und beantworten Sie Fragen des Publikums
  • Persönliche Einzelinterviews mit ungefähr 5 Forschern, in denen sie mir sehr vernünftige Fragen zu meiner Arbeit/Veröffentlichungen/Patenten stellen, einschließlich: technische Fragen, wo meine Arbeit in verwandte Arbeiten passt und wie ich meine Arbeit erweitern kann neue Bereiche

Hier ist eine typische Interviewschleife für SW-Ingenieure:

  • Telefoninterview, in dem mir Algorithmusfragen gestellt werden und ich vielleicht etwas programmiere. Ziemlich normal.
  • Persönliche Interviews am Whiteboard, in denen sie Ihnen die F *** über esoterische C++ - Minutien (z. B. wie funktioniert ein polymorpher virtueller Funktionsaufruf), Algorithmen (alle Algorithmen für den kürzesten Pfad aller Paare funktionieren für 1B-Scheitelpunkte) näher bringen. , Systemdesign (Entwurf eines Datenbank-Load-Balancers) usw. Dies gilt für sechs oder sieben Interviews. Lächerlich.

Warum sollte jemand bereit sein, sich damit abzufinden? Was bringt es, nach C++ - Trivia zu fragen oder Code zu schreiben, um sich zu beweisen? Warum ähneln Sie dem SE-Interview nicht eher dem Forscherinterview, in dem Sie einen Vortrag darüber halten, was Sie getan haben?

Wie sind technische Vorstellungsgespräche für andere Bereiche wie Physik, Chemie, Bauingenieurwesen, Maschinenbau?

40

Es ist relativ einfach festzustellen, ob Sie technisch kompetent genug sind, um Nachforschungen anzustellen. Sie haben Veröffentlichungen, die die Personalchefs lesen können, und diese Veröffentlichungen weisen wahrscheinlich auf andere Personen hin, mit denen sie sprechen können, um Sie zu überprüfen.

Software-Engineering hingegen ist eine Disziplin, die so voll mit inkompetenter Platzverschwendung ist, dass man viel Sorgfalt walten lassen muss, um sicherzustellen, dass der Mann, den Sie einstellen, tatsächlich den Code schreiben kann, für den Sie ihn einstellen möchten.

45
Wyatt Barnett

Hier auf einem Ast ausgehen.

Als promovierter Forscher haben Sie bereits mehreren anerkannten Organisationen Ihren Wert und Ihre Mindestqualitäten als Forscher bewiesen. Sie haben eine These erfolgreich vor einem Gremium Ihrer Kollegen verteidigt und mindestens eine von Experten begutachtete Publikation davon überzeugt, Ihre Arbeit zu veröffentlichen.

Die Softwareentwicklung hingegen hat keine Qualifikationsstandards. Menschen blasen routinemäßig ihre Wissensbasis auf. Infolgedessen müssen Softwareentwicklungsinterviews die gesamte Arbeit leisten, die PhD Defense und Peer Review im akademischen Bereich leisten. Sie lassen Sie beweisen, dass Sie wirklich wissen, wovon Sie sprechen.

30
Ryan Michela

Betrachten Sie dies für einen Moment.

Wenn ich mich für diesen CS-Forscherjob bewerben würde, würde ich meinen Lebenslauf nicht sehen. Ich würde überhaupt nicht zu einem Interview kommen. Ich würde einen standardisierten Brief ohne fortgeschrittenen Abschluss erhalten, in dem mir mitgeteilt wird, dass ich nicht einmal qualifiziert war, meinen Lebenslauf einsehen zu lassen.

Meine Fragen lauten wie folgt: "Warum ist es so schwer, einen Doktortitel zu bekommen?" Und "Warum brauche ich einen Doktortitel, um CS-Forscher zu werden?" "Warum so viele Barrieren und Hürden?"

Warum sollte jemand bereit sein, sich damit abzufinden?

Was bringt es, all diese Kursarbeiten zu erledigen und Forschungsergebnisse in Zeitschriften und Konferenzen zu drucken? Warum kann ich nicht einfach recherchieren und werde mehr bezahlt als ich für das Engineering?

Warum sollten Sie sich auf Graduiertenschulen und Veröffentlichungen verlassen, um Referenzen zu erstellen? Warum nicht das Forschungsinterview eher wie die SE-Interviews gestalten, bei denen alles davon abhängt, woran Sie sich gerade während des Interviews erinnern können?

17
S.Lott

Nun, ich habe eine Theorie. Die Forschung wird in der Regel durch Zuschüsse bezahlt, daher ist das Bargeldangebot hoch. Sie haben einen Eimer Geld zum Ausgeben und müssen nur jemanden finden, für den sie es ausgeben können. Unabhängig davon, ob Sie in dieser Position tatsächlich etwas erreichen oder nicht, verzeichnet das Unternehmen/die Institution keinen Nettoverlust, da es sich ohnehin nur um einen bilanzierten Aufwand handelte. Es besteht wenig Risiko, die falsche Person einzustellen. Das schlimmste Szenario ist, dass sie alles wegwerfen, was Sie getan haben.

Auf der anderen Seite liegt der Erfolg oder Misserfolg bestehender Produkte auf den Schultern der täglichen Entwickler. Insbesondere wenn Sie in der Produktentwicklung tätig sind, sind Sie ein Profitcenter für das Unternehmen. Gute oder schlechte Entwickler haben einen enormen Einfluss, der weit über die Kosten ihres Gehalts hinausgeht. Ein schlechter Entwickler verursacht tatsächlich Schaden. Sie können ein Team, eine Produkteinführung usw. zurückwerfen. Die Konsequenzen der Einstellung eines schlechten SW-Ingenieurs sind viel höher.

6
Scott Whitlock

Kurze Antwort: Es gibt viele Leute auf dem Markt, die behaupten, Programmierung zu kennen, aber nicht programmieren können.

Nebenbemerkung: Ich bin überrascht, dass niemand einen Link zu FizzBuzz-Aufsatz gepostet hat.

5
Nikita Barsukov

Unsere Firma "stellt auch viele schwierige Fragen" und ich werde erklären, warum. Es ist uns wichtig, ob Sie wirklich wissen, wie ein virtueller Funktionsaufruf ausgeführt wird, aber nicht, weil er für die von Ihnen ausgeführte Aufgabe so wichtig ist.

Stattdessen kümmern wir uns darum, weil wir wissen müssen, wie schnell Sie grundlegende Dinge lernen können. Sie behaupten X Jahre Erfahrung? Okay, wir werden schwierige Fragen stellen, um herauszufinden, ob Sie solide Kenntnisse haben.

Sie wissen nicht, wie ein virtueller Funktionsaufruf unter der Haube erfolgt, wissen aber alles über Profilerstellung und Optimierung? Großartig, wir stellen Sie wahrscheinlich ein - Sie haben solide Kenntnisse in einem Bereich erworben und werden sicherlich solide Kenntnisse in einem anderen Bereich erwerben.

Sie behaupten, X Jahre Erfahrung im "Entwickeln, Debuggen und Korrigieren von C++ - Code" zu haben und können nicht in einfachen Worten erklären, wie ein Zeiger auf ein Objekt zeigt? Entschuldigung, wir können Sie nicht einstellen. Wenn Sie das nicht können, wie erklären Sie dann schwierigere Probleme, wenn wir komplexe technische Entscheidungen treffen müssen?

5
sharptooth

Ich bin ein Softwareentwickler (c/c ++) mit über 20 Jahren Erfahrung auf diesem Gebiet. Die Art von Interviews, die wir jetzt routinemäßig sehen (die Denksportaufgaben, die Implementierung von Datenstrukturen, Suchalgorithmen usw. auf dem Whiteboard), kam bis auf Neuentwicklungen nicht oft vor. Wenn eine Person für einen angemessenen Zeitraum für ein seriöses Unternehmen arbeitete, wurde dies als Beweis für die Fähigkeit angesehen, Code zu schreiben. Jetzt ist es sehr schulisch geworden und ich bin mir nicht sicher warum. Wirklich, die typischen Dinge, die Sie zum Codieren auffordern, können auswendig gelernt werden, sodass das Ausführen auf dem Whiteboard wirklich nichts beweist. Bei einem Arbeitsprojekt würden Sie das Internet nutzen, um etwas zu recherchieren, und Sie würden keine Bäume oder verknüpften Listen von Grund auf neu schreiben. Was Unternehmen jetzt wirklich brauchen, sind Innovatoren, und wenn sie jemanden bitten, zu beweisen, dass sie aus Speicherstrukturen des Colleges schreiben können, zeigt dies keine Innovation.

Ich denke, es ist eine weitere Modeerscheinung im Management - genau wie Scrum - mit dieser, die wahrscheinlich von Google, Amazon und Microsoft gestartet wird. Alle anderen kopierten genau wie Jack Welchs Rang und Ruck ... erinnerst du dich an GE?

Wenn Sie ein Personalchef sind, der meine Kommentare liest, sollten Sie die Kandidaten fragen, wie sie bestimmte Probleme lösen würden. Anstatt sie zu bitten, eine Hash-Tabelle zu codieren, geben Sie ihnen ein Problem mit einer Hash-Tabelle und fragen Sie, wie sie es lösen würden.

Ich stimme auch dem Entwickler über diesem Beitrag zu, der sagte "Gib ihnen ein reales Problem, das das Unternehmen lösen musste"!

"Aber ich würde eher die OOP/Inheritance-Fragen bombardieren. Warum? Da ich nach dem Hinzufügen der Unterstützung für Vorlagen C++ fast ausschließlich für die generische Programmierung verwendet habe."

Ich stimme auch dem oben Gesagten zu. Wenn Sie für ein Unternehmen arbeiten, schreiben Sie Code auf IHRE Weise. Manchmal fällt es mir immer noch schwer, mich an C++ - Aufrufe durch Referenzsyntax zu erinnern, weil der leitende Architekt der Firma, für die ich 15 Jahre gearbeitet habe, lieber Zeiger als Referenzen verwendete. Er war ein alter C-Programmierer, wie Sie sehen. Das haben wir alle benutzt.

3
guest

Ich werde einen anderen Weg einschlagen und sagen, dass das Problem möglicherweise nicht so sehr darin besteht, dass die Software-Engineering-Interviews von Natur aus schwieriger sind, sondern dass verschiedene Sektoren nach unterschiedlichen Dingen suchen, die sich in ihrem Interviewstil zeigen.

Ich habe in einer Vielzahl von Branchen Interviews geführt (z. B. Start-up-Unternehmen, kleine Unternehmen, große Unternehmen, interne IT-Abteilungen, Software-Unternehmen, Forschungsorganisationen), und alle haben eine andere Art der Befragung, die ich normalerweise gefunden habe Folgen Sie dem folgenden Muster:

  • Start-ups neigen dazu, zu wissen, dass Sie mit dem Schreiben von Code beginnen können im Moment und mit einer schnelllebigen Umgebung umgehen können. Als solche neigen sie dazu, sich darum zu kümmern, wie viel Sie auf den ersten Blick wissen, da sie anscheinend nicht möchten, dass Sie viel Zeit damit verbringen, nachzuschlagen, was sie als "Kernwissen" erachten. Zuzugeben, dass Sie etwas nicht wissen, ist in dieser Umgebung möglicherweise nicht so gut, wenn sie erwarten, dass Sie es wissen.
  • Kleine Unternehmen tendieren dazu, die gleichen Dinge wie Start-ups zu suchen, wenn es darum geht, wie viel Sie wissen, sind aber nicht so besorgt darüber, wie gut Sie mit schnelllebigen Umgebungen umgehen (abhängig vom Job) und mehr darüber, welche Art von Soft Skills Sie verwenden bringen und wie gut Sie in das Unternehmen passen.
  • Große Unternehmen und interne IT-Abteilungen scheinen sich mehr darum zu kümmern, dass Sie über einen bestimmten Standard an technischem Wissen verfügen, sind aber nicht so besorgt, wenn Sie nicht alles auf den ersten Blick wissen, da sie davon ausgehen, dass es einige geben wird Zeit, die erforderlich ist, um Sie über die Erwartungen des Unternehmens zu informieren. Dies ist also eine Umgebung, in der es als Vorteil angesehen werden kann, zuzugeben, dass Sie nichts wissen, aber bereit sind zu lernen und zu lernen.
  • In der Forschungsumgebung (dh nach meiner Erfahrung Unterstützung bei der Softwareentwicklung für Wissenschaftler) geht es ihnen in der Regel darum, ob Sie Software schreiben können, vor allem aber, wenn Sie bereit sind, das zu tun, was erforderlich ist, um sicherzustellen, dass Sie lernen können, was sie tun Sie müssen Ihre Hand nicht halten, während Sie versuchen, ein Problem zu lösen. Da es sich auch um eine Forschungsumgebung handelt, scheinen sie auch daran interessiert zu sein, wie interessiert Sie daran sind, neue Dinge zu lernen.

Jetzt habe ich es versäumt, Softwareunternehmen (d. H. Google, Microsoft) zu erwähnen, da diese dazu neigen, ihre eigenen Dinge zu tun. Je nachdem, wie ausgereift das Unternehmen ist und für welche Gruppe Sie ein Interview führen, suchen sie nach verschiedenen Dingen.

Am Ende des Tages und wie bei den meisten Dingen im Leben hängt alles davon ab. Persönlich habe ich festgestellt, dass sich einige Unternehmen sehr stark auf das "Buchwissen" konzentrieren, was auf Kosten der tatsächlichen Lösung der Probleme auf höherer Ebene gehen könnte, während andere Unternehmen anscheinend sehr besorgt darüber sind, wie gut Sie mit den Problemen auf höherer Ebene umgehen (dh können Sie ein Schema für x entwerfen und davon ausgehen, dass sie bereit sind, drei bis sechs Monate zu investieren, um Sie auf den neuesten Stand zu bringen, bevor Sie voll produktiv sind.

3
rjzii

Auch hier sind technische Interviews willkürlich und launisch.

Es gibt einen großen Unterschied zwischen dem Grillen einer Person auf den Minutien und dem Sehen, ob sie ihre CS kennt. Wie ich oben sagte, habe ich über ein Jahrzehnt Erfahrung mit C++, aber ich würde dazu neigen, die OOP/Inheritance-Fragen zu bombardieren. Warum? Da einmal Unterstützung für Vorlagen hinzugefügt wurde, habe ich C++ fast ausschließlich für Generic) verwendet Programmierung.

Ich habe mit mehreren BigHouseHoldNameTech-Unternehmen in der Bay Area und in Seattle ein Interview geführt, und eines der besten Interviews beinhaltete echte Fragen, mit denen sie sich befassen mussten on the job mit Datenstrukturen und Algorithmen [dh: Sie haben 300 Milliarden Datenpunkte, die aus XYZ bestehen. Wie speichern und suchen Sie effizient ?].

Auf diese Weise wissen Sie, wie ein Kandidat eingreifen und helfen kann, die tatsächlichen Probleme zu lösen , mit denen Sie konfrontiert sind. Das absolut Schlimmste war auch bei einem anderen BigHouseHoldNameTech-Unternehmen, aber sie stellten stundenlang unglaublich arkane Fragen, die Sie wirklich nur in einem Handbuch nachschlagen sollten [ d. H. Beschreiben Sie die Hauptunterschiede zwischen PCB in Windows vs. Linux - und dies war nicht für eine Position auf Kernel-Ebene]

Hedge-Fonds sind bizarr mit der Absicht zu foltern ... erwarten Sie 8 Stunden Lösung Rucksack Typ Probleme auf einem Whiteboard.

2
red-dirt