バージョンのないRedmineプロジェクト~TiDD初心者が陥りやすい罠
TiDD初心者が陥りやすいアンチパターンを実際に見つけたのでメモ。
【1】チケット駆動開発の概念に慣れておらず、Redmineでタスク管理をまず始めた人に多い特徴がある。
それは、バージョンが設定されておらず、ロードマップが空っぽないし非表示な状態。
話を聞くと、Redmineのバージョンの意味や使い方が理解できないらしい。
だから、彼は、Redmineのチケット一覧画面でタスク管理を実施している。
彼のチケット一覧画面を見ると、スクロールできないくらい、たくさんのチケットが無造作に一覧表示されている。
どうやら、必要なタスクはチケットに登録しているが、彼のチケット管理を見ていると、チケットの納期が意識されていない。
そのチケットはいつリリースするのか?の観点が漏れているみたい。
何故なら、チケットがたくさんありすぎて、どのチケットが必要なのか、チケット一覧画面では分かりにくいからだ。
だから、担当者やカテゴリで絞ったりして、自分に必要なチケットをフィルタリングしているみたい。
だが、複数の担当者で一つの成果物を作る場合、それらのタスクの依存関係まで考慮されていないようだ。
だから、チケットが乱発されて放置されやすい。
チケットの棚卸が出来ていないみたい。
プロジェクトマネジメントで最も重要な手法であるスコープ管理が意識されていないから、納期までにどれだけのチケットをこなさなければならないのか、という観点が漏れている。
だから、タスク漏れや考慮漏れが多い。
つまり、作業ミスが多発したり、いつまでたってもデグレードしやすい弱点がある。
バージョンが設定されていないから、イテレーションのリズムが無い。
チケット一覧にスクロールできないくらいたくさん残っているチケットを、延々と消化し続けなければならない。
だから、残業や休日出勤が多いみたい。
見ていると、中間マイルストーンと言う観点もないようだ。
リリースとは言わなくても、内部で何らかの形式で報告するタイミングはあるのに、そのタイミングを一区切りとしてタスクを棚卸しする考え方が無いみたい。
だから、上司にすぐに進捗報告できる体制がないし、今どんな課題やリスクがあるのかを報告するのが大変みたい。
【2】何故バージョンの概念が出てこないのか、彼に聞いてみると、WF型開発の意識が強いようだ。
フィードバックが無いシーケンシャルな開発スタイルにしがみついているみたい。
つまり、工程単位の開発にこだわっている。
設計書をちゃんと書いて、それから開発して、全部開発が終わってから単体テスト、みたいな流れ。
このやり方で開発を進めると、本番リリースは一番最後の1回だけになる。
途中でリリースしたとしても、工程単位に開発しているから、設計だけ終わっても、それはリリースとは言えない。
動かないシステムをリリースしたと言っても、それは普通はリリースとは言わない。
開発が終わっても、単体テストが終わっていないシステムをリリースしてもまともに動かないから、リリースとは言いにくい。
リリースする時は必ずバージョンやタグを付けるけれど、リリースが1回しかないから、バージョンを付けるタイミングも1回しかない。
だから、わざわざバージョンをたくさん作って運用する理由がない。
Redmineの場合、バージョンが一つも設定されていないと、ロードマップは空になる。
しかも、設定画面でロードマップ表示をOFFにできるので、ロードマップそのものを使わない運用も可能。
だから、彼はロードマップが不要と判断したらしい。
彼のような運用スタイルはRedmineだけでなく、TracやMantisによるタスク管理でも起きやすい。
特に、TracやMantisでは、TracのマイルストーンやMantisの修正済みバージョンは、Redmineのバージョンに比べて正直使いづらい。
だから、Tracのチケット一覧やMantisのチケット一覧に、たくさんのチケットが無造作に登録されて乱発されてしまい、放置されてしまう。
すると、納期の観点が薄れるし、タスク漏れが起きやすく、チケット駆動開発の利点が薄れる。
【3】彼にバージョンの意味を教える時、僕が実際に運用しているRedmineのロードマップを見せたら、彼は一目でバージョンの意味を理解したようだ。
僕のRedmineのロードマップでは、バージョン名が実際のリリースバージョンに対応している。
また、Redmineはバージョンの横にリリース日が表示されるから、一目でRedmineのバージョンの意味が分かったみたい。
そして、ロードマップを見て、これが実際のリリース履歴なのだとすぐに分かったみたい。
つまり、過去のバージョンはどんな対応を行ったのか、ロードマップに表示された終了チケットのリンクを押せばいい。
そして終了チケットには、SVNリビジョンが一覧表示されているので、そのチケットでどんなソース修正が行われたのか、一目で分かる。
彼は、SCM連携機能を使っていなかったようなので、そのチケット画面を見てすぐにその利点が理解できたようだ。
【4】ソフトウェア開発で最も重要なものは、リリース計画だ。
いつ何をリリースするのか、一目でわかるようにした計画書であり、Redmineならロードマップになる。
Agile開発の観点では、短期計画のイテレーション計画に対し、リリース計画は長期計画に対応する。
PMBOKなら、リリース計画はプロジェクトマネジメント計画書そのものになるだろう。
Agile開発では、リリースの単位がイテレーションであり、それはリリース予定バージョンに対応する。
頻繁にリリースできるのがAgile開発の最大の特徴だ。
バージョンをイテレーションに同一視することによって、短期間に小刻みに機能拡張しながら、顧客へいち早くソフトウェアの価値を提供していくスタイル。
この仕組みが小規模リリースと言われるものになる。
だが、短期間に頻繁にリリースするのはたとえAgile開発でも難しい。
半年に1回のリリースが2~4週間に1回のリリースサイクルに変わったら、開発プロセスも成果物も抜本的に変えなければ、そのリリースサイクルに対応しきれないだろう。
1回のリリースでも大変なのに、何回もリリースするのはAgile開発でも難しさは変わらない。
まず、リリースする対象の機能を絞り込む必要がある。
そのために、プロジェクトマネジメントの観点を品質・コスト・納期ではなく、スコープ・コスト・納期へ切り替えて、スコープでコントロールする。
イテレーションが短いので、タスクはすぐにあふれやすいからだ。
又、ソフトウェア開発では、当初見込んだタスクだけではなく、バグ修正や仕様変更が頻発するから、マネジメントを意識しなければ、すぐにタスクが溢れてしまう。
だから、タスクの優先順位を変えるだけでなく、後回しにしたり、却下したり、チケットの取捨選択が重要になってくる。
チケット駆動開発は、プロジェクト管理をチケット管理に置き換えているのがミソになる。
そのために必要な概念がバージョン。
下記にも書いたが、イテレーションの概念を自分たちのプロジェクトで運用出来ているかどうかで、Agile度が分かるような気がしている。
Agile開発の肝はイテレーションにあり: プログラマの思索
【追記】
記事に関する感想を集めた。
チケット駆動開発の感想を集めてみた #tidd: プログラマの思索
【元ネタ】
プロジェクトマネジメントとアジャイル開発というやつを調べている - Chiseiのはてなダイアリー
プロジェクトマネジメントとアジャイル開発というやつを調べている - @chisei のはてなブログ
(引用開始)
アジャイル!
ブコメにも書いたが「アジャイルって聞いたことあるけどどんなリスクがあるの?怖い!」って時に読むと「なるほど」と思える発見のあるエントリでした。
参考になります。
バージョン=イテレーション。リリース計画、スコープ重要。
(引用終了)
[#TiDD] ソフトウェアプロセスも複雑なソフトウェアである: ソフトウェアさかば
(引用開始)
マイルストーン重要
プログラマの思索に掲載された「バージョンのないRedmineプロジェクト~TiDD初心者が陥りやすい罠」に、ショックを受けました。記事内容がどうとかではなく、記事に出てくる「彼」と,Twitterで賛同の声があったことです。
「マイルストーン」を適切に定めるなどということは、かなり昔から、少なくとも80年代半ばまでには言われていました。いつまでに何をやるかという短期目標(一里塚)をはっきりしなければ、プロジェクトは糸の切れた「たこ」のようになってしまいます。
プログラムで言うなら、クラスや関数に分割されない一本のプログラムのようなものです。少しでもややこしいことをするならスパゲティプログラミングになってしまいます。
(引用終了)
| 固定リンク
« 「Redmineによるタスクマネジメント実践技法」を倉貫さんに紹介して頂きました #TiDD | トップページ | AgileTourOsaka2010のタイムテーブル公開 #agileto2010 »
「プロジェクトマネジメント」カテゴリの記事
- 「スクラムの拡張による組織づくり」の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)
コメント