プロダクトはシンプルが一番だ。
コードもシンプルがいい。
市場や顧客のニーズを取り込み、プロダクトを継続的に進化していく。
だから、時間の経過と共に、プロダクトはだんだん複雑になっていく。
複雑になると、コードの可読性も落ちる。可読性が落ちると、システムがブラックボックス化して、運用・保守がムズカシクなる。
そうなると、プロダクトのライフタイムコストが上がる。
インクリメンタルにモノを作る際の宿命だが、プロダクトとコードを、シンプルかつヘルシーに保つ努力が欠かせない。
継続的にリファクタリングを繰り返すことも重要だが、一番いいのは、作るモノを最小限に留めることだ。機能を厳選し、余計なモノは作らない。
作ると、メンテナンスがつきまとう。
プロダクト・ライフサイクル通して、保守しなくてはならない。アジャイルであっという間に作れたとしても、その後のメンテナンスはえらく長いのだ。だから、余計なものは、作らない。
では、機能を選び抜いた前提で、作り方の話に移ろう。
作るイメージは、「広げて、深める」である。
まず、スプリントでコミットした機能を作り上げていく。その上で、プロダクトに利用者フィードバックを練り込み、品質をどんどん高めていく。
仮に、スプリントが2週間だとする。
ポイントは、プロダクトインクリメントを、2週間みっちりかけて作らないことだ。
もっと速く作るのである。最初の2~3日、遅くとも1週目に、一通りの機能はできあがっている状態にする。
その後、利用者の為のプロトタイプおさわり会を開き、画面のレイアウトや、操作性を高める。品質を作り込んで行く。
ユーザーは、モノを見ると、本当に欲しいモノが具体化する。
I will know what I want/what I don’t want when I see it.
聞いたことがあるだろう。
開発に2週間みっちり使ってしまうと、ユーザーのフィードバックを取り込むことができず、レビュー会の反応は今ひとつだ。
早い段階で、一通りの機能をつくってしまう。そして、残りの時間で作った機能を洗練化する。
だから、実際のスプリントは1週間のイメージだ。1週間で作り込めるものを2週間のスプリントで作るから、高品質のモノができあがる。
コンセプトは、受験勉強と同じだ。
賛否両論あるだろうが、ある有名私立小学校では、中学受験に備えて、4年生の内に6年間の学習カリキュラムを終える。残りの2年間は、受験対策である。
一通り学習したら、実力試験を受ける。
将来対峙する課題を、早めに知る。必要となるレベルを、早めに知る。そして、準備する。
準備して、実力テストを受け、その結果を踏まえて、学習を繰り返す。
テスト・学習、学習・テスト、このサイクルをグルグル繰り返すことで、理解を確かなものにする。どんな問題でも落ち着いて解けるようにする。問題の字面を見れば、自然と公式が浮かぶまで、勝ちパターンを体に染みこませる。
広げてから、深める、このコンビネーションで、テーマを完全に制覇する。自分のモノにする。
プロダクトインクリメントも、同じである。
- 絞って
- 広げて
- 深める
絞りすぎかなと思う位に、厳選する。
選び抜いたら、すばやく作る。
できたら、徹底的に磨く。
品質を作り込んで行くためには、アーキテクチャー設計が重要だ。
最初の方向付けフェーズで、どのレベルの品質・非機能要件が必要なのか、特定しておく。そして、求められる品質レベルを満たすソリューション・アーキテクチャーを選ぶ。
インクリメンタルにプロダクトを作ると、アーキテクチャーが崩れがちだ。
だから、プロダクト・インセプション時に、基盤となるアーキテクチャーを設計し、合意しておこう。
プロダクトマネジメントの要諦は、絞り、広げ、深める、ことである。
- 機能を極限まで絞り込む。
- 速やかに機能を作り、顧客に実験してもらう。
- フィードバックを取り込み、徹底的に、品質を作り込む。
![]() |