はじめに
『BIG THINGS どデカいことを成し遂げたヤツらはなにをしたのか?』(Amazonへのリンク)を読了し、ソフトウェア開発者として学ぶべきことが多かった。
著者によると世界中の大きなプロジェクト(鉄道建設、発電所建設、学校建設など)の99.5%は、当初に計画された費用、期間、便益を達成できないと統計的に示している。
確かにソフトウェア開発でも大きなプロジェクトになれば計画が難航し、精緻に計画しようと作られたガントチャートは、度重なるトラブルにより頻繁に見直される。
計画に十分すぎるほどの時間をかけていたのになぜうまくプロジェクトを運営できないのか、私自身よくわかっていなかった。
この本はソフトウェア開発においても大きな手助けになるものだった。
本書の主張
大まかに要約するならば、主張は以下の通りだ。
大きなプロジェクトが失敗する一つの要因として、大きなシステムを1つの塊として作ろうとしていることがあげられる。大きなプロジェクトをレゴブロックのように小さなモジュールの集合体として扱うことで、各モジュールの作成を一つずつ反復することが可能になり、ポジティブラーニングの効果を得る。このため、プロジェクトメンバーは反復を通して作業の習熟が図れる。また、モジュールが十分小さいことで、ブラックスワン(パンデミックなど)のような大きな障害が起こる確率を減らすことができる。
スクラム開発におけるモジュール化と反復の重要性
スクラム開発では、プロジェクトを小さなモジュール(スプリント)に分割して、それぞれのスプリントで機能的な価値を提供することが重要である。レゴブロックのように、それぞれのモジュールが独立していて、組み合わせることで全体のシステムが構築されるイメージだ。
具体的には、以下のようなスクラムのアプローチがある:
-
スプリントの計画と実行: 各スプリントは通常2週間から1ヶ月程度の期間で、チームはその期間中に機能的な成果を生み出すことを目指す。各スプリントは小さなプロジェクトと見なすことができ、スプリントの開始時にはそのスプリントで達成する目標(スプリントゴール)を明確にする。
-
モジュールの分割と優先順位付け: プロダクトバックログから各スプリントに取り組むべきユーザーストーリーやタスクを取り出し、それを小さな作業単位(モジュール)として捉えます。これにより、大きなシステムを段階的に構築することが可能になる。
-
反復と学習: 各スプリントの終わりにはレビューと反省(レトロスペクティブ)を行い、チームはどうやってさらに効率的に仕事を進めるかを改善していきます。これにより、メンバーは継続的にスキルを向上させる機会を得ることがでる。
-
リスクの管理: 小さなスプリントでの作業は、ブラックスワンのような大きなリスクを減らす助けになる。各スプリントは短期間で完了するため、問題が発生した場合でもその影響を最小限に抑えることがでる。
このようにスクラムを適用することで、大きなプロジェクトの失敗を防ぎつつ、柔軟性を持った開発を行うことがでる。それぞれのスプリントが小さな成果を生み出すことで、プロジェクト全体の成功につながる道筋を築くことができる。