it-swarm-eu.dev

Wie soll mein "Codebeispiel" aussehen?

Ich hatte gerade ein ziemlich gutes Telefoninterview (für eine CakePHP-bezogene Position, nicht dass es für die Frage besonders wichtig ist). Der Interviewer schien von meinem Lebenslauf und meiner Persönlichkeit beeindruckt zu sein. Am Ende bat er mich jedoch, ihm ein Codebeispiel aus meinem bestehenden Arbeitsprojekt per E-Mail zu schicken, "um zu überprüfen, ob Sie nicht heimlich ein schrecklicher Programmierer sind, ha ha!"

Ich bin nicht auch besorgt, dass mein Code nicht auf eigenen Beinen stehen kann, aber ich bin eher ein fortgeschrittener Programmierer als ein Experte . Welche offensichtlichen Fallstricke sollte ich sicherstellen, dass mein Codebeispiel nicht hineinfällt, falls sie mich sofort ausschließen? Zweitens, und dies ist wahrscheinlich der schwierigere Teil der zu beantwortenden Frage, welche Funktionen in einem Codebeispiel wären so beeindruckend, dass Sie sofort viel günstiger gegenüber dem Programmierer sind?

Alle Ideen oder Vorschläge sind willkommen!

24
thesunneversets

Ich würde gerne sehen Code bereinigen :

Code bereinigen : Software-Code, der korrekt und organisiert formatiert ist, damit ein anderer Codierer ihn leicht lesen oder ändern kann.

Das bedeutet:

  • Funktionalität - Einige einfache Funktionen, die nicht trivial sind (eine Reihe von Gettern/Setzern würde nicht zeigen, dass Sie etwas wissen)
  • Konsistenter, sauberer Stil - Beliebt oder zumindest häufig Gehäuse-, Einrückungs-, Abstands- und Klammerstile
  • Gute Benennung - Qualitätsnamen - Verwenden Sie i nur, wenn dies der einzige Inkrementwert ist. Verwenden Sie keine unsinnigen Variablennamen.
  • Andere Attribute von Code bereinigen - Gute Praktiken zur Fehlerprüfung, Bedingungen, Schleifen, Convenience-Methoden oder Dienstprogrammmethoden und gut Trennung von -concerns (zwischen Methoden). Und dies ist ein guter Zeitpunkt, um 100% zu sein TROCKEN - keine Wiederholung!

Sie möchten ihnen etwas senden, das komplex genug ist, um interessant zu sein, aber sauber genug, dass ein guter Entwickler fast sofort verstehen kann, was es tut.

Einige der obigen Kommentare scheinen sich damit zu befassen, wie leicht dies gefälscht werden kann. * Wenn Sie sich davor schützen möchten, senden Sie möglicherweise eine kurze Beschreibung des Zwecks und des Verlaufs des Codes in der E-Mail.


* Zumindest, wenn der Interviewer im Vorfeld nach früheren Projekten gefragt hat, hat dann Sie nach einem Beispiel aus diesem Projekt gefragt und gefragt, was Sie zum Schreiben benötigen oder wie es sich entwickelt hat Prozess wäre ziemlich lügnersicher. Ich denke, die meisten Kandidaten, die würden lügen, werden sowieso Probleme in anderen Bereichen zeigen.

17
Nicole

Als ich nach Arbeit suchte, löste ich eine Reihe von Fragen zu ACM-Programmierwettbewerben in verschiedenen Sprachen und verwendete diese seitdem für Codebeispiele. Ich denke, sie haben gute Codebeispiele gemacht, weil:

  • Sie lösten herausfordernde Probleme
  • Das Problem erforderte nicht viel Kontext und es war einfach, die Fragen zu bekommen
  • Mit dem geschriebenen Code ist kein IP-Risiko verbunden.
  • Jedes Problem kann vernünftigerweise in einer einzigen Datei vorhanden sein und ist oft nicht sehr lang. Daher sollte es für jeden einfach sein, Ihre Lösung zu kompilieren und zu testen und die Testdaten aus den Fragen zu verwenden.
  • Zeigt, dass Sie ein komplexes Problem in kleinere Teile zerlegen können.
  • Wenn Sie gefragt werden, wie Aspekte Ihrer Lösung funktionieren, haben Sie die großartige Gelegenheit zu demonstrieren, dass Sie wissen, wovon Sie sprechen, insbesondere wenn es viele Jahre alt ist, Sie aber schnell entschlüsseln können, was gerade passiert.

Und dann sollte der von Ihnen erstellte Code klar, konsistent, leicht zu lesen und leicht zu verstehen sein.

Und zuletzt:

  • Es lohnt sich, sie nur zum Spaß zu lösen, und es ist eine gute Übung.
9
whatsisname
  • Es sollte fehler- und warnungsfrei auf höchster Strenge kompiliert/interpretiert werden.
  • Es sollte kein Boilerplate-Code sein, den Sie jeden Tag schreiben. Machen Sie es einzigartig und interessant, damit Sie es offensichtlich nicht kopieren/einfügen.
  • Es sollte einige interessante Designentscheidungen mit Kommentaren enthalten, die erklären, wie/warum Sie sie getroffen haben.
  • Streben Sie nicht mehr als 2-3 ausgedruckte Seiten an.
  • Es sollte in der Sprache sein, für die Sie sich bewerben.
  • Es sollte mein Gehirn nicht verletzen, wenn ich es das erste Mal lese. Lassen Sie es sich von einem Freund ansehen oder auf codereview posten.
6
Karl Bielefeldt

Wenn ich Sie interviewen würde, würde ich gerne Ihren Code sehen.

Sauber ist gut, Problemlösung ist gut, aber wahrer Code ist besser. Ein guter Programmierer weiß, wann er/sie von einem anderen Programmierer betrogen wurde, sodass das Vertrauen sinken kann.

Das Lesen eines anderen Personencodes ist wie tanzen Sex haben: Sie wissen, wann es die Realität ist und wenn die andere Person es vortäuscht, wird am Ende eine Katastrophe eintreten. (habe gerade festgestellt, dass echte Nerds nicht tanzen können)

Vertraue einfach dir selbst und deinen Codierungsfähigkeiten. Wenn Sie Ihren Interviewer nicht wirklich kennen, können Sie nicht vorhersehen, was er von Ihrem Codierungsstil/Ihren Codierungsfähigkeiten erwartet.

3
Machado

Seien Sie auch sehr vorsichtig, dass es sich NICHT um Code von Ihrem aktuellen Arbeitgeber handelt (sie besitzen ihn, den Sie nicht besitzen, und ich garantiere ihnen, dass sie es nicht mögen, wenn Sie ihn teilen.). Nehmen Sie etwas, auf das Sie stolz sind, und überarbeiten Sie es selbst, um nicht arbeitgeberspezifisch zu sein (entfernen Sie alle Verweise auf deren Datenbanktabellen oder Servernamen usw.). Was auch immer Sie tun, senden Sie keinen Code, der Fehler enthält oder eine schlechte Technik für die Art des Codes ist (ich würde wahrscheinlich jemanden ablehnen, der einen Cursor gesendet hat, wenn eine satzbasierte Operation einfacher und leistungsfähiger wäre, wenn Sie SQL-Code überprüfen. Es gibt ähnliche Techniken für andere Sprachen, mit denen ein relativ seltenes Problem gelöst werden kann, das für andere häufigere Probleme verwendet werden kann, für diese anderen Probleme jedoch nicht die beste Wahl ist. Hat dieser Satz Sinn ergeben?)

2
HLGEM

Als eine Meinung von jemandem, der Codebeispiele bei der Bewertung von Kandidaten anfordert, gibt es einige Funktionen auf hoher Ebene (Inhalt des Codes) und einige Funktionen auf niedriger Ebene (Struktur des Codes). High-Level-Funktionen:

  1. Identität: Der Geschmack des Codes. Wenn Sie sich als UI/HCI-Codierer abrechnen, möchte ich beim Ausführen ein gutes Erscheinungsbild für etwas Visuelles sehen. Wenn Sie ein DB-Builder sind, möchte ich etwas Interessantes mit der Darstellung oder Analyse von Daten sehen. Das Beispiel sollte etwas sein, auf das Sie stolz sind. Wenn Sie nicht mindestens eine davon haben, haben Sie keine Identität.
  2. Reife: Verschieben Sie Strategien für verschiedene Probleme? Lösen Sie interessante Probleme? Wäre es einfach, den Code oder Ansatz auf ein ähnliches Problem auszudehnen? Habe ich im Gegenteil das Gefühl, ein Mitglied einer Frachtkultgemeinde zu sehen?
  3. Kommunikation: Erklärt der Code leicht, was er tut und warum? Dies bedeutet nicht, dass der Code einfach sein muss. In der Tat ist es ein Bonus, komplexen Code leicht verständlich zu machen.

Die Aspekte auf niedriger Ebene sind einfacher:

  1. Style: Der Code sollte sauber, konsistent (gemäß einigen festgelegten Richtlinien) und gut dokumentiert sein.
  2. Verpackung: Es sollten mindestens eine kurze Readme-Datei, eine ausführbare Version und ausführbare Tests vorhanden sein. In der Readme-Datei sollte ich erfahren, wie die beiden letzteren ausgeführt werden und warum Sie dieses spezielle Codebeispiel demonstrieren.
  3. Sprache (n): Normalerweise frage ich jemanden nach einer Stichprobe in der Sprache für die Position sowie nach der, in der er sich am stärksten fühlt. Gibt eine gute Vorstellung von den aktuellen Obergrenzen einer Person.

Für einen guten Kandidaten erwarte ich, dass eine Stichprobe entweder: A) eine kugelsichere kleine Stichprobe oder B) ein guter Teil eines größeren interessanten Projekts ist (z. B. ein Modul aus einem persönlichen Github-Repo). Ich erwarte, dass es sich um persönliche oder akademische Projekte handelt. Wenn sie eines von einem bezahlten Projekt senden, erwarte ich einen Hinweis, dass sie die Erlaubnis erhalten haben, es zu verwenden. Wenn ich diese Notiz nicht bekomme, schneide ich sie von den Kandidaten ab (schwacher Kandidat) oder frage sie während des Interviews danach (starker Kandidat). Keine Erlaubnis zu haben wäre eine große rote Fahne (wahrscheinlich unüberwindbar). Für einen fortgeschrittenen Kandidaten erwarte ich einen Haftungsausschluss, in dem darauf hingewiesen wird, dass einige ihrer besten Quellenbeispiele nicht angezeigt werden können, da sie im Rahmen ihrer Arbeit erstellt wurden. Dann erwarte ich jedoch ein sprudelndes Zeugnis darüber, warum sie stolz auf dieses unscheinbare Design sind und wie sie es wie ein Kind lieben.

So sehr manche Leute sagen: "Oh, jemand könnte einfach ein Codebeispiel aus dem Internet bekommen", ist das Gegenargument, dass die meisten Leute, die keinen Code in guter Produktionsqualität verstehen, ihn auch nicht verstehen, wenn sie ihn sehen . Außerdem kann man bei Google immer eine eindeutige Zeile für den zu überprüfenden Code verwenden. Im besten Fall bringt der Diebstahl von Code einen Kandidaten zu einem Interview, in dem er sich selbst in Verlegenheit bringt ("Warum haben Sie das so gemacht ...?").

Als letzte Anmerkung zum Code aus einer früheren Beschäftigung: Nur nicht. Aus HR-Sicht ist es unangemessen, nach Code aus früheren Beschäftigungsverhältnissen zu fragen, und es ist eine rote Fahne über das Unternehmen. Sie wären beide rechtlich haftbar (d. H. Sie könnten beide verklagt werden) und es zeigt, dass sie keine Ahnung haben, was sie tun. Code, der für einen früheren Arbeitgeber erstellt wurde, sollte niemals gegeben werden, es sei denn, der Code ist bereits öffentlich verfügbar oder Sie haben die ausdrückliche Erlaubnis dieses Arbeitgebers. Schlimmer noch, in einem großen Unternehmen hat Ihr direkter Chef möglicherweise nicht die Befugnis, Ihnen die Erlaubnis zu erteilen. Haben Sie also in diesem Fall Spaß mit der Rechtsabteilung? Ich bin sicher, dass sie überglücklich sein werden, ihre IP für einen ausscheidenden Mitarbeiter offenzulegen.

0
Namey

Ich würde den Beitrag von Renesis über sauberen Code unterstützen, aber der Liste hinzufügen, die dem von Ihnen eingereichten Code Qualität und gut dokumentierte Komponententests enthält. Ein guter Programmierer sollte Unit-Tests für seinen Code schreiben.

0
Chris Knight