Das Joel-Test-Äquivalent zum Messen eines Programmierers

70

Ich verstehe, dass wir zum Messen eines Projekts oder Codes den Joel-Test verwenden können , aber gibt es einen einfachen Standardtest (wie den Joel-Test), der messen und filtern kann, wie gut ein Programmierer ist?

Mein Plan ist, diesen Test zuerst als schnellen Filter zu haben, bevor ich zu einem detaillierteren Test gehe.

Rudy
quelle
2
Wenn es Tests wie diese gibt, die verwendet werden, denke ich, sollten Programmierer darüber Bescheid wissen. Sie können oder können möglicherweise nicht gültig sein wie: Mieten Sie das mit den meisten Körpermodifikationen.
JeffO
2
Interessant, als ich diese Frage stellte, wurde sie zur Hölle herabgestuft (jetzt wieder positiv, yay und schnell geschlossen). Ist es wirklich so anders als dieser? programmers.stackexchange.com/questions/133691/…
ripper234
8
@ Ripper234, Gründe, warum eine Frage in Bezug auf SE geschlossen wird, sind ein bisschen wie jene unerklärlichen, zeitweise auftretenden Softwarefehler - wirklich ein Rätsel. Ein bisschen wie die menschliche Natur wirklich.
tehnyit
8
Joel selbst bietet einen einfachen, aber strengen Test: Smart and Gets Things Done . : P
Dan J
FizzBuzz! Sicherlich!
CraigTP

Antworten:

67

Es gibt die Kompetenzmatrix für Programmierer .

Wie beim Joel-Test handelt es sich nur um eine vage Anleitung. Die einzige Möglichkeit, einen Programmierer richtig einzuschätzen, besteht darin, gute Programmierer zu befragen, die mit ihnen gearbeitet haben.

Tom Squires
quelle
27
Das einzige Problem, das noch offen ist, ist zu beurteilen, ob die ehemaligen / aktuellen Teamkollegen des Mannes gut sind ... Ups.
Péter Török
21
Ja, es ist rekursiv :)
Tom Squires
13
Das ist nichts wie der Joel-Test. Ihre Antwort zeigt auf eine riesige detaillierte Matrix. Joels Test besteht aus einer Reihe von 12 sehr einfach zu beantwortenden Fragen.
Bryan Oakley
2
@BryanOakley - das stimmt, aber das PCM ist auch das allererste, woran ich beim Lesen der Frage gedacht habe. Das Fazit: Es gibt keine einfachen Fragen, die Sie beantworten können, um einen Programmierer zu messen!
Joris Timmermans
2
Der @BryanOakley-Punkt der Matrix ist komplexer als die Reihe. näher zu mir Analogie Test zu Joels eine Serie aus würden Stufe 1 Säulenelemente in PCM - „erklären und die Verwendung von Arrays ..., Grund Sortierung ... etc“
gnat
25

Ich würde den Joel-Test umdrehen:

Haben sie die Quellcodeverwaltung verwendet?

Wissen sie, wie man einen One-Step-Build automatisiert?

...

Das einzige, was nicht besonders zutreffend zu sein scheint, ist die Frage nach den Testern. Die anderen, die abgeneigt zu sein scheinen, gehen folgendermaßen vor: Wie haben wir damit umgegangen, wie haben Sie in der Vergangenheit damit umgegangen? .

bearbeiten:

Grundsätzlich bekommt man das Zeug im Joel-Test nicht umsonst, man muss Leute einstellen, die es schaffen können. Sie möchten ihre Fähigkeit etablieren, dies zu verwirklichen.

Steinmetalle
quelle
1
Alle Fragen von Joel beziehen sich mehr auf die Umwelt als auf den Programmierer. Wenn mein Team keine Quellcodeverwaltung einsetzt, ist es kaum eine Verbesserung, wenn ich mich nicht mithilfe meiner eigenen Quellcodeverwaltung in sie integrieren kann. Das Team dazu zu bringen, die Quellcodeverwaltung zu verwenden, ist eine Verbesserung.
Edwin Buck
15

Der Joel-Test ist nur eine informelle Basisprüfung, um schnell zu beurteilen, ob ein Ort gute Arbeitsbedingungen für Programmierer bietet. Selbst wenn es eine perfekte 10 erreicht, kann es dennoch ein Höllenloch sein, das sechs Monate später bankrott gehen wird. Eine niedrige Punktzahl ist ein Hinweis auf etwas, das nicht ganz richtig ist, und sorgt für hervorragende Interviewfragen ("Sie verwenden derzeit keine Quellcodeverwaltung; gibt es Pläne, dies in Zukunft zu tun?"), Und die Antworten könnten so lauten Sie würden den Job trotz einer niedrigen Joel-Punktzahl annehmen.

Der Joel-Test ist ebenfalls kein Standardtest. Es ist nur eine Checkliste, die Joel Spolsky in seinem Blog gepostet hat.

Was das "Messen" der Qualität eines Programmierers angeht; Leider sind die wirklich wichtigen Fähigkeiten und Qualitäten eines guten Programmierers schwer oder gar nicht zu quantifizieren, so dass es keinen Ersatz für eine gründliche menschliche Bewertung gibt. Sie können die völlig ahnungslosen Kandidaten jedoch mit einer sehr einfachen Programmieraufgabe ausmerzen - im Idealfall mit Rekursion, Baumstrukturen oder Zeigern (ein Programmierer, der diese nicht "versteht", ist wahrscheinlich nicht von großem Nutzen). Für diejenigen, die diesen Test bestehen, müssen Sie die Fähigkeiten manuell bewerten: Lesen Sie den von ihnen geschriebenen Code, testen Sie die von ihnen geschriebenen Anwendungen, geben Sie ihnen mehr Programmieraufgaben (sowohl Design als auch Implementierung), sehen Sie zu, wie sie funktionieren, sprechen Sie mit ihnen und sehen Sie, ob Sie es tun kann eine professionelle Diskussion auslösen. Wenn Sie einen Spezialisten / Sprachguru suchen,

tdammers
quelle
1
+1 Die Fähigkeiten eines guten Programmierers zu beurteilen, ist eine schwer zu quantifizierende Aufgabe.
Karthik Sreenivasan
20
("You're not currently using source control; are there any plans to do so in the future?"), and the answers might be such that you'd accept the job despite a low Joel score. Sie würden übrigens den Fehler machen, den Job anzunehmen. Letztendlich erfährt jeder Entwickler, dass dies Plans to do so in the futurenur etwas ist, was die Interviewer sagen, um Sie zu täuschen, aber dass sie wegen des schrecklichen Managements niemals handeln. Wie oft haben wir schon etwas davon gehört Oh, we are moving towards Agile...und es stellt sich heraus, dass es sich um einen weiteren mikrobearbeiteten Wasserfallladen handelt?
maple_shaft
@maple_shaft: Ja, wahrscheinlich kein gutes Beispiel ...
tdammers
5
Eine perfekte 10 auf dem Joel-Test wäre tatsächlich 12 ... nur sagen :)
MattDavey
3
@MattDavey: Das hängt entscheidend von Ihren Kompetenzen ab, um Veränderungen voranzutreiben . Ich hatte eine dieser Erfahrungen, als ich zwei Jahre im Geschäft war (ja, wir wechseln zu C ++) und das erwartete Ergebnis erzielt habe. Heutzutage wäre es eine andere Sache. Ich kann herausfinden, ob es ein aufrichtiger Wunsch, aber die Unfähigkeit ist, sich zu ändern, und es dann möglich machen.
MSalters
12

Ja:

Programmieren Sie in Ihrer Freizeit?

Nach all meinen Erfahrungen ist diese einzelne Frage der beste Indikator dafür, wie gut ein Programmierer ist. Wenn sie es genießen; Wenn sie die Leidenschaft haben, diese Aufgabe zu erledigen, werden sie gut darin sein.

Und ehrlich gesagt, eine Menge von 9-5 Arbeitsplätzen beinhaltet nicht viel Codierung . Sie umfassen nicht viel Iteration während des Lebenszyklus des Entwurfs neuer Programme und des Sehens, wie dieser Entwurf funktioniert / fehlschlägt. Ohne diese Iteration ist es einfach nicht erforderlich, dass Programmierer grundlegende Programmdesignfähigkeiten erwerben.

Und sie beinhalten nicht viel Lernen. Programmierer, die sogar einfach zu Hause hacken, werden neue und interessante Lösungen ohne die Einschränkungen des Big Business suchen.

Telastyn
quelle
2
Warum hat dies nur eine Stimme? IMO das ist der wirkliche Unterschied zwischen mittelmäßigen und wirklich innovativen Teams.
Repo Man
0

Eh, ich habe Bedenken mit dem Wortlaut am Anfang. Es ist nicht "Hast du X benutzt" oder "Weißt du von Y", es ist eine Frage des tatsächlichen Gebrauchs und Handelns. Jeder Programmierer, der die Elemente des Joel-Tests nicht berührt oder nicht gehört hat, wird einfach vom Computer getrennt und muss einen Hinweis erhalten. Aber Sie haben Recht, Code-Shops bestehen den Joel-Test nicht, weil die Leute in den Shops es nicht zulassen. Die einzige Verteidigung, die ich sehen kann, verläuft nach dem Motto "Ich habe es versucht, hatte aber keine Autorität. Und jetzt bewerbe ich mich hier."

Philip
quelle
0

Verwenden Sie die Quellcodeverwaltung?

Ja aber

  • Es sagt dir eigentlich nichts.
  • Woher weißt du, ob ich Merge weitergebe?
  • Woher weißt du, ob ich Änderungen ziehe, bevor ich sie drücke?
  • Woher weißt du, ob ich vor dem Commit zum Repository erstelle?

Können Sie einen Build in einem Schritt erstellen?

  • Ja, unser CI-Leiter schreibt Skripte und ich führe sie nur in Powershell aus.

Machst du tägliche Builds?

  • Unser CI-Server funktioniert

Hast du eine Bug-Datenbank?

Ja, aber ich habe es nicht konfiguriert und ich verwalte es nicht, ich benutze es einfach.

Beheben Sie Fehler, bevor Sie neuen Code schreiben?

  • In einer perfekten Welt, in der ich unbegrenzte Ressourcen habe - ja, das tue ich. In der realen Welt bin ich manchmal gezwungen, sie aufzuzeichnen und an etwas anderem zu arbeiten.

Haben Sie einen aktuellen Zeitplan?

Nein, das ist nicht mein Job.

Haben Sie eine Spezifikation?

Ich bekomme eine Spezifikation, analysiere sie und erstelle relevante Dokumente.

Haben Programmierer ruhige Arbeitsbedingungen?

  • Werden Sie mich nicht einstellen, wenn ich Musik höre, mit meinem Kollegen spreche und einen Witz mache? Softwareentwicklung soll kreativ sein - die Arbeitsbedingungen variieren von Organisation zu Organisation.

Verwenden Sie die besten Werkzeuge, die Sie für Geld kaufen können?

Sie wissen nicht, was die besten Tools sind, und wenn Sie glauben, dass dies der Fall ist, wird es immer jemanden geben, der Ihre Meinung vertritt.

Hast du Tester?

Ja. Eigentlich ja und sie sind nicht sehr gut, aber das war nicht in Frage.

Schreiben neue Kandidaten während ihres Interviews Code?

Ja und sie scheitern. Ja und sie gehen vorbei. Was sagt dir das?

Führen Sie Flur-Usability-Tests durch?

Nein, aber was ist, wenn wir etwas Besseres tun?

Schlussfolgern:

  • Dieser Test könnte in einer perfekten akademischen Welt gut funktionieren, in der einfach alles funktioniert, alle miteinander auskommen, Wissen austauschen und es unbegrenzte Ressourcen gibt.
  • Was Sie wissen wollen, ist, was für ein Ingenieur ich bin. Einfache bitweise Antworten sagen Ihnen nichts Nützliches und ich denke, dass jemand sehr naiv sein muss, um auf sie hereinzufallen.
  • Die obigen negativen und positiven Antworten geben keine Auskunft darüber, ob ich in der Lage bin, sauberen Code zu erstellen.

Dies ist kein Scherz, aber ich wäre sehr interessiert zu hören, welche Art von Entwickler ich Ihrer Meinung nach aufgrund der von mir gegebenen Antworten bin. Dies wird hoffentlich meinen Standpunkt beweisen.

CodeART
quelle
8
Ich verstehe das nicht wirklich. Diese Fragen beziehen sich auf das Team / die Firma, nicht auf den einzelnen Programmierer. Und das OP schlug nicht vor, die gleichen Fragen zu verwenden, um den Programmierer zu beurteilen, er möchte nur eine Reihe einfacher Fragen.
CodesInChaos
1
Ich denke, ich bin so gut wie mein Team oder das Unternehmen, für das wir arbeiten. Meiner Meinung nach machen solche Tests viel Aufhebens, aber sie sagen nicht wirklich etwas Nützliches über das Unternehmen oder den Entwickler aus.
CodeART
3
How do you know whether I pull changes before pushing? Nun, ich weiß nicht, welche Quellcodeverwaltung Sie verwenden, aber zumindest in SVN schlägt das Festschreiben fehl, wenn Sie versuchen, einen Ordner mit Änderungen zu übernehmen, die Sie noch nicht haben, bis Sie Update ausführen.
Mason Wheeler
Wir verwenden TFS :) Ich muss mir wirklich andere Versionskontrollsysteme zulegen.
CodeART
Soooo Leute benutzen tatsächlich TFS. Ich habe etwas gelernt.
Fabinout