Wie können wir die technische Schuld in Scrum registrieren?

Scrum betont, dass alle Mitglieder des Teams die technischen Schulden des Produkts kennen müssen. Aber manchmal sind diese Schulden nicht als einfache To-do-Liste greifbar. Sollten wir es als weitere Aufgabe im Product Backlog registrieren, um es in einem anderen Sprint zu überprüfen? Oder sollten wir es in ein Dokument schreiben, das sich auf dieses Produkt bezieht, damit das Team tatsächlich weiß, welche Aufgaben später in der Entwicklung behandelt werden sollten?

Ich sehe keinen guten Weg, diese Schuld in den Köpfen der Entwickler zu behalten; es kann später vergessen werden.

Antworten (4)

Scrum deckt technische Schulden durch Prognosen und Schätzungen auf

In der Regel erhöhen technische Schulden die Kosten für zukünftige Arbeiten am Produkt. Selbst wenn Sie die Schulden nicht explizit im Auge behalten, werden sie sich in der Regel als Belastung für Metriken wie die Geschwindigkeit des Teams im Laufe der Zeit zeigen.

Technische Schulden wirken sich wahrscheinlich auch auf die Schätzungen Ihres Teams von Product Backlog Items (PBIs) während der Sprint-Planung aus, da Crufty-Code (und verschuldete Produkte im Allgemeinen) intuitiv einen höheren Aufwand erfordern.

Technische Schuld explizit machen

Auch wenn Scrum implizit technische Schulden durch Geschwindigkeit aufdeckt und sie auch in PBI-Schätzungen widerspiegelt, ist es oft besser, die Schulden explizit im Product Backlog zu verfolgen. Einige Gründe dafür sind:

  1. Klärung, welche Arbeiten innerhalb des Projekts durchgeführt werden müssen, um die Schulden zu begleichen.
  2. Den Product Owner in die Lage versetzen, bei der Priorisierung zwischen technischen Schulden und neuen Funktionen Kompromisse einzugehen.
  3. Stakeholdern Transparenz über die versteckten Kosten der Produktentwicklung verschaffen.
  4. Das Projekt ehrlich halten, indem Arbeit als Arbeit behandelt wird. Technische Schulden sind nur eine weitere Art von Arbeit, die noch zu erledigen ist.
  5. Das Gesetz der Transparenz von CodeGnome ehrend: „Keine unsichtbare Arbeit, niemals!“

Wenn Sie technische Schulden einfach als Arbeit behandeln, die priorisiert werden muss, im Gegensatz zu einer speziellen Art von nicht arbeitsbezogener Arbeit, dann ist das Product Backlog sicherlich der richtige Ort dafür.

Wie man PBIs für technische Schulden schreibt

Erstellen Sie PBIs für die technische Schuld genauso wie für jede andere Art von Arbeit. Die PBIs sollten auf einer beliebigen Granularitätsebene geschrieben werden, die für die Priorisierungsebene der Arbeit innerhalb des Backlogs angemessen wäre.

Beispielsweise könnten Sie einige wertvolle, aber nicht unbedingt erforderliche Refactorings als Epos für „eines Tages“ aufbewahren. Im Gegensatz dazu sollten wesentliche Patches oder Überarbeitungen als individuelle User Stories geschrieben werden, wenn das Team bereit ist, die Arbeit während der Sprint-Planung oder während der Backlog-Verfeinerung zu zerlegen, wenn die Arbeit wahrscheinlich für einen bevorstehenden Sprint vorgesehen ist.

Nur ein kleiner Nitpick: Velocity ist kein Teil von Scrum. Aber der Punkt gilt immer noch - technische Schulden werden sich irgendwie zeigen. Wenn Sie Kanban mit Scrum verwenden, wird sich dies wahrscheinlich in Form von längeren Zykluszeiten im WIP zeigen. Wenn Sie die Geschwindigkeit verfolgen, sehen Sie sie dort. Unabhängig davon ist das Ergebnis im Team genau das, was Sie sagen: Das Tragen technischer Schulden wird Ihre Product Backlog Items mit einem höheren Aufwand belasten, da das Team entweder Zeit damit verbringen muss, diese Probleme zu beheben oder diese Probleme zu umgehen.
@ThomasOwens Sie haben Recht: Der Scrum Guide verweist mehrfach auf empirische Prognosen und bietet einige Beispiele (z. B. Burndowns), schreibt jedoch nicht die Verwendung von Geschwindigkeit oder einer bestimmten Metrik für Prognosen oder Schätzungen vor. Ich weiß es zu schätzen, dass Sie auf die Unterscheidung hingewiesen haben, und habe den Wortlaut angepasst, um ihn besser widerzuspiegeln.

Die Standard-Scrum-Antwort wäre, das Team nach seiner Meinung zu fragen. Scrum-Teams sollen sich selbst organisieren, was bedeutet, dass sie wählen können, wie sie ihre Arbeit am besten erledigen. Das Team sollte in der Lage sein, das Management von technischen Schulden als Problem zu identifizieren und dann Ideen zu entwickeln.

In der realen Welt ist das Team jedoch manchmal nicht erfahren oder versiert genug, um diese Probleme zu erkennen, bevor sie zu spät sind. Ein gutes Coaching durch jemanden, der diese Probleme schon einmal erlebt hat, kann dabei helfen, das Team anzuleiten, die richtigen Fragen zu stellen und über bestimmte Probleme nachzudenken, bevor sie zu Problemen werden.

Ich hätte nichts dagegen, wenn das Team technische Schuldenarbeiten im Product Backlog nachverfolgen möchte. Ich denke, dass dies wahrscheinlich das Richtige ist - es kann mit dem Rest des Product Backlogs überprüft werden. Wenn es Abhängigkeiten zwischen technischen Schulden und Funktionen gibt (z. B. würde die Auflösung der technischen Schuld dazu führen, dass eine Funktion mit höherer Qualität in kürzerer Zeit geliefert wird), können diese vom Product Owner und dem Entwicklungsteam identifiziert und verwaltet werden.

Ja, technische Schulden landen am Ende des Tages auf die eine oder andere Weise in Ihrem Aufgabenverfolgungssystem.

Ein naheliegender Weg:

  • Joe implementiert Feature X und stellt fest, dass es in Komponente Z ein Problem Y gibt.
  • Joe fährt fort, wie in der Sprintplanung geplant, um das zu tun, was er tun muss, registriert jedoch sofort eine neue Aufgabe „Fix Y in Z“ im Backlog. Vielleicht markiert er es mit einem Tag "technische Schuld", wenn Sie einen solchen Mechanismus in Ihrem System haben.
  • Während der nächsten Sprintplanung erinnert sich Joe entweder an dieses Problem und bittet den Product Owner, es in den kommenden Sprint aufzunehmen; argumentieren, warum es gut ist usw.
  • Alternativ/zusätzlich könnten das Team + der Product Owner zu dem Schluss kommen, dass jeder Sprint etwas Zeit in die Behebung solcher „Schulden“-Probleme investieren wird, sodass Joe nicht so viel argumentieren muss.

Außerdem wird es den Teammitgliedern im Laufe der Zeit schon in der Planungsphase ziemlich offensichtlich, wo die tatsächlichen Schulden liegen. Sicher, es gibt einige heimtückische Schulden, die sehr langsam zunehmen, aber einige Dinge sind ziemlich offensichtlich. Auch diese sollten im Rückstand landen.

Schließlich können Sie ein proaktives Schuldenmanagement betreiben, indem Sie beispielsweise regelmäßig sicherstellen, dass alle Komponenten von Drittanbietern regelmäßig aktualisiert werden. dass veraltete Komponenten (die seit X Monaten/Jahren keine neuen Versionen haben) auslaufen und so weiter. All dies sind wiederum einfach weitere Rückstandseinträge, die als „technische Schulden“ gekennzeichnet sind.

Sollten wir es als weitere Aufgabe im Product Backlog registrieren, um es in einem anderen Sprint zu überprüfen? Oder sollten wir es in ein Dokument schreiben, das sich auf dieses Produkt bezieht, damit das Team tatsächlich weiß, welche Aufgaben später in der Entwicklung behandelt werden sollten?

Ich denke, Sie sollten eigentlich einen gut strukturierten Plan haben, wie Sie technische Schulden angehen können.

  • Erstellen Sie einen technischen Schuldenrückstandsplan
  • Beginnen Sie mit den "kritischeren" Elementen. Ich persönlich würde mit denen beginnen, die dem Team klar machen würden, warum es so wichtig ist, technische Schulden loszuwerden, einige Ideen, um diese Aufgabe in meinem letzten Punkt zu finden
  • Fügen Sie jedem Sprint Aufgaben hinzu, die dem Abbau von technischen Schulden gewidmet sind
  • Finden Sie Metriken, um die Bedeutung dieser Aufgaben für den Gesamtzustand des Projekts zu erfassen. Einige Beispiele sind:

    • Können Sie mehr Aufgaben pro Woche erledigen?
    • Ist eine genauere Schätzung möglich?
    • Hat sich die Zeit für das Onboarding (und Offboarding) von Personen verbessert?