Sollte ein technisches Schulden- / Technologie-Upgrade als Feature (bestimmte Punkte) oder als lästige Pflicht (ohne Punkte) geplant werden?

8

Was sollen wir für User Stories für technische Schulden in Pivotal Tracker tun? Sollten wir diese als Merkmale (Punkte geben) oder als Aufgaben (keine Punkte geben, wodurch die Geschwindigkeit verringert wird) betrachten?

Ich bin verwirrt, was als lästige Pflicht anzusehen ist:

  1. Vervielfältigung von Code - Es ist klar, dass, wenn wir denselben Code an mehreren Stellen platziert haben, dies eine wirklich schlechte Code-Praxis ist und Entwickler im Team mehr darüber nachdenken sollten, Software wartbar zu machen, Refactoring durchzuführen und das Team Zeit für Codeüberprüfungen aufwenden sollte. Da dies alles Reife, Zeit und Erfahrung auf Codeebene erfordert, ist es besser, weniger Punkte zu liefern, damit die Codequalität nicht beeinträchtigt wird. Daher sollten solche Fehler bestraft und die Geschwindigkeit verringert werden, indem keine Punkte für die Arbeit vergeben werden.

  2. Technologie-Upgrade - Wie bei der Modularisierung von JS, HTTP2, React, MVC oder einer anderen neuen / besseren Technologie. Diese Schritte verbessern die Leistung und Wartung des Codes. Aber sollte dies eine Aufgabe oder ein Feature sein? Ich glaube, so ist die Technologiewelt, hin und wieder kommen neue Technologien und man muss darauf migrieren. Daher sehe ich keinen Grund darin, die Geschwindigkeit des Teams für solche Arbeiten zu bestrafen. Vorschläge?

  3. Duplizierung / Substandard-Code in Legacy-Code - Nur wenige Codes sind seit langer Zeit unberührt. ODER wenn ein neues Team gebildet wird, die Codebasis jedoch etwas alt ist, stehen wir vor dieser Herausforderung. Das Team sagt, dass sie diesen Abschnitt nicht codiert haben. Warum sollte ihre Geschwindigkeit dadurch bestraft werden, dass solche technischen Schulden ausgewählt werden, die sie nie geschaffen haben?

  4. Aufgrund der Dringlichkeit des Geschäfts unterdurchschnittlicher Code - Manchmal sind Entwickler aufgrund des Drucks von Wettbewerbern / Zielen / Unternehmen / Benutzern gezwungen, Funktionen so schnell wie möglich live zu übertragen. Sollte das Bereinigen eines solchen schlechten Codes auch als lästige Pflicht angesehen werden (ohne Punkte zu geben)? Dieses Mal ist das Entwicklungsteam nicht schuld. Warum sollte also die Geschwindigkeit gesenkt werden, obwohl sie in solchen Fällen meistens zusätzliche Stunden investieren?

Ich glaube, dass alle oben genannten Arten von Aufgaben, wenn sie mit Bedacht ausgeführt werden, die Geschwindigkeit des Teams in Zukunft verbessern sollten. Aber wie sollten wir das Gleichgewicht halten, um die Geschwindigkeit des Teams aufrechtzuerhalten und die technischen Fehler zu bestrafen, die das Team macht, indem wir schlechte Entscheidungen treffen?

Die Frage ist ähnlich wie: Sollten technische Schulden als Feature oder als Aufgabe (oder als Fehler) geplant werden? , aber ich habe keine überzeugenden Antworten gefunden, die alle 4 Punkte abdecken, also poste ich es auf eine andere Art und Weise neu.

Einzelgänger
quelle
2
Wenn Sie Endbenutzern keine neuen Funktionen bereitstellen, ist dies keine Funktion. Ein Geschwindigkeitsabfall aufgrund der Entscheidung des Teams, technische Schulden abzubezahlen, ist keine Strafe, sondern eine nützliche Information. (Offenlegung: Ich bin ein Pivot.)
Jonrsharpe
2
Ihre Benutzer interessieren sich wahrscheinlich nicht für Ihre SEO. Leistung Wenn Sie eine Benutzeranforderung zur Verbesserung der Ladezeiten überprüft haben, ist dies möglicherweise eine Funktion. Das Refactoring oder Wechseln von Plattformen, vermutlich in der Hoffnung, dass Sie in Zukunft bessere Funktionen schneller bereitstellen können, ist jedoch keine Funktion. Sie erhalten diese Punkte zurück, wenn Sie diese Funktionen bereitstellen.
Jonrsharpe
2
@jonrsharpe: Ungeachtet der Pflege und Ernährung Ihrer Benutzer, warum sollten Sie etwas planen , ohne ihm auch Kosten zuzuweisen ? Ich bin nicht begeistert von der Idee, auf mysteriöse Weise an Geschwindigkeit zu verlieren, weil technische Schulden ohne Story-Punkte nur aus Gründen der "Korrektheit" zurückgezahlt werden.
Robert Harvey
2
Abstimmung zum Abschluss als primär meinungsbasiert. In beiden Fällen ist alles in Ordnung, und am Ende ist dies alles Papierkram, der Ihnen dabei hilft, Dinge zu erledigen.
Telastyn
1
@sahil: Autsch. Technische Schulden entstehen oft außerhalb der Kontrolle des Softwareentwicklers. Der Druck des Managements, Software zu einem bestimmten Zeitpunkt freizugeben, kann ein Grund sein. Warum sollten sie dafür überhaupt bestraft werden? Wenn es sich lohnt, lohnt es sich, Kosten zuzuweisen.
Robert Harvey

Antworten:

8

Kurze Antwort: Die Tilgung technischer Schulden ist eine lästige Pflicht. Sie bieten keine neuen Funktionen für Endbenutzer, sodass nicht darauf hingewiesen wird.


Offizielle Antwort:

Fehler und Aufgaben sind standardmäßig nicht abschätzbar

Feature Stories werden geschätzt, weil sie zum Geschäftswert beitragen. Fehler und Aufgaben werden als Teil des normalen Overheads von Softwareprodukten betrachtet - sie treten im Laufe der Zeit auf und sind ein kontinuierlicher Overhead, ein fortlaufender Geschäftsaufwand. Die automatische Geschwindigkeitsberechnung von Tracker berücksichtigt dies als integrierte Kosten und schätzt, wie viel geschäftliche Arbeit pro Iteration ausgeführt werden kann. Auf diese Weise können Sie Ihre Planung auf den Geschäftswert, das Risiko und die Prioritäten konzentrieren. Daher werden Fehler und Aufgaben in Tracker normalerweise nicht geschätzt. Sie können die Schätzung für Fehler und Aufgaben in den Projekteinstellungen aktivieren. Wir raten jedoch dringend davon ab, die Fehler- und Aufgabenschätzung einzuschalten. Sie können es später nicht ausschalten, wenn Sie Ihre Meinung ändern.

https://www.pivotaltracker.com/help/articles/planning_with_velocity/#bugs_and_chores

Aus diesem Grund können Geschichten, die als Fehler und Aufgaben eingestuft sind, keine Schätzungen mit den Standardeinstellungen von PT zugewiesen werden. Ich denke jedoch auch, warum Sie diese Aufgaben nicht als Funktionen zählen sollten, nur um Punkte für sie zu erhalten.


Erstens denke ich nicht, dass Sie einen Geschwindigkeitsabfall als Strafe betrachten sollten: Es sind nur Informationen. Vielleicht war es etwas Natürliches, wie eine neue Person, der man beitreten musste, um zusätzliche Zeit mit dem Training zu verbringen. Vielleicht war es etwas Unerwartetes, das Ihre Kapazität reduzierte (z. B. Krankheit) oder zusätzlich konsumierte (z. B. "Stop the World" -Fehler). Vielleicht haben Sie die Funktionen aus irgendeinem Grund einfach nicht gut eingeschätzt. Daraus können Sie lernen. Oder vielleicht lag es daran, dass Sie sich als Team entschieden haben, die Tilgung einiger technischer Schulden vor der Bereitstellung neuer Funktionen zu priorisieren (und möglicherweise mehr Schulden zu machen).

Zweitens ist es nicht unbedingt ein Fehler, technische Schulden zu machen. Es ist nicht ideal, es versehentlich zu verursachen , aber wenn Sie sich entscheiden, z. B. das "schnelle und schmutzige" Ding jetzt in dem Wissen aufzubauen, dass Sie es später aufräumen müssen, zum Beispiel, damit Sie mehr Benutzerfeedback erhalten oder sich schwer tun können Frist, das ist eine bewusste Entscheidung, die Sie als Team getroffen haben und die in Ordnung ist.

Eine einfache Faustregel für die Frage, ob etwas eine Funktion sein soll, lautet: Interessiert es die Endbenutzer? Sie erwähnen die Verbesserung der Suchmaschinenoptimierung: Interessieren sie sich überhaupt dafür? Leistung, die ihnen vielleicht wichtig ist, aber andererseits möchten sie vielleicht lieber eine neue Funktion als das gleiche Material mit ein paar hundert Millisekunden weniger Ladezeit. Recherchiere: Frag sie, was sie wollen. Lassen Sie sich von ihnen helfen, Prioritäten zu setzen, für die Sie die Zeit des Teams am besten aufwenden können.

Möglicherweise entscheiden Sie, dass Ihre aktuellen Technologieentscheidungen Sie daran hindern, bestimmte Funktionen so effizient bereitzustellen, wie Sie möchten. In diesem Fall ist es durchaus sinnvoll, (erneut, absichtlich) Zeit damit zu verbringen, die gesamte oder einen Teil der Anwendung auf etwas Neues zu migrieren.

Ich glaube, dass alle oben genannten Arten von Aufgaben, wenn sie mit Bedacht ausgeführt werden, die Geschwindigkeit des Teams in Zukunft verbessern sollten.

Hier stimme ich Ihnen absolut zu, aber bekommen Sie dann keine Punkte für diese Aufgaben, die doppelt gezählt werden? Wenn Sie die Arbeit erledigen , damit Sie später mehr Funktionen bereitstellen können, sollten Sie die höhere Geschwindigkeit sehen, nachdem Sie sie ausgeführt haben, und nicht, während Sie sie ausführen.

Außerdem sollten Dinge wie Codeüberprüfungen und grundlegendes Refactoring im Lieferprozess (z. B. der "Refactor" -Teil des TDD-Zyklus) bereits Teil Ihrer laufenden Arbeit sein und daher bereits Teil der Gesamtgeschwindigkeit des Teams sein.


Offenlegung : Ich bin ein Pivot und arbeite für Pivotal Labs in London, aber nicht im Tracker-Team.

Jonrsharpe
quelle
Geschichten sind auch nicht abschätzbar. Das ist der Grund, warum Story Points und Geschwindigkeiten existieren.
Robert Harvey
@RobertHarvey Entschuldigung, um klar zu sein, dass das Zitat nicht besagt, dass es unmöglich ist, Fehler und Aufgaben zu schätzen (oder Features zu schätzen!), Aber dass Sie in PT standardmäßig einer Geschichte keine Schätzung zuweisen können wird nicht als Feature klassifiziert.
Jonrsharpe
7
"Sie bieten keine neuen Funktionen für Endbenutzer, daher wird nicht darauf hingewiesen." Das Festhalten an diesem Dogma ist der Hauptmechanismus für den Aufbau technischer Schulden. Die Arbeit wird für Stakeholder geschätzt und durchgeführt, die nicht unbedingt Endnutzer sind. Sie können eine Geschichte wie "Refaktorieren Sie diesen Code (was), um ihn für das Entwicklungsteam (für wen) wartbar zu halten (warum)".
Martin Maat
1
@ MartinMaat Ich bin anderer Meinung; zu sagen, dass die Geschwindigkeit niemals fallen darf, würde das tun. Es steht Ihnen frei, Ihre Aufgaben genauso zu schreiben wie Ihre Funktionen, aber das gibt ihnen keinen Benutzerwert.
Jonrsharpe
@MartinMaat 100% zustimmen. Dies erinnert mich GENAU an Eric Evans '"Responsibility Traps" -Rede von InfoQ vor einigen Jahren. infoq.com/presentations/design-strategic-eric-evans
RibaldEddie
4

Um konträr zu sein, behandeln wir Fehler und technische Schulden wie jedes andere PBI. Tatsächlich haben wir nicht einmal einen "Bug" -Typ. Alles ist ein PBI. Unser Auftragsbestand ist nach dem dem PBI zugewiesenen Geschäftswert geordnet. Infolgedessen wird einem bekannten Fehler mit Benutzerkontakt, der Probleme verursacht, ein hoher Geschäftswert zugewiesen, da Sie das Risiko eingehen, mit so etwas Geld zu verlieren, und dies wird wahrscheinlich eines der ersten Dinge sein, die getan werden. Auf der anderen Seite hat ein Fehler, der nicht wirklich große Auswirkungen hat und sich nicht auf das Endergebnis auswirkt, einen relativ niedrigen Geschäftswert und wird möglicherweise für eine Weile nicht behoben. Das ist eine wichtige mentale Mauer, die abgerissen werden sollte: Nicht jeder Fehler sollte behoben werden. Klingt nach Sakrileg, ich weiß, aber wenn der Aufwand für die Behebung des Fehlers größer ist als der geschäftliche Wert, den er behebt, dann ist der ROI negativ. Wenn Sie alles als PBI behandeln, haben Sie die Freiheit, diese Art von empirischen Entscheidungen zu treffen, ohne abgelenkt zu werden, nur weil es ein "Fehler" ist.

Ebenso spielt bei technischen Schulden immer noch ein geschäftlicher Wert eine Rolle. Einige technische Schulden können mit sehr geringen Kosten entstehen und langfristig bleiben, aber einige technische Schulden werden Ihr Geschäft im Laufe der Zeit töten und haben daher einen sehr hohen Geschäftswert. Der Schlüssel ist wieder zu erkennen, dass alles nur ein PBI ist. Alles geht in das Backlog und Sie arbeiten an Elementen in diesem Backlog basierend auf dem Wert, den sie dem Geschäft hinzufügen. Ob es sich um eine Funktion, einen Fehler oder eine technische Verschuldung handelt, spielt keine Rolle.

Dies hat auch den Vorteil, dass Sie Ihre Frage vollständig umgehen können. Da alles ein PBI ist, trägt alles zur Geschwindigkeit bei. Die Idee, Arbeiten zu machen, die nicht wirklich dimensioniert und in Ihrer Geschwindigkeit gezählt sind, ist für mich irgendwie verrückt. Sie erstellen im Grunde genommen ein riesiges Schwarzes Loch in Ihren empirischen Daten. Die Geschwindigkeit ist bereits eine ziemlich grobe Metrik. Sie basiert auf einer Schätzung, die auf noch mehr Schätzungen basiert. Fügen Sie eine Reihe variabler Arbeitsmengen hinzu, die nicht erfasst werden, und jetzt ist die Anzahl so gut wie bedeutungslos. Alles, was Ihr Team im Sprint macht, ist Teil Ihrer Geschwindigkeit.

Chris Pratt
quelle