現実世界は動的なのに静的に解こうとしている危うさのようなものへの自戒

Recruit Engineers Advent Calendar 2022 - Adventar 23日の記事になります。

1. 方法論は限定スコープ内における合理性の話である

書籍などで得られる概念や方法論(技術含む)は、その書籍がスコープとしている中での限定合理性の話をしており、 書籍がスコープとした範囲における論理的正しさである場合がある。

特定のスコープの中においての最適なので、実は全体からみると個別最適だったりする。 つまり、実は引いてみると非効率なことを近距離でみると効率的だと主張している場合もある。

この包含関係による概念的強さみたいなものは存在しており、例えば、制約条件理論みたいなものは、様々な概念の上位に存在しており包含していたりする(そう勝手に思っている)。スコープを決めそのスコープ内におけるボトルネックを活用しスループットを最大化させるという概念的な強さはあり、その切り口で理解するとアジャイル系のプラクティスみたいなものはそのサブセットのように見えたりする。リアルオプション戦略も同じような概念的強さの感覚はある。プログラムマネジメントみたいなものも同様の強さを感じる。

2. 現実世界は動的なのに静的に表現されがちであることを認知する

また、書籍の特性として、現実世界では動的なものを静的に扱われやすい傾向はある。 それはありとあらゆるコンテキストに対応することは出来ないため仕方がない。

リーンスタートアップアジャイル関連の書籍・方法論における

「仮説検証は小さくやるべきである。」

この「小さく」とはどのくらいなのか。

起業して間もないスタートアップの小さく仮説検証と、 1000億円ビジネスを何個も持っている会社の小さく仮説検証における、小さくとは同じなのだろうか。 なにか違う気もする。*1

つまり、実は相対性がそこにありそうである。 時価や相場観のようなものがあり、それに対して小さいかどうかなのかもしれない。 しかし、書籍においてはそんなこと知ったことではないので、 「小さく仮説検証せよ」にしかならない。至って静的である。

本来相対性の話なのに絶対値として理解するように書かれてしまう。 読者自身に相場観がないとここで絶対値的な理解をしてしまい、自分の文脈に合わない利用をしてしまう。 ここでいう相場観とは事業理解のようなものやそれに伴う現場感のようなものかもしれない。

3. 現実世界は動的なのに静的に解かれがちであることを認知する

文脈に則さないマイクロサービスを構築してしまうようなケースしかり、将来発生するかもしれない「もしかしたら」を過大評価し備えすぎるみたいなのも似ているかもしれない。 本来、「悪いことの発生する確率 x インパクト」の期待値で見るべき話であるが、相場観がないと、1%程度しか発生しないことを100%発生すると思い込んでしまう。 しかし、書籍で得られる方法論は、前提として100%発生する側の視点で書かれていることもある。それは前述の図の通り、その問題が発生した状況を解決するための方法論であれば、その世界においては正しい。しかし、現実世界ではその状況になるかどうかは場合による。

本質的には事象を期待値で理解し適切にリスクを取れるエンジニアリングをすべきであり、それをしないとリスクゼロに向かう投資サチュレーションオリンピックが始まってしまう。リスクゼロにするまで無限の投資が始まるし、無限のエラーハンドリング処理が書かれるかもしれない。または、無限のテスト項目を消化しなければならないかもしれない。バグが0であることを証明しなければならないかもしれない。

しかし、教科書知識だけなどで現場感がないと、そもそも確率とインパクトが見えないからリスクもとれないし、ほとんど発生しないことを絶対発生すると思い込んでしまうし、ちょっとしたことも、一大事だと思ってしまう。

つまり、方法論というものは、それが成立する前提がかならずあり、そこでスコープが定義され、そのスコープ範囲内において、限定合理性を追求するものである。と理解をするとよい。これが、それらとの良い付き合い方なのではなかろうか。

また、その前提においても、他の存在可能世界の存在可能性があることを知っていることも重要である。 自分は1つの存在可能世界にいるだけであり、他の可能性の世界も並列で存在しているし、その世界毎に時価や相場感はあり、異なるのである。 このブログ自体も私が向き合っている1つの世界の相場観に過ぎなかったりもする。

という、方法論に対するスタンスの話。

4. 問題引き寄せバイアスを認知する

また、方法論に対する以下のようなバイアスが生まれがちであり、気をつける必要がある。

自分の理解力の範囲内(得意領域・関心領域)に問題を引き寄せることがある。 局所的な世界においては論理的に正しいが全体でみると最適ではないというパターンである。

・生産性が悪いのは・・・技術が古いからである。だから新技術にすべきである。
・生産性が悪いのは・・・デプロイ回数が少ないからである。デプロイ回数を増やすのである。
・生産性が悪いのは・・・開発開始からリリースまでのリードタイムが長いからである。リードタイムを最短にするのである。
・生産性が悪いのは・・・ウォーターフォールだからである。だからアジャイルにすべきである。

それは、ホントだろうか?生産性が悪い他の要因は考えた?極端な例をあげるなら、そもそも作るべきものを間違っていた。とか、想定する顧客は存在していなかったとか。そういう話もあるかもしれない。要因として。

しかし、教科書に感化されている状況だとこれに陥りやすい。 知っている方法論に問題を引き寄せ、それに当てはめて解こうとする。 局所的には正しく見えるが、本質的には最適ではない。 自分で解ける論理領域への問題引き寄せはオーバーエンジニアリングを生む。

問題の発生ポイントの適切なスコープにおいて、そのスコープにおける最適な方法論にて解くべきである。

5. まとめ

・現実世界は動的であるが静的に解こうとしていることがある。
・動的に捉えるには、ある種の相場観(=現場感)のようなものが必要である。
・現実世界の相場観がないと「もしかしたら(確率1%)」が「絶対(確率100%)」になってしまう。
・現実世界の相場観がないと「ちょっとだけ(インパクト小)」が「重大(インパクト大)」になってしまう。
・無意識的に自分の理解力の範囲内(得意領域・関心領域)に問題を引き寄せることがある。
・本来解くべきスコープで問題に対峙していない場合、局所的には正しく見えるが本質的に最適ではない解決になる。

何か問題に遭遇したときに、ああ、これはあのパターンのやつだ!となる自分がおり、そのときは問題を自分の既知のHOWに引き寄せてしまっているときがある。 だから、自戒もこめて・・・・。というブログでした。


関連しそうなテーマをyoutubeで勝手に定義して解説しています youtu.be

*1:ティーブブランクも Steve Blank Is the Lean Startup Dead? にて以下のように言っている。

When capital for startups is readily available at scale, it makes more sense to go big, fast and make mistakes than it does to search for product/market fit. The amount of customer discovery and product-market fit you need to do is inversely proportional to the amount and availability of risk capital.