Warum bitten Interviewer den Bewerber nicht, einen Code zu lesen? [geschlossen]


13

Ich hatte ein Dutzend Interviews in meinem Leben (ich bin kurz vor dem Abschluss) und ich frage mich, warum ich nur einmal gebeten wurde, Code zu lesen und zu erklären. Bei 90% der Jobs geht es hauptsächlich um die Wartung vorhandener Systeme. Die IMO-Fähigkeit, den Code eines anderen zu lesen, ist eine wichtige Fähigkeit.

Warum überprüfen Interviewer das nicht? *

* Unter meinen Freunden bin ich der einzige, der gebeten wurde, einen Code zu überprüfen.


4
Ich wurde einmal gebeten, in einem Interview einen C-Code zu lesen, und ich wies auf zahlreiche schlechte Praktiken im Code hin: hier zugewiesenen und dort freigegebenen Speicher usw. Es war ihr Produktionscode. Ich habe kein Angebot bekommen.
Kevin Cline

1
Abstimmung zum Abschluss, nur weil wir nicht beantworten können, warum andere Menschen etwas getan oder nicht getan haben. Soweit wir wissen, wurde er aus dem Einstellungsprozess ausgeschlossen, bevor sie die Phase des Lesens des Quellcodes erreichten. Wenn dies in "Sollte ein Interviewer ..." geändert wurde, könnte dies eine geeignete Frage sein.
GroßmeisterB

1
Auf dieser Seite erscheinen auch Interviewer von @GrandmasterB. Wenn sie absichtlich keine Fähigkeiten zum Lesen von Code suchen, kann dies durchaus einen guten Grund haben.
Izkata

Bitte vermeiden Sie längere Diskussionen in Kommentaren. Wenn Sie die Vorzüge dieser Frage weiter diskutieren möchten, öffnen Sie bitte eine Frage zu Meta, zu der eine solche Diskussion gehört. Vielen Dank.
maple_shaft

Ich möchte hinzufügen, dass ich gebeten wurde, zuvor Code zu lesen und auf schlechte Praktiken und Fehler hinzuweisen.
Andy

Antworten:


10

Wenn ich Interviewfragen stellte, tat ich zuerst, aber stufte es langsam aus. Die Bewerber, die im Vorstellungsgespräch gut Code schreiben konnten, konnten alle im Vorstellungsgespräch gut Code lesen. Die Bewerber, die den Code nicht lesen konnten, konnten ihn auch nicht schreiben. Die Fragen zum Lesen von Code unterschieden keine Bewerber wirklich.


4

Kurze Version

Wenn der Job darin besteht, eine Bewerbung zu pflegen, müssen Sie folgende Fähigkeiten während eines Interviews testen:

  • Die Fähigkeit, die große Codebasis mit ihren Dokumentationen, Unit-Tests usw. zu verstehen .

  • Die Fähigkeit, den Code umzugestalten und Änderungen vorzunehmen, ohne alles zu beschädigen.

Wenn Sie Leute bitten, Code zu lesen, können Sie diese Fähigkeiten nicht beurteilen.

Lange Version

Wurden Sie gebeten, Code zu schreiben? Wenn ja, wie Sign in seiner Antwort angemerkt hat , ist dies ausreichend. Wenn wir ein bisschen verallgemeinern, eine Person, die klaren, leicht verständlichen Quellcode schreibt, könnte den von anderen Personen geschriebenen Quellcode lesen.

Wenn Sie nicht aufgefordert wurden, Code zu schreiben, wurden Sie wahrscheinlich von einer Person aus der Personalabteilung interviewt. Solche Interviews können nicht zu technisch sein und sind meistens wertlos, da sie nicht Ihre Fähigkeiten und Ihre Fähigkeit, gut zu arbeiten, beeinträchtigen, sondern die Anzahl der Jahre, die Sie am College verbracht haben, und andere Dinge, die nichts mit dem Job zu tun haben.

Es gibt noch ein paar weitere Gründe, warum Sie nicht aufgefordert werden, Code für einen Wartungsjob zu lesen:

1. Es ist schwierig, zuverlässig zu tun

Was würden Sie konkret tun, wenn Sie ein Interviewer wären? Lassen Sie Ihre Kandidaten einen Code lesen. Welcher Code? In welcher Sprache? Wie gut oder schlecht geschrieben? Mit oder ohne Kommentar? Mit oder ohne Dokumentation?

Was sagt es über den Kandidaten aus? Wie gut korreliert es mit der Codebasis selbst?

Angenommen, Sie müssen eine ältere VB.NET-App warten. Sie wissen, dass der Quellcode meistens hässlich und ungetestet ist und einige Kommentare veraltet oder irreführend sind. In den letzten drei Monaten arbeitete ein sehr geschickter Entwickler an der Lösung. Er überarbeitete und testete die kritischsten Teile der Anwendung, fügte Kommentare hinzu, wenn dies erforderlich war, und schrieb vor allem eine detaillierte Dokumentation über die Gesamtarchitektur, die kritischen Teile und die Fallstricke.

Sie stellen jetzt einen Entwickler ein, der diese Codebasis verwaltet. Würden Sie während eines Interviews einen älteren (hässlich ungetesteten) Code oder den Code, der vom vorherigen Entwickler überarbeitet wurde, angeben?

Würden Sie die Dokumentation geben? Um die Dokumentation zu lesen, muss der Kandidat mindestens einige Stunden verbringen. Dies macht es unmöglich, während eines Interviews zu tun.

2. Das Lesen eines kurzen Codeteils ist nicht dasselbe wie das Lesen des Codes eines vertrauten Projekts

Denken Sie daran, die Aufgabe ist es, ein Projekt zu pflegen. Es ist schwierig, eine große Codebasis in den ersten Tagen oder Wochen beizubehalten, wenn Sie mit dem Projekt nicht vertraut sind. Es ist viel einfacher, dies nach ein paar Monaten zu tun, wenn Sie die gesamte Dokumentation geschrieben haben und einen klaren Überblick über die gesamte Codebasis haben.

Das Wichtigste, was zu testen ist, ist, ob die Person in diesen Monaten effizient sein wird . Es ist dir egal, ob die Person in den ersten zwei Tagen überhaupt nichts verstehen kann.

Wenn Sie eine Person bitten, einen kurzen Code von Grund auf zu lesen, testen Sie nicht, wie diese Person mit einem vertrauten, dokumentierten Codeabse von Tausenden von LOC umgehen kann .

3. Bei der Pflege des Quellcodes wird dieser nicht nur gelesen

Wenn Sie einen Code - Basis pflegen, werden Sie modifizieren sie. Ein Entwickler, der nur Code liest, bringt seinem Unternehmen nichts Nützliches.

Die nützlichen Fähigkeiten sind die Fähigkeit, Refactoring - Code , um Unit - Tests hinzufügen , um die Auswirkungen einer Änderung vorhersagen , etc. Sie nicht testen , diese Fähigkeiten durch eine Person zu fragen Code während des Interviews zu lesen.


2

Lesen ist eine Annahme, die darauf beruht, dass die Fähigkeit zum Schreiben vorhanden ist. Betrachten Sie das Konzept in jeder Sprache. Programmierung ist nur eine Sprache, um zwischen Mensch und Maschine zu kommunizieren. Betrachten Sie eine Mensch zu Mensch Kommunikation. Wenn Sie jemanden als Dolmetscher für Japanisch einstellen, liegt es nicht auf der Hand, dass er einen Aufsatz mit 1.000 Wörtern zu einem bestimmten Thema schreiben könnte, um ihn lesen zu können?

Als Programmierer liegt unsere Hauptaufgabe in der Erstellung von Code und der Umsetzung abstrakter Ideen in konkrete Implementierungen. Dies bedeutet im Allgemeinen Schreiben. Ich stimme zu, dass Lesen genauso wichtig ist, aber in den meisten Fällen, in denen Schreibfähigkeit vorhanden ist, ist auch Lesefähigkeit vorhanden. Der einzige wirkliche Fall, in dem ich einen erkennbaren Unterschied feststellen konnte, wäre ein Umfeld, in dem sich im Laufe der Zeit viele hochkomplexe Fälle entwickelt haben. Selbst wenn man diese voraussetzt, würde man nicht erwarten, dass jemand sie lesen und verstehen kann, ohne zumindest etwas zu lernen.

Auch das Lesen von Code und das Erklären dessen, was Ihrer Meinung nach der Code bewirkt, drückt einem Interviewer nicht wirklich aus, wie Sie Ihre Fähigkeiten zum kritischen Denken einsetzen. Es zeigt ein bisschen Analyse, aber die meisten Arbeitgeber wollen sehen, ob Sie denken können, ohne in eine Kiste gesteckt zu werden. Sie möchten wissen, ob Sie die Konzepte verstehen können, ohne den Vorteil (oder sogar die Krücke) des vorhandenen Codes zu nutzen, um Ihnen mitzuteilen, was oder wie Sie etwas tun sollen.


Lesen Sie es, ja, verstehen Sie es? ... nicht unbedingt.
Jmoreno

1
@jmoreno: Vielleicht nicht, aber wenn man einen Kandidaten bittet, etwas Ähnliches zu schreiben, kann man viel mehr Wissen erlangen, als man beobachten kann, wie er etwas Komplexes liest.
Joel Etherton

Ich stimme dir nicht zu. Wenn Sie über die trivialen Implementierungen hinausgehen, ist das Lesen von Code viel schwieriger als das Schreiben von Code, und es gibt eine große Anzahl von Entwicklern, die Code schreiben können, aber vorhandenen Code nicht lesen können, hauptsächlich, weil Code im Imperativ steht. Um die Fremdsprachenmetapher zu verwenden, sind Entwickler meist reiche Touristen, die genug verstanden werden müssen, um das zu bekommen, was sie wollen, aber nicht das Bedürfnis haben, zu verstehen, was um sie herum gesagt wird.
Dan Monego

1
@ DanMonego: Ich verstehe Ihren Standpunkt, und es ist nicht so, dass ich überhaupt nicht einverstanden bin, aber die Frage ist, warum die meisten Interviews kein Lesen beinhalten und nicht, welchen Wert das Lesen hat. Die meisten Interviews beinhalten nicht mehr als triviale Implementierungen, egal ob sie gelesen oder korrigiert werden, aufgrund der Natur der Zeit.
Joel Etherton

1

Früher dachte ich, dass das Lesen von Code in Interviews demonstriert werden sollte, aber mit der Zeit wurde mir klar, dass dies sowohl für den Interviewer als auch für den Interviewten Zeitverschwendung ist. Warum? Denn auch schlechte Codierer können einen Code-Snip-it lesen.

Die Fähigkeit, die Fähigkeit einer Person zum Lesen von Code zu beurteilen, ist nur dann relevant, wenn Sie sich einen komplexen Code ansehen, der viele Klassen und Dateien umfasst. Es ist wünschenswert, Code nachvollziehen zu können, um herauszufinden, was er tut, aber es bleibt nicht genug Zeit, um ein gutes Beispiel zu finden (kein Produktionscode), und es bleibt auch keine Zeit, in einem Interview eine solche Frage zu stellen .

Schlechte Codierer können also Code lesen, aber sie können Code nicht gut schreiben. Die Frage, ob Beispiele eines Kandidaten funktionieren oder ob ein Kandidat im Interview Code schreiben soll, ist ein weitaus besserer Indikator für seine Fähigkeiten. Wenn sie sauberen, präzisen Code schreiben können, ist die Wahrscheinlichkeit groß, dass sie Code gut lesen können.

Ich frage jeden Kandidaten, den ich interviewe, nach einer Variante des FizzBuzz- Problems. Es ist schnell, einfach und kann schlechte Codierer normalerweise viel schneller erkennen als alles andere, was ich gefunden habe. Ein guter Programmierer wird es sehr schnell und einfach bekommen und es wird Ihnen einen schnellen Einblick in ihren Codierungsstil und ihren Denkprozess geben.

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.