In unserem Unternehmen werden mehrere Teams gleichzeitig an verschiedenen Komponenten mehrerer Projekte arbeiten. Beispielsweise kann ein Team bestimmte Arten von Software (oder Hardware) für bestimmte Projekte erstellen, ein anderes Team eine andere bestimmte Art von Software. Wir verwenden Jira-Projekte, um Probleme für bestimmte Projekte zu hosten, und Jira-Boards für Sprints für verschiedene Teams.
Wir stehen vor dem Problem, projektübergreifende Codeduplizierungen zu vermeiden, und haben eine Reihe von Kernbibliotheken entwickelt, die wir in diesen Projekten verwenden. Während der Arbeit an einem Projekt werden einige Entwickler feststellen, dass ein von ihnen geschriebener Code von größerem Interesse ist und in eine Kernbibliothek extrahiert werden sollte oder dass ein von ihnen verwendeter Kerncode einen Fehler aufweist, eine weitere Parametrisierung benötigt oder a neue Funktion ... Sie nennen es.
Sie erstellen also ein Kernbibliotheksproblem, das in den Rückstand des Kernprojekts eingeht. Alle diese Probleme werden in einem zentralen Bibliothekstreffen (einmal pro Woche) überprüft, priorisiert und geschätzt und in einigen zukünftigen Sprints entsprechend ihrer Priorität (neben projektspezifischen Problemen) behandelt.
Die Priorisierung erfolgt durch Sortieren von Problemen, und wir kennzeichnen sorted
sortierte Probleme (damit wir nach nicht sortierten Problemen suchen können). Dann setzen wir manuell ein Problem pro Kernkomponente oben in den Rückstand, damit sie zuerst behoben werden können. Wenn ein Team ein solches Problem in seinen Sprint einfügt, muss es stattdessen manuell ein anderes Element an den Anfang des Backlogs ziehen.
Dies ist ziemlich fehleranfällig. Grundsätzlich haben wir die zusätzlichen Problemstatus "sortiert" und "geschätzt" zwischen "offen" und "in Bearbeitung". Dies durch das sorted
Etikett und ihre Position auf der Platine zu reflektieren, ist ziemlich umständlich und fehleranfällig. (Wenn zum Beispiel jemand ein Problem in einem Sprint auf und ab bewegt, wird dies im Core Board angezeigt, wodurch die Reihenfolge der Probleme, über die das Team möglicherweise in einer ausführlichen Diskussion vor Wochen entschieden hat, stillschweigend durcheinander gebracht wird.)
Was wäre ein besserer Weg, dies umzusetzen?
Antworten:
Wenn Sie dies in JIRA verfolgen möchten, würde ich es so verfolgen, als wäre es eine neue Aufgabe.
Also zum Beispiel:
Angenommen, Sie haben die Geschichte CORE-75: Foo the Bar .
Sobald entschieden ist, welches Team die Aufgabe übernehmen wird, kann es eine neue Aufgabe erstellen: SUPPORT-123: Foo the Bar in Core .
Sie können dann CORE-75 mit SUPPORT-123 blockieren . Sobald SUPPORT-123 fertig ist, können Sie zu CORE-75 zurückkehren . Entweder können Sie die Bewertungen zusammenführen lassen oder den Code zweimal überprüfen (einmal vom angegebenen Team, einmal von einem kernspezifischeren Team).
Dies ist wirklich das, was Sie sowieso tun: Betrachten Sie die Kernbibliothek als ihr eigenes Produkt / Kunden, gehen Sie nicht den halben Weg.
quelle
+1
von mir.Ein Ansatz besteht darin, dass das Team ein neues Problem für den Sprint erstellt, das auf das Kernproblem der Bibliothek verweist. Es ist ein bisschen so, als würden Sie eine Unteraufgabe für eine Aufgabe erstellen, aber über die Bretter / Rückstände hinweg.
Ein anderer Ansatz besteht darin, dies außerhalb von JIRA separat zu verfolgen. Exportieren Sie das vorhandene Backlog als CSV oder Tabellenkalkulation und organisieren Sie es.
Durch die Trennung der Probleme von JIRA haben Sie die Flexibilität, die Priorität in der Planungsbesprechung zu definieren, und müssen sich nicht um den Sortieralgorithmus von JIRA auf den Boards kümmern, und Sie müssen auch keine Beschriftungen verwenden.
In der Besprechung zur Priorisierungsplanung für die Kernbibliothek können Sie eine Auswahlliste mit Aufgaben erstellen, die für die Kernbibliothek ausgeführt werden sollen. Wer für die Kernbibliothek verantwortlich / verantwortlich ist, kann sicherstellen, dass diese Aufgaben von den verschiedenen Projektteams gestartet und abgeschlossen werden.
quelle
Es besteht die Ansicht, dass Kernbibliotheken, die viele gängige, aber nicht verwandte Funktionen enthalten, eine „schlechte Sache“ (tm) sind.
Dafür gibt es einige Gründe
In Ihrem Fall denke ich, dass Ihre Aufgabenteilung durch die Anwendung, an der die Änderung vorgenommen werden soll, die Wurzel des Problems ist. Eine Art umgekehrtes Conway-Gesetz.
Ich denke, die beste Lösung für Sie wäre, nicht mehr über 'Kernbibliotheken' zu verfügen. Bibliotheken sollten über einen bestimmten (kleinen) Satz logisch gruppierter Funktionen verfügen. Es sollte möglich sein, sie zu vervollständigen. dh JsonParser, LogWriter usw. Es sollte selten sinnvoll sein, eine neue Funktion hinzuzufügen.
Unter der Annahme, dass dies eine lange und schwierige Aufgabe wäre, würde ich als sekundäre Lösung einfach die Kernaufgaben der Bibliothek bei dem Team behalten, das die Funktionalität benötigt. dh.
Aufgabe: Fügen Sie dem Produkt Y die Funktion X hinzu
Dev: hmm, ein Teil des Codes für Feature X sollte in eine Corelibrary gehen. Ich werde ihn dort als Teil dieser Aufgabe ablegen
quelle