Wie werden in Agile grundlegende Infrastrukturaufgaben zu Beginn eines Projekts mithilfe strenger Management-Frameworks wie TFS Online geplant und zugewiesen?

9

Hier bin ich dabei, ein relativ kleines neues Softwareentwicklungsprojekt zu planen und zu schätzen. Ich habe die vom Kunden vorgeschlagenen User Stories durchgesehen und Aufgaben mit einer Schätzung und einigen kurzen Hinweisen zur Ausführung der Aufgabe gegen jede gestellt. Es gibt Akzeptanzkriterien. Alles sollte gut mit der Welt sein.

Geben Sie hier die Bildbeschreibung ein

Als ich mir die geplante Arbeit ansah, stellte ich fest, dass etwas fehlte. Es wird einen anfänglichen Aufwand geben, einfach Dinge einzurichten, in die wir die Funktionalität einbinden können. Dinge, die zu allen User Stories gehören, nicht zu einer bestimmten User Story.

Ein Teil dieser Anwendung ist beispielsweise ein Dienst, der XML analysiert. Aus Sicht des Benutzers gibt es bestimmte Geschichten, in denen je nach Inhalt des XML verschiedene Dinge getan werden müssen. Das Schreiben eines XML-Parsers - die Bits, die nach einer Datei suchen, diese lesen und die relevanten Daten abrufen, bevor entschieden wird, was mit dem Inhalt geschehen soll - ist Teil all dieser Geschichten. Wie es in einem Windows-Dienst mit einem Installationsprogramm usw. verpackt wird. Es ist eine entwicklerorientierte Aufgabe ohne direkte Relevanz für einen Benutzer.

Ein weiteres relevantes Beispiel aus dieser speziellen Anwendung ist das Aufnehmen und Umschreiben eines Blocks mit schlechtem Legacy-Code, der für die Funktionen dieser App nützlich ist. Auch dies hat keine unmittelbaren Ergebnisse für den Benutzer, aber es ist notwendige Arbeit. Wo "lebt" die Planung und Ausführung dieser Arbeit in einem Projektplan, der sich auf User Stories konzentriert?

Ich habe Leute gesehen, die dieses Problem gelöst haben, indem sie User Stories geschrieben haben "Als Entwickler möchte ich ...", aber wie an anderer Stelle diskutiert wurde, ist dies keine User Story. Es ist ein Entwickler.

Ich suche eine konkrete Antwort darauf, um mir (und anderen) bei der Planung von Projekten mit strengen Management-Frameworks wie TFS online zu helfen. Diese haben in der Regel nicht die Funktion, "Stakeholder Stories" oder andere vage Metalösungen zu erstellen, die in den Antworten auf Wie berücksichtigt ein Scrum-Team Infrastrukturaufgaben in der Planungsbesprechung?

Bob Tway
quelle
2
Wenn ich Ihnen sage, dass ein Computer oder ein Dienst auch wie ein "Benutzer" behandelt werden kann, ändert dies Ihre Analyse?
Robert Harvey
1
@mmathis Ich habe diese Frage gesehen und sie ist ähnlich und relevant. Keine der Antworten beantwortet diese Frage jedoch tatsächlich. Vor allem, wenn Sie sich darauf konzentrieren, wie dies in vorhandenen Frameworks wie TFS geschehen soll.
Bob Tway
@ RobertHarvey teilweise ja. Dies würde den Dienst in diesem Fall abdecken, nicht jedoch den Legacy-Code. Ich kann mir andere Situationen vorstellen, in denen dieser Ansatz möglicherweise nicht die Anforderungen abdeckt. Mich würde auch interessieren, wie weit verbreitet das ist: Es scheint eine semantische Änderung zu sein, um das Problem "als Entwickler" zu umgehen.
Bob Tway
2
Sie können bei Systembenutzern und Iteration0 schummeln oder den Kuchen anders schneiden. Die erste Funktion bietet einige Benutzerfunktionen und die Infrastruktur, die erforderlich ist, damit sie funktioniert. Dann Feature 2, das folglich mehr Infrastruktur aufbringt. Auf diese Weise verschwenden Sie keine Zeit damit, eine Infrastruktur einzurichten, die Sie nicht benötigen. Wenn Sie jetzt schreien, aber das bedeutet, dass ich neu planen muss, dann sind Sie nicht agil.
Strg-Alt-Delor

Antworten:

12

Ich mag die anderen Antworten, die besagen, dass so viel "Tooling" -Code wie möglich in Iteration 0 eingefügt werden soll. Manchmal werden diese Tools jedoch angezeigt, nachdem das Projekt bereits gestartet wurde. Vielleicht stellen Sie in Iteration 3 fest, dass Sie ein verallgemeinertes XML-Parser-Widget benötigen, um in Zukunft für verschiedene Storys verwendet zu werden.

In diesem Fall ist die erste User Story, die sich auf diese internen Architekturstücke stützt, diejenige, zu der sie gehören . Wenn Sie im Begriff sind, an Story # 345 zu arbeiten, und dies von Ihrem XML-Parser abhängt, bevor er als "erledigt" gezählt werden kann, wird Ihr wiederverwendbarer Parser als Arbeit für die Fertigstellung dieser Story angehängt.

Mein Team hat den oben genannten Ansatz verwendet und es schien gut für uns zu funktionieren.

Graham
quelle
Ich würde ähnlich wie dieser antworten. Wenn eine Geschichte etwas braucht, ist es ein Teil dieser Geschichte. Einige Geschichten könnten den Vorteil haben, nach einer anderen Geschichte zu kommen, die die Infrastruktur ausgebaut hat. Sie müssen jedoch alle Storys behalten, die dies benötigen, nur für den Fall, dass Storys neu priorisiert werden. Sie können nicht sicher sein, was der erste sein wird.
Jay S
1
+1 Dies berührt einen großartigen Punkt. Ob es Iteration 0, 1 oder was auch immer heißt eine Bagatelle. Alle außer den unvernünftigsten oder uninformiertesten verstehen, dass einige Grundlagen erforderlich sind. Wenn Sie malen, bereiten Sie die Wände vor, wenn Sie kochen, hacken, wenn Sie Musiker sind, üben Sie.
Robbie Dee
6

Wenn es sich um eine Infrastruktur handelt, wird sie normalerweise in Iteration Zero eingefügt. Was ist Iteration Zero? Es ist normalerweise die Zeit zwischen Start und Planung, bevor die eigentlichen Iterationen beginnen.

Angenommen, wir benötigen einen neuen Webdienst. Ich muss also das Projekt erstellen, eine kontinuierliche Integration einrichten, ein Quellcodeverwaltungs-Repository einrichten, ein Build-Skript und eine automatisierte Bereitstellung einrichten usw. Die Benutzer interessieren sich nicht wirklich dafür, aber wir brauchen diese unabhängig davon.

Diese Arbeit würde also in Iteration 0 ausgeführt. Zum Zeitpunkt des Starts von Iteration 1 würde es bereits eine neue Projekt-Shell geben, die kompiliert, über ein automatisiertes Build-Skript verfügt und bereitgestellt wird. Jetzt wäre keine der Benutzerfunktionen vorhanden, aber es kann losgehen.

Ich würde diese Arbeit immer noch als Teil der Iterations-0-Arbeit verfolgen und planen.

Das Refactoring klingt wie eine technische Geschichte, die in jede Iteration gehen kann.

Jon Raynor
quelle
4
+1, weil wir dies auch verwenden, aber in Wirklichkeit ist Interation Zero die neue Iteration One. Es ist nur eine Iteration, die den Geschäftsinteressenten nicht wirklich interessiert, aber notwendig ist, um zu den Dingen zu gelangen, die den Stakeholdern wichtig sind.
Greg Burghardt
Sie können eine echte Iteration 0 haben, aber das heißt nicht, dass Sie ab Tag 1 keinen Wert mehr liefern können. Sie benötigen keinen Build-Server, keine automatisierte Bereitstellung und kein Quellcode-Repository, um mit dem Schneiden von Code zu beginnen - dies kann später geschehen (oder sogar parallel).
Robbie Dee
3

Kommt auf die Infrastruktur an.

Wenn die Infrastruktur von großer Bedeutung ist oder komplizierte Compliance-Bestimmungen einhalten muss, haben Sie möglicherweise ein separates Infrastruktur-Team, das möglicherweise einen eigenen Zeitplan hat. Es könnte agil sein, es könnte ein Wasserfall sein. In diesem Fall wird der Aufbau der Infrastruktur in Ihrem Projekt als externe Abhängigkeit verwaltet .

Wenn die Infrastruktur von Ihrem Team verwaltet und nur einmal eingerichtet werden soll, können Sie die von Jon beschriebene Iteration 0-Technik verwenden.

Wenn die Einrichtung der Infrastruktur mehrere Iterationen erfordert (z. B. wenn Sie Ihren Build-Server jetzt einrichten, QA- und Preprod-Server jedoch etwas später erstellt werden), kann deren Aufbau als nicht funktionierende PBIs verwaltet werden. Funktionale PBIs können bestimmte Abhängigkeiten von diesen haben, die Sie in TFS über den Link "Vorgänger" codieren können.

Und natürlich können Sie all das oben Genannte kombinieren. Beispielsweise können Sie ohne einen Continuous Build-Server nicht viel tun, sodass Sie dies in Iteration 0 einfügen können. In der Zwischenzeit werden Ihre Preprod-Server möglicherweise als Aufgaben für die Iterationen 2 und 3 definiert und haben möglicherweise externe Abhängigkeiten von Ihrem DBA-Team ( die nicht agil sind) die Ihnen DB-Instanzen in Ihrem Rechenzentrum zuweisen. Oder Sie müssen warten, bis SSL-Zertifikate für bestimmte Funktionen ausgestellt wurden. Sie können in Iteration 4 ausgeführt werden, und alle Funktionselemente, die auf diesen Zertifikaten basieren, sollten mit einer Vorgänger / Nachfolger-Beziehung mit ihnen verknüpft werden.

Denken Sie in jedem Fall daran:

  1. Definieren Sie immer klare Akzeptanzkriterien. Hardware-Leute haben eine nervige Tendenz, einen Server hochzufahren und ihn als erledigt zu bezeichnen, wenn er überhaupt nicht validiert wurde.
  2. Während des Iterationsstarts Ihres Teams muss das Team die Abhängigkeiten und ihre Verfügbarkeit prüfen, bevor es sich auf eine PBI oder ein Arbeitselement festlegt.
John Wu
quelle
Hardware-Leute haben eine nervige Tendenz, einen Server aufzustehen und ihn als erledigt zu bezeichnen, wenn er überhaupt nicht validiert wurde. Guter Punkt - daher die jüngste Verbreitung von DevOps.
Robbie Dee