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?
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.
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 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.
@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.
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 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:
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.
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.“
jmort253