Wie kann die Codequalität bewertet werden, wenn Sie mit der Sprache nicht vertraut sind? [geschlossen]

10

Wenn ich hypothetisch jemanden für eine neue PHP-Entwicklerposition interviewen würde, wenn ich Erfahrung mit .NET habe, wie kann ich dann feststellen, ob das von ihnen bereitgestellte Codebeispiel effizient und von guter Qualität ist?

Mit anderen Worten, wie lässt sich der Code eines Programmierers am besten bewerten, wenn Sie mit der Sprache nicht vertraut sind?

Jason Towne
quelle
1
Ich hasse es, es dir zu brechen, aber du tust es nicht :-) Nimm jemanden in das Interview auf, der die Sprache kennt oder lerne sie selbst.
Joppe
2
Aus diesem Grund ist das Interviewen eine Teamleistung. Sie bewerten das, was Sie bewerten können, und leiten diese Art von Dingen an einige technische Teamleiter weiter, die damit vertraut sind.
Kaz
Für mich ist die beste Metrik die Größe der Funktionen (einschließlich der hier verschachtelten Tiefe), gefolgt von der Größe der Klassen / Dateien.
m3th0dman

Antworten:

20

Wie kann ich feststellen, ob das von ihnen bereitgestellte Codebeispiel effizient und von guter Qualität ist?

Die Dinge, die Sie nicht bewerten können, sind die korrekte Verwendung von Sprachsprachen und die Verwendung von Bibliotheken. Das sind also keine Dinge, die Sie sich ansehen sollten.

Was Sie bewerten können, ist:

  • Wie gut der Code strukturiert aussieht
  • Gut benannte Variablen (können Sie die Dinge verstehen)
  • Gut zusammengesetzte Funktionen / Codeeinheiten
  • Konsistenz in der Codebasis

Die obigen Punkte (obwohl nicht erschöpfend) geben an, ob der Code riecht oder nicht und sollten etwas sein, das ein erfahrener Programmierer als gut oder schlecht identifizieren kann.

Kurz gesagt - suchen Sie nach Dingen, die unabhängig von der Sprache auf guten Code hinweisen sollten.

Oded
quelle
5
Ein weiterer wichtiger Punkt: "Sind die Kommentare klar, aussagekräftig und leicht zu verstehen?" Könnten Sie aus den Kommentaren ein wenig darüber lernen, was ein Code bewirkt, auch wenn Sie wenig mit der Sprache vertraut sind?
FrustratedWithFormsDesigner
2
@FrustratedWithFormsDesigner - Kommentare? Was sind diese? Im Ernst, Code sollte sich selbst kommentieren. Kommentare sollten nur da sein, um das Warum zu erklären oder Gründe für schlechten Code anzugeben.
Oded
6
Ich fordere äußerste Vorsicht: Es ist sehr einfach, sich auf der Grundlage dessen zu entscheiden, wer den Code schreibt, an den Sie am meisten gewöhnt sind, was möglicherweise eine relativ schlechte Verwendung dieser Sprache ist.
Jerry Coffin
@FrustratedWithFormsDesigner Oded meint wahrscheinlich, Sie sollten diesen elegantcode.com/2010/04/18/…
Joel
4

Lassen Sie sie ein Flussdiagramm erstellen oder führen Sie es im Rahmen des Interviews durch. Sie haben die perfekte Ausrede, um zu fragen, und sie sagt einiges darüber aus, wie sie denken, um zu sehen, wie sie erklären.

Wenn sie zu Ihrer bevorzugten Sprache springen, wissen Sie, dass Sie viel Mentoring haben, also sollten Sie vor allem nach guten Logik- / Argumentationsfähigkeiten suchen.

Wenn sie weiterhin in ihrer bevorzugten Sprache arbeiten wollen, müssen Sie akzeptieren, dass sie mich in Bezug auf die feineren sprachspezifischen Details etwas selbst verwalten, bis jemand anderes auf den neuesten Stand kommt, sodass Sie nur noch interagieren müssen mit ist auch die Design-Seite da.

Rechnung
quelle
1
Wenn der Kandidat seinen Code so erklären kann, dass die Absicht und der Zweck dahinter klar sind und die Organisation und die allgemeine Struktur visuell vernünftig aussehen, hat er wahrscheinlich ein vernünftiges Verständnis dafür, was der Code darstellt. Und könnte wahrscheinlich eine ähnlich saubere Reproduktion wiederholen. Selbst wenn bestimmte Teile mit so wenig wie "weil ein bestimmtes Referenzmaterial gezeigt hat, wie es geht" erklärt werden, haben Sie bei der Benennung des Referenzmaterials zumindest eine bescheidene Darstellung der Fähigkeit, nicht nur "zu codieren", sondern auch zu finden und Lösungen für Probleme anwenden, mit denen sie nicht routinemäßig konfrontiert sind.
JustinC
1

Abgesehen von knochenköpfigem / offensichtlich falschem Code hängt die Effizienz weitgehend vom Compiler / Interpreter der betreffenden Sprache ab, und Sie können dies anhand eines Codebeispiels nicht wirklich erkennen. Ein Codebeispiel könnte schön geschrieben und elegant sein wie feines Porzellan auf Deckchen, aber langsam laufen, wenn es schlecht kompiliert / interpretiert wird.

Sie werden die idiomatische Verwendung der Sprachfunktionen / syntaktischen Zucker / Konventionen nicht ohne Vertrautheit bewerten können.

Sie sollten in der Lage sein, anhand allgemeiner Überlegungen wie Ordnung, Kontrollfluss, Benennung von Variablen, Reihenfolge der Operationen usw. zu erkennen, ob es im Allgemeinen gut geschrieben ist.

Wenn Sie jedoch wissen, welche Sprache in den Prozess einfließen wird, können Sie in der Praxis versuchen, einen oder mehrere Styleguides für diese Sprache zu finden, in den Buchladen zu gehen und ein paar Bücher für diese Sprache durchzublättern Überfliegen Sie die Codebeispiele und suchen Sie nach Analoga zu etwas, das Sie in der Sprache Ihrer Wahl kennen. Schauen Sie sich ein oder mehrere Open-Source-Projekte an, die diese Sprache verwenden, und so weiter.

Wenn Sie Zeit haben und es keine Kostenbarriere gibt, können Sie sogar eine Entwicklungsumgebung für diese Sprache einrichten und eine Hello World-App erstellen, eine Code-Kata erstellen oder auf andere Weise eine einfache kleine App schreiben drin. Sie werden ziemlich schnell einen rudimentären Bezugsrahmen entwickeln, der Ihnen nicht nur die Möglichkeit gibt, den betreffenden Code zu überprüfen, sondern Sie werden möglicherweise von der Sprache gezwungen und verzweigen sich ein wenig.

Ed Hastings
quelle
1

Unabhängig von der Sprache:

  • Gibt es klare Trennung von Bedenken, angemessene Verwendung von Klassen (für OO-Sprachen) oder Hinweise auf absichtliche Versuche, den Code in wiederverwendbare, modulare "Blöcke" zu zerlegen?
  • Ebenso irgendwelche Beweise für Tests - Unit-Tests oder auf andere Weise?
  • Wenn es sich um Produktionscode handelt, ist er mit Debug-Zeichenfolgen übersät, die möglicherweise auf eine geringe Trennung zwischen Entwicklung und Bereitstellung hindeuten?
  • Entspricht der Code einer Namenskonvention (ob Sie diese Konvention mögen oder nicht, ist unerheblich!)?
  • Wenn Sie die Datei anstelle eines Ausdrucks haben, bezieht sich jede Funktion / Klasse in der Datei auf die (wenn es sich also um eine Datei mit dem Namen data_access_layer handelt , ist der Nachweis von Funktionen, die Bilder verarbeiten, wahrscheinlich fehl am Platz).
  • Hinweise auf mangelndes Vertrauen in Benutzereingaben sind ebenfalls gut, insbesondere für webbasierte Sprachen wie PHP. Strukturen wie input = Escape (Eingabe) zeigen Ihnen also zumindest, dass sie sich des Problems bewusst sind.
  • Kommentare oder selbstbeschreibender Code sind immer gut. Es gibt mehrere Denkrichtungen bezüglich der Menge an Kommentaren, die vorhanden sein sollten, aber es fehlen vollständig Kommentare
  • Auf Kosten der Zynik würde ich vor dem Interview auch einen Teil des Codes googeln. Es könnte leider leicht ein Kopier- und Einfügejob sein.

Nicht zu sagen, dass jeder Code, der nicht alle diese enthält, automatisch schlecht ist, aber ich würde dies als Indikatoren für jemanden betrachten, der über seine Praxis nachgedacht und sie in Betracht gezogen hat.

Bei all diesen Indikatoren sollten Sie sich jedoch fragen, aus welchen Gründen der Code so aussieht. Es kann einen guten, sprachspezifischen Grund für ihre Wahl geben ... und danach ist Google Ihr Freund, wenn sie und die anderen Kandidaten weggehen, da Sie überprüfen können, ob das, was sie gesagt haben, plausibel klingt ...!

Viel Glück, denn die Einstellung guter Leute ist eine der wichtigsten Rollen in Ihrer Organisation;)

Frackham
quelle
Im Nachhinein dupliziert dies viel von dem, was @Oded (und die Kommentare) gesagt haben.
Frackham
0

Sie sollten jemanden, der die betreffende Sprache kennt, bitten, zum Interview zu kommen oder sich das Beispiel anzusehen. Solch eine Person wird viel wahrscheinlicher die schlechten Stellen finden, wenn überhaupt.

Wird der Kandidat in einem Team arbeiten? Lassen Sie sich von den Teammitgliedern treffen und Fragen zu seinen Fähigkeiten stellen.

Marcel
quelle
-2

Fragen Sie sie nach den Einschränkungen, auf die sie bei der Verwendung der Sprache gestoßen sind. Bitten Sie sie, Ihnen eine einfache SQL-Abfrage zu zeigen. Jeder PHP-Entwickler, der einen Schrei wert ist, sollte in der Lage sein, eine grundlegende Abfrage zum Auswählen / Aktualisieren / Löschen ohne allzu großen Aufwand auszuführen.

Doug

SnoopDougieDoug
quelle