Sind Bemühungen zur Verbesserung der Qualität ein Hindernis für die Einhaltung des Zeitplans in Scrum?

Lassen Sie mich damit beginnen, einige Rollen eines Scrum Masters hervorzuheben, wie sie von der Scrum Alliance zitiert werden :

Der ScrumMaster arbeitet auch mit dem Entwicklungsteam zusammen, um die technischen Praktiken zu finden und umzusetzen, die erforderlich sind, um am Ende jedes Sprints zu Done zu gelangen.

Eine weitere dort genannte Verantwortung des ScrumMasters ist die Beseitigung von Hindernissen für den Fortschritt des Teams. Diese Hindernisse können außerhalb des Teams liegen (z. B. mangelnde Unterstützung durch ein anderes Team) oder intern (z. B. wenn der Product Owner nicht weiß, wie er das Product Backlog richtig vorbereiten soll). Allerdings fördert der ScrumMaster die Selbstorganisation, was bedeutet, dass das Team selbst Probleme beseitigen sollte, wo immer dies möglich ist.

Einige andere erwähnte Verantwortlichkeiten umfassen die Unterstützung eines PO bei der Erstellung und Pflege von Produktrückständen, die Erleichterung von Meetings und die Sicherstellung, dass der Scrum-Prozess strikt eingehalten wird.

Ich arbeite in einer agilen Umgebung mit 6 Scrum-Teams, als Entwickler in einem der Teams. Wir verfolgen Scrum professionell und wie erwartet verfolgt der Scrum Master die Entwickler, um alle User Stories bis zum Ende des Sprints fertig zu stellen, da wir die Lieferung direkt während der Sprintplanung festschreiben (ohne wirklich auf die technischen Aspekte einzugehen). Offensichtlich wird vom Scrum Master nicht erwartet, dass er etwas über Code weiß oder wie zeitaufwändig/schwierig eine User Story ist; alles, was er will, sind fertige User Stories.

Betrachten wir nun, was Robert Martin in seinem Buch Clean Code zu sagen hat :

Die meisten Manager wollen guten Code, selbst wenn sie sich mit dem Zeitplan beschäftigen. Sie mögen den Zeitplan und die Anforderungen mit Leidenschaft verteidigen, aber das ist ihre Aufgabe. Es ist Ihre Aufgabe, den Kodex mit der gleichen Leidenschaft zu verteidigen.

Okay, hier kommt also meine beschreibende Frage: Wir alle wissen, dass das Schreiben von sauberem und wartbarem Code je nach Aufgabe zeitaufwändig sein kann (zum Beispiel erfordern architektonische Arbeiten normalerweise viel Zeit und Mühe). Nun, wenn das Schreiben von sauberem Code und dessen Wartung ein wichtiger Aspekt in der Softwareentwicklung ist, warum weist Scrum Scrum Mastern (die keine Programmierkenntnisse haben) die Rolle zu, Entwickler dazu zu bringen, schnell die „Definition of Done“ vor dem Ende von zu erreichen Sprint? Aus diesem Grund kümmern sich die meisten Entwickler oft nicht viel darum, wiederverwendbaren Qualitätscode zu schreiben, und schreiben einfach eine Menge Code, nur damit die Funktion implementiert wird. Anstatt Entwickler vor Hindernissen zu schützen, wäre es nicht angemessen zu folgern, dass ein Scrum Master ein Hindernis beim Schreiben von sauberem Code ist?

Jetzt könnte jemand argumentieren, dass Scrum Master dies tun sollen, damit die Entwickler ihre Zusagen einhalten und die Features geliefert bekommen. Aber ich denke, wir haben bereits den Punkt angesprochen, dass Scrum Master grundsätzlich die Selbstorganisation fördern und das Team selbst Probleme beseitigen sollte, wo immer dies möglich ist. Es ist ziemlich offensichtlich, dass, wenn das Team die Features nicht wie zugesagt liefert, sie letztendlich die Hauptlast des höheren Managements tragen müssen, dessen Gedanke die Entwickler automatisch dazu bringen sollte, auf ihre Zusagen hinzuarbeiten, ohne sie daran zu hindern, guten Code zu schreiben .

Mein Punkt ist nicht dagegen, Scrum Master zu haben, ich stimme definitiv allen anderen Verantwortlichkeiten eines Scrum Masters zu, abgesehen von Rennentwicklern, um die Aufgaben zu erledigen.

Kann ich zu Recht erwarten, dass der Scrum Master mir die nötige Zeit gibt, um wiederverwendbaren Code zu schreiben?

Ich sehe ein großes Missverständnis in Ihrer Frage zu Scrum: Der Scrum Master ist bereits Mitglied des Teams, höchstwahrscheinlich ist diese Person ein Entwickler, der an einigen der Geschichten arbeitet. Dies ist nicht unbedingt eine Managementrolle.

Antworten (7)

Diese Frage scheint von zwei Missverständnissen über Scrum herzurühren.

Ich verstehe nicht wirklich, wie daraus folgt, dass Scrum Master eine Qualitätsminderung verursachen, indem sie sich auf die Definition of Done konzentrieren. Die Definition of Done schreibt nicht der Scrum Master, sondern das Team. Der Scrum Master hilft dem Team, die Qualitätsstandards durchzusetzen, für die sich das Team entschieden hat.

Das Zitat von Clean Code trifft nicht zu. Die meisten Manager mögen von Zeitplänen besessen sein, aber Scrum Master nicht. Sie arbeiten mit einer anderen Variable, sie halten den Zeitplan fest und passen stattdessen den Umfang des Projekts an. Ein Scrum Master wird User Stories löschen, um die Deadline gleich zu halten.

Davon abgesehen denke ich jedoch, dass Scrum die Teamstruktur zu einfach betrachtet. Sie müssen Ihre Teams mit der richtigen Balance aus Erfahrung und Fähigkeiten aufbauen, damit sie sich selbst organisieren können. Wenn ein Team eine Lücke hat, kann es diese im Idealfall erkennen und um mehr Unterstützung in diesem Bereich bitten. Man kann nicht einfach zufällige Leute zusammenstellen und auf das Beste hoffen.

Bearbeiten: Wie Jmort253 erwähnt, haben Sie auch angenommen, dass ein Scrum Master nicht technisch ist. Das muss nicht der Fall sein, aber auf jeden Fall sollte der Scrum Master die Menge an Anweisungen und Entscheidungsfindung, die er tut, einschränken und stattdessen sicherstellen, dass er es dem Team erleichtert , [technische] Entscheidungen zu treffen.

Um diese bereits großartige Antwort zu einer perfekten Antwort zu machen, möchte ich noch ein drittes Missverständnis hinzufügen, dass der Scrum Master irgendwie nicht technisch ist. Der Scrum Master sollte jemand sein, der bereits Teil des Teams ist. Es ist kein separater Titel in der Organisation.
@Dave Hillier: Danke für deine Antwort. Ich stimme Ihrem Punkt zu, dass Scrum Master das Team nur anweisen sollten, die von den Entwicklern festgelegte DOD zu erreichen. Diese Frage ist mir gerade aus meiner persönlichen Erfahrung aufgefallen, da unser Scrum Master immer wieder Entwickler jagt, um unseren Code bald einzuchecken (ob der Code wiederverwendbar ist oder nicht). Erst wenn die Code-Review-Antwort ein Refactoring erfordert, beginnen wir mit dem Umschreiben dieser Bits und verschwenden am Ende mehr Zeit während des Sprints, was eindeutig hätte vermieden werden können, wenn der Scrum Master uns in unserem eigenen Tempo arbeiten lassen würde. Auch Entwicklern sollte man vertrauen.
@Dave Hillier: Ich weiß deine Antwort wirklich zu schätzen. Ich hätte Ihre Antwort nur positiv bewertet, wenn ich einen Ruf von über 15 gehabt hätte.
@ComputerScientist ein Scrum Master, der Sie ermutigt, sich regelmäßig zu melden, ist in Ordnung, da dies eine gute Praxis ist. Was das Refactoring betrifft, vermute ich, dass Sie es zu groß machen. Siehe Refactoring.com . Refactorings sollten klein sein und häufig durchgeführt werden.
@Dave Hillier: Nun, wahrscheinlich. Obwohl es etwas ist, das viele Entwickler erlebt haben, die ich gesehen habe. Am Ende beschweren sie sich nur, dass sie einen wiederverwendbaren Code schreiben wollten, aber aus Zeitgründen und Druck nicht konnten.
@ComputerScientist Das höre ich auch oft. Ich habe dieses Problem aber nicht, weil ich ständig umgestalte.

Denken Sie daran, dass Ihr Scrum Master Sie bittet, eine Verpflichtung einzuhalten, die Sie als Team zu Beginn Ihres Sprints eingegangen sind.

Wenn Ihr Team ständig damit zu kämpfen hat, seine Verpflichtungen einzuhalten, ohne die Codequalität zu opfern, würde ich vorschlagen, dass Sie dies in Ihrer nächsten Retrospektive besprechen.

Gründe, die ich dafür gesehen habe:

  • Das Team fühlt sich unter dem Druck, aufgrund von Fristen unrealistische Schätzungen abzugeben.
  • Das Team hat das technische Design vor der Schätzung überhaupt nicht berücksichtigt.
  • Irgendetwas hat dazu geführt, dass die Geschwindigkeit des Teams gesunken ist (z. B. Änderungen in Teammitgliedern), aber es wird bei der Planung nicht berücksichtigt.
  • Sprints sind zu lang (es ist einfacher, über einen kürzeren Zeitraum genauer zu planen).
  • Geschichten sind zu groß (so schwer abzuschätzen).

Das sind aber nur Spekulationen. Letztendlich werden Sie die Ursache nicht kennen, wenn Sie sich nicht alle zusammensetzen und darüber diskutieren.

Wenn Sie feststellen, dass eine Geschichte zu einem bestimmten Zeitpunkt während der Entwicklung viel komplizierter ist als zunächst angenommen, stellen Sie sicher, dass Sie dies so früh wie möglich bei Standups ansprechen. Notieren Sie Geschichten, in denen dies passiert, und suchen Sie nach Trends. Vielleicht sind bestimmte Systeme schwer zu handhaben oder ein paar knorrige Codeteile mit schlechter Testabdeckung bringen Sie ins Stolpern.

Wir haben nicht wirklich Mühe, Verpflichtungen einzuhalten, es ist nur so, dass einige Entwickler Überstunden machen, sogar von zu Hause aus (was mir persönlich nichts ausmacht, aber einige tun es), um sicherzustellen, dass sowohl die Codequalität als auch die Zeitbeschränkungen eingehalten werden. Einige neigen schließlich dazu, die Codequalität zu übersehen und zielen einfach darauf ab, alle engagierten User Stories so schnell wie möglich durchzuarbeiten. Aus meiner bisherigen persönlichen Beobachtung denke ich, dass ein Grund dafür teilweise dem Scrum Master zugeschrieben werden kann, da sie uns immer jagen, um durch den Sprint zu kommen. Deine Begründung macht auch Sinn.
Das Sprint-Engagement sollte erreichbar sein, ohne Überstunden machen oder die Codequalität opfern zu müssen. Durch Überstunden und Qualitätseinbußen geraten Sie in eine Negativschleife; Ihre Geschwindigkeit steigt, weil Sie später arbeiten und die Qualität reduzieren, was bedeutet, dass Sie sich für die nächste Iteration mehr verpflichten und dann mehr Stunden arbeiten und die Qualität reduzieren müssen, um das nächste Sprintziel zu erreichen ...
Das hat für mich absolut Sinn gemacht! Allerdings müssen auch die geschäftlichen Anforderungen berücksichtigt werden, und die Festlegung auf geringere Funktionen kommt möglicherweise beim höheren Management nicht wirklich gut an. Aber das ist zu spezifisch für mein Szenario. Ich glaube, ich habe ein gewisses Verständnis dafür bekommen, wie Entwickler und Scrum Master in einem Sprint gut zusammenpassen und die Verpflichtungen erfüllen müssen. Danke @Ben.

@Ben und @Dave Hillier haben großartige Antworten gegeben und ich werde ihre ausgezeichneten Ratschläge nicht wiederholen, aber ich möchte Folgendes hinzufügen:

Der Scrum Master ist nicht für "Rennentwickler" verantwortlich. Wenn Sie einen Scrum Master haben, der „Entwicklern nachjagt, um alle User Stories bis zum Ende des Sprints fertigzustellen“, würde ich sagen, dass er es falsch macht.

Der Scrum Master steuert, befiehlt, leitet oder sagt dem Entwicklungsteam nicht, was es zu tun hat. Stattdessen haben sie eine unterstützende Rolle. Sie coachen, betreuen, lehren oder beraten, wie es die Umstände erfordern.

Bei der Frage nach Clean Code würde ich von einem guten Scrum Master erwarten, dass er sich dem Entwicklungsteam und der Definition of Done anvertraut.

In Bezug auf die Erfüllung der Prognose, die das Entwicklungsteam in der Sprint-Planung erstellt hat, würde ich erwarten, dass das Entwicklungsteam danach strebt, seine Prognose zu erfüllen, und ich würde erwarten, dass der Scrum Master ihnen hilft, diese Prognose auf jede erdenkliche Weise zu erfüllen.

GENAU DAS wollte ich auch sagen! Ich glaube, die Rolle eines Scrum Masters besteht nur darin, die Entwickler zu coachen und sie zu motivieren, es besser zu machen. Sie zu jagen, um Aufgaben zu erledigen, ist völlig falsch. Ich denke, jetzt verstehe ich die Rollen eines Scrum Masters besser und was in meinem Fall richtig/falsch gemacht wird. Vielen Dank.

Ich bin nicht "in" Scrum, aber ich denke, wir können dies als allgemeine Projektmanagementfrage umformulieren:

Sind Bemühungen zur Verbesserung der Qualität ein Hindernis für die Einhaltung des Zeitplans?

Die Antwort ist ganz klar "nein".

Nach dem wenigen, was ich über Scrum weiß, ist die Antwort von @Ben von größter Bedeutung – das Team stimmt einer Definition von „erledigt“ zu und verpflichtet sich dazu, die Qualität, Zeitplan, Kosten und alle anderen relevanten Faktoren umfasst.

Ich bin mir nicht sicher, ob von Entwicklern erwartet wird, dass sie sich für einen Sprint auf User Stories festlegen, nachdem sie die technischen Aspekte berücksichtigt haben. Aber soweit ich weiß, berücksichtigen wir sie nicht wirklich, weil der Scrum Master uns das nicht erlaubt. Er möchte, dass wir uns zu User Stories aus der Kundenperspektive verpflichten. Soll es so sein? Oder macht der Scrum Master das falsch? Außerdem drückt die umformulierte Frage meine Frage wahrscheinlich besser aus und passt zum Stack Exchange Q&A-Format.
Scrum-Teams muss es erlaubt sein, nicht funktionale Done-Kriterien bei ihrer Fähigkeit, sich auf eine Story festzulegen, zu berücksichtigen. Team-Story-Point-Schätzungen sollten Raum für die Vervollständigung der erledigten Kriterien bieten, da sie die Komplexität der Lieferung einer Story an einen Kunden beeinflussen. Done-Kriterien sollten eine integrierte Verpflichtung sein (auch wenn sie nicht in der User Story dokumentiert sind) und Ihr Scrum Master sollte in der Lage sein, den geschäftlichen Wert der Team-Done-Kriterien an alle Projektbeteiligten zu kommunizieren.
PS hört sich so an, als ob Ihr Scrum Master den Wert der Done-Kriterien nicht versteht. Es kann sich lohnen, auf ihn/sie zuzugehen und sie zu bitten, zu erklären, warum Teams dem Team Kriterien gegeben haben, und mit ihnen über Dinge wie Unit-Tests, automatisierte Integrationstests, Code-Reviews usw. zu sprechen.

Ihre Frage zu wiederverwendbarem Code wurde von Agile und Scrum beantwortet

Ich habe eine Frage aus Ihrem Beitrag extrahiert, damit sie dem Stack Exchange Q&A-Format entspricht.

Kann ich zu Recht erwarten, dass der Scrum Master mir die nötige Zeit gibt, um wiederverwendbaren Code zu schreiben?

Die Antwort ist ein klares „NEIN“.

XP ist die Quelle vieler der in der agilen Community weit verbreiteten Engineering-Praktiken - unter anderem Test Driven Development (TDD), Continuous Integration, Pair Programming/Code Review.

Hier ist, was XP über das Schreiben von zusätzlichem Code zu sagen hat, der später benötigt wird:

Halten Sie das System übersichtlich mit zusätzlichen Dingen, von denen Sie vermuten, dass sie später verwendet werden. Nur 10 % dieser zusätzlichen Dinge werden jemals verwendet, sodass Sie 90 % Ihrer Zeit verschwenden. Wir alle sind versucht, Funktionalität lieber jetzt als später hinzuzufügen, weil wir genau sehen, wie man sie hinzufügt, oder weil es das System so viel besser machen würde. Es scheint, als wäre es schneller, es jetzt hinzuzufügen. Aber wir müssen uns ständig daran erinnern, dass wir es nicht wirklich brauchen werden. Zusätzliche Funktionalität wird uns immer verlangsamen und unsere Ressourcen verschwenden.

Hier ist eine ausführlichere Beschreibung mit Beispielen über das YAGNI - Prinzip (You Arent Gonna Need It).

Eines der 12 Prinzipien hinter dem Agilen Manifest lautet:

Einfachheit – die Kunst, die Menge an nicht erledigter Arbeit zu maximieren – ist entscheidend.

Es besteht ein großer Unterschied zwischen zusätzlichen Funktionen, die möglicherweise in der Zukunft hinzukommen, und der Wiederverwendbarkeit und Wartbarkeit der tatsächlichen Implementierung. Letzteres braucht auch Zeit, erwarten Sie mindestens die dreifache Zeit für Unit-Test-abgedeckten "sauberen Code" im Vergleich zu Spaghetti-Code-Hacks, die in einem ersten Testfall funktionieren. Auf der Feature-Seite mögen KISS und YAGNI in Ordnung sein, aber auf der Qualitätsseite hinterlässt die Arbeit mit schnellen Hacks nur schlechte Software und frustrierte Entwickler.

Ihre Frage enthält einige grundlegende Missverständnisse:

"Warum weist Scrum Scrum Mastern (die keine Programmierkenntnisse haben) die Rolle zu, Entwickler dazu zu bringen, vor dem Ende des Sprints schnell die 'Definition of Done' zu erreichen?"

Das Obige ist nicht die Rolle eines Scrum Masters. Der Scrum Master arbeitet mit dem Team zusammen, um es dazu zu bringen, eine Definition of Done zu erstellen und einzuhalten. Das Team schätzt die Arbeit und sollte eine Schätzung und Verpflichtung mitteilen, die es ihnen ermöglicht, ihre erledigten Kriterien zu erreichen.

Der Scrum Master erleichtert die Verhandlungen zwischen dem Team und dem PO/PM, um sicherzustellen, dass sich das Team zu einem angemessenen Arbeitsaufwand verpflichtet, bei dem es seine Definition of Done erreichen kann. Dies geschieht am häufigsten während der Planung unter Verwendung von Story-Point-Schätzungen und Team-Velocity.

Es gibt kein „schnell“ beim Erreichen von erledigten Kriterien. Tatsächlich sollte ein guter Scrum Master dafür eintreten, dass das Team die Iterationsverpflichtungen verringert, wenn es ständig vom Management unter Druck gesetzt wird, sich zu sehr zu verpflichten und seine erledigten Kriterien „schnell“ zu erfüllen.

Der Scrum Master ist eine dienende Führungsrolle, die sich auf reife Lieferteams konzentriert, nicht auf Softwareprojekte.

Das bedeutet, wenn Sie als Entwickler denken, dass sie nur die Management-/Kundenzeitpläne bedienen und nicht auf die Fähigkeit des Teams achten, qualitativ hochwertigen Code zu schreiben, ist es möglicherweise an der Zeit, sich nach einem neuen Scrum Master umzusehen oder einen R&R zu haben Diskussion.

Warum gehören „sauber“ und „wartbar“ nicht zu Ihrer Definition of Done?

Die relevante Metrik könnte etwa so lauten wie „Code wurde auf Wartbarkeit überprüft und alle Probleme, die durch die Überprüfung aufgeworfen wurden (die den Funktionsumfang nicht erweitern), wurden behoben.“