Soll die technische Verschuldung als ein Feature oder eine Aufgabe (oder ein Bug) geplant werden?

19

Ich habe meinem Pivotal Tracker-Board einige User Stories hinzugefügt, die sich mit technischen Problemen befassen. Sollte ich sie als Merkmale (Beibehalten des Geschwindigkeitsniveaus) oder als Aufgaben / Fehler (Verringern der Geschwindigkeit) betrachten? Ich verstehe, dass es auf lange Sicht keinen Unterschied macht, ob ich das eine oder das andere konsequent gemacht habe, aber jedes Mal, wenn ich eine technische Schuldenstory hinzufüge, muss ich die Entscheidung treffen.

Einige Gedanken:

  • Sie sind eigentlich keine Käfer, sie brechen nichts
  • Die Benutzer haben nichts angefordert, da die Implementierung auf niedriger Ebene sie nicht beeinträchtigt, die langfristige Entwicklung jedoch erleichtert wird
  • Wenn Sie Funktionen wie Geschichten definieren , den Wert auf die Benutzer hinzufügen, gut a) sie nicht wie die Benutzer keinen direkten Nutzen sehen, aber dann b) sie tun , weil sie zukünftige Entwicklung / Wartung möglich zu machen , das tut Wert hinzufügen, nur gerade nicht

Ich entscheide nicht, ob ich die Arbeit tatsächlich machen soll oder wann ich sie terminieren soll. Ich weiß nur, was ich in meinem Projektmanagement-Tool als technische Schulden bezeichnen soll und warum.

Rebecca Scott
quelle
1
Siehe auch

Antworten:

17

Es ist eine Funktion.

As a [Developer], 
I want to [refactor the whizbang library] 
in order to [simplify maintenance and speed execution]

Es wird wie alle anderen Funktionen definiert, geplant und nachverfolgt.

Wenn die Implementierung dieser Funktion (für den Kunden oder für Sie) nicht sinnvoll genug ist, um jemals geplant zu werden, liegt ein anderes Problem vor.

Steven A. Lowe
quelle
1
Aha. Fantastische Antwort. Ich hatte nicht an Geschichten gedacht, die aus meiner Sicht geschrieben wurden, aber es ist sinnvoll für mich, ein interner Entwickler zu sein, da ich auch als Kunde auftreten muss. Vielen Dank!
Rebecca Scott
5
Ich muss nicht zustimmen. Aus dieser Perspektive würde praktisch alles - sogar das Einrichten meiner IDE oder der Erwerb eines SCM-Kontos - wie ein "Feature" aussehen ...
Péter Török,
2
@ Peter - Nicht unbedingt. Das Einrichten Ihrer IDE ist unvermeidlich. andere Dinge fallen einfach in die Kategorie "Dinge, die erledigt werden". Aber das Ersetzen eines Frameworks oder so etwas ist ganz anders. Das Unternehmen sollte sich dessen bewusst sein, was Sie tun, was für einen Nutzen es hat, und es sollte ihm gestattet sein, es gegenüber anderen Arbeiten zu priorisieren. Somit ist es in jeder Hinsicht ein Merkmal.
pdr
4
Sicherlich sollte eine Funktion dem Produkt einen Mehrwert verleihen? Refactoring bietet keinen solchen Mehrwert, sondern ermöglicht es Entwicklern, effizienter daran zu arbeiten und das Risiko von Fehlern zu verringern. Ein Mehrwert aus dieser Art von Dingen wäre ein sekundärer Effekt. Dies eine Funktion zu nennen, wäre einfach eine Möglichkeit, sie zu präsentieren, damit der Product Owner sie mit größerer Wahrscheinlichkeit priorisieren kann.
David Neale
3
-1 Die Nichterfüllung Ihrer Aufgabe sollte niemals als Merkmal behandelt werden.
Martin Wickman
18

Die (Rückzahlung) von technischen Schulden ist imho kein Merkmal , da der Kunde nicht qualifiziert ist, Entscheidungen darüber zu treffen . Am wichtigsten ist, dass der Kunde nicht entscheiden kann, wann er fertig ist. Außerdem ist der Kunde vollständig auf Sie angewiesen, um die Vorteile zu erläutern. Sie sind der Meinung, dass eine technische Verschuldung vorliegt, und es liegt an Ihnen, zu entscheiden, wie Sie diese beheben möchten und wann Sie fertig sind. Technische Schulden wirken sich auf Ihre (zukünftige) Geschwindigkeit aus, nicht auf die Wahrnehmung der Software durch den Kunden. Wenn es keine Schulden gäbe, wären Sie produktiver. Und die Geschwindigkeit, die Sie bisher gemessen haben, ist falsch, da Sie sich mehr Zeit genommen haben sollten, um den Code in Form zu halten.

Ich denke, Sie sollten dies mit Ihrem Kunden kommunizieren, aber es liegt nicht in seiner Kontrolle. Man könnte so etwas sagen: „Wir haben bisher ein paar Abkürzungen vorgenommen, die wir korrigieren müssen. Dies bedeutet, dass unsere Geschwindigkeit in den nächsten paar Iterationen ein wenig sinken wird, aber dies soll sicherstellen, dass wir auf lange Sicht eine wartbare Software haben. '

Wenn Sie weiterhin an der Funktion des Kunden arbeiten, können Sie sich weiterhin darauf konzentrieren, die Software für den Kunden zu verbessern, anstatt eine akademische Aufgabe zu übernehmen, um das perfekte Design zu finden (das ist etwas, mit dem ich manchmal persönlich zu kämpfen habe).

Jaap
quelle
Damit einverstanden. Dies ist keine Funktion, da es nicht das Anliegen des Kunden ist, und es ist auch nichts, worüber er sich im Klaren sein sollte (meiner Erfahrung nach sehen sie es als Zeitverschwendung an , wenn dem Kunden bewusst ist, dass Sie den Code umgestalten / reparieren, um technische Schulden abzuzahlen und Geld , so ist es am besten, sie wissen nicht, dass Sie es überhaupt tun).
Wayne Molina
+1 Dies ist auch ein gültiger Standpunkt zu diesem Thema. Ich mag es, es als Feature zu behandeln, weil es sich dann gut in die normalen Planungs- und Verfolgungsmechanismen einfügt. Es ist jedoch schwierig, es dem Kunden zu erklären.
Steven A. Lowe
+1, dies ist die einzige Antwort, die verdeutlicht, wie die Geschwindigkeitsberechnung falsch wird, wenn Sie "technische Aufgaben" als Merkmale zählen.
Doc Brown
15

IMHO eine Aufgabe zur Beseitigung der technischen Schulden ist definitiv kein Merkmal. Es könnte in die "Bug" -Abteilung geschaufelt werden, aber es würde die Definition von Begriffen erweitern, da es wiederum nicht zu Verhaltensänderungen führt, die von Benutzern beobachtet werden können.

Ich würde es nur eine Wartungsaufgabe nennen. In jedem Entwicklungsprojekt gibt es eine Menge solcher Aufgaben, wie das Einrichten einer Entwicklungs- / Testumgebung, das Zusammenstellen von Testdaten, das Zusammenführen von Zweigen in SCM usw. Keines dieser Aufgaben kann von den Benutzern direkt beobachtet werden, aber wenn sie nicht regelmäßig ausgeführt werden, steigt die Entwicklung Kosten und Fehlerrate auf lange Sicht.

Es ist jedoch möglicherweise nicht erforderlich, sie als separate Aufgaben zu behandeln (es sei denn, sie sind sehr umfangreich und / oder Sie stehen derzeit nicht unter dem Druck, neue Funktionen zu implementieren). In der Regel ist es möglicherweise besser, nur zu ermitteln, wann für ein neues Feature Refactoring- / Writing-Unit-Tests usw. erforderlich sind, und diese im Rahmen der Entwicklung des neuen Features zu behandeln. Dies kann sowohl für das Management als auch für Endbenutzer einfacher zu erklären sein (wenn diese wissen möchten, wofür Sie Ihre Zeit verwenden). Update: Außerdem hilft es Entwicklern, sich auf den Wert des Refactorings zu konzentrieren. Um des Refactorings willen ist es einfach, sich in das Refactoring hineinzuversetzen. Daher ist es meiner Meinung nach nützlich, sich darauf zu konzentrieren, welchen Mehrwert ein bestimmtes Refactoring aus Kundensicht bringt.

Péter Török
quelle
1
Ich bin damit einverstanden, dass die Umgestaltung von technischen Schulden aufgenommen werden sollte, wenn dies für ein neues Feature erforderlich ist, aber ich lese diese Frage als Tilgung von technischen Schulden, unabhängig davon oder bevor dies für ein neues Feature erforderlich ist.
Steven A. Lowe
@Steven, das war auch meine Interpretation. Die Verknüpfung der technischen Schuldenrückzahlung mit einer verwandten Funktion ist nur ein Vorschlag.
Péter Török
3

Ich würde es ein nennen improvement.

Kein Fehler, weil nichts kaputt ist.

Auch kein Feature, da Refactoring keine Anfrage Ihres Kunden ist. (weil es funktioniert!).

Die meisten Tracking-Systeme unterstützen improvementstandardmäßig einen Fehlertyp. Andernfalls können Sie den Typ wahrscheinlich trotzdem ändern.

Wesley van Opdorp
quelle