エンジニアリング組織論への招待の1章思考のリファクタリングを読んで

はじめに

仕事してる時に、なんかハマってるなーというのを言語化したかった。 手元でちらっと読んでいたエンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング~にヒントがあると思ったので読んでまとめた。

本自体は不確実性と戦うためにはどうしたらよいかというテーマで書かれている 今回は1章の思考のリファクタリングを読んだ。 読んだ感想としては、これで解決とはいかないが、自分の狙いどおり言語化できたので一歩前に進めた気がする。

1章の強引3行まとめ

  • エンジニアリングとは不確実性を減少させるための情報を効率よく獲得することによって、曖昧なモノを具体的なモノとしていく過程における行為と定義
  • 不確実性は現時点で頭で考えてもわからないもの、つまり「未来」が原因で発生する。未来の不確実性を効率よく減少させるためには、本来人間が持っている「論理的思考の盲点」「経験主義と仮説思考」「全体論とシステム思考」という3つの思考の不完全さに注意をし、情報獲得のための思考・行動をする必要がある。
  • 不確実性は、「他人」が原因で発生する。別の自意識を持っている人間間の情報をすべて一致させることは不可能という前提にたった上で、「情報の非対称性」と「限定合理性」の2つを防ぐために、情報の偏りをなくすコミュニケーションを行う必要がある。

以下自分の読書メモ

  • よりよい思考を行うため(思考のリファクタリング)に、エンジニアリングとは何か
  • エンジニアリングで取り扱う不確実とは何か
  • 不確実は何が原因で発生するものか
  • 不確実の原因を扱うためにはどのような行動を行う必要があるか

エンジニアリングの定義

  • エンジニアリング 「工学」の語源をみると、なんか役に立つものを実現していく学問。
  • つまりエンジニアリングとは実現していくための科学。
  • 実現するプロセスを考えると、最初はとても曖昧な状態、最後は曖昧さの全くない具体的な成果物・状態。
  • 曖昧さを減らし、具体性・明確さを増やす行為にエンジニアリングとは何かの答えがありそう
  • エンジニアリングの本質は不確実性を効率よく削減していく行為であると定義

不確実とは何か?

  • 不確実とは何が起こるかわからない状態のこと。
  • 不確実を減少させる知識のことを情報と定義(何が起きるかわからない→ある程度わかるの差)
  • 不確実は未来と他人が原因
  • 未来はそれがやってくるまでわからないこと。頭で考えてもわからない
  • 行動し観察することで情報を得る
  • 他人は自分という人間と全く別の自意識をもっていて、すべての情報を一致させるのは不可能。音声・テキストという手段を使っても正しく伝わらない。正しく伝わったとしても行動するとは限らない
  • コミュニケーションを行うことで情報を得る

不確実性の削減をするためにハマりがちな罠を、仕事と学力テストの比較を例に理解する

  • 仕事と学力テストの違いを意識した上で行動しなければ、これまで訓練してきていないので当然苦しむ。(以下のカッコ内に学力テスト→仕事の形でそれぞれの違いを表記)
  • 論理的思考の盲点(一人で取り組む→複数人で取り組むの違い)
    • 自分が論理的でない可能性があり、また他人も論理的ではない可能性もある中で問題解決に望む
      • 論理的であるためには、正しく事実を認識すること・感情ではなく事実に基づいて演繹を行う
  • 経験主義と仮説思考(問題文の情報がある → 問題設定すらされていない)
    • 情報がない場合には、まず情報を入手するために行動し観察をして情報を獲得した上で初めて問題解決ができる
    • 限られた情報から全体像を想定し、確かめることで問題解決を行う
  • 全体論とシステム思考(問題も答えもただ1つ → 問題も自分で設定する必要があり、答えも1つではない)
    • 正解は1つではない。時間と資源の制約の中で正解に近づく1手を打ち続ける
    • 正解が用意されてるわけではないので、何が正解かを自分で設定する必要がある

論理的思考の盲点について詳しく知る

  • 論理的思考とはルールと事象から結論を導く演繹的思考のこと。
  • 論理的思考には2つの重要な前提がある
  • ルールと事象(考えのもとになる事実)を事実と意見を混ぜずに、正しく区別・認知すること
  • 感情を混ぜずに正しく演繹できること

経験主義と仮説思考について詳しく知る

  • わからない場合は調べるしかないというのが経験主義。
  • 未来の不確実なものを少しでも明らかにするためには、行動することによって未来を現在に近づけることにより確かめるしかない。
  • 情報がないなら、問題をはっきりさせるためにどのような次の一手を打てばよいのか考える。
  • 今わからないということ自体が次の一手への重大なヒント。つまり何がわかれば次に進められるかを考え、それを確かめる問題に変換すればよい。
  • 少ない情報で大胆に考えるというのが仮説思考
  • ルールと事象から結論をだす演繹法。複数の事象から結論をだすのが帰納法。事象と、それを説明可能にする大胆な思考展開・モデル化により検証するための行動を結論として出すのを仮説思考という。
  • 何か新しいビジネスやシステムの開発を行う場合、不確実性が大きい段階で大きな意思決定をすると投資すべてが無価値になる可能性がある。
  • 利益の変動幅が大きい場合、その確からしさを安価に確認することができれば、大きな投資を行う意思決定を遅らせることができ、不確実でリスクの大きな意思決定を避けることができる。仮説検証によって小さなコストで確かめることができる。

全体論とシステム思考について詳しく知る

  • システムの語源はギリシャ語。「共に」+「立てる」=「組み立てる」ということを示している
  • システムはは全体の関係性をとらえること
  • 細かい要素に分解しその要素の性質を知ることで全ての現象説明できるこの考え方を要素還元主義的な思考と言う。例えばロジカルシンキングの1部として利用されるロジックツリーの要素還元主義的な発想である
  • システム思考においては、個々の要素の間にどのような関連性があるか考え記述する。
  • 利益 = 売上(=客数×単価) - コスト(=原価 + 販管費)の例を考えた時に、ロジカルシンキングだと単価あげたり、販管費下げたりすることによって利益をあげようと試すと関連する別の要素に影響をおよぼすことに気づけない。これらは独立しておらず、要素間で関連がある。
  • 部分だけしか見ないことで対立が起こり、全体にとって的な答えかどうかの判断がつかないため局所最適化で争うことになる。
  • システム思考において重要なのはフィードバックサイクルと言う考え方
  • 全体の関係性を見ることによって対立を解消する。顧客満足やユーザーアクティブ率、単月の売り上げと言う比較ができないものであっても、もう一回層上からビジネスという全体のシステムを捉えてあげることで比較可能なものに変換できる。
  • 成果物であるプログラミングの何を持って良いとするか基準については必ず前提がある。
  • 問題設定や、開発時の状況等の前提に基づき、初めて良い・悪いが初めて判断することができる。
  • 良いプログラムには問題解決の眼(視野・視座・視点)がある。

コミュニケーションの不確実性

  • エンジニアリングは複数人のチームで何かを実現する工程
  • 人は他人や事象を完全には理解できないという「他者理解の不確実性」、コミュニケーションが到達するとは限らない「伝達の不確実性」、仮に理解されたとしても行動するとは限らない「成果の不確実性」の3つの不確実性がある
  • これらの不確実性によって、知っている人/知らない人の分断という「情報の非対称性」、自分にとっての正解が全体にとっての正解にならない「限定合理性」の問題を引き起こし良くない結果を生む。