TiDD初心者によく聞かれる質問part1~チケットが放置されがちです #tidd
チケット駆動開発についての質問のうち、「チケットが放置されがちだがどうすればいいか?」「チケットの粒度はどれくらいがいいのか?」の二つはいつも聞かれる。
最初の質問について、自分なりに考えたことをメモ。
【元ネタ】
チケット駆動開発を導入しても変わらないこと - Basic
デベロッパーズサミットまとめ【チケット管理システム編】 ? prototype002
【1】「チケットが放置されがちだがどうすればいいか?」という質問の背景を類推すると、チケットを起票する運用はできているものの、チケット管理ができてないことを意味する。
チケット一覧画面で、一生懸命チケットをフィルタリングしながら、どのチケットが遅れているのか、どう対処すればいいのか、必死になって考えている間にも、どんどんチケットが増えていってしまっているのだろう。
チケットが放置されがちな状況では、下記の記事のように「Redmineプロジェクトにバージョン(イテレーション)という概念が無い」「工程単位にBTSプロジェクトやBTSバージョン(イテレーション)を作っているのでバージョンに紐づかないチケットが散乱している」アンチパターンが多発しているだろうと推測している。
バージョンのないRedmineプロジェクト~TiDD初心者が陥りやすい罠: プログラマの思索
TiDD初心者が陥りやすい罠part2~工程単位のRedmineプロジェクトやリリース予定バージョン: プログラマの思索
【続】TiDD初心者が陥りやすい罠part2~工程単位のRedmineプロジェクトやリリース予定バージョン: プログラマの思索
Agile開発の肝はイテレーションにあり: プログラマの思索
【2】放置されたチケットは不良在庫と同じだ。
つまり、たくさん製品(設計書やソースという成果物)は作っているものの、売れない製品(顧客へ納品できる品質でないモジュール)をたくさん作っているのと同じ。
不良在庫が増えすぎれば製造業の会社がつぶれるように、放置されたチケットが開発チームの能力を超えた枚数になってしまえば、プロジェクトは破綻する。
デスマーチプロジェクトでは特にそういう状況に陥りがちで、もはやどのタスクをどの順番からこなせばいいのか、プロジェクトリーダーですら分からなくなる。
そんなデスマーチプロジェクトに火消しリーダーが入った場合、一番最初にやるのが課題や作業(チケット)の棚卸しだ。
つまり、プロジェクトが今どんな状況になっているのか、どの成果物は信用して使えるのか、今後のタスクや残課題は何か、を逐一洗い出す。
そうしなければ、火消しリーダーも、何から作業すればよいのか分からないからだ。
この作業が意味するのは、チケットの棚卸しという作業は定期的に行うべきということだ。
製造業や小売業でも、倉庫にある在庫の製品や商品を月末に必ず1回は数えなおして、帳簿上の在庫数と合っているか確認して、間違っていたら実際の数値に合わせ直す。
この作業は実地棚卸し、略して実棚と言われる。
実棚の作業を月末に行って、当月末繰越残高を決定して、当月の売上原価と利益を計算する。
そして、来月に前月末繰越残高として来月の月初の在庫数として確定させて、来月の売上原価に入れる。
実棚の作業が意味するのは、在庫は定期的な棚卸し作業が必須で、それがなければ、自分たちの会社が今どれだけの売上や経費がかかっているのか分からないことだ。
最近の製造業ならば、月末1回の棚卸し作業はビジネスの速度に遅すぎて、毎日頻繁に実棚をチェックする継続的棚卸しが普通になっているだろうと思われる。
そうでなければ、デフレでこれだけ製品が売れなくなっている状況では、タイミング的には高く売ってもいい状況で安く売ってしまって逆に損する場合も多い。
製造業や小売業の実棚作業のように、チケットも定期的な棚卸し作業が必須だ。
その実棚の作業も最低でも週1回、できれば毎日やった方がいい。
放置されたチケットはすぐに不良在庫になるから。
【3】ファウラーは、今リファクタリングすべきソースをやらずに先延ばしすることを技術的負債と呼んだ。
今やるべきタスク(チケット)を先延ばしにするのは、利子をつけて負債にしてしまうのと同じ。
実際、IF文がネストして汚いソースをリファクタリングせずに先延ばしして、仕様変更が来てから修正しようとすると、当初見積もった工数よりもはるかにかかってしまう場合が特にそうだ。
Martin Fowler's Bliki in Japanese - 技術的負債
とはいえ、普通はタスクがどんどん増えがちなので、優先度の低いタスクは潜在的リスクとして後回しにする意思決定も多い。
その場合、優先度の低いチケットをバックログという袋(TiDDなら特別なバージョン)に一旦入れておく。
バックログに入れられたチケットは、プロダクトオーナーの役割で、顧客価値に直結する機能や製品は何か、という観点でタスクを優先順位付けし、どのスプリント(イテレーション)で実施するか決める。
優先順位付けするという意思決定プロセスを含むがゆえに、Scrumが編み出したバックログという概念はとても重要だ。
バックログというプロセスには、リリース計画作りという計画プロセスが含まれている。
放置されたチケットが多いという事実は、それらチケットをどのスプリント(イテレーション)で実施すべきなのか、という判断が入っていないことを意味する。
つまり、リリース計画が立てられていないので、イテレーションという概念がプロジェクトに存在しないのだ。
いつまでに何をリリースするのか、という意思決定ができていないのだから、タスク(チケット)が放置されるのも当たり前だ。
【4】Agile開発では、イテレーションというタイムボックスにタスクをアサインしてから開発を始める。
すなわち、タスクのスコープをコントロールしていることを意味している。
放置されたチケットが多いという状況は、PMBOKの言うスコープ管理というマネジメントの基本ができていないことを意味しているのだ。
定期的なイテレーションのサイクルで、チームが解決できる能力のレベルに合わせたチケットの枚数をアサインしてから作業を始める。
この概念は、最終的にはScrumの言うベロッシティ(Velocity:開発速度)に関係すると思う。
ベロッシティを超えたタスクの量を開発チームはこなすことができないのだ。
チケット駆動開発を実践しているならば、例えば1ヶ月単位でチケットの消化枚数を数えてみると良い。
僕の限られた経験では、チームの規模にもよるけれど、1ヶ月という長く思える期間ですら、チケットの消化枚数は50枚ぐらいでしかない。
すると、開発チームのチケット消化速度が大体分かるので、それ以上のチケットを発行しても消化できないので無理と分かる。
だから、リリース計画を立てて、1ヵ月後、2ヵ月後のイテレーションで実現するタスク、今は未決定のタスクはバックログというように、チケットを大きく分けてこなした方がはるかに現実的。
まとめると、「チケットが放置されがちだがどうすればいいか?」という質問には、「不良在庫」「技術的負債」「棚卸し」「リリース計画」「スコープ管理」「バックログ」「ベロッシティ」というキーワードを覚えておけば、何かしらのヒントが隠れているはず。
【5】チケット駆動開発では、プロジェクト管理をチケット管理に置き換えて、マネジメントを見える化する。
チケットの取捨選択こそがXPの計画ゲームであり、マネジメントそのもの。
チケット管理こそ、Agile開発チームの腕の見せ所なのだ。
| 固定リンク
「プロジェクトマネジメント」カテゴリの記事
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart1~CSFはWBSみたいなものと捉える(2023.02.14)
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
「Redmine」カテゴリの記事
- 「RedmineのUbuntu+Docker構築への移行」の感想 #redmineT(2024.11.24)
- 第27回redmine.tokyo勉強会の感想 #redmineT(2024.11.10)
- Redmineのバージョン設定でプロジェクトの設定方法が違う(2024.06.23)
- ウクライナのRedmine開発者が作ったRedmineテーマやプラグイン(2024.06.18)
- 第26回redmine.tokyo勉強会の感想~多様性はコミュニティが成功する重要な要因の一つ #redmineT(2024.06.15)
「ソフトウェア工学」カテゴリの記事
- アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)(2024.09.22)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか(2024.01.02)
「チケット駆動開発」カテゴリの記事
- 第26回redmine.tokyo勉強会の感想~多様性はコミュニティが成功する重要な要因の一つ #redmineT(2024.06.15)
- チケットはデータでとプロセスの二面性を持つ #redmine(2023.12.24)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- プロジェクト管理の基本はテーラリング、Redmineはプロセスをテーラリングするツール(2022.04.21)
「Agile」カテゴリの記事
- 「世界一流エンジニアの思考法」の感想(2024.12.08)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
コメント