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.
interview
code-reviews
Lukasz Madon
quelle
quelle
Antworten:
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.
quelle
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.
quelle
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.
quelle
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.
quelle