Bei einem Interview nach einem Codebeispiel des Unternehmens fragen [geschlossen]


69

Die Aufforderung eines Arbeitssuchenden, einen Code vorzuzeigen, ist für ein Softwareunternehmen eine weit verbreitete Praxis. Wäre es jedoch akzeptabel, wenn der Kandidat den Interviewer auffordert, ihm einen kleinen Code zu zeigen, der seiner Meinung nach gut geschrieben ist?


14
Ich würde eher nach Codierungsstandards,
Codeüberprüfungen

5
Hat das Unternehmen den "Joel-Test" bestanden: joelonsoftware.com/articles/fog0000000043.html
Martin York

2
@LokiAstari Der Joel-Test betrifft nicht direkt die Codierungskultur (nur die Arbeitsumgebung).
Simon Bergot

8
@ user16764 Das ist, als würde man dem Kandidaten theoretische Fragen stellen: Es ist ein guter erster Schritt, aber es zeigt Ihnen nicht wirklich, wie er dieses Wissen anwendet.
Simon Bergot

Antworten:


69

Ich frage aus verschiedenen Gründen immer nach Code:

  • Ich möchte wissen, worauf ich mich einlasse. Natürlich ist keine Softwarefirma perfekt, und ich erwarte nicht, dass jeder immer wieder Wunder der Eleganz vollbringt (weil ich es auch nicht tue), aber wenn ich nach dem besten Code eines Unternehmens frage und alles, was sie mir zeigen können, ist a Ich weiß, dass ich in einer miserablen Zeit bin, in der ich Haarballen auspacke und gegen die technischen Schulden kämpfe, um etwas zu erledigen. Wenn man sich den besten Code ansieht, den ein Unternehmen zeigen kann, wird eine Obergrenze dafür festgelegt, welche Art von Qualität dort möglich ist. auch wenn es unwahrscheinlich ist , dass alle ihren Code so aussieht, wissen Sie es noch etwas , das sie anstreben ist.
  • Ein Blick auf Codebeispiele sagt mir viel über die Codierungskultur eines Unternehmens. Verwenden sie Dokumentationskommentare? Neigen sie zu einem objektorientierten Stil, haben sie Tendenzen zur funktionalen Programmierung? Sind sie konservativ oder progressiv? Schätzen sie eine einheitliche Benennung, eine korrekte Formatierung und Einrückung sowie einen ordentlichen Code im Allgemeinen? Ist der Code leicht zu befolgen? Wie strukturieren sie ihre Projekte? Wie gehen sie mit den wichtigen Dingen um - automatisiertes Testen, Fehlerbehandlung usw.? Wie defensiv ist ihr Codierungsstil?
  • Anhand des vorhandenen Codes können Sie beurteilen, ob Sie den Standards entsprechen .
  • Die Tatsache, dass ein Unternehmen bereit ist, Codebeispiele allein zu teilen, ist im Prinzip ein gutes Zeichen. Das bedeutet, dass sie mir, dem Antragsteller, Vertrauen schenken , da ihre Codebasis eines ihrer wertvollsten Vermögenswerte ist. Es bedeutet auch, dass sie sich ihres Codes nicht schämen, dass sie zuversichtlich sind, dass es mir helfen wird, mit ihnen zusammenzuarbeiten, wenn sie mir den Code zeigen.
  • Wenn sie Ihnen keine Codebeispiele zeigen, muss das keine rote Fahne sein, aber es ist ratsam, beide zu fragen, warum sie nicht teilen (wahrscheinlich können sie es aus rechtlichen Gründen einfach nicht). sowie erklären, warum Sie einige sehen möchten. Ich denke nicht, dass Interesse an ihrem Code als negatives Zeichen gesehen wird, solange Sie höflich und positiv fragen.

Und dann gibt es noch einige Nebenwirkungen:

Unternehmen, die sich bereit erklären, Ihnen Code zu zeigen, werden mir aus naheliegenden Gründen wahrscheinlich nicht nur ein Tarball mit Quelldateien senden, die die neueste Version ihrer gesamten Codebasis enthalten. Wenn sie mir Code zeigen, werden sie dies in Form einer kleinen Demonstration tun. Das ist großartig. Das bedeutet, dass ich mit einem meiner potenziellen Kollegen sprechen kann. Dadurch kann ich mehr Fragen zu ihrer Codierungskultur und ihren Prozessen stellen. und Codebasis, und im Idealfall hilft es, eine professionelle Diskussion zu beginnen, in der ich sowohl Fähigkeiten als auch Wissen demonstrieren und mehr über das Arbeitsumfeld erfahren kann. Das bedeutet auch, dass ich mir die Tools anschaue, die sie verwenden, was auch sehr aufschlussreich ist. Wenn sich das Projekt, das sie mir zeigen, beispielsweise stark auf eine bestimmte IDE stützt, bedeutet dies, dass jeder das nutzt, was gut oder schlecht sein kann. Und schlussendlich,


1
Wenn der potenzielle Arbeitgeber Ihnen einen eindeutig schlechten Code vorstellt, sollten Sie sich daran erinnern, dass dies eine Gelegenheit sein könnte, ihn zur Verbesserung seines Codes und seiner Prozesse zu führen. Wie das alte Sprichwort sagt "Ich kann nur perfekt versauen, aber ich kann kaputt reparieren!". Denken Sie auch daran, dass Code, der einem Kandidaten oder von einem Kandidaten gezeigt wurde, wahrscheinlich viel strenger und genauer überprüft wurde als anderer Code.
Akton

@akton Es ist meine Einstellung zu schlechtem Code. Es ist jedoch nutzlos, wenn Sie allein in Ihrer Suche nach "Fixing Messy Code" sind. Wenn Sie nach einem guten Code fragen, könnte sich herausstellen, ob Ihr zukünftiges Team SOLID
Simon Bergot

1
"Ich frage immer nach einem Code" Wie wird Ihnen dann tatsächlich Code angezeigt ? Bitten Sie sie, vorher etwas vorzubereiten oder Ihnen danach etwas zu schicken? Egal, wie Sie es betrachten, es scheint unpraktisch.
Burhan Ali

1
@ BurhanAli: Ich frage nur. Viele lehnen es ab, mir irgendwelche zu zeigen, und normalerweise geben sie mir gute Gründe, was in Ordnung ist. Diejenigen, die zustimmen, geben mir eine betreute Tour; Ich bezweifle, dass mir jemand einen kompletten Satz von Quellen zum Durchsuchen zusenden würde, aber das Klicken in einer IDE durch das Projekt, während ich es mir ansehe, ist oft akzeptabel.
tdammers

In vielen Fällen würde ich denken, dass der Code, den ich wirklich sehen möchte, als Wettbewerbsvorteil als geschlossen betrachtet wird. Das wird der Code sein, der mir am wichtigsten ist ... Wenn sie sich jedoch bereit erklären, Ihnen Code zu zeigen, ist das ein verdammtes Zeichen, dass sie keinen guten Code verstehen. Wenn ich ein Lead wäre, würde ich Ihnen wahrscheinlich keinen nicht trivialen internen Code zeigen. Nur ich.
Rig

14

Wäre es jedoch akzeptabel, wenn der Kandidat den Interviewer auffordert, ihm einen kleinen Code zu zeigen, der seiner Meinung nach gut geschrieben ist?

Ich nehme an, das fällt in das gesamte Mantra "Interviews sind bidirektional", aber ich würde nicht erwarten, dass es welche gibt. Probleme mit geistigem Eigentum sind das offensichtlichste Problem, nachdem im Interviewraum kein Computer vorhanden ist und es etwas umständlich ist, Sie zu einem zu bringen.

Außerdem werden sie nur den am besten aussehenden, am wenigsten aussagekräftigen Code auswählen, den sie können. Der beste Code ist nicht wirklich ein Problem, das Schlimmste ist. Aus demselben Grund ist es so gut wie nutzlos, Codebeispiele von Kandidaten zu erhalten.


10
Es ist immer noch nützlich zu sehen, ob sie guten Code auswählen können, um es Ihnen zu zeigen. Der frustrierendste Teil des Umgangs mit schlechtem Code ist oft, dass niemand erkennt, dass er schlecht ist und behoben werden sollte.
JGWeissman

5
Außerdem ist die Vorstellung des Interviewers von gutem Code möglicherweise nicht Ihre Vorstellung von gutem Code. Ich würde es für nützlich halten, das früher als später herauszufinden.
Eric King

1
Leider haben mich die meisten Arbeitgeber verärgert, als ich versucht habe, die Methode "Interviews sind bidirektional" zu verwenden. Mir wurde noch kein Code angezeigt. Die andere Frage, die ich gestellt habe, ist ein Datenmodell, aber es gibt auch kein Glück.
Antonio2011a

12

Wäre es akzeptabel, wenn der Kandidat den Interviewer auffordert, ihm einen kleinen Code zu zeigen, der seiner Meinung nach gut geschrieben ist?

Sie können fragen, was Sie wollen, aber:

  • Sie werden es wahrscheinlich nicht bekommen.

  • Wenn Sie es bekommen, sagt es Ihnen nichts Nützliches. Wenn 10% ihres Codes schön sind und der Rest Spaghetti ist, werden Sie sich immer noch hauptsächlich mit Spaghetti beschäftigen.

  • Du wirst wie eine pfiffige Hose aussehen. Das ist keine große Hilfe, wenn Sie sich letztendlich dazu entschließen, dort zu arbeiten.

  • Es ist eine Verschwendung wertvoller Interviewzeit.

  • Es gibt bessere Möglichkeiten, um herauszufinden, was Sie wissen möchten. Fragen stellen wie:

    • Was sind die wichtigsten Indikatoren für die Codequalität?
    • Behalte ich hauptsächlich vorhandenen Code bei oder schreibe ich neuen Code?
    • Können Sie kurz erklären, wie Ihr System funktioniert?
    • Haben Sie ein Dokument mit Kodierungsstandards, und werden diese von allen befolgt?

Guter Punkt ! Eine traurige Frage wie "Was sind die wichtigsten Indikatoren für die Codequalität?" Kann auch als pfiffige Hose empfunden werden. (Aus meiner Sicht ist dies eine vernünftige Frage, aber viele Arbeitgeber möchten nicht, dass sie von einem potenziellen Untergebenen befragt werden.)
Antonio2011a

2
@ Antonio2011a Sollte in Ordnung sein, wenn Sie richtig fragen - vielleicht "Nach welchen Codequalitätsmetriken suchen Sie hier?" Stellen Sie einfach klar, dass Sie mehr darüber erfahren möchten, wie sie Dinge tun. Sie lernen etwas über sie und führen keinen Test durch. Könnte funktionieren, auch wenn Sie nach Code fragen: "Könnte ich sehen, wie Ihr Code aussieht?" anstatt "Ich möchte ein Beispiel dessen, was Sie für guten Code halten."
Caleb

3

Es hängt davon ab. Ich habe immer gerne gewusst, wo ich arbeiten gehe.

Ich sehe ein Vorstellungsgespräch als bidirektional. Die Firma erfährt von Ihnen und Sie erfahren von der Firma. Nach Code zu fragen mag ein bisschen viel sein, aber entwicklungsbezogene Fragen sollten in Ordnung sein.

Zum Beispiel würde ich einen Job nicht annehmen, bei dem das Unternehmen keine agilen Techniken oder TDD einsetzt oder nicht plant, solche Praktiken anzunehmen und zu fördern. Ich schätze es auch, wenn ein Unternehmen stolz auf sein Produkt und seinen Code ist - wenn der Interviewer anscheinend darauf wartet, dass Sie ihn nachfragen, damit er eine Entschuldigung hat, um all die coolen Dinge zu erklären, die sie tun.


Einverstanden. Ich versuche, in die Werkzeuge einzutauchen, die sie verwenden? Bezahlt das Management zusätzliche Tools (Komponenten, Dienstprogramme), die an vielen Stellen nicht verfügbar sind? Die Einstellung zu Open-Source-Tools ist immer auch gut.
ozz

2

Haha, das ist eine lustige Frage. Ich wäre nicht beleidigt, wenn mich jemand während des Interviews nach einem Codebeispiel fragen würde, aber ich würde ihnen wahrscheinlich auch keinen Code zeigen, es sei denn, sie hätten im Voraus gefragt und ich hätte Zeit, sorgfältig zu planen.

Ich verstehe auf jeden Fall die Absicht, eine solche Frage zu stellen. Als Arbeitssuchender habe ich den Joel-Test schon einmal bei einem Interviewer angefragt. Sie wussten nicht was es war, aber sie waren glücklich zu antworten.

An manchen Orten kann das Stellen dieser Art von Fragen Ihre Chancen verbessern, während es Ihre Chancen an anderer Stelle beeinträchtigt. Das Schöne am Leben ist, dass Sie, wenn es Ihre Chancen verbessert, genau an diesem Ort arbeiten möchten. Wenn es Ihre Chancen verletzt, dann hätten Sie diesen Job sowieso nicht gewollt.

Ich sehe nichts zu verlieren, wenn ich höflich frage und erklären kann, warum Sie es sehen wollen.


"Das Schöne am Leben ist, wenn es Ihre Chancen verbessert, dann ist das der Ort, an dem Sie gerne arbeiten würden." +1
Spidey

2

Ich habe diese Frage in meinen beiden Interviews gestellt, in denen sie behaupteten, ältere Entwickler hätten auf asp.net mvc3 oder 4 migriert, oder als sie sagten, sie wollten stark kommentierten Code. Ich habe in beiden Fällen abgelehnt, weil ich nicht über den aktuellen Codestandard Bescheid wusste. Der einzige Standard, den ich fand, war, wenn es funktioniert, kopieren Sie es und fügen Sie es ein und es wird funktionieren. Ich werde diese Frage nicht stellen, wenn ich ein neues Projekt mache oder Code unabhängig von anderen im Team schreiben muss. Ich werde den Code auf jeden Fall sehen, wenn ich beauftragt werde, eine vorhandene Software oder Funktion zu reparieren, und ich werde nicht Ja sagen, es sei denn, ich kenne die Antwort. Nehmen Sie an, Sie fragen nicht und sie sagen, können Sie bitte den Datumsauswahlknopf reparieren, um vom heutigen Datum an zu beginnen. Wenn Sie sich Legacy-Code ansehen, sehen Sie kein jquery oder jquery ui, sondern eine maßgeschneiderte Datumsauswahl, in der alle Daten in einer XML-Datei gespeichert sind und jede Nacht ein Cron-Job ausgeführt wird, um zukünftige Monate darauf zu aktualisieren. Das würde Kopfschmerzen verursachen, da Code, um dies zu erreichen, weniger ist als die Wörter in diesem Beispiel. Wenn Sie an ihrem Code arbeiten möchten, fragen Sie, ob Sie ihn sehen möchten. Nicht fragen ist wie ein Angebot für einen Job, wenn man glaubt, dass der Kunde es für klein hält. Er könnte 20 Morgen Land besitzen und Gartenarbeit auf seinem 1 Morgen ist für ihn klein, aber Gärtner kann nicht 50 Pfund verlangen, nur weil alle seine kleinen Jobs bei 50 anfangen.


1

Ich arbeite in der Regel für Unternehmen, in denen zumindest ein Teil ihrer Arbeit Open Source ist. Daher ist es trivial, Codebeispiele zu finden. Ich finde heraus, wer in der Firma arbeitet, und finde dann ihre Online-Griffe heraus. Da die Benutzer in der Regel immer wieder denselben Bildschirmnamen verwenden, können Sie leicht feststellen, an welcher Stelle sie Code festgeschrieben haben, ob sie sich auf Github, Bitbucket oder einer anderen Plattform befanden.

Meine aktuelle Firma hat eine Tonne Code auf Github gehostet, daher war es einfach zu sehen, womit sie arbeiten, wie groß ihre Codebasis ist und was anscheinend nicht mehr von Interesse ist.

Ich würde niemals nach einem Muster fragen, nur weil sie Ihnen den besten Code zeigen, den sie haben. Dies ist nicht der Code, mit dem Sie arbeiten werden. Es ist wahrscheinlich in einer Glocke in einem verschlossenen Raum untergebracht. Sie werden mit dem chaotischen Code arbeiten, mit dem viele Leute zu tun hatten.


0

Das ist fantastisch, wenn Sie es bekommen können. Manchmal ist es ohne NDA-Vereinbarungen nicht möglich, aber es ist immer gut, es zu versuchen. Um Ihre Chancen zu erhöhen, lassen Sie Ihre Interviewer rechtzeitig (ein paar Tage) wissen, dass Sie dies wünschen, damit sie sich etwas vorstellen können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.