In unserem Projekt arbeiten wir nach einer Null-Fehler-Methode. Die Grundidee ist, dass Fehler immer eine höhere Priorität haben als Funktionen. Wenn Sie an einer Story arbeiten und diese einen Fehler aufweist, muss dieser behoben werden, damit die Story akzeptiert wird. Wenn während des Sprints für eine ältere Story ein Fehler gefunden wird, müssen wir ihn als Nächstes in unseren Rückstand aufnehmen und beheben - oberste Priorität.
Der Grund, warum ich Entschlossenheit sage, ist, dass wir den Fehler nicht immer beheben. Irgendwann deklarieren wir es einfach als "nicht behebbar", da es nicht so wichtig ist. Alles in allem klingt es großartig. Wir versenden qualitativ hochwertige Produkte und haben keinen "Buckel" in Form eines riesigen Bug-Backlogs.
Aber ich bin nicht sicher, ob dieser Ansatz richtig ist. Ich stimme eher zu, dass wir immer so schnell wie möglich schwerwiegende Fehler beheben und nicht interessante Fehler beseitigen müssen. Aber was ist mit Fehlern, die wichtig, aber nicht so wichtig sind wie neue Funktionen? Ich denke eher, dass sie mit einer angemessenen Priorität im Backlog abgelegt werden sollten.
Ich gebe ein Beispiel, damit es klarer wird - in meinem Projekt arbeiten wir mit einer in flex geschriebenen Benutzeroberfläche. Wir haben einen Assistentenbildschirm, der für jede Bildschirmauflösung in der gleichen Größe geöffnet wird. Es stellt sich heraus, dass beim Erweitern des Assistentenfensters eine der Seiten nicht gut aussieht (es gibt eine vertikale Bildlaufleiste, die nicht ausgeblendet wird, obwohl der Assistent jetzt alles darstellen kann und die Bildlaufleiste nicht benötigt). Ich finde diesen Bug hässlich. Ich bin sicher, es muss behoben werden. Aber wir haben einen engen Zeitplan und wir haben eine Menge Features, von denen wir befürchten, dass sie den Schnitt nicht schaffen und in die Veröffentlichung einfließen. Ich habe das Gefühl, dass wir mit einem solchen Fehler leben können. Es muss repariert werden, hat aber eine niedrigere Priorität als andere Funktionen (falls wir es nicht fertigstellen können, haben wir zumindest wichtigere Funktionen nicht ausgelassen). Aber,
Ich würde gerne Meinungen darüber hören, wie man mit Fehlern umgeht, die ich nicht als "nicht behebbar" markieren möchte, die aber auch nicht von höchster Wichtigkeit sind.
Antworten:
Das Beheben von Fehlern vor dem Schreiben von neuem Code ist einer der zwölf Punkte des Joel-Tests . Joel erklärt auch, warum dies ein Muss ist:
Du hast eine Wahl:
Entweder Sie implementieren eine sehr gewünschte Funktion und verzögern die Behebung eines Fehlers, wodurch sich die Kosten für die Behebung unweigerlich erhöhen.
Oder Sie beheben den Fehler sofort, da die Kunden enttäuscht sind, dass Sie die von ihnen benötigten Funktionen nur sehr langsam bereitstellen.
Wenn der Fehler nicht sehr wichtig ist, während das Feature vorhanden ist, wird das Management dazu neigen, zunächst nach der Implementierung des Features zu fragen und dann den Fehler zu beheben. Aus geschäftlicher Sicht ist dies eine absolut gültige Entscheidung, sofern das Management die Konsequenzen klar versteht, dh, dass es schwieriger ist, den Fehler später als jetzt zu beheben.
Das Festhalten an "Keine neuen Funktionen, bis alle Fehler behoben sind" ist möglicherweise nicht die beste Wahl für Unternehmen. Sie haben bereits die Einschränkungen erwähnt, sodass es nicht erforderlich ist, sie zu erläutern.
Abgesehen davon besteht das Risiko, dass sehr wichtige Funktionen implementiert werden, bevor kleinere Fehler behoben werden: Wo sollen die Grenzen gesetzt werden? Ist eine von 1 000 Kunden angeforderte Funktion wichtiger als ein Fehler von 100 Kunden? Wie kann bewertet werden, ob eine bestimmte Funktion ausgeführt werden soll, bevor ein bestimmter Fehler behoben wird?
Ohne strenge Regeln und wenn das Management den Entwicklungsprozess nicht sehr gut versteht, kann es sein, dass Sie sich in einigen Jahren mit einem Überangebot an Fehlern konfrontiert sehen, die als nicht wichtig genug angesehen wurden, um vor einem weiteren ausgefallenen Feature behoben zu werden.
quelle
Sie sollten nicht nur auf bestimmte Details Ihrer Situation eingehen, sondern auch sicherstellen, dass Sie die grundlegenden Dinge richtig verstanden haben.
In diesem Zusammenhang halte ich es für sehr wichtig, darauf hinzuweisen, dass die von Ihnen erwähnte Richtlinie "Fehler haben immer eine höhere Priorität als Features", insbesondere weicht das Wort immer von mindestens zwei der vier im Agile Manifest genannten Prinzipien ab :
Ich bestehe nicht darauf , dass Sie Politik ändern sollte, weil ich fest davon überzeugt , dass man sein sollte agil über sehr Anwendung von agilen Prinzipien.
Sie sollten sich jedoch zumindest bewusst sein, wann Sie abweichen und verstehen, ob und wie eine Abweichung gerechtfertigt ist . Einfach ausgedrückt, stellen Sie besser sicher, dass das, was Sie als "agil" bezeichnen, nicht in eine sinnlose Fälschung übergeht, die in dem Manifest von Half-Arsed Agile so eloquent behandelt wird :
Der Vollständigkeit halber scheint die Null-Fehler-Politik nicht nur von agilen Prinzipien abzuweichen.
In nicht-agilen Projekten, an denen ich teilgenommen habe, wurde es allgemein als unklug angesehen , Programmierer Zeit mit der Behebung von Fehlern zu verbringen, die nicht wichtig genug sind, um die Verzögerung der Veröffentlichung von Funktionen mit hoher Priorität zu rechtfertigen.
Aus diesem Grund hat das Management in der Regel einige Anstrengungen unternommen (genauer gesagt, investiert ), um zu entscheiden, welche Fehler auf die nächste Veröffentlichung warten könnten.
Wenn Sie nicht an unternehmenskritischer Software arbeiten, würde ich Ihnen empfehlen, die Fähigkeiten und Denkfähigkeiten Ihres Managements genauer einzuschätzen.
Ich meine, so wie Sie es beschreiben, sieht es eher so aus, als ob sie einfach nicht in der Lage sind, Bugs und Features richtig zu priorisieren. Wenn dies der Fall ist, wenn sie eine relativ routinemäßige Aufgabe nicht bewältigen können, wozu sind sie sonst nicht in der Lage? Konkurrenzfähiges Gehalt anbieten? Karrierechancen? Arbeitsbedingungen?
quelle
Wie Sie zu Recht angeben, besteht bei einer Null-Fehler-Richtlinie das Risiko, dass nichtkritische Probleme ignoriert oder unter den Teppich geschoben werden, da dies nicht der beste Zeitpunkt ist, um sie zu lösen.
Was Sie tun können, ist, wenn ein neues Problem gemeldet wird, eine Drei-Wege-Entscheidung zu treffen:
Auf diese Weise werden die weniger wichtigen Themen nicht ganz vergessen, aber sie zwingen auch nicht alle neuen Glanzmerkmale aus dem nächsten Sprint. Das "Verwandeln in eine Story" dient nur dazu, dass das Management weiterhin behaupten kann, dass Sie eine Null-Fehler-Richtlinie befolgen, und der Product Owner in der Lage sein sollte, die Wichtigkeit des Problems mit der Wichtigkeit der Funktionen im Backlog in Einklang zu bringen.
Beachten Sie, dass bei diesem Verfahren Probleme wie die von Ihnen erwähnte Bildlaufleiste am Ende des Projekts möglicherweise immer noch ungelöst sind. Dies lag jedoch daran, dass niemand dies für wichtig genug hielt (einschließlich der Kunden), und nicht daran, dass dies nicht der Fall war Zeitpunkt, zu dem das Problem gefunden wurde.
quelle
Ich mag Sie Schema jedoch, wie Sie festgestellt haben, es braucht nur eine kleine Änderung, um es zu funktionieren
Mein Vorschlag ist, die Fehlerpriorität bei jedem Sprint zu erhöhen. Nehmen wir an, Sie haben einen Fehler auf Stufe 5 (Skala 1 - hoch, 5 = niedrig). Es beginnt mit 5, 4 Sprints später, es ist ein Level 1 Bug. Die für die Prioritätsberechnung erforderliche Einstellung lautet jedoch "Aktuelle Priorität - Anzahl der Sprints" und nicht "Erhöhen Sie die Priorität anstehender Fehler am Ende jedes Sprints". Dadurch wird verhindert, dass die Priorität auf "Niedrig" zurückgesetzt wird, um sie weiter aufzuschieben.
Level 1 Bugs müssen im nächsten Sprint behoben werden ......
Ist einfach zu erklären, einfach zu implementieren ....
Nun, soweit es Feature-Anfragen betrifft, vielleicht eine andere Rate. Nach einer Weile muss die Anfrage bearbeitet werden - entweder erledigt oder verworfen, um einen Rückstand von Funktionen zu vermeiden, die keinen Wert haben ......
quelle
Sie geraten in Schwierigkeiten, wenn Sie versuchen, in der Softwareentwicklung zu wörtlich oder unerbittlich zu sein, so sehr wir alle wirklich wollen, dass die Dinge geschnitten und trocken werden. Fehler sollten behoben werden, bevor neue Funktionen hinzugefügt werden, aber ich würde trotzdem die Wichtigkeit der einzelnen berücksichtigen, wenn ich diese Entscheidung zusammen mit dem Umfang des Problems treffe. Es gibt zu allem Ausnahmen.
Einige Anwendungen sind so groß, dass sie Abschnitte haben, die überhaupt nicht zusammenhängen. Ich verstehe nicht, warum jedes neue Feature des Kreditorenmoduls zurückgestellt werden muss, da es in der GUI für Leistungen an Arbeitnehmer einige ärgerliche Fehler gibt. Wenn im Einkaufsbereich der Unternehmenswebsite ein Problem mit der GUI eines Assistentenschritts aufgetreten ist, beheben Sie das Problem. Viele Fehler müssen jedoch möglicherweise behoben werden, wenn die hinzugefügte Funktion auf eine zusätzliche Sicherheitsanforderung, geschäftliche Anforderungen und insbesondere auf Änderungen der Vorschriften zurückzuführen ist.
Abgesehen von einer großen Diskrepanz in der Zeit und den Ressourcen, die für die Fertigstellung erforderlich sind, ist es am besten, einige Benutzer- / Kundeninformationen einzuholen. Wenn sie mit dem Fehler leben können, wenn dies bedeutet, dass sie die neue Funktion erhalten, fügen Sie die Funktion hinzu. Das Ziel sollte es sein, zu vermeiden, dass sich Insekten ansammeln. Irgendwann werden viele kleine Probleme zu einem großen Problem.
quelle
Das Schreiben von Tests zum Anzeigen des Fehlers beim Ausführen des Tests ist ein guter Anfang, um die Fehler zu beheben. Aber wenn wir versuchen, die Fehler zu beheben, die die geringste Priorität haben, sollten wir zweimal überlegen, bevor wir fortfahren. Ich wollte nicht überspringen, es zu reparieren. Wir können jedoch unkritische Ressourcen verwenden, um diese Fehler zu beheben. Nehmen wir an, wir trainieren in meinem Team die neuen Ressourcen mit den am wenigsten priorisierten Fehlern in der Fehlerliste. Auf diese Weise erhalten wir die Möglichkeit, die neue Ressource zu schulen und ihnen ein gewisses Vertrauen zu vermitteln, dass sie bei der Eingabe in die Anwendung eine Korrektur vorgenommen haben. Dies wird sie sicherlich dazu bringen, sich freiwillig für die nächste priorisierte Aufgabe zu melden.
Hoffe das hilft :)
quelle