目的
背景
- 2020年にスクラム開発にチャレンジ中のプロジェクトにPMとして合流した
- その時はプロジェクトがうまく進んでなかった、具体的には...
- 2weekのスプリント期間にタスクが終わらない
- 終わらなかった作業を別タスクとしてチケット化して継続開発してた
- スプリントが終わった時点で動作するソフトウェアがない
- PBI(Product Backlog Items)が100個くらいあった
- 作りたい機能の数が多そうに思うが普通なのだろうか?
- 受託開発の見積もり規模算出のために必要だった
- PBI全部にストーリーポイントを振ってた
- 作りたい機能の数が多そうに思うが普通なのだろうか?
- ストーリーポイントの見積もりが妥当かどうか判断つかなかった
- 経験を積んで見積もり精度が上がれば良い?
- スプリント期間に対応中のタスクの半分は課題があって進みが悪かった
- タスクに着手してから新しい事実がわかってストーリーポイント通りに開発できない事が頻発してた
- スプリント振り返りを途中からやめた
- KPT法で振り返りを実施していた
- 議事録から推測するに、学びはあるが改善につながる分析・行動への落とし込みまでできてなかった状況
- 開発が遅れてたため、振り返りの時間を開発に充てる方針となった
- リリースマイルストーンに対して開発が順調でなかった
- ベロシティが改善すれば間に合うという説明をしていたが、改善の見通しが立ってなかった
- 2weekのスプリント期間にタスクが終わらない
- 3ヶ月ほど様子見したが最終的にスクラムやめてウォーターフォール開発に変更した
- 開発計画を立て直した結果、顧客の要望に沿ったリリースができた
- その時はプロジェクトがうまく進んでなかった、具体的には...
- その後3年くらいクリーンアーキテクチャ・ドメイン駆動設計・テスト駆動開発などに取り組んだ結果アジャイルっぽくなった
- チームの熟練度があがりドメインの知識も獲得したので、アジャイル開発に再チャレンジしようという意見が出てきた
問題事象の分析
- スクラムをやめたあと、なぜ上手くいってないのか色々と分析した
- そもそも難しいプロジェクトだった
- 良い設計について語れる人がベテラン1名しかいなかった
- ベテランについていけるほど設計スキル・経験がある人は自分も含めていなかった
- PLはプロジェクト運営経験が少なかった
- スクラムガイド通りに運営することを目的化している雰囲気がうかがえた
- チームが混乱していた時に立て直すための仕切りができていなかった
- プロジェクトにどんな課題があるか整理されておらず、またチームに共有されてなかった
- プロジェクト課題の分析・対策が着手できてなかった
- プロジェクト課題の優先順位づけがされてなかった
- 良かった点
課題設定
- ウォータフォールでの計画作成やプロジェクト課題解決は得意だったので、プロジェクトの混乱は解決した
- 仕様追加に時間がかかる、バグが多い、機能追加の影響でバグが出る、開発期間が長いなどの課題が残った
- ソフトウェアの設計改善により課題を解決する方針とした
結果
- 設計改善により、ソフトウェアの理解容易性・修正容易性・テスト容易性が改善された
- 開発期間が短縮された
- バグも減った
- 仕様変更も容易になった
- 自身の設計スキルはとても向上した
- チームメンバーも設計を理解して開発できるようになった
- 設計スキル向上や開発体験向上によりチームメンバーが喜んでくれた
参考
- アジャイル開発に習熟するために知っておきたい情報
- アジャイルソフトウェア開発宣言
- この宣言を道のりの起点にすると、アジャイル開発理解の見通しが良い
- 2002年頃に宣言の文章を読んだ時は「理想はわかるが実際どうやるのだろう」と思った
- エクストリームプログラミングという開発手法があるらしいという情報には触れたし、社内で少し話題になった
- そのころに当時の先輩と2-3回ペアプロをしたが、それっきりやめてしまった
- ソフトウェア設計の技術書を読みまくった時期(2021年-2022年)に、宣言した人の顔ぶれが読んだ技術書の著者だと気づいた
- 以下の本を読んでた
- Kent Beck
- James Grenning
- Robert C. Martin
- Martin Fowler
- 気づいたきっかけは書籍「.NETのエンタープライズアプリケーションアーキテクチャ 第2版」
- アジャイルソフトウェア開発宣言の読みとき方
- "アジャイル宣言の背後にある原則"について丁寧な解説が書いてある
- IPAがまとめた資料なので信頼できそう
- アジャイルに取り組む前に読むべき資料
- アジャイルマニフェストはいまだに重要性を持つか
- アジャイルプロジェクト実践ガイドブック
- アジャイル開発の進め方
- スクラムとエクストリームプログラミングについて
- ちょっと前まではどちらの手法でも好きに選べば良いと思っていたし、スクラムが一般的だと思ってた
- 以下の違いがあるらしい事を最近知った
- スクラムはプロジェクトマネジメント・ビジネス寄りの手法
- エクストリームプログラミングはプログラミング・技術寄りの手法
- 参考情報)
- ポッドキャスト texta.fm 「5.Accelerate」の冒頭5分くらい聞くと、和田卓人氏が「ビジネス側のプラクティスと技術プラクティス」という言い方でスクラムとエクストリームプログラミングを説明している
- ヘロヘロScrumというMartin Fowlerのブログ記事でも同様の言及がある。
まとめ
- 情報の整理ができた
- 次にアジャイル開発する時のために何に取り組むか決まった
- 次の取り組み
- LeanとDevOpsの科学を読んでアジャイル開発の視野を広げる
- エクストリームプログラミングの技術的プラクティスの全体像を把握する