#155 フルサイクルエンジニア⑧ 〜不確実性と向き合うためのオプションバリュー~
こんにちは。ITベンチャーエンジニアのこへいです。
前回、フルサイクルなチームで高いパフォーマンスを発揮するには非同期コミュニケーションの活用が欠かせませんが、非同期コミュニケーションには訓練が必要という話をしました。
今回はエンジニアリングという行為のためにフルサイクルがなぜ重要かという話をします。
〇エンジニアリングとは不確実性の低い状態に効率よく移していくこと
「エンジニアリング組織論への招待」で、エンジニアリングは下記のように紹介されています。
プロジェクトマネジメントでは、プロジェクトの前半では不確実性が高く、後半になるにつれて不確実性が徐々に下がっていく様を表した「不確実性コーン」という図が使われます。
この図では、不確実性の大きさを「見積もり納期」の幅として表現しています。プロジェクトが進むにつれて、いつ頃に完成するのかがはっきりとしてきます。
エンジニアリングとは、どうしたら効率的に不確実性を減らせるかに向き合うことになります。
〇たいていのことは実現できる。大事なのはどう実現するか
この『効率的に』というところに、システム開発において価値を提供する一通りのサイクルを理解したフルサイクルエンジニアが活きてきます。
プログラム言語の進化、生成AIの登場などによりシステムを作る難易度は年々下がってきています。また、マシンパワーの向上やオープンソースの発達によって、たいていのことは実現可能です。カネと時間さえあれば。
顧客から営業から「○○は出来ますか?」と聞かれたらエンジニアの回答は大抵「可」です。
このやりとりはシステム開発の現場ではあるあるの光景なのですが、『カネと時間』について言及されていない場合は危険です。
顧客は無邪気に「○○は出来ますか?」と聞いてくるものです。その問に対して、『出来る/出来ない』ではなく『いくら』で『どれくらいの期間』でというコミュニケーションが『効率的』に不確実性を減らすことには重要です。
「○○」を実現することが難易度が高く、十分なカネと時間が必要な場合は「○○」の実現には高い不確実性が伴います。
顧客の課題を解決するのであれば、「〇〇」でなくカネも時間も少なくて済む「××」という代案を提示することで、不確実性を下げることができ顧客も安く早く課題を解決できるため喜ばれます。
システム開発の費用はほとんど人件費のため、不確実性を減らしてやることを減らすことは利益を増やすことにも繋がります。
フルサイクルエンジニアはシステム開発のどのフェーズがどのようなプロセスが行われるのか、どれくらいコストがかかるのかがわかるため、不確実性の低い実現方法を見つけることが可能です。
〇オプションバリューの活用
山口周さんのnoteでオプションバリューについて紹介されていました。
システム開発においても「遅延した意思決定」ができるという観点で、このオプションバリューという考え方は重要です。
カネと時間を考慮した実現方法を提案していくことが重要と述べましたが、複雑な要件を満たすシステムは実装前に全てのことを決めることは困難です。
顧客とのコミュニケーションを取りながら実装を進めていく中で、解像度が上がることで決めなければいけないことが明らかになっていきます。
そのため、詳細な要件はプロジェクトの後半で決めるという前提を合意することで、オプションバリューの恩恵を得ることが出来ます。
ただし、プロジェクトの後半では覆せないこともあるため、なんでもかんでも後で決めればいいということではありません。顧客が必ず達成しないといけないことを後からやらないとは言えません。プロジェクトの後半でスケジュール内で実現不可能なことがやっぱり必要になったというのも受け入れられません。
プロジェクトの前半、特に見積もりや要件定義の時点で『絶対に達成しなければいけないもの』『これは出来ないというもの』を明確にすることに全力を注ぎ、細かな部分は解像度が上がってから決まられることで効率的に不確実性を減らすことができます。
システム開発の一通りのサイクルを理解していることで、『迅速に意思決定すべきもの』『意思決定を遅らせてもよいもの』を嗅ぎ分けることができます。
ということで、今回は不確実性を効率よく減らすために、フルサイクルに対応できることが活きてくるという話でした。
最後までお読みいただきありがとうございました。
この記事が気に入ったらサポートをしてみませんか?