it-swarm.com.de

Wie lässt sich die Softwareentwicklungsleistung messen?

Ich suche nach Möglichkeiten, die Leistung eines Software-Entwicklungsteams zu messen. Ist es eine gute Idee, das Build-Tool zu verwenden? Wir verwenden Hudson als automatisches Build-Tool. Ich frage mich, ob ich die Informationen aus den Hudson-Berichten entnehmen und daraus den Fortschritt jedes Programmierers erhalten kann.

28
MikeG

Messen Sie die Leistung jedes einzelnen Programmierers NICHT einfach mit dem Build-Tool. Sie können das Team als Ganzes messen, sicher, oder Sie können sicherlich den Fortschritt jedes Programmierers messen, aber Sie können nicht deren Leistung mit einem solchen Werkzeug messen. Einige Module sind komplizierter als andere, einige Programmierer sind mit anderen Projekten beauftragt. Dies wird nicht empfohlen, und es wird Programmierern nahegelegt, schlampigen Code zu schreiben, so dass es aussieht, als hätten sie die meiste Arbeit gemacht.

46
AlbertoPL

Das Hauptproblem bei solchen Leistungsmetriken ist, dass Menschen jedes System sehr gut spielen können, das ihre eigene Leistung misst, um diese exakte Leistungsmetrik zu maximieren - normalerweise auf Kosten von etwas anderem, das wertvoll ist.

Nehmen wir an, wir verwenden den Hudson-Build, um Statistiken zur Programmiererausgabe zu sammeln. Wonach könnten Sie suchen und was wären die unbeabsichtigten Nebenwirkungen der Messung, wenn Programmierer erst einmal darauf hingewiesen werden?

  • Codezeilen (Entwickler produzieren nur Berge von Code für die Boilerplates und andere unnötige Überarbeitungen oder integrieren einfach jede verdammte Methode)
  • Unit-Test-Fehler (schreibe keine Unit-Tests, dann scheitern sie nicht)
  • Unit Test Coverage (schreiben Sie schwache Tests, die den Code ausüben, aber nicht richtig testen)
  • Anzahl der in ihrem Code gefundenen Bugs (mache keine Codierung, dann bekommst du keine Bugs)
  • Anzahl der behobenen Fehler (wähle die einfachen/trivialen Fehler aus, an denen gearbeitet werden soll)
  • Tatsächliche Zeit zum Beenden einer Aufgabe basierend auf ihrer eigenen Schätzung (höhere Schätzung, um mehr Platz zu schaffen)

Und es geht weiter.

Der Punkt ist, egal was Sie messen, Menschen (nicht nur Programmierer) können sehr gut optimieren, um genau dieses Ding zu treffen.

Wie sollten Sie die Leistung Ihrer Entwickler beurteilen? Nun, das ist schwer. Und es handelt sich um menschliche Manager, die Menschen (und die BS, die sie ziehen) gut verstehen und jede Person subjektiv im Kontext von wem betrachten können/wo/was sie herausfinden sollen, ob sie einen guten Job machen oder nicht.

Was Sie tun, wenn Sie herausgefunden haben, wer auftritt oder nicht, ist eine ganz andere Frage.

(Ich kann diese Denkweise nicht würdigen. Sie stammt ursprünglich von Joel Spolsky. hier und hier )

62
madlep

Nein.

Solche Metriken sind zum Scheitern verurteilt. Verschiedene Personen arbeiten an verschiedenen Teilen des Codes und an verschiedenen Problemklassen, und absolute Messungen sind bestenfalls irreführend.

Um die Leistung der Entwickler zu messen, können Sie exzellente Manager einsetzen, die ihre Arbeit gut machen, gute Spezifikationen haben, die die Anforderungen genau widerspiegeln, und den Fortschritt aller Mitarbeiter anhand dieser Spezifikationen sorgfältig verfolgen.

Es ist schwer richtig zu machen. Eine Softwarelösung funktioniert nicht.

12
RichieHindle

Ich denke, dies erfordert einen sehr sorgfältigen Ansatz, wenn es darum geht, wie man die Entwicklerleistung misst, da die meisten traditionellen Methoden wie Codezeile, Anzahl der Check-Ins, Anzahl der behobenen Fehler usw. bei heutigen Software-Engineering-Konzepten als subjektiv erwiesen sind. Wir müssen den Team-Performance-Ansatz bewerten, anstatt einzelne KPIs in einem Projekt zu messen. In kommerziellen Entwicklungsumgebungen ist es jedoch wichtig, einen Überblick über die folgenden Faktoren der einzelnen Entwickler zu behalten.

  1. Kommentare zur Codeüberprüfung - Bei jedem Projekt können wir entscheiden, wie viele Codeüberprüfungen für einen bestimmten Zeitraum durchgeführt werden müssen. Basierend auf den Code-Reviews erhalten Einzelpersonen Anmerkungen zu ihren Verbesserungen des Codierungsstandards. Wiederkehrende Ausgaben von Code-Reviews zum Code des gleichen Individuums müssen zur Kenntnis gebracht werden. Sie können automatisierte Codeüberprüfungswerkzeuge oder manuelle Codeüberprüfungen verwenden.
  2. Testabdeckung und Vollständigkeit der Tests. - Die abgedeckten% müssen vorab entschieden werden, und wenn bestimmte Entwickler es oft nicht versuchen, dies zu tun, muss dies erledigt werden. 
  3. Bereitschaft, sich bei komplexen Aufgaben anzumelden und diese ohne großen Aufwand zu erledigen
  4. Erreichen, was in einer User Story als "Fertig" definiert ist
  5. Meisterschaftsniveau jedes technischen Bereichs.

Mit agiler Vorgehensweise in einigen Projekten werden die Messungen des Entwicklungsteams und die erwartete Leistung basierend auf den Releases festgelegt. Bei jeder Release-Planung werden unterschiedliche "Verträge" mit den Teammitgliedern für die erwartete Leistung ausgehandelt. Ich finde diesen Ansatz erfolgreicher, da es keinen Grund gibt, sich an UI-bezogene Messungen in einer Version zu halten, in der ein komplexer Algorithmus veröffentlicht werden muss.

10

Ich würde NICHT empfehlen, Informationen zum Build-Tool zu verwenden, um die Leistung/den Fortschritt von Softwareentwicklern zu messen. Einige verwirrende Probleme: Möglicherweise ist eine Aufgabe wesentlich schwieriger als eine andere. möglicherweise ist eine Aufgabe viel mehr in "Design Space" als in "Implementation Space" involviert. Möglicherweise (wahrscheinlich) ist die effizientere Lösung die bessere Lösung, aber diese bessere Lösung trägt weniger Codezeilen bei als eine äußerst ineffiziente, die viel mehr Codezeilen liefert. usw.

5
Paul Sonier

Apropos KPI bei Softwareentwicklern. www.smartKPIs.com kann eine gute Ressource für Sie sein. Es enthält eine benutzerfreundliche Bibliothek mit gut dokumentierten Leistungskennzahlen. Derzeit werden über 3300 KPI-Beispiele in 73 Funktionsbereichen sowie 83 Branchen und Unterkategorien aufgeführt.

KPI-Beispiele für Softwareentwickler finden Sie auf dieser Seite www.smartKPIs.com - Anwendungsentwicklung Sie umfassen, ohne jedoch darauf beschränkt zu sein:

  • Effizienz bei der Entfernung von Fehlern
  • Daten Redundanz

Neben Beispielen für Leistungskennzahlen enthält www.smartKPIs.com auch einen Katalog mit Leistungsberichten, die die Verwendung von KPIs in der Praxis veranschaulichen .. __ Beispiele für solche Berichte für die Informationstechnologie finden Sie unter www.smartKPIs.com - KPIs In der Praxis - Informationstechnologie .__ Die Website wird täglich mit neuen Inhalten aktualisiert. Überprüfen Sie daher von Zeit zu Zeit die Inhalte.

Bitte beachten Sie, dass zwar Beispiele für Leistungsmessgrößen hilfreich sind, um Entscheidungen zu treffen, jedoch muss jede Leistungskennzahl auf der Grundlage der Ziele und Prioritäten der einzelnen Organisationen ausgewählt und angepasst werden.

4
smartKPIs

Sie würden wahrscheinlich besser messen, wie gut Ihr Team die Zeitpläne einhält. Wenn ein Teammitglied (oder das gesamte Team) ständig verspätet ist, müssen Sie mit ihnen arbeiten, um die Leistung zu verbessern.

2
BoltBait

Machen Sie keine Abkürzung oder suchen Sie nach schnellen und einfachen Methoden, um die Leistung/den Fortschritt von Entwicklern zu messen. Es gibt viele Faktoren, die die Ausgabe eines Entwicklers beeinflussen. Ich habe viele Leute gesehen, die verschiedene Metriken ausprobieren ...

Produzierte Codezeilen - regen Entwickler dazu an, ineffizienten Müll auszulagern. __ Komplexitätsmaßnahmen ermutigen zu Analyse und Refactoring. __ Anzahl der erzeugten Fehler - ermutigt Menschen, wirklich einfache Aufgaben zu suchen und Ihre Tester zu hassen. Die Liste geht weiter.

Bei der Überprüfung eines Entwicklers müssen Sie wirklich prüfen, wie gut seine Arbeit ist, und "gut" im Zusammenhang mit den Anforderungen des Unternehmens und den Situationen/Positionen definieren, in denen das Unternehmen seine individuelle Situation eingenommen hat .

2

Prüfen Sie, wie viele Zeilen der Codes geschrieben wurden.

Dann feuern Sie die unteren 70% ab. NEIN 90%! ... JEDEN TAG!

(für die Leute, die sich nicht sicher sind, JA, ich mache Witze. Ernsthafte Antwort hier )

1
madlep

Es gibt viele verschiedene Möglichkeiten, dies zu tun. Ganze Bücher zu diesem Thema geschrieben. Sie könnten Berichte von Hudson verwenden, aber ich denke, das würde zu Fehlinformationen führen und grobe Ergebnisse liefern. Sie benötigen wirklich eine Methode zur Aufgabenverfolgung.

1
anio

Dies ist eine alte Frage, aber Sie können Velocity von Agile Software Development ausleihen. Dort weisen Sie jeder Aufgabe eine Gewichtung zu und berechnen dann, wie viel "Gewichtung" Sie in jedem Sprint (oder Iteration oder was auch immer DLC Sie verwenden). Dies hängt natürlich mit der Tatsache zusammen, dass Sie wie ein zuvor erwähnter Kommentator aktiv nachverfolgen müssen, ob Ihre Entwickler online arbeiten oder chatten.

Wenn Sie wissen, dass Ihre Entwickler reaktionsschnell arbeiten, können Sie sich auf diese velocity verlassen, um Ihnen eine Einschätzung zu geben, wie viel Arbeit das Team leisten kann. Wenn diese Zahl bei jeder Wiederholung sinkt (beträchtlich), wurde sie entweder schlecht geschätzt oder das Team arbeitete weniger.

Letztendlich kann die Verwendung von KPIs zusammen mit Velocity Ihnen pro Entwickler (oder Team) Einsicht in die Leistung geben.

1
PedroC88

Wir erhalten 360 Feedback von allen im Team. Wenn alle Ihre Teammitglieder denken, Sie seien Mist, dann sind Sie es wahrscheinlich.

1
Neil

Es gibt einen häufigen Fehler, den viele Unternehmen bei der Einrichtung ihres Release-Management-Tools machen. Das Salesforce Release Management Toolkit ist eines der besten, das derzeit auf dem Markt erhältlich ist. Wenn Sie jedoch nicht die wesentlichen Schritte der Einrichtung befolgen, werden Sie auf jeden Fall sehr schlechte Ergebnisse erzielen. Sie werden es nutzen können, aber nicht die volle Kapazität. Die Einrichtung von Release-Management-Prozessen isoliert von den Geschäftsprozessen ist einer der größten Fehler. Release-Management-Tools gehen Hand in Hand mit Unternehmensstrategie, Zielen, Governance, Änderungsmanagement und einigen anderen Aspekten. Die Prozesse des Release-Managements müssen so gestaltet werden, dass sich alle im Unternehmen auf derselben Seite befinden.

Ziele des Release-Managements Das Hauptziel des Release-Managements besteht darin, einen konsistenten Satz zuverlässiger und wiederholbarer Prozesse zu haben, die ressourcenunabhängig sind. Dies ermöglicht die Erzielung des günstigsten Geschäftswerts bei gleichzeitiger Optimierung der verfügbaren Ressourcen. In Anbetracht der Tatsache, dass sich die meisten Organisationen auf kurze, renditestarke Geschäftsprojekte konzentrieren, ist es für die Optimierung der Lieferwertschöpfungskette der Anwendung unerlässlich, dass sichergestellt wird, dass die Bereitstellung des Geschäftswerts nicht beeinträchtigt wird.

Nehmen Sie zum Beispiel das force.com-Migrations-Toolkit, da sich dieses Tool in der Governance als hervorragend erwiesen hat. Ein Release-Management-Tool sollte eine optimale Transparenz und Verantwortlichkeit in der Governance ermöglichen.

Prozesse und Release-Zyklen Die Release-Management-Prozesse müssen für das gesamte Unternehmen konsistent sein. Es ist notwendig, Prozesse über die verschiedenen Werkzeugbenutzer hinweg zu straffen und zu standardisieren. Dies liegt daran, dass sie dieselbe Plattform und Ressourcen verwenden, die eine effiziente Erledigung ihrer Aufgaben ermöglichen. Unterschiedliche Prozesse für verschiedene Unternehmensbereiche können zu schwerwiegenden Fehlern im Werkzeugmanagement führen. Die verschiedenen Benutzergruppen müssen Einblick in die Aktivitäten der anderen Benutzer haben. Wie bereits erwähnt, ist die Sichtbarkeit in jedem Geschäftsprozess von großer Bedeutung.

Bei den Release-Zyklen ist es außerdem unerlässlich, ein zentrales System zu haben, das alle Anforderungen der verschiedenen Benutzergruppen erfasst. Dieses System muss auch zentralisiert werden, damit Softwareentwicklungsteams Einblick in die vom Unternehmen geforderten Funktionen und Änderungen erhalten. Anfragen müssen zu Prioritäten werden, um sicherzustellen, dass das Unternehmen maximalen Nutzen hat. Ein Lenkungsteam ist wichtig, weil es an der Überprüfung der Geschäftsanforderungen beteiligt ist und außerdem die am besten geeigneten Änderungen priorisiert, die das Unternehmen vornehmen muss.

Die Änderungen, die an dem Salesforce-System vorgenommen werden sollten, können sehr knifflig sein. Daher ist ein regelmäßiges Treffen zwischen Unternehmen und IT gut. Auf diese Weise können Sie die besten Änderungen ermitteln, die am System vorgenommen werden sollen und die das Geschäft fördern. Durch die Berücksichtigung der Kosten und des Wertes der Implementierung eines Features hat der Lenkungsausschuss die Aufgabe, die wichtigsten zu ändernden Feature-Änderungen festzulegen. Hier auch gute Forschung http://intersog.com/blog/tech-tips/how-to-manage-millennials-on-software-development-teams

1
Lana Boltneva

In der Regel wird die direkte Verwendung von Metriken zur Leistungsmessung als schlechte Idee betrachtet und ist eine der einfachen Möglichkeiten, ein Team auf den Boden zu bringen.

Jetzt können Sie Metriken wie% der Projekte, die pünktlich fertiggestellt wurden,% der Abwanderung verwenden, wenn der Code abgeschlossen ist usw. Dies ist ein weites Feld.

Hier ist ein Beispiel:

60% der geschäftskritischen Fehler wurden von Joe geschrieben. Das ist eine einfache, unkomplizierte Metrik. Feuer Joe, richtig?

Aber warte, es gibt noch mehr!

Joe ist der Senior Developer. Er ist der einzige, dem man vertrauen kann, jedes Mal extrem verlässlichen Code zu schreiben. Er hat etwa 80% der unternehmenskritischen Software geschrieben, weil er der beste ist. 

Metriken sind ein schlechtes Maß für Entwickler.

0
Paul Nathan

Ich würde meine Erfahrungen teilen und wie ich einen sehr wertvollen Prozess zur Messung der Teamleistung gelernt habe. Ich muss zugeben, ich bin auf die Nachverfolgung von KPI zurückgefallen, einfach weil die meisten Abteilungen dasselbe tun würden, aber nicht wirklich für die Einsicht, bis ich die Verantwortung für die Bewertung der Entwicklerleistung hatte.

Bei jedem Projekt würde ich das Team in einer Diskussion über die Projektanforderungen unterhalten und sie einbeziehen, damit jeder weiß, was zu tun ist. In der gleichen Diskussion durch Zusammenarbeit würden wir die Projekte in Aufgaben einteilen und diese Aufgaben gewichten. Bisher würden wir den Projektabschluss auf 100% schätzen, wobei jede Aufgabe einen prozentualen Beitrag leistet. Nun, das hat eine Weile funktioniert, war aber nicht die beste Lösung. Jetzt würden wir die Aufgabe auf das Gewicht oder die Punkte stützen, um genau zu sein, und relative Messungen verwenden, um die Aufgabe zu vergleichen und beispielsweise die Gewichte zu unterscheiden. Es ist erforderlich, ein Webformular zu entwickeln, um Benutzerdaten zu sammeln. Die Aufgabe würde ungefähr so ​​aussehen

 1. User Interface - 2 Points
 2. Database CRUD  - 5 Points
 3. Validation     - 4 Points
 4. Design (css)   - 3 Points

Mit dieser Strategie können wir eine wöchentliche Annäherung anstellen, wie viel wir abgeschlossen haben und was für die Task Force noch aussteht. Wir können auch feststellen, wer am besten abgeschnitten hat.

Ich muss zugeben, dass ich bei dieser Strategie immer noch einige Herausforderungen habe, da nicht jeder Entwickler mit jeder Technologie vertraut ist. Irgendwie sind einige davon begeistert, Technologien zu erlernen, nur weil sie feststellen, dass 2015 hohe Prozentpunkte in diesem Bereich fallen, einige würden tun, was sie können.

Denken Sie daran, einen KPI nicht für sich selbst, sondern für seine Einsicht zu verfolgen.

0
szakwani