Gibt es eine elegante Möglichkeit, den Prozess eines Ingenieurs zu analysieren?

12

Es gibt viele Meinungen darüber, dass das Messen von Commits unangemessen ist.

Wurde eine Studie durchgeführt, die versucht, mehr Quellen als Verpflichtungsermächtigungen heranzuziehen?

  • Suchmuster
  • IDE-Arbeit (Pre-Commit)
  • Wartezeit
  • Multitasking

Ich kann mir keine einfache Möglichkeit vorstellen, diese Maßnahmen durchzuführen, aber ich frage mich, ob eine Studie durchgeführt wurde.


Persönlich bin ich der Meinung, dass die Reflexion der eigenen „Metriken“ wertvoll sein kann, unabhängig davon, ob diese für die Leistungsbewertung verwendet werden (oder nicht). IE eine voreingenommene Art, Ihre Gewohnheiten zu reflektieren. Dies ist jedoch eine Diskussionssache, die über Fragen und Antworten hinausgeht.

New Alexandria
quelle

Antworten:

6

Wir sind uns nicht sicher, ob Sie es für elegant halten würden, aber Watts Humphrey hat ein ganzes Buch namens Personal Software Process geschrieben, in dem es darum ging, Ihre eigene Produktivität zu messen. Er beschrieb Metriken für Eingaben wie Zeit an Ihrem Schreibtisch im Vergleich zu Unterbrechungen, Arbeitszeit für verschiedene Arten von Software-Lebenszyklusaktivitäten und Fehler pro Codemenge. Es gibt einen technischen Bericht mit der Kurzfassung unter:

http://www.sei.cmu.edu/library/abstracts/reports/00tr022.cfm

Wenn Sie sich so etwas wie die Qualität eines Entwicklercodes ansehen möchten, hat Chidamber & Kemerer mehrere Metriken für objektorientierten Code vorgeschlagen.

Metriken für objektorientierten Code

  • Tiefe des Erbbaums,
  • gewichtete Anzahl von Methoden,
  • Anzahl der Mitgliedsfunktionen,
  • Anzahl der Kinder und
  • Kopplung zwischen Objekten.

Mithilfe einer Codebasis versuchten sie, diese Metriken mit der Defektdichte und dem Wartungsaufwand zu korrelieren, indem sie eine kovariante Analyse verwendeten. In späteren Studien wurden Hunderte von Source Forge-Java-Projekten einer ähnlichen Analyse unterzogen, um ihre Eigenschaften im Vergleich zu CK-Metriken und einigen später vorgeschlagenen zusätzlichen Metriken zu bestimmen.

Metriken, die im Zusammenhang mit Code Reviews entstehen

Fehler können nach vielen Kriterien kategorisiert werden:

  • Schweregrad: (Haupt, Neben, Kosmetik, untersuchen / unbekannt),
  • Typ (Logik, Tippfehler, Rechtschreibung, Kodierungsverstoß usw.),
  • Ursprung / Phase Containment (Anforderungen, Design, Code, etc.).

Es gibt auch Vorbereitungs- und Inspektionsraten (Zeit pro Prüfer, Zeit pro Codezeile) und Fehlerdichten ( pro KLOC (tausend Codezeilen), pro Minute Inspektor / Prüferzeit ).

Das Zeichnen dieser Werte anhand von Kontrolldiagrammen kann zeigen, ob wir uns innerhalb der Prozessgrenzen befinden (z. B. ein Team, das 200 Codezeilen überprüft und in einer Gruppe mit durchschnittlich fünfundzwanzig Fehlern pro KLOC keine Fehler feststellt, ist möglicherweise fehlerhaft).

Andere Metriken

Andere Metriken, die dazu beitragen könnten, umfassen solche für

Einschränkungen der Analyse

Es gibt enorme Grenzen für den Wert von Metriken. Pro Entwickler behobene Fehler können so gut wie alles bedeuten, und wenn Sie anfangen, diese Messung zu bestrafen oder zu belohnen, werden die Fehler meiner Wette nach zahlreicher und detaillierter, und die Mischung der schwer zu behebenden Fehler ändert sich auch, wenn das Team die Kirsche nimmt um die meisten zu haben.

Es gibt auch eine gewisse Ablenkung und möglicherweise einen Fokus- und Genussverlust, der mit einer aufdringlichen Messung einhergehen kann. Sie können nicht viel eleganter (und emotional belasteter) sein als ein Seedichter wie Wordsworth, der sagte:

      Sweet is the lore which Nature brings;
      Our meddling intellect
      Mis-shapes the beauteous forms of things:--
      We murder to dissect.

Geben Sie mir Spielraum, da ich dachte, ich würde nie etwas aus dem englischen Literaturunterricht der High School verwenden.

Agilität kann als Reaktion auf einen zentralen, großen Prozess angesehen werden. Manchmal erforderte diese Arbeitsweise so viel analytischen Aufwand, dass die Fähigkeit, den Fluss beim Erstellen von Software zu erreichen , praktisch verschwand.

DeveloperDon
quelle
Diese Antwort gefällt mir, unabhängig davon, ob jemand anderes bessere Informationen liefert - deshalb habe ich sie für abschnittsweise Inhalte bearbeitet.
New Alexandria
Ich verstehe nicht, dass Ihr Kommentar über den Verdienst für "Entwickler, die nicht zu Agile gewechselt sind" ist. Nur auf der Suche nach "Earned Value in Agile" und "Agile Earned Value" werden viele Leute
Thomas Owens
Der erarbeitete Wert scheint in Bezug auf die Schätzung eine gute adaptive Technik zu sein. Ich nahm an, dass die agile Schätzung ihre eigenen Ansätze hatte, die sich hauptsächlich auf Punkte bezogen. Ich werde sehen, ob ich die Dinge so umformulieren kann, dass sie inklusiv sind.
DeveloperDon
Es gibt ganze Bücher über Agile Estimation, es ist also ziemlich umfassend. Ich habe jedoch in agilen Umgebungen gearbeitet, in denen aufgrund der Art der Berichterstellung die Anwendung von EVMS erforderlich war.
Thomas Owens
2

Ich möchte eine alternative Antwort hinzufügen, die weg von der Standardpraxis der Softwareentwicklung hin zu einem anderen Bereich weist, mit dem Ziel, grundlegende Tools zu stehlen, die wir nach Bedarf anpassen können. Die Mitarbeiter der Qualitätssicherung sind genau wie die Softwareentwickler mit der Erkennung und Vermeidung von Produktions-, Ertrags- und Fehlern befasst.

http://en.wikipedia.org/wiki/Seven_Basic_Tools_of_Quality

Ich mag die Kontrollkarte.

http://en.wikipedia.org/wiki/Control_chart

Machen Sie eine Aktivität, zeichnen Sie eine Metrik, machen Sie eine andere, zeichnen Sie ihre Metrik und so weiter. Zum Beispiel, Plot-Commits pro Tag. Das Diagramm streut Daten, die zwischen einem Minimum und einem Maximum liegen. Vielleicht können Sie die Ergebnisse später charakterisieren, um festzustellen, dass bei einem niedrigen Wert der Fortschritt behindert wird und wenn er zu hoch ist, die Arbeit schnell, aber schlampig beginnt. Wie Sie die Mitarbeiter dazu ermutigen, zu beschleunigen oder zu verlangsamen, bleibt Ihnen überlassen.

Persönliche Metriken können Sie möglicherweise mit der Frage "Ich fühle mich am produktivsten, wenn ich ..." korrelieren.

  • Schreiben Sie einen vollständigen Anwendungsfall, bevor Sie mit dem Code beginnen.
  • Schreiben Sie meine Unit-Tests vor meinen Code.
  • Wenden Sie sich regelmäßig an die Interessengruppen, um sicherzustellen, dass sich die Anforderungen nicht ändern, und führen Sie zu umfangreichen Überarbeitungen an einem überholten Plan.
  • Ändern Sie so viel Code wie möglich.
  • Delegieren Sie gut definierte Änderungen an Teammitglieder, die mit den von mir zu ändernden Teilen am besten vertraut sind.
    • Gib meinem Team einen vollständigen Überblick, aber mit Prioritäten können wir im aktuellen Sprint abschließen.
    • Beginnen Sie meinen Refactoring-Durchgang mit einer hierarchischen Liste von Verzeichnissen, Dateien, Klassen, Methoden, Gleichungen, Variablen, Dokumentationen usw., die ich ändern werde.
    • Erforschen Sie ein Problem auf hoher Ebene, um Lösungen nach dem Stand der Technik zu finden, und schätzen Sie den Umfang und die wichtigsten Verbesserungen, die für eine bessere Lösung erforderlich sind.

Die alte Säge, an der wir messen, was getan wird, könnte Sie dazu bringen, das Problem auf der Grundlage dessen anzugreifen, was Sie als einschränkenden Faktor bestimmen

oder mehrere Faktoren in der Reihenfolge ihrer Priorität basierend auf einem Pareto-Diagramm.

http://en.wikipedia.org/wiki/Pareto_chart

DeveloperDon
quelle