Wie können Prioritäten für Fehler bei Entwicklern beeinflusst und entsprechend behandelt werden?

14

Wir haben einen Bug-Prozess, der gerade bearbeitet wird.

Wir haben 3 Fehlerstufen:

  • P1-Fehler: Fehler, die verhindern, dass Benutzer arbeiten. Sie müssen vor Ort gelöst werden.
  • P2-Fehler: Fehler, die Auswirkungen haben, aber Benutzer können arbeiten
  • P3-Fehler: Fehler, die keine Auswirkungen haben und bei denen Benutzer arbeiten können.

P1 ist obligatorisch und muss vor Ort erledigt werden. Aber für P2 und P3 beurteilen wir von Fall zu Fall.

Mit den drei Ebenen, die wir haben, hat das Team die Tendenz, an dringenderen neuen Entwicklungen zu arbeiten, die von den Kunden gefordert werden, anstatt sich mit P2 und P3 zu befassen, was beinahe nicht so dringend ist.

Fragen sind die folgenden:

Sollte ich eine andere Prioritätsstufe hinzufügen, z. B. einen P4?

Soll ich ihnen auch Ziele für den Umgang mit nicht dringenden Tickets wie in dieser Woche zuweisen, wenn Sie keine Codierungsaufgabe zuweisen, sollten Sie mindestens 1 P2 behandeln?

Gegenwärtig haben wir keine Ziele, wie ich sie oben angesprochen habe, aber ich befürchte, dass es brutal sein kann, ihnen solche Ziele zu geben. Sicher ist, dass ich mit ihnen über die Ziele sprechen muss, dass das Team gerne in Diskussionen involviert ist, besonders wenn wir Ziele setzen.

Aktualisieren:


Mir wurde diese Frage in Bezug auf Ähnlichkeit vorgeschlagen. Es ist jedoch überhaupt nicht ähnlich.

Meine Frage ist, wie die Leute mit Fehlern umgehen sollen, ohne eine strenge Agenda aufzuerlegen, und ob sie diese noch lösen sollen. Also nein, die angedeutete Frage hilft mir nicht. Trotzdem danke.

Andy K
quelle
1
Normalerweise ist die Prioritätsstufe nicht so nützlich wie die Prioritätsreihenfolge ... "Fehler X" ist wichtiger als "Fehler Y". wenn du p4 hinzufügst, willst du p5 und p3.5
sudo rm -rf slash
2
Wenn Sie so viele P1-Fehler haben, dass alle Ihre Entwickler ständig damit beschäftigt sind, sie zu beheben, anstatt an P2 / P3 zu arbeiten, tun Sie etwas sehr Falsches. Fügen Sie für eine Weile keine weiteren Funktionen hinzu. Konzentrieren Sie sich auf das Drilldown und die Behebung der Architektur- (oder Personal-) Probleme, die mit ziemlicher Sicherheit viele dieser Fehler verursachen. Wenn Sie beispielsweise in C ++ codieren, stellen Sie sicher, dass Sie RAII überall verwenden, wo Sie können, und vergessen Sie nicht, es manuell auszuführen .release().
Fund Monica Klage
Was ist dein Ziel? Möchten Sie, dass Entwickler mehr an Bugfixes und weniger an neuen Funktionen arbeiten? Bitte bearbeiten Sie Ihre Frage zur Klärung. Beschreiben Sie auch, wie Entwickler aktuell Arbeit erhalten oder annehmen. Womit wird entschieden, woran gearbeitet wird?
sleske
Funktion, Fehler, ändern, was immer Sie es nennen, die Software tut nicht, was es braucht. Der einzige Unterschied zwischen einem Bug und einem Feature besteht darin, wer dafür bezahlt.
Mattnz

Antworten:

30

Im Allgemeinen haben Sie zwei Achsen für Fehler: Schwerkraft und Häufigkeit.

Offensichtlich hat etwas Schwerwiegendes und Häufiges höchste Priorität. Allerdings sollte etwas, das ernst ist, aber selten passiert, ungefähr gleich gewogen werden wie etwas, das nicht ernst ist, aber häufig passiert. Angenommen, Sie bewerten die Schwerkraft von 1 bis 3 und die Häufigkeit von 1 bis 3. Die Arten von Fehlern, die Sie wahrscheinlich beheben sollten, sind diejenigen, die die durch Schwerkraft 1, Häufigkeit 3 ​​und Schwerkraft 3, Häufigkeit 1 definierte Diagonale überschreiten.

Ein Blockierungsfehler oder ein Fehler, der potenzielle Schäden an den Kundeninformationen verursachen könnte, ist immer eine Schwerkraft 3. Ebenso wird ein Fehler mit der Schwerkraft 1 vom Benutzer wahrscheinlich nicht bemerkt oder hat eine niedrige Priorität. Wenn Sie sich hier nicht sicher sind, ist 2 wahrscheinlich eine sichere Nummer.

Ein Fehler, der dem Benutzer bei jedem Programmstart angezeigt wird, hat eine Häufigkeit von 3. Ein Fehler mit der Häufigkeit 1 tritt nur selten oder gar nicht auf. Wenn Sie sich nicht sicher sind, ist 2 wahrscheinlich eine sichere Nummer.

Es ist größtenteils subjektiv, was einen Fehler mit der Schwerkraft 3 oder einen Fehler mit der Häufigkeit 3 ​​ausmacht, aber verwenden Sie Ihren gesunden Menschenverstand. Ein Fehler mit der Schwerkraft 1, Frequenz 2 ist möglicherweise eine falsch geschriebene Bezeichnung. Ein Fehler mit der Schwerkraft 2, Frequenz 1, ist möglicherweise die richtige Fehlerbehandlung, wenn die Datenbankverbindung unterbrochen ist.

Auch dies ist nur eine grobe Idee, aber die Idee ist, den Schwerpunkt für die Fehlerbehebung als eine Art Triage zu legen. Natürlich ist es nicht möglich, alle blockierenden oder sonstigen Fehler zu beseitigen, obwohl Sie zumindest mit dieser Methode mit Sicherheit sagen können, dass Fehler nicht zu dringend oder zu häufig sind. Wenn Sie ausschließlich Fehler behoben haben, die Fehler blockieren, werden die Hochfrequenzfehler ignoriert und die Benutzer werden feststellen, dass Sie diese Fehler nicht behoben haben.

Aus Bequemlichkeitsgründen möchten Sie möglicherweise lieber Buchstaben für die Schwerkraft oder Häufigkeit angeben, sodass Sie sagen können, dass ein Fehler ein B3-Fehler ist und sowohl die Schwerkraft als auch die Häufigkeit eindeutig sind.

Viel Glück!

Neil
quelle
3
In Wirklichkeit gibt es nur eine Metrik für Fehler - den ROI - wie viel kostet die Fehlerbehebung im Vergleich zu dem, was das Unternehmen verliert, wenn es sie nicht behebt. Vergleichen Sie das mit den Funktionen. Wie Sie diese Metrik berechnen,
hängt
3
@corsiKa, ja, der ROI ist eine zusammengesetzte Metrik: "Rendite" und "Investition". Und bei Fehlern kann die Rückkehr als eine Kombination aus "Schwerkraft" und "Häufigkeit" modelliert werden.
Paul Draper
11
@corsiKa, diese Art von kaltblütiger egoistischer Analyse von Qualitätsentscheidungen ist eigentlich äußerst verantwortungslos. Dieselbe Logik führt dazu, dass Pharmaunternehmen die Gesetze zur Wirksamkeitsprüfung umgehen, wenn sie trotz der Schwere und Häufigkeit von Nebenwirkungen "davonkommen" oder rentable Medikamente auf dem Markt halten können. Es ist die gleiche Unverantwortlichkeit, die zu riesigen Botnetzen führt, die aus unsicheren Consumer-Routern und "intelligenten" Geräten bestehen, da der Hersteller bei guter Sicherheit keinen Dollar-Wert erkennen konnte. Schwerkraft und Frequenz sind VIEL bessere Messgrößen als die "Bottom-Line-Wirkung".
Wildcard
3
@Wildcard Ich bin im wahrsten Sinne des Wortes Kommunist, daher stimme ich Ihnen zu 100% zu, dass diese besser sind. Das ändert nichts an der Tatsache, dass Softwarefirmen auf diese Weise geführt werden. Wenn Sie nicht die Firma leiten, werden Sie ertrinken, wenn Sie gegen diese Flut vorgehen. Obwohl es erwähnenswert ist, ist es nicht egoistisch. Es ist eine Portion, aber diese Single ist nicht das Selbst, sondern das Unternehmen. Wirf das einfach raus.
corsiKa
1
@Wildcard und corsiKa die firma ist nicht groß und wir können es uns nicht leisten zu sagen "oh wir werden geld verlieren, dann machen wir etwas anderes lass es uns ruhig halten". Im Großen und Ganzen glaube ich jedoch nicht, dass der von Ihnen erwähnte Ansatz auf lange Sicht nachhaltig ist. Menschen - Kunden sind alles andere als dumm. Die Firmen, die diese Art von Evangelium gepredigt haben, sind nicht mehr hier. Ich habe lange genug in der Kontoverwaltung gearbeitet, damit Geld nicht auf diese Weise verdient wird. Jedem, der zufällig für ein Unternehmen arbeitet, dem die Treue fehlt 1 / n
Andy K
24

Das läuft wirklich auf das hinaus, was Sie für wichtiger halten. Der P2-Bug oder das neue Feature?

In der Regel umfasst ein agiles Projektmanagementsystem eine Art Priorisierungsbesprechung, bei der Aufgaben nach Priorität sortiert und in dieser Reihenfolge bearbeitet werden.

Entwickler dürfen die Aufgaben, an denen sie arbeiten, nicht auswählen. Das ist die Aufgabe des Projektmanagers. Wer muss sicherstellen, dass das Projekt die größtmögliche Anzahl wichtiger Funktionen enthält, bevor das Budget ausläuft?

Das ist wirklich das Wichtigste. Einfache Regeln wie "Fix mindestens 1 P2 pro Woche" helfen diesem Ziel nicht wirklich.

Ewan
quelle
5
Das Problem beim Zuweisen von Prioritäten besteht darin, dass unabhängig von der ausgewählten Bucket-Granularität immer mehr als einer pro Bucket zur Verfügung steht. Sie müssen die Dinge in Ordnung bringen und nicht nur sagen: "Alle diese Dinge sind von höchster Priorität!"
Ewan
6
@Ewan Es besteht auch die Möglichkeit einer vorrangigen Inflation, bei der Ihr höchster Eimer mehr Probleme hat, als Sie sich jemals erhoffen können, und neue Prioritäten außerhalb des Bug-Tracking-Systems erfunden werden. Ich habe Leute von P minus 2 Themen sprechen hören.
Kasperd
2
Wenn Sie sagen, dass Entwickler nicht die Aufgaben auswählen dürfen, an denen sie arbeiten, schadet dies Ihrer Produktivität. Wenn ein Entwickler für das Problem mit der höchsten Priorität gesperrt ist, an dem er gearbeitet hat, ist es besser, wenn er in der Zwischenzeit an einem anderen Problem arbeiten kann, als wenn er nichts tut, während sein erstes Problem für etwas gesperrt ist. Darüber hinaus werden Probleme, die den Benutzern keinen Schaden zufügen, aber die Entwicklerproduktivität beeinträchtigen, häufig nicht so priorisiert, wie sie sein sollten. Schließlich ist es ein sicherer Weg, den Entwicklern mitzuteilen, dass sie keine eigenen Entscheidungen treffen dürfen, um die Motivation zu zerstören.
Kasperd
3
@kasperd Ich denke, die meisten Entwickler akzeptieren, dass sie sowohl Angestellte als auch technische Supergenies sind, und akzeptieren, dass ihr Arbeitgeber entscheiden kann, welche Aufgaben zuerst erledigt werden sollen. Wenn eine blockiert ist, würden Sie natürlich zur nächstwichtigsten wechseln, aber Sie überspringen nicht 10 wichtige Aufgaben, um an der coolen zu arbeiten.
Ewan
1
Ich habe festgestellt, dass ein Fehler Priorität haben sollte, wenn die Arbeit abgeschlossen oder blockiert ist, anstatt eine andere Entwicklungsaufgabe in den Sprint zu ziehen (Scrum zu machen). MS hat allen Fehlern bei der Arbeit mit Windows 2000 die höchste Priorität vor allen Entwicklungsaufgaben eingeräumt - sie fanden, dass dies der beste Weg war, um fehlerfreie Software zu erstellen (einer der Gründe, warum 2000 tatsächlich gut ankam), als ob sie es nicht täte , Bugs würden in der Regel zurückbleiben, da stattdessen in der Regel an einer neuen Entwicklung gearbeitet werden musste.
Baldrickk
1

Es ist ein ziemlich häufiger Zyklus, in dem eine Software unkritische Fehler ansammelt, bis sich etwas ergibt, dann ein großes Ereignis eintritt und viele von ihnen gleichzeitig behoben werden. Vielleicht, indem Sie ein oder zwei Sprints nur für Bugfixes vor einem großen neuen Release verwenden, oder weil die Software EOL ist und die Heap-O-Bugs überlebt hat.

Sie sind also in guter Gesellschaft, wenn Ihre Entwickler sie einfach abrutschen lassen. Natürlich können Sie mit "Regeln" jonglieren, wie Sie es erwähnt haben ("Wenn Sie nicht an einer neuen Funktion arbeiten, müssen Sie mindestens eine P2 pro Woche bearbeiten"), aber das wird Sie wahrscheinlich nur unbeliebt machen.

Meine Frage ist, wie die Leute mit Fehlern umgehen sollen, ohne eine strenge Agenda aufzuerlegen, und ob sie diese noch lösen sollen.

Stattdessen würde ich vorschlagen, die allgemeine Denkweise ein wenig zu ändern und Fehler eher zu Features zu machen, in dem Sinne, dass sie erstklassige Bürger in Ihrem Rückstand sind. Ja, neue Funktionen sind großartig. Ja, Management und Vertrieb setzen sehr stark auf neue Funktionen. Es ist aber auch wichtig, eine stabile, gut funktionierende Anwendung zu haben, anstatt eine Menge unordentlicher Fehler.

Sagen Sie Ihren Entwicklern nicht, dass sie Arbeit leisten müssen, die sie nicht mögen. aber versuchen Sie, die Atmosphäre so zu verändern, dass sie gerne an Bugs arbeiten. Versuchen Sie, eine fehlerfreie Anwendung mit Stolz zu versehen. Machen Sie es mehr Spaß (sic), an einem Fehler zu arbeiten, indem Sie es ihnen ermöglichen, den zugrunde liegenden Grund, aus dem dieser Fehler aufgetreten ist, tatsächlich zu beheben (dh nicht nur schnelle Problemumgehungen / Hacks), falls vorhanden. Es kann für Entwickler sehr unterhaltsam sein, eine kaputte Klassenstruktur herauszureißen und durch eine geeignetere zu ersetzen. Wenn Sie ein defektes zentrales Teil haben, das regelmäßig an anderer Stelle Fehler aufzeigt, beheben Sie das zentrale Teil.

Wie Sie Ihr Ziel erreichen, hängt in hohem Maße von Ihrem eigenen Charakter und dem Ihrer Teams ab - versuchen Sie nicht, sie in das hineinzuversetzen, was Sie erreichen möchten, sondern führen Sie offene Diskussionen, versuchen Sie, einen Peer-Effekt in Gang zu bringen, und lassen Sie sie sich einfallen ein Arbeitsprozess selbst und so weiter.

AnoE
quelle