Wie interviewe ich einen Naturwissenschaftler für eine Entwicklerposition? [geschlossen]

30

Ursprüngliche Frage

Ich habe bereits einige Interviews für mein Unternehmen geführt, hauptsächlich Informatiker für Entwicklerpositionen, aber auch einige Tester und Projektmanager. Jetzt muss ich eine Stelle in unserer Forschungsgruppe innerhalb der F & E-Abteilung besetzen (Randnotiz: "Forschung" bedeutet, dass wir versuchen, Probleme in unserem Berufsfeld / Marktnische mithilfe von Software in Forschungsprojekten zusammen mit Universitäten, anderen Unternehmen, Forschungszentren zu lösen und Endbenutzerorganisationen. Es ist keine Informatikforschung, wir werden das P = NP-Problem nicht lösen.

Jetzt haben wir jemanden eingeladen, der einen MSc in Chemie hat (mit viel Physik auch in seinem Lebenslauf), der nie Informatikunterricht hatte. Ich habe bereits eine halbe Stunde an den Karrieretagen einer Universität mit ihm gesprochen und es besteht kein Zweifel, dass der Typ schlau ist. Auch seine Noten sind ausgezeichnet und er schloss mit Auszeichnung ab. Für seinen BSc musste er sich in Mathematica selbst Programmieren beibringen und sagte mir glaubhaft, dass er gerne programmiere. Außerdem hat er ein physikalisch-chemisches Problem gelöst, das ich mit seiner in Mathematica implementierten Software für seine Masterarbeit wahrscheinlich nicht verstehe. Es enthält eine grafische Benutzeroberfläche und eine bemerkenswerte Größe von 8.000 LoC. Er scheint sehr angetan von dem, was wir in unserer Forschungsgruppe tun, und ehrlich gesagt ist es für ein KMU wie uns ziemlich schwierig, gute Leute zu finden. Ich bin auch sehr daran interessiert, ihn einzustellen, da er mir beim Verfassen von Projektvorschlägen, Berichten, Präsentationen usw. behilflich sein könnte. Er würde wahrscheinlich auch in unser Team passen.

Die einzige Frage, die noch offen ist, lautet: Wie kann ich prüfen, ob er die Programmierkenntnisse hat, die er für die Implementierung von Software in unseren Projekten benötigt, da dies ein wichtiger Teil der Arbeit sein wird?

Natürlich werde ich ihn fragen, was ihn am Programmieren fasziniert. Ich werde auch fragen, wie er seine naturwissenschaftliche Software geschrieben und wie er sie strukturiert hat. Ich werde fragen, wie er es geschafft hat, die Fähigkeiten und Informationen über die Softwareentwicklung zu erhalten, die er brauchte. Aber gibt es noch etwas, was ich fragen könnte? Etwas konkreteres vielleicht? Soll ich ihn bitten, seine Mathematica-Lösung zu erklären?

Um es klar auszudrücken: Ich suche kein Wissen in einer bestimmten Sprache oder Technologie. Wir sind ein .NET-Shop in der Produktentwicklung, aber ich möchte eine freie Wahl für unsere Forschungsprojekte haben. Ich bin also daran interessiert, dass die Metakompetenz alles lernen kann, was tatsächlich benötigt wird.

Ich hoffe , diese Frage beantwortbar ist und nicht mit offenem Ende , da ich wie wirklich wissen , ob es eine Standardmethode ist für die Fähigkeit zu überprüfen , um zu bekommen , weitere Programmierkenntnisse am Arbeitsplatz. Wenn Ihnen etwas nicht klar ist, geben Sie mir bitte einige Kommentare und lassen Sie mich meine Frage verbessern.

Aktualisieren Sie, um die bis zum 01.12.2011 gegebenen Antworten wiederzugeben

Welche Antwort habe ich akzeptiert und warum

Ich danke Ihnen allen für Ihre Antworten, die meisten von ihnen sind sehr hilfreich, deshalb habe ich viel dafür gestimmt! Obwohl die Antwort von Tom Squires die meisten Stimmen erhielt, werde ich die Antwort von Prinz Gulasch akzeptieren . Natürlich ist Tom objektiv korrekt, aber die Antwort von Prince ist nur hilfreicher für mich und ich habe die FAQ zweimal überprüft, dass dies das Kriterium ist, um eine Antwort zu akzeptieren.

Was ich ihn während des Interviews fragen werde

  • Ich werde ihn einige einfache Aufgaben erklären lassen, wie das Beispiel in Das Kamel hat zwei Höcker, das von Chris Burt-Brown erwähnt wurde

  • Ich werde ihn bitten, einige erweiterte Kontrollabläufe zu erläutern, möglicherweise in grafischer Notation.

  • Ich werde sein Verständnis der Rekursion anhand eines mathematischen Beispiels überprüfen.

  • Ich werde ihn einen Algorithmus seiner Wahl in natürlicher Sprache erklären lassen.

  • Ich werde ihn seine Mathematica-Lösung erläutern lassen, insbesondere sein Vorgehensmodell, die Verwendung von Werkzeugen, die Strukturierung von Code und Software im Allgemeinen sowie verschiedene Abstraktionsebenen.

  • Um seine Motivation zu überprüfen, werde ich nach seiner Faszination für Softwareentwicklung fragen.

  • Ich werde ihn fragen, ob er weiß, was er über die Entwicklung von Unternehmenssoftware lernen muss. Insbesondere möchte ich die Diskussion in die Richtung lenken, in Teams, Pair Programming und TDD zu arbeiten, da ich erwarte, dass er nach der Arbeit an seinem MSc alleine nicht viel darüber weiß.

Klingt nach einem langen Interview;)

Update nach dem Interview 09.12.2011

Nochmals vielen Dank für Ihre guten Antworten. Er bestand das Interview mit Bravour. Mit einem Bewerber war ich nie zufriedener. Seine Mathematica-Lösung scheint recht gut strukturiert zu sein. Er konnte erklären, wo er Funktionen höherer Ordnung verwendete, obwohl er nicht wusste, dass diese so bezeichnet werden. Er beantwortete meine mathematischen Fragen zu Rekursionen sowie einfache Aufgaben und Kontrollabläufe in The Camel Has Two Humps. Als er einige Algorithmen erklärte, lernte ich viel über nichtlineare Anpassung;) Außerdem sagte er ehrlich, dass er natürlich nicht garantieren kann, dass er in der Lage sein wird, Dinge über professionelle Softwareentwicklung zu lernen, die er bisher nicht kennt. Aber er ist davon überzeugt, dass er immer gut darin war, neue Konzepte zu lernen - auch von sich aus - und sich wirklich für Softwareentwicklung interessiert. Er fragte auch nach dem Technologie-Stack des Projekts, auf den er sich zuerst beziehen würde, um es sich zu Hause anzusehen. Er war auch neugierig auf Paarprogrammierung und Teamarbeit. Jetzt hoffe ich, dass der Arbeitsvertrag geschlossen wird.

Silas
quelle
9
Ich finde es wunderbar, dass Unternehmen bereit sind, Mitarbeiter einzustellen, die keine Kenntnisse in der von ihnen verwendeten Technologie haben. Ich wünschte, ich hätte Ihr Unternehmen gefunden, bevor ich das tat, was ich in meiner Karriere getan habe!
NoChance
Emmad: Das habe ich versucht zu erklären und mit "Metakompetenz" gemeint. Wo ist der Vorteil meines Unternehmens, wenn ich jetzt einen hervorragenden C # -Programmierer anstelle, der Scala / Lift bei Bedarf nicht erlernen kann (oder will)? Und um ehrlich zu sein: Eigentlich ist es ziemlich schwierig, in Deutschland gute Leute zu finden. Vor allem, wenn Sie als KMU nicht wie wir in einer trendigen Metropole angesiedelt sind.
Silas
2
Bitten Sie ihn, ein wenig über den einfachen Kontrollfluss und andere sehr grundlegende Techniken in einer bestimmten Sprache zu recherchieren. Wenn er dann hereinkommt, bitten Sie ihn, ein Problem mit diesen zu lösen.
Darren Young
2
In meiner jetzigen Position habe ich mit einigen Wissenschaftlern zusammengearbeitet, die Entwickler geworden sind. IMHO sind sie in der Regel sehr gut im Problemlösungsaspekt der Entwicklung und nicht so gut im Schreiben von wartbarem Code mit guten OO-Prinzipien. Wenn Sie möchten, dass er mehr tut als nur "schnelle und schmutzige" Tools schreibt, müssen Sie möglicherweise einen traditionellen Entwickler mit ihm zusammenarbeiten lassen.
Jordan Bentley
2
Ich bin so ziemlich dieser Typ. Ich habe einen Hintergrund in Computerphysik / Chemie und ich habe viele Computermodelle / Code entwickelt, zusammen mit einer Reihe von (manchmal komplexen und erfolgreichen) Nebenprojekten. Die wichtigsten Anpassungen, die ich in einer professionellen Entwicklungsumgebung vornehmen musste, betrafen die Entwicklungsmethodik und die Arbeit in einem Team. Stellen Sie sicher, dass er versteht, was für die Zusammenarbeit an Software erforderlich ist. Stellen Sie sicher, dass er die Methoden versteht, die Sie verwenden (TTD / Contubuous Integration) und was die Arbeit mit ihnen für seine Ausgabe bedeutet.
drxzcl

Antworten:

21

Ich bin hier sehr verärgert, weil ich vor ein paar Jahren als Softwareentwickler mit einem Doktortitel in Physik angefangen habe, aber mit sehr wenig Erfahrung im Programmieren (was einem Grundstudium in Fortran entspricht). Das hängt natürlich von der Art der Software ab, die Sie entwickeln, aber meiner Ansicht nach sind Codierfähigkeiten für jeden mit halbwegs guten Kenntnissen in Wissenschaft und Problemlösung sehr einfach zu erlernen. Ich beabsichtige das nicht als Beleidigung für lebenslange Programmierer, die Informatik studiert haben: Natürlich gibt es technische Aspekte, für deren Beherrschung eine ernsthafte Schulung erforderlich ist (z. B. Multithreading und Architektur auf sehr niedriger Ebene), aber ich gehe davon aus, dass dies der Fall ist nicht die Position, die Sie zu besetzen versuchen.

Für mein technisches Interview für meine aktuelle Position wurde ich mit einem ziemlich komplexen mathematischen Problem konfrontiert und gebeten, ein Programm zu entwerfen, um es zu lösen. Der Schwerpunkt lag auf dem Schreiben eines Algorithmus, der nach seiner Implementierung das Problem lösen würde. Ich konnte eine Antwort nur mit Worten schreiben, um meine Lösung zu beschreiben, aber ich durfte Code in einer Sprache meiner Wahl schreiben, wenn ich dies wünschte. Bei dem Test ging es mehr um die Fähigkeit zur Problemlösung und darum, ob ich in der Lage war, "wie ein Programmierer zu denken". Wenn es Kandidaten mit den gleichen Fähigkeiten gäbe und einer direktere Programmiererfahrung hätte, hätte er sich natürlich durchgesetzt, aber das scheint mir fair genug zu sein.

Das Fazit lautet: Untersuchen Sie den Kandidaten auf die Fähigkeiten, für die Sie ihn einstellen, und nicht auf Ideale, die er hoffentlich erreichen wird.

Prinz Gulasch
quelle
2
Nachdem sie mit Programmierern gearbeitet haben, die ehemalige Wissenschaftler waren, kennen sie nicht nur Details auf niedriger Ebene, sondern auch Dinge auf sehr hoher Ebene. YMMV natürlich, aber es ist ein allgemeiner Mangel an Tiefe, der das Problem ist. Nicht, dass alle Jobs das brauchen ...
Donal Fellows
1
@DonalFellows: Ich bezweifle nicht, dass Entwicklern ohne spezielle Schulung sowohl die Breite als auch die Tiefe des Wissens fehlen können. Dies hängt von der Rolle und dem Umfang der angebotenen Inhouse-Schulungen ab.
Prince Gulasch
1
@DonalFellows: Angesichts dessen, dass das OP daran interessiert ist, die Lernfähigkeit des Bewerbers zu bestimmen, nicht sein derzeitiges Wissen ...
2
@DonalFellows: Wie ich bereits sagte, ist das OP daran interessiert, die Lernfähigkeit des Bewerbers zu bestimmen , nicht sein derzeitiges Wissen ...
2
@ Mark Bannister: Ein guter Wissenschaftler kann lernen, das ist hier keine nützliche Frage. Eine nützlichere Frage wäre, ob der Wissenschaftler lernen wird, was er oder sie wissen muss. Das ist eher eine Frage der Persönlichkeit. Weiß der Wissenschaftler, was er oder sie nicht über Software Engineering weiß?
David Thornley
37

Wie kann ich überprüfen, ob er die Programmierkenntnisse erhält, die er benötigt?

Das kannst du nicht . Es ist unmöglich, eine Fähigkeit, die er noch nicht besitzt, genau zu testen. Sie müssen ein Urteil aufgrund seiner Intelligenz und Einstellung fällen. Es wird letztendlich immer ein Risiko sein.

Aus persönlicher Erfahrung kann ich sagen, dass es sehr gut möglich ist, von der Wissenschaft zur Programmierung überzugehen. Sie beide laufen im Grunde darauf hinaus, Ihr Gehirn zum Lösen komplexer Rätsel zu verwenden.

Tom Squires
quelle
8
+1 Für "Beide beschränken sich darauf, Ihr Gehirn zum Lösen komplexer Rätsel zu verwenden."
Joshin4colours
1
Was ist los mit dir? Stellen Sie den Kerl ein, um Himmels willen! Denken Sie daran, dass Programmierer nur Hightech-Drehmaschinenbediener sind. Er ist enthusiastisch, klug und kennt sich gut mit Chemie aus. Wenn Sie ihn dann nicht einstellen, werden Sie sich das nächste Mal, wenn Sie jemanden einstellen, in einem Jahr in den Arsch treten, wie Sie es nicht getan haben.
Pete Wilson
1
Es ist nicht selten, dass ein CS-Absolvent seit seinem 13. Lebensjahr programmiert hat. Zum Zeitpunkt ihres Studiums sind sie in den meisten Bereichen bereits ein fortgeschrittener Programmierer. Das heißt nicht, dass sie nichts von ihren Abschlüssen gelernt haben. Programmieren ist einfach ... Informatik / Soft Engineering geht nicht. Dies bedeutet nicht, dass sie keinen Beitrag leisten und ein wertvolles Mitglied sein können. Dies bedeutet jedoch, dass sie wahrscheinlich niemals dieselbe CS-Grundlage haben werden.
user606723
6

Ich habe keine sekundären Quellen, die dieses Papier bestätigen, daher kann ich nicht dafür bürgen, aber:

Das Kamel hat zwei Buckel
http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf

Wir haben einen Test für die Programmierfähigkeit gefunden, von dem wir Einzelheiten angeben. Wir können Erfolg oder Misserfolg vorhersagen, noch bevor die Schüler mit einer Programmiersprache sehr genau in Berührung gekommen sind, und indem sie nach einigen Wochen Exposition mit demselben Instrument mit äußerster Genauigkeit testen.

Chris Burt-Brown
quelle
3
Nachdem ich die Zeitung gelesen habe, denke ich daran, dass ich vor einiger Zeit mehr über diese Studie gelesen habe. Kann es einfach nicht wieder finden :( Edit: es wurde bei Coding Horror erwähnt , danke für die Erinnerung
Silas
Du hast mich geschlagen, ich wollte gerade mit dem Coding Horror-Link @Silas antworten
Izkata
5

Wie kann ich prüfen, ob er die Programmierkenntnisse hat, die er benötigt?

Es ist sehr einfach. Gib ihm die Fähigkeiten.

Nun, das ist keine sehr befriedigende Antwort, aber lassen Sie mich näher darauf eingehen.

Ich bin nach 3 Jahren im Bauingenieurwesen zum Programmieren gekommen. Das ist ein ziemlich solider Hintergrund in angewandter Physik und Mathematik. Es ist nicht die theoretische Mathematik, die ein CS-Abschluss geben würde, aber es ist etwas wert. Was ich aus den technischen Erfahrungen gezogen habe, war ein solider Hintergrund für die Problemlösung . Wer einen mathematischen Hintergrund hat, weiß das Konzept der Eleganz bereits zu schätzen, wenn er über eine Lösung für ein Problem spricht. Sie haben bereits eine Ausbildung in Refactoring, da sie sechs Seiten Hühnerkratzer genommen und in einen eleganten halbseitigen Proof für die Einreichung umgewandelt haben.

Jeder, der Physik studiert hat, hat einen intuitiven Ansatz entwickelt, um eine Lösung aus den Grundgerüsten zusammenzusetzen.

Und was ist Programmieren außerhalb dieser Fähigkeiten? - Sprache, Ausdrucksweise, Muster und Rahmenbedingungen. Diese sind leicht zu unterrichten. Es ist eine Problemlösung, die Sie nicht können. Wenn Sie in diesen Bereichen Anweisungen geben können, haben Sie einen guten Entwickler.

Die Frage lautet dann: "Wie lange kannst du warten, bis er auf Touren gekommen ist?"

tl; dr; Sie können das Schreiben unterrichten. Sie können nicht klug unterrichten.

Chris Cudmore
quelle
+1, sehr nette Antwort. Ich wünschte, die Leute hätten offenere Ansichten über Berufe: Ein Mathematikstudium bedeutet nicht, dass man nicht seinen Lebensunterhalt mit Programmieren verdienen kann, und umgekehrt. Lernen zu lernen ist die wichtige Fähigkeit IMO.
K.Steff
2

Ich habe einen BSc in Materialwissenschaften, habe aber meine ganze Karriere in der Softwareentwicklung verbracht.

Ich würde vorschlagen, dass Ihr Kandidat wahrscheinlich keine Probleme mit der Grundprogrammierung und den Algorithmen hat, aber wenn es um die eher "technischen" Anforderungen geht, braucht er möglicherweise eine Anleitung. Damit meine ich, seinen Code gut zu strukturieren, keine 500 Zeilenfunktionen zu haben, effektiv zu testen, auf Effizienz zu entwerfen ...

Das meiste davon kann unterrichtet werden, aber Sie können einige Fragen entwerfen, um dies herauszufinden.

Jaydee
quelle
2

Außerdem hat er ein physikalisch-chemisches Problem gelöst, das ich mit seiner in Mathematica implementierten Software für seine Masterarbeit wahrscheinlich nicht verstehe. Es enthält eine grafische Benutzeroberfläche und eine bemerkenswerte Größe von 8.000 LoC.

Klingt für mich so, als wüsste der Kandidat bereits, wie man programmiert, vorausgesetzt, er hat möglicherweise nicht so viel Erfahrung wie ein engagierter Entwickler, aber er hat ein nachweisbares Projekt abgeschlossen, für das ein nicht unbedeutender Arbeitsaufwand erforderlich ist. Daher können Sie den Kandidaten möglicherweise auf dieselbe Weise interviewen wie einen Entwickler, der eine andere Sprache als die von Ihnen verwendete verwendet:

  • Kernkompetenzen - Versteht der Kandidat grundlegende programmatische Logik, Ablaufsteuerung und grundlegende Datenstrukturen.
  • Fortgeschrittene Kompetenzen - Versteht der Kandidat objektorientiertes Programmieren und Entwerfen, fortgeschrittene Datenstrukturen, Schnittstellen, abstrakte Klassen usw.
  • Fähigkeiten zur Problemlösung - Beweist der Kandidat bei einem gegebenen Problem solide Fähigkeiten zur Problemlösung.

Die Sprache, die Mathematica verwendet, ist ziemlich fortgeschritten, und jemand, der gut in der Erstellung von Software für Mathematica ist, sollte in anderen Bereichen ziemlich kompetent sein. Wenn Sie sich also auf diese Erfahrung konzentrieren und diese als Grundlage für die Codierungserfahrung verwenden, ist dies eine gute Möglichkeit, sich dem Interview zu nähern.

rjzii
quelle
2

Als diplomierter Programmierer für Luft- und Raumfahrttechnik ist es sicherlich möglich, den Sprung von den Naturwissenschaften zur Programmierung zu wagen. Seien Sie jedoch gewarnt, dass die Fähigkeit, Probleme zu lösen, nicht immer mit der Fähigkeit korreliert, Code zu schreiben. Du scheinst dies zu erkennen und das ist eine gute Sache.

Für mich sind die wichtigsten Konzepte, um sicherzustellen, dass er die Kontrolle über den Fluss hat und Rekursion (und das Schleifen im Allgemeinen als Teilmenge davon). Vor der Einstellung eines Kandidaten muss auch jemand, der eindeutig sehr intelligent ist, sicher sein, dass er einen Algorithmus mit einfachen Worten schreiben kann, um Probleme zu lösen. Stellen Sie sicher, dass er diesen Klartext-Algorithmus verwenden und ihn zumindest in Pseudocode umwandeln kann. Sie können sogar prüfen, ob er das Konzept des Polymorphismus zumindest verstehen kann, obwohl ich nicht sicher bin, ob dies unter diesen Umständen das erforderliche Wissen ist.

Beachten Sie auch die Fähigkeit, wissenschaftliche Probleme in Mathematica / MatLab / Whatever zu lösen, was nicht bedeutet, dass er guten Code schreiben kann. Es bedeutet lediglich, dass er in der Lage ist, grundlegende (manchmal extrem grundlegende) Programmierprinzipien anzuwenden, normalerweise if / else-Anweisungen. Wenn Sie lernen, ein guter Programmierer zu sein, ist dies in der Regel eine persönliche und arbeitgeberbezogene Verpflichtung. Warnung: Ich habe sehr intelligente Leute getroffen, die gute Ingenieure waren / sind, die sich nicht aus einer Papiertüte heraus programmieren konnten und ehrlich gesagt die grundlegenden sprachlichen Grundlagen nicht verstehen konnten.

Persönliche Erfahrung

Ich habe die Schule mit einem Ingenieurabschluss und ein wenig Programmiererfahrung abgeschlossen. Ich hatte mit einer sehr kleinen Menge C gearbeitet, ziemlich viel MatLab und etwas VB + Access. Es dauerte ungefähr 3 Monate, bis ich als Programmierer in einem VB.NET-Shop wirklich nützlich war. Es dauerte weitere 9 Monate, bis ich mich voll auskannte. Mit einigem Vertrauen kann ich jedoch sagen, dass meine Fähigkeiten zur Problemlösung 99% derjenigen anderer Programmierer überlegen sind, die ich in meinem Job kennengelernt habe. Meine Arbeitgeber haben mich durchweg als eines ihrer wertvollsten Vermögenswerte angesehen.

Fazit

Es ist ein Risiko- / Gewinn-Vorschlag, aber oftmals zahlt es sich auf lange Sicht aus, jemanden mit reinen Problemlösungsfähigkeiten zu beschäftigen, solange er in der Lage ist, die Programmierkonzepte zu erlernen, und Sie beide bereit sind, die Zeit in die Erweiterung seines Programms zu investieren Wissen. Ich bin jedoch der festen Überzeugung, dass er zumindest ein grundlegendes Verständnis der Grundlagen der Programmierung besitzen muss, bevor Sie ihm einen Job anbieten. Nach meiner Erfahrung können Sie an diesem Punkt noch viel weiter gehen.

Mike Cellini
quelle
Danke für deine Antwort. Es bestätigt die meisten meiner Gedanken. Ich möchte nur hinzufügen, dass ich viele Informatiker getroffen habe, die jahrelang als Entwickler und Architekten gearbeitet haben und die IMO auch nicht in der Lage sind, guten Code zu schreiben. Sogar einige von denen, die technische Artikel über Programmierung schreiben. Fazit: Um ein guter Programmierer zu sein, muss man immer viele Bücher lesen, verschiedene Sprachen lernen und so weiter ... egal welchen Abschluss man besitzt.
Silas
1

Ich würde mit einigen grundlegenden Algorithmusfragen und -grundlagen beginnen, um zu sehen, ob er mit der Logik von Algorithmen und Programmierung vertraut ist. Wenn er in der Lage ist zu verstehen, was ein Algorithmus ist, kann er schließlich die Fähigkeiten entwickeln, die erforderlich sind, um danach konkrete Dinge zu tun.

LostMohican
quelle
1

Wie kann ich prüfen, ob er die Programmierkenntnisse besitzt, die er für die Implementierung von Software in unseren Projekten benötigt, da dies ein wichtiger Teil der Arbeit sein wird?

Ehrlich gesagt, ich bin mir ziemlich sicher, dass Sie diese Informationen nicht aus einem ein- oder zweistündigen Interview erhalten werden. Geben Sie ihm einen Programmierauftrag in C # (nicht zu technisch) und ein oder zwei Wochen, um ihn zu lösen. Das sollte genug Zeit sein, um die Grundlagen der Sprache für jemanden zu erlernen, der bereits Programmieren mit Mathematica gelernt hat. Machen Sie dann eine Codeüberprüfung mit ihm und entscheiden Sie sich für diese Basis.

Doc Brown
quelle
1

Sie könnten sich Praktiken für das Programmieren in einem wissenschaftlichen Umfeld ansehen ? (auf Stack Overflow), um sich ein Bild von der Programmierkultur der Naturwissenschaften zu machen. Auf diese Weise sind Sie in der Lage, seine Vorbereitung mit der seiner Kollegen zu vergleichen.

In diesem Fall können Sie ihn bitten, die Programmierpraktiken zu beschreiben, die er gewohnt ist, um zu erfahren, ob er weiß, dass es andere Möglichkeiten gibt, dies zu tun .

Es gibt viele "gute Programmierer" in meinem Unternehmen, deren Qualifikation in der Lage ist, genügend Status im Kopf zu behalten, um einen Arbeitscode zusammenzufügen, deren Arbeit jedoch eher unstrukturiert und schwierig zu warten ist. Im Allgemeinen können sie unterrichtet werden, aber ... sie müssen unterrichtet werden.

dmckee
quelle
0

Eine andere Abteilung, in der ich arbeite, verwendet eine Variation unseres Standardtests. Die erste Aufgabe besteht darin, die Wörter in einer Zeichenfolge umzukehren. Verwenden Sie dann diesen Code, um die Reihenfolge der Wörter in der Zeichenfolge umzukehren, die noch vorhanden sind. Anstatt eine Programmiersprache zu verwenden, lassen sie die Algorithmen von den Kandidaten auf Papier entwerfen und mit einem Scrabble-Board ausführen.

Peter Westlake
quelle
0

Ich würde darum bitten, einen Algorithmus zur Berechnung von etwas aus der Physik (in natürlicher Sprache) zu beschreiben. Etwas etwas komplizierter als eine einfache Formel und dann würde ich fragen, wie er seine Berechnung in Objekte eingekapselt sehen würde (keine OOP-Kenntnisse erforderlich, Sie könnten erklären, was Sie von einem Objekt erwarten). Auf diese Weise können Sie sein logisches Denken sehen. Dies ist wichtiger als alle Programmierkenntnisse.

alinoz
quelle
0

Erstens sind sie wahrscheinlich ziemlich schlau, sodass sie im schlimmsten Fall lernen können, ein guter Programmierer mit Anleitung zu sein. Wenn Sie sie jedoch benötigen, um von Anfang an ein anständiger Programmierer zu sein, lassen Sie sie einen von ihnen geschriebenen Beispielcode einschicken.

Handelt es sich um eine oder zwei riesige Mehrzweckfunktionen, oder haben sie die Funktionalität auf den entsprechenden Abstraktionsebenen zusammengefasst? Sind magische Zahlen durchgehend fest codiert? Ist der Code TROCKEN? Haben sie Variablen sinnvolle Namen gegeben oder ist alles eine nicht entzifferbare Abkürzung oder eine Variable mit einem Buchstaben? Kannst du meistens der Logik ihres Codes folgen? Verstehen sie die OO-Grundlagen?

Fragen Sie, was sie für die Versionskontrolle verwenden (git / hg / svn / cvs / bzr usw.). Haben sie jemals Code profiliert oder einen Debugger verwendet, und wenn ja, welche oder wie lautet ihre generische Debugstrategie?

Wenn sie diesen Test nicht bestehen und Sie von Anfang an einen guten Codierer benötigen, überspringen Sie diese Person. Stellen Sie sie ansonsten ein und schlagen Sie vor, dass sie zusätzlich zu allgemeinen Programmier- / CS-Büchern einige Software-Entwicklungsbücher (z. B. Code Complete) lesen.

(Ich bin natürlich auch Physiker und Programmierer.)

Dr. Jimbob
quelle
-3

Da er noch an einer Universität ist oder erst kürzlich seinen Abschluss gemacht hat, ist er an das Studium gewöhnt. Lassen Sie ihn das Design Patterns-Buch lesen und verstehen und diskutieren Sie nach (oder während) eines Monats gründlich mit ihm über die Themen. (Ich denke das.) Dies kann Ihnen viel über seine Fähigkeiten erzählen (nicht nur die (auch die), sondern auch darüber, wie er mit dem Erfassen neuer Konzepte, dem Verstehen ihrer Verwendung, dem Sehen von Vor- und Nachteilen usw. umgeht. Aber es kostet dich einen Monat Zeit.

herby
quelle
8
-1 Die Frage war, wie man ihn interviewt und nicht, wie man ihn dazu bringt, die Position nicht mehr zu wollen.
Peter Taylor