Welche Metriken wären nutzbar Expertise Ebene in einer bestimmten Programmiersprache zu bestimmen,

StackOverflow https://stackoverflow.com/questions/539694

  •  22-08-2019
  •  | 
  •  

Frage

Ich bin interessant in dem rohen (oder Composite) Metriken verwendete den Griff zu bekommen, wie gut eine Person in einer bestimmten Sprache programmieren kann.

Szenario:. George kennt einige Programmiersprachen und will „foobar“ lernen, aber er möchte wissen, wenn er eine angemessene Menge an Erfahrung in „foobar“ hat

Ich bin wirklich interessant in etwas breiter als nur die LOC (Codezeilen) Metrik.

Meine Hoffnung auf diese Frage ist, zu verstehen, wie Ingenieure die Programmiersprache Erfahrungen anderer quantifizieren und wenn dies mechanisch gemessen werden.

Vielen Dank im Voraus!

War es hilfreich?

Lösung

In Antwort auf die vorangegangenen zwei Plakate, ich würde vermuten, dass es ist eine Möglichkeit, den Griff zu bekommen, wie gut eine Person in einer bestimmten Sprache programmieren kann: Sie können testen, wie gut jemand kennt Englisch oder Mathematik oder Musik oder Medizin oder Kunst, so was ist so besonders an einer Programmiersprache?

Als Antwort auf die OP, ich denke, die Tests beurteilen müssen:

  • Wie gut können Sie programmieren
  • Wie gut können Sie die Programmiersprache verwenden

Daher könnten die Metriken sein:

  1. Was ist die Güte der Programmierung einer Person (und es gibt verschiedene Dimensionen der Güte wie fehlerfrei, wartbar, Schnell / billig zu schreiben, läuft schnell, erfüllt Anforderungen der Nutzer, etc.)?

  2. Hat die Person entsprechende / idiomatische Merkmale der Programmiersprache in Frage, um die gute Programmierung zu tun verwenden?

Es wäre schwierig, den Test ‚mechanischen‘ zu machen, aber: die meisten Prüfungen, die ich kenne durch einen menschlichen Prüfer benotet werden. Im Fall der Programmierung könnte Teil des Tests mechanisch sortiert werden (dh „ist es laufen?“), Aber ein Teil davon ( „ist es verständlich und idiomatische?“) Wird zugute kommen soll, und wird besser, andere menschliche beurteilt Programmierer.

Andere Tipps

Der beste Indikator für Ihre Know-how in einer bestimmten Sprache, meiner Meinung nach, ist, wie produktiv Sie drin sind.

Die Produktivität ist nicht nur, wie schnell Sie arbeiten, aber, was wichtig ist, wie wenige Fehler, die Sie erstellen und wie wenig Refactoring / Nacharbeit erforderlich ist später.

Zum Beispiel, wenn Sie zwei Sprachen haben haben Sie ähnliches Maß an Erfahrung mit und sind (in Paralleluniversen) das gleiche System mit den beiden zu bauen, würde ich sagen, dass die Sprache, die Sie das System mit schneller bauen und mit weniger Fehlern / Design-Fehler, ist die Sprache, die Sie mehr Know-how haben in.

Leider ist es keine „harte“ Metrik für Sie, es ist ein praktischer Ansatz.

Ich glaube nicht, dass diese „mechanisch gemessen“ werden kann. Ich habe dachte über dieses viel though.

Moment mal ...

Auch die „LOC“ ein Programm ist ein stark umstritten Thema! (Sprechen wir über die Ausgabe von cat * {h, c} |.????? Wc -l oder eine andere mechnanism zum Beispiel Was Leerzeilen Kommentare sind Kommentare wichtig ist guter Code dokumentiert)

Bis Sie haben erkannt, wie sinnlos ein LOC Vergleich ist, haben Sie keine Hoffnung erkennen, wie sinnlos andere Metriken sind.

Es ist eine eher qualitative Sache, die selten mit großer Genauigkeit gemessen wird. Es ist wie zu fragen, „wie klug war Einstein?“. Die Zertifizierung ist ein (und ein einigermaßen gründlicher) quantitativer Indikator, aber selbst fällt es drastisch kurz zu identifizieren „gute Programmierer“, wie viele Werber entdecken.

Was wollen Sie letztendlich erreichen? Allgemeine Programmierung Eignung kann wichtiger sein als Sprachkompetenz in einigen Situationen.

Wenn Sie sprach fokussiert sind, auf eine Herausforderung nehmen wie Projekt Euler mit, dass Sprache kann ein Weg sein, Fortschritte zu verfolgen.

Wie beherrschen sie in Debuggen komplexer Probleme in dieser Sprache sind.

Fragen Sie sie über Projekte, die sie gearbeitet haben in der Vergangenheit schwierige Probleme auf sie gestoßen und wie sie gelöst ihnen. Fragen Sie sie über Techniken Debuggen sie verwendet haben - Sie werden überrascht sein, was Sie hören werden, und Sie vielleicht sogar etwas Neues lernen; -)

Viele Orte haben eine Person oder zwei, die ein Superstar auf ihrem Gebiet ist - die Person, jeder geht anders, wenn sie nicht herausfinden, was mit ihrem Programm falsch ist. Ich vermute, das ist die Person, die Sie suchen: -)

Diese Struktur hat eine Programmiersprache ist nicht genug. Gefordert ist Anlage mit einer Programmiersprache im Rahmen eines partiular Suite von Bibliotheken auf einer bestimmten Plattform

  • C ++ auf winapi auf Windows 32bit
  • C ++ auf KDE auf Linux
  • C ++ auf Symbian auf einem Nokia S60 Telefon
  • C # auf MS .NET unter Windows
  • C # auf Mono unter Linux

In einem solchen Zusammenhang die Maßnahmen der Kompetenz in der Zielsprache auf der Zielplattform verwenden, sind wie folgt:

  • Die Fähigkeit, gemeinsam auszudrücken Muster kurz und bündig und robust.
  • Die Fähigkeit, gemeinsame, aber subtile Fehler wie Race Conditions zu debuggen.

Es wäre möglich, eine Reihe von Benchmark-Übungen für einen Programmierer zu entwickeln. Man könnte auch einmal bedeutende Proben zur Verfügung standen, die Glockenkurve für die Fähigkeit bestimmen. diese Dinge vorbereiten würde buchstäblich Jahre, und sie würden schnell überholt werden. Diese (und allgemeine Enge) ist, warum Unternehmen nicht stören.

Es wäre auch notwendig sein, sowohl für Klasse Menschen in „Werkzeugmacher“ und „Werkzeug Benutzer“ -Modi. Werkzeugmacher sind sehr unterschiedliche Menschen mit einem viel höheren Maß an Kompetenz, aber sie sind oft ungeeignet für Affen Arbeit, für die Sie wirklich ein Werkzeug Benutzer möchten.

John

Es gibt ein paar Möglichkeiten, um Ihre Frage zu nähern:

1) Wenn Sie Kandidaten für eine bestimmte Position interviewen eine bestimmte Sprache benötigt, dann ist die einzige Maßnahme Kandidaten zu vergleichen ist ‚wie lange diese Person ist in dieser Sprache zu schreiben.‘ Es ist nicht perfekt - es ist nicht einmal sehr gut - aber es ist die Realität. Es sei denn, Sie dem Kandidaten ein Problem, einen Computer und einen Compiler testen sie auf der Stelle gibt es keine andere Maßnahme geben wollen. Und dann die meisten Programmierer-Typen nicht gut tun, in „jemand passen Sie“ -Szenarien.

2) Ich interpretiere Ihre Frage mehr zu sein ‚wenn ich mich in einer Sprache profecient nennen?‘ Dazu würde ich verweise eine Nicht-Muttersprache auf ein Niveau des Lernens: erste Ebene ist Sie müssen Wörter / Phrasen in einem Wörterbuch nachschlagen (Buch), um etwas zu sagen oder zu verstehen; zweite Ebene wäre, dass Sie die Sprache hören, verstehen können (oder Code-Lese) mit nur gelegentlichen Nachschlagen in Ihrem vertrauten und jetzt gut getragen Wörterbuch; dritte Ebene können Sie jetzt sprechen (oder Code schreiben) mit nur gelegentlichen Nachschlagen; vierte Ebene ist, wo man in der Sprache träumen; und die letzten Stufen, wo täuschen Muttersprachler zu denken, dass Sie einen Muttersprachler sind auch (in der Programmierung, andere Experten würden denken, dass Sie die Sprachsyntax entwickeln geholfen haben kann).

Beachten Sie, dass dies nicht bestimmen hilft, wie gut von einem Programmierer Sie sind - genau wie Englisch zu können, ohne Wörter im Wörterbuch zeigt nicht nachschlagen zu müssen „wie gooder Sie bei writin' Zeug ist“ - das ist subjektiv und hat nichts mit einer bestimmten Sprache, wie Menschen zu tun, die in jeder Sprache gut gut sind Sie ihnen geben bei der Programmierung sind.

Der Ausdruck „ein vernünftiges Maß an Erfahrung“ ist abhängig von der Sprache betrachtet wird und was kann die Sprache für verwendet werden.

Eine Metrik ist das Ergebnis einer Messung. Stevens (siehe wikipedia: Messniveau) vorgeschlagen, dass die Messungen vier verschiedene Skalentypen verwenden: nominal (Zuweisen ein Etikett), ordinal (eine Rangfolge zuweisen), Intervall (Ordnen der Messungen) und das Verhältnis (mit einem nicht-willkürlichen Nullstartpunkt) . LOC ist eine Verhältnismessung. Obwohl bei weitem nicht perfekt, ich denke, LOC ist eine relevante objektive Zahl, die angibt, wie viel Erfahrung Sie in einer Sprache und kann in der Software-Industrie zu messbaren Werten verglichen werden. Aber dies wirft die Frage auf: wo aus dieser Industrie Wert kommen

Ich persönlich würde sagen, dass „George“ wird wissen, dass er eine angemessene Menge an Erfahrung hat, wenn er entworfen hat, umgesetzt und ein Projekt getestet, vielleicht seine Wahl auf seiner persönlichen Zeit auf seinem Computer zu Hause, wenn es sein muss. Zum Beispiel: Datenbank, Business-Anwendung, Web-Seite, GUI-Test-Tool, etc.

.

Von den Personalchefs Sicht würde ich mit der Frage, den Programmierers beginnen, wie gut er / sie in der Sprache ist, aber dies ist nicht eine Metrik. Ich habe immer gedacht, dass der beste Weg, um eine Person Fähigkeit zu messen, Programme zu schreiben ist dem Programmierer mehr kleine Programmierprobleme zu geben, die im Voraus durchdacht und in einem vorgegebenen Zeit gelöst, sagen sie, jeweils 5 Minuten. Ich habe nie wieder in dieses Wesen mir beanstandete Interviews in Arbeit geleistet. Mehrere Metriken zur Verfügung: Ist der Programmierer in der Lage, das Problem (ja oder nein - nominal) zu lösen? Wie viel Zeit hat es gedauert, (Anzahl der Minuten - Verhältnis)? Wie effektiv war ihr Ansatz zur Lösung des Problems (gut, fair, schlecht - ordinal)? Sie lernen nicht nur die Personen Möglichkeit, Code zu schreiben, können aber mehr subjektiven Dinge so gut, wie ihr Verhalten beobachten, wie sie gehen über das Problem zu lösen, wird die Fragen / er fragt, während das Problem zu lösen, die Fähigkeit, unter Druck zu arbeiten, obwohl Aus „Qualität“ Perspektive usw., denken Sie daran, dass die Menschen nicht wie gemessen werden.

Dennoch glaube ich einige gute Metriken sind wie die McCabe Cyclomatic Metric für zyklomatische Komplexität oder die Menge an nützlichen Kommentare per Code-Block oder sogar die durchschnittlichen Menge an Code zwischen zwei aufeinanderfolgenden Tests geschrieben.

Ich kenne keine solche Sache. Ich glaube nicht, dass es Konsensus, wie Erfahrung zu quantifizieren oder was „angemessen“ bedeutet. Vielleicht auch etwas lernen, ich werde, aber wenn ich es eine große Überraschung tun werde sein.

Diese relevant sein kann.

Ich finde, dass die Fähigkeit zum Debuggen Testen ist ein genauerer Sensor des Programmierkenntnis als jeder Test auf einfache Programmierung Problemen gerichtet, die ich erlebt habe. In Anbetracht die Quelle für eine vernünftige Größe Klasse oder Funktion mit einem bestimmten (oder unausgesprochenen, in einigen Fällen) Fehlverhalten kann die Testperson das Problem ausfindig zu machen?

Nun, sie versuchen, dass in Bewerbungsgesprächen. Es gibt keine Metrik, aber man kann eine Person, die Fähigkeiten durch Befragung und Quizzing beurteilen zu können.

WTF / s * LOC, kleiner ist am besten.

Es gibt keine; Know-how kann nur subjektiv relativ zu anderen beurteilt werden, oder auf Besonderheiten getestet (die ihr eigenes Niveau der Ungenauigkeit hat)

finden Sie unter was die Faszination mit Code-Metriken für weitere Informationen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top