はじめに
以前の私は、
「どうすればウォーターフォールをやめられるのか」
「どうすればアジャイルな組織になれるのか」
そんなことばかり考えていました。
もちろん、「適材適所」という言葉も何度も聞きました。
製造業にはウォーターフォール、Webサービスにはアジャイル。頭では理解できるものの、どこか腹落ちしていませんでした。
私は電機メーカーで組込みソフトウェアを開発し、その後スタートアップでWebサービス開発を経験しました。現在は製造業のお客様と、要求管理やAI活用を考える仕事をしています。
そんな経験を重ねる中で、最近ようやく自分の中で整理できたことがあります。
先に断っておくと、これから書くことは、たぶん目新しい話ではありません。どこかで誰かが言っていたし、本や記事で読んだこともある、という程度の内容です。ただ、当時は「そういうものか」と聞き流していて、正直あまり腹落ちしていませんでした。
それが、最近あらためて自分の経験と照らして考え直してみたら、思っていた以上に納得できた。今回書きたいのは、その「あらためて考えたら腹落ちした」という話です。この記事で整理したかったことは、冒頭の図にだいたい詰まっています。
違いは「手法」ではなく「何を学び何を改善しようとしているか」
今になって思うのは、ウォーターフォールとアジャイルの違いは開発手法そのものではなく、イテレーションを通して何を学ぼうとしているのか、その目的の違いだったということです。
ウォーターフォール:「正しく作れているか」を確かめる
以前は、ウォーターフォールは一度決めたら後戻りしない開発だと思っていました。
でも実際の製造業では、要求を見直し、設計を修正し、シミュレーションや試験を繰り返しながら品質を高めています。ウォーターフォールでも、驚くほど多くのイテレーションが行われています。
その目的は、「正しく作れているか」 を確かめることです。
なぜここまで品質にこだわるのか。製造業では、一度モノを作って世に出してしまうと、後から簡単には直せないからです。
ソフトウェアなら不具合が見つかっても修正版を配ればよいですが、量産されたハードウェアはそうはいきません。市場に出た製品を回収するリコールは莫大なコストがかかりますし、クルマや医療機器のように、不具合が人の安全に直結する領域も少なくありません。
だからこそ、作り始める前に要求と設計を固め、リリース前のイテレーションで徹底的に「正しく作れているか」を確かめる。後戻りのコストが大きいからこそ、前段の作り込みに重みが置かれています。
アジャイル:「本当に必要なものを作れているか」を学ぶ
一方、アジャイルでは、小さくリリースし、ユーザーの反応から学び、本当に価値のあるものかを確かめながら改善していきます。
こちらの目的は、「本当に必要なものを作れているか」 を学ぶことです。
なぜこういう学び方になるのか。Webサービスの世界では、そもそも「何が正解か」が作り始める前にはわからないことが多いからです。
ユーザーが本当に使ってくれる機能なのか、市場に受け入れられるのかは、頭の中でいくら設計しても確信は持てません。しかもソフトウェアは後から直せるので、作り込みすぎて外すより、小さく出して反応を見たほうが速く正解に近づけます。
だから、事前の作り込みより、リリースして学ぶことにイテレーションの重みが置かれています。ウォーターフォールが「作る前」に確かめるのに対して、アジャイルは「出した後」に確かめている。これが両者の違いです。
繰り返す点は同じ、学ぶ対象が違う
どちらも繰り返しながら開発する点は同じですが、学ぼうとしている対象が違っていました。
これからは「学び続けられる組織」か
最近はOTA(Over-The-Air:無線経由でのソフトウェア更新)や生成AIの普及によって、リリース後も継続的に改善し続ける開発が当たり前になってきています。
そう考えると、これからは「ウォーターフォールか、アジャイルか」という二項対立ではなく、組織がどれだけ速く学習し、その学びを次の開発へ生かせるかが重要になっていくのかもしれません。
その視点で考えたとき、Peter Sengeの『学習する組織』という考え方が、今あらためて意味を持ち始めているように感じます。
では「速く学習する組織」は、具体的に何が違うのか。大げさな話ではなく、たとえばこういうことです。
- リリースや試験で得られた学びが、担当者個人の頭の中で止まらず、次の要求や設計にちゃんと反映される
- うまくいかなかったこと(失敗)を、責める材料ではなく学びとして共有できる
- 「一度決めたから」ではなく、「学んだから見直す」が普通に受け入れられる
手法をアジャイルに変えることそのものより、この「学びを次に回す仕組みと文化」があるかどうかが効いてきます。
おわりに
私自身も、「どちらの開発手法を選ぶべきか」ではなく、「どうすれば組織が学び続けられるのか」という視点で、製造業とソフトウェア開発、そしてAIをつなげて考えていきたいと思っています。
