バグですか?仕様ですか?筋肉です💪

筋肉とプログラミング、その他アウトプットをしていきます。

エンジニアリング組織論への招待まとめ

はじめに

今回は、「エンジニアリング組織論への招待」という本のまとめを書いていこうと思います。

エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング

エンジニアは仕事を進めていく上でコードを書く以外に様々な問題に直面します。

  • 上司、プロジェクトメンバーとのミスコミュニケーション
  • 経営者とエンジニアとの認識の食い違い
  • スケジュール通りに終わらない

これらの根源は「わからない」ことへの不安です。
この本はその不安、つまり不確実性とどう向き合っていくかについて書かれています。

今回は、1章の思考のリファクタリングについてまとめていきます!

この記事を読んでわかること

  • エンジニアリングとはなにか
  • 不確実性とはなにか
  • 不確実性を下げるには

エンジニアリングとは

エンジニアリングとは、何か役に立つものを実現していくこと(曖昧さを減らし、具体性、明確さを増やすこと)です。

エンジニアリングする上で重要なのは、どうしたら効率よく不確実性を減らしていけるかです。

不確実性とは

不確実性とは、わからないことから生まれます。人間にとってわからないことは2つ

  • 未来
  • 他人

未来は、それがやってくるまでどうなるかわかりません。
頭でいくら考えていてもわからないものなので、実際に行動し、実験して観察することで少しずつ確実になっていきます。

他人も、わかりません。

私たちは1人1人別の自意識を持っていて全ての情報を一致させることは不可能です。 これもいくら考えていても決してわかるものではないので、コミュニケーションを通じて不確実性を削減するしかありません。

この2つの不確実性を減らしていくことが唯一物事を実現させる手段です。
しかし、私たちはわからないものに向き合うことを避けてしまうという習性があります。

それが不安です。

私たちは不安なものには、攻撃か逃避を選択してしまいます。なので人は自分がわかっているものを優先して実行してしまう癖があります。

不確実性が減っていかない限り不安は減りませんし、向き合おうとするとそれ自体が最大の不安を生み出してしまいます。

不確実性を下げるには

ではどうすれば良いのか。

不確実性を下げるには、情報を生み出すことが必要です。

いかにして、多くの情報を生み出すことができるのか、そのために何をすべきなのかというのがこの本の一貫したテーマであり、エンジニアリング活動の本質の1つです。

情報を生み出すには思考を前に進める必要があります。
ここでは3つの考え方を用いて思考を前に進めていきます。

  • 論理的思考の盲点を知る
  • 経験主義と仮説思考
  • システム思考

それぞれみていきましょう。

論理的思考の盲点を知る

思考を前に進めるには論理的思考が不可欠です。

論理的思考で正しい結論を導くには、

  • 事実を正しく認知できること。
  • 正しく演繹できること。

が、必要です。

(演繹は「Aである」という前提から、「Bである」という結論を導くことです。
A:人間はいつか死ぬ。B:私はいつか死ぬ)

しかし、人は論理的な思考を常に正しく使えるわけではありません。

特に他人が関わってくる問題に対しては感情的になりやすいです。

私はあなたではないという単純なことが、忘れられてしまい、自分の事情は全て相手に伝わっているのだという勘違いも発生します。

どんなに自分が正論だと思っていることも、その人自身の世界の中で認識できる範囲の中での正論にすぎず正解ではないのです。

どんな時に自分は論理的で無くなるのかを知った上で問題解決に臨む、それが論理的思考を進める上で重要なことです。

自分は論理的に考えることができると思いこむことこそが非論理的な思考を生みます。

それを踏まえた上で自分がどのようなときに認知が歪むのかを知り、自分の歪んだ認知を正すための行動を促す考え方が論理的思考の盲点を知るということです。

  • 自分がいつ非論理的になるかを知ること。
  • 自分は間違っているかもしれないが、それに早く気付く方が良いと思考のパターンを変える必要がある。

経験主義と仮説思考

情報を生み出す際に有効なのがこの経験主義仮説思考です。

経験主義

情報を入手するために行動を起こして、その結果を観察し、そこから問題解決を行う考え方を経験主義と言います。

私たちが、何か問題に出くわした時にできることとは、

  1. コントロールできるものを操作する
  2. 観測できるものの結果をみる

だけです。

コントロールできるものとは、例えば、自分の行動です。例えば毎週ブログを書くとかです。これは自分の行動次第でコントロールできます。

逆に、例えば、コントロールできないものはブログの読者を増やすことです。しかし、これは観測できることなので実際に自分がブログの書く内容を変えてみたことで結果読者が増えた減ったなどの結果を見ることができます。

経験主義は、やってみなければわからないだけの論理ではなく、上記の方法でしか前に進むことができないということを意味しています。

仮説思考

仮説思考とは、情報がわずかであってもそれを説明可能とする大胆な思考展開を行い、それを検証するための行動につなげる考え方です。

この考え方は、常に正しいわけではありませんが、今あるデータからは、演繹的に導くことのできない跳躍を生み出してくれます。

経験主義と仮説思考によって、どのような問題なのかをはっきりさせることで、同じところをぐるぐる回る不毛な思考を避けることができます。

(不毛な思考は、仕事で解決できない問題にハマってしまった時に、考えているようで考えていないような状態に近いですね笑)

  • 今直ぐに解くことのできない問題であれば、それはおそらくどのような問題かはっきりしていない。
  • 問題をはっきりさせる仮説を立てて、検証していくというプロセス思考に思考を切り替えることが大切。

システム思考

人は問題を個人の責任にしたり、全体像を見失った局所最適解な思考をしてしまいます。

それが全体像ではないかもれない、問題は関係性にあるのではないかという視点をもつことがこのシステム思考の考え方です。

私たちはつい自分から見える世界の中に閉じこもって、正しさや合理性を判断しています。
しかし、人間が認知している範囲というのは、全体のごく一部にすぎません。

問題は複雑に絡み合っている場合があります。

そのため、合理的に見える解決策が別の問題を引き起こしたり、想定していない悪化をもたらすことがあります。

このように全体像を把握できない状態で、問題解決を進めて行こうとすると思いもよらない結果を生むことがあります。

そうならないためには、

  • 対立に見える問題を対立にならない全体像をあぶりだすこと。
  • その解決を個人の問題にせず、関係性の問題に変換して本当の問題を発見すること。

が必要になってきます。

人間の不完全さを受け入れる

問題が難しく感じられているときには、まだ問題が十分に変換されていません。

この章のタイトルである思考のリファクタリングとはこの3つの考え方を用いて、複雑な問題を簡単に変換していき思考を前に進めていくということです。

自分の認知の歪みをパターンとして記憶することで過ちに気が付きやすくするという習慣を持つことができます。そうすれば少しずつ改善していきます。

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

コミュニケーションの不確実性は3つの不確実性からきます。

  • 人は、他人や事象を完全に理解できない。
  • 相手に全てが正しく伝わるとは限らない。
  • また、正しく伝わったからといって、他人が思ったように行動するとも限らない。

これらの不確実性によって、さらに以下の問題が引き起こされます。

  • 自分は知っているけど他人は知らないといった情報の非対称性

→自分の抱えている状態を他人は把握しているはずだと勘違い、あるいは把握してほしいという願望に基づいて行動してしまいます。

  • 人は限られた範囲でしか合理的な行動が取れない非合理性

→複数人の共同作業では、個々人が最適だと思う行動でも、全体として不合理な行動になってしまいます。

通常エンジニアリングは複数人で何かを実現しますが、上記のために、1人ではなかなか起こらないはずの不合理な行動が、組織では発生してしまいます。

このような情報の非対称性や非合理性を起こさないためには、

意思決定とそれに関わる情報が組織内に正しく整合性をもって伝達されるように継続して努力し、何かわからない決定があったとしても直接聞いてみようという関係性を作ること

が必要です。

まとめ

エンジニアリングは何かを実現していくことで、重要なのは不確実性を効率よく削減することです。

不確実性は、わからないことで

  1. 未来
  2. 他人

から生まれます。

これらを解消するには情報を生み出すことが必要です。
つまり思考を前に進めること。

それには3つの考え方があります。

  • 論理的思考の盲点を知る
  • 経験主義と仮説思考
  • システム思考

これらの考え方を使い、自分自身の認知の歪みをパターンとして記憶することで、過ちに気が付きやすくなる習慣を持つようにします。

そうすれば、少しずつ改善でき思考が前に進むようになります。

そして、エンジニアリングは組織で複数人で行うので、 それらを行いながら同じ目的で働いているはずの人々との間にあるコミュニケーションの不確実性を減らしていく必要があります。

最後に

この本を読んで確かになぁと思うことがいくつもありました。

例えば、他人と少し言い争いになる時って、正論をぶつけているつもりですが、それって結局自分の中の正論だったり常識なんですよね。

相手もそういうものを持っていて、結局何も良くならずにお互いにストレスを溜めてしまうだけみたいな。

そういう時に、非論理的思考の盲点を思い出してこれはただ自分の正論に過ぎないんだとか、システム思考的にこのまま言い争って言い負かしても意味ないな、どうしたら本来の目的を達成できるかなと考えた方が有益です。

経験主義と仮説思考もエンジニアの仕事をする上で、大切です。

本文にも書きましたが、ずっと考えてわからないものはわかりません。

そこで、考え続ける(実際にはあんまり頭は動いていない)よりは、どんな情報があれば解決できるだろうかとか、誰に聞けばわかるだろうかとだけ考えて直ぐに行動し、その結果からまた思考をする方が問題解決にとって効率的だなと思いました。

エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング

エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング