複数のプロジェクトにまたがって取り組む問題のストーリー準備をモデル化する方法


9

当社では、複数のチームが同時に複数のプロジェクトのさまざまなコンポーネントに取り組みます。たとえば、あるチームが特定の種類のプロジェクトに特定の種類のソフトウェア(またはハードウェア)を作成し、別のチームが別の特定の種類のソフトウェアを作成する場合があります。Jiraプロジェクトを使用して特定のプロジェクトの問題をホストし、Jiraボードを使用して異なるチームのスプリントを実行します。

私たちはプロジェクト間でコードの重複を回避するという問題に直面し、それらのプロジェクトで使用する一連のコアライブラリを開発しました。プロジェクトに取り組んでいる間に、一部の開発者は、自分が書いたコードの一部がより興味深く、コアライブラリに抽出する必要があること、または使用している一部のコアコードにバグがあり、さらにパラメーター化が必要であること、または新機能...あなたはそれに名前を付けます。

したがって、コアプロジェクトのバックログに入るコアライブラリの問題を作成します。これらの問題はすべて、コアライブラリミーティング(週に1回)でレビュー、優先順位付け、推定され、将来のスプリントでは(プロジェクト固有の問題と共に)優先順位に従って取り組みます。

優先順位付けは問題を並べ替えることで行われ、並べ替えられた問題にsortedラベルを付けます(並べ替えられていない問題を検索できるようにするため)。次に、コアコンポーネントごとに1つの課題をバックログの先頭に手動で配置して、それらを最初に処理します。一部のチームがそのような問題をスプリントに入れる場合、代わりに別のアイテムをバックログの上部に手動でドラッグする必要があります。

これはかなりエラーが発生しやすいです。基本的に、私たちが持っているのは、「未解決」と「進行中」の間の「ソート済み」と「推定済み」の追加の問題ステータスです。これをsortedラベルとボード内での位置で反映することは、かなり面倒でエラーが発生しやすくなります。(たとえば、誰かがスプリントで問題を上下に移動すると、これはコアボードに反映され、数週間前の広範なディスカッションでチームが決定した可能性がある問題の順序を静かにスクランブルします。)

これを実装するより良い方法は何でしょうか?


2
libに関数を追加するだけでは外交上のオーバーヘッドが多すぎるようです。私たちの50名の開発者(医療用ソフトウェア)では、開発者が適切であると考える場合、開発者が社内ライブラリのそれぞれにコードをプッシュすることを許可しています。もちろん、後でレビューしました。あなたはおそらくプルリクエストフローでの作業を検討できますが、ミーティングですか?いいえ、それはうまくいきません。
Teimpz 2016年

@Teimpz:もちろん、誰もが社内ライブラリにプッシュし、もちろん、すべてのコードがレビューされます。ただし、コアの問題に取り組む順序(現在のプロジェクトでは必要ありません)は、すべてのチームが決定します。これはかなりうまくいきますが、Jiraだけがうまくサポートしていないようです。
sbi

オーバーヘッドはかなりのように見えますが、コアが非常に広く使用されていることを考えると、問題が起こらないことを確認するために、少しのオーバーヘッドを受け入れてもかまいません。会議はたくさんのようですが。私はそれを他のタスクと見なしますが、追加のコミュニケーション-レビュー、会話-が重要になります。
Erdrik Ironrose 2017年

回答:


2

JIRAでこれを追跡する場合は、新しいタスクであるかのようにフォローします。

だから例えば:

CORE-75:Foo the Barというストーリーがあるとします。

どのチームがタスクを実行するかが決定したら、新しいタスクSUPPORT-123:Foo the Bar in Coreを作成できます。

その後、SUPPORT-123CORE-75ブロック できます。SUPPORT-123が終了したら、CORE-75に戻ることができます。レビューをマージするか、コードを2回レビューします(指定されたチームが1回、コア固有のチームが1回)。

とにかく、これは実際に実行していることです。コアライブラリを独自の製品/顧客として考えてください。


それは厄介に思えますが、はい、それはうまくいきます。だから+1私から。
sbi 2017年

0

1つのアプローチは、チームがスプリントの新しい問題を作成して、コアライブラリの問題にリンクを戻すことです。これは、タスクのサブタスクを作成しているようなものですが、ボード/バックログ全体です。

別のアプローチは、JIRAの外部でこれを個別に追跡することです。既存のバックログをCSVまたはスプレッドシートとしてエクスポートし、整理します。

問題をJIRAから分離することにより、計画会議で優先度を柔軟に定義でき、ボード上のJIRAのソートアルゴリズムについて心配する必要がなく、ラベルを使用する必要もありません。

コアライブラリの優先順位付け計画会議では、コアライブラリに対して完了するタスクの候補リストを作成できます。コアライブラリの責任者/責任者は、これらのタスクが異なるプロジェクトチームによって開始され、完了していることを確認できます。


-2

多くの一般的だが無関係な機能をカプセル化するコアライブラリは「悪いこと」(tm)であるという見解があります。

これにはいくつかの理由があります

  • 必要のない依存関係とコードを取り込む
  • それらを変更すると、すべてのアプリケーションが変更されます
  • 単一の「所有者」はありません

あなたのケースでは、変更が加えられるアプリケーションによるタスクの分割が問題の根本だと思います。一種の逆コンウェイの法則。

私はあなたのための最良の解決策は「コアライブラリ」を持つことから遠ざけることだと思います。それらを完了することができるはずです。つまり、JsonParser、LogWriterなどでは、新しい機能を追加しても意味がありません。

ただし、これが長く困難なタスクであると想定すると、セカンダリソリューションとして、機能を必要とするチームと一緒にコアライブラリタスクを単に保持します。すなわち。

タスク:機能Xを製品Yに追加する

Dev:機能Xのコードの一部はコアライブラリに入れる必要があります。このタスクの一部としてそこに配置します


これは奇妙に思えます。まず、「論理的にグループ化された機能の特定の小さなセットを含むライブラリ」と「コアライブラリ」との違いは何だと思いますか。(ところで、私はこの回答の通知を見逃したようです。返信が遅くなってすみません。)
sbi

これは私にとって最も目立つ引用だと思います:「彼らが書いたコードの一部はより興味深く、コアライブラリに抽出する必要があります」。共有プロジェクトが機能の完全な「ライブラリ」である場合、それらに機能を追加する必要はありません。
ユアン

私はあなたの主張を理解できません。なぜメンテナンスのメリットがないコードがあるのですか?そして、あなたの顧客は新しい機能を決して要求せず、新しいコードが書かれることになりますか?そして、すでに興味のある要件を持つ別のプロジェクトを割り当てられる以外に、コードが共通の興味を持っていることをどのようにして知っていますか?
sbi

ライブラリがJson.Netだとします。jsonと逆方向にオブジェクトをシリアル化する目的があります。バグを修正する必要があるか、ジェネリックのサポートを追加する必要があるかもしれませんが、全体的な機能セットは決して変更されません。たとえば、「注文をキャンセルする機能」などを実装するよう顧客から要求され、「Json.Netにそれを追加します」と思うような立場にない
Ewan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.