🌊

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

2024/03/19に公開

導入

事の発端はこんな会話からでした

私「おもろい技術本ないですか?」
マネージャー「最近こんな本読んでるんだよね」
私「『エンジニアリング組織論への招待』ですか、初めて見ました」
マネージャー「マネジメントに関する本なんだけど一緒に読んでくれる人いないんだよね、内容はすごくいいんだけど」
私「とりあえずAmazonでポチっときますね、明日届きます」
マネージャー「あざ」
私「読んでもわかんないところは知恵貸してください」
マネージャー「りょ」

正直軽いノリで読み始めた本が大きく価値観を変えたので紹介していこうと思います。

はじめに

エンジニアを取り巻く環境には様々な問題があります。

問題の根源は「不確実性」による不安です。「不確実性」をどう扱うかを知れば「不安」を「競争力」に変えることができます。

「不確実性に向き合う」という原則から、エンジニアリング問題の解決方法を体系的に捉える組織論です。

Chapter1.思考リファクタリング

ソフトウェア開発において1人で完結することはありません、様々な人々とコミュニケーションをとりながら開発を進めていくことになります。

そんなとき、他者とのコミュニケーションの中で理不尽や感情の対立が発生してしまいます。これは、思考の中に「バグ」が存在しているようなものです。

このような状況の中、仕事を進めるために「思考のリファクタリング」を行う必要があります。

「思考のリファクタリング」とは、頭の中で発生してしまう無駄なプロセスを削除して、考えるときの指針をもつことで、問題解決に向かって、明確に行動ができるように促すものです。

エンジニアリングの意味

エンジニアリングは、日本語で「工学」と訳されます。

「工学」とは自然の原理に依拠しながら「何か役に立つものを」「実現していく」学問です。

実現するときには「はじめ」と「おわり」が存在する。

実現のはじめとはなにか、それはすべて「あいまいな状態」から始まっている。  
実現のおわりとは、「あいまいな状態」が無くなって成果物がある状態です。

ソフトウェアにおいては、顧客のあいまいな要求からスタートし、具体的で明確な何かに変わっていく過程が実現で、この過程すべてが「エンジニアリング」という行為です。

「あいまいさ」を減らし、「具体性・明確さ」を増やす行為が「エンジニアリングとは何か」の答えである

不確実性

エンジニアリングにとっての「あいまいさ」とは何でしょうか。それは決まっていないことで、将来どうなるかわからないものです。

これを不確実性と表現します。プロジェクト初期ではこの「不確実性」を多く含んだ状態であり、プロジェクトが進むにつれて「不確実性」が減っていき、いつごろには完成するのかが明確になっていきます。

この推移を表した「不確実性コーン」という図が使われます。

不確実性コーン
(続き)初めてプロジェクト開発に取り組んで1年掛かった話

エンジニアリングで重要なことは「どうしたら効率的に不確実性を下げることができるのか」を考えることです。

不確実性の発生源

では、「不確実性」とはどこから生まれるのでしょうか。「不確実性」とは「わからないこと」によって生まれます。人間の「わからないこと」は2つ存在します。それは未来(環境不確実性)と他人(通信不確実性)です。

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

他人 とは、別の自意識を持っていて、すべての情報を一致させることはできません。会話や書き残しているものから正しく伝わるとは限らず、また、正しく伝わっても、他人が思ったように行動するとも限りません。これも考えても仕方ないもので、コミュニケーションを通じて不確実性を減らすしかありません。

不確実性に向き合う障害

不確実性と向き合うということは不安が伴います。「わからないこと」というのはそれだけで自身を脅かす可能性があるからです。だからこそ人は「わかっていること」を優先して実行してしまう癖があります。

ところが、不確実なものが減らない限り、「不安」は減りません。「不安」を減らすには、不確実性と向き合う必要があります。

不確実性を下げることは「情報を生み出すこと」に他なりません。いかにして、多くの情報を生み出すことができるのか。そのために何をすべきか考える必要があります。

情報を生み出す考え方

情報を生み出す考え方は3つあります。

  • 論理的思考
  • 経験主義と仮説思考
  • 全体論とシステム思考

論理的思考

前提であるルールと事象(事実)から、結論を導く思考方法で「演繹的思考」と言い換えることができます。しかし、論理的思考には盲点があり「人は正しく事実を認知することができない」のです。ルールと事象(事実)が成り立たなければ「論理的」は成り立たなくなります。そのため、どのようなときに「論理的」が成り立たなくなるのか知る必要があります。

経験主義と仮説思考

経験主義とは、情報を入手するために行動を起こして、結果を観察し、そこから問題解決をするやり方です。
仮説思考とは、限られた情報であっても、そこから全体像を想定し、それを確かめることで問題解決へ向かうやり方です。

全体論とシステム思考

正解は1つではないという現実の前提から、全体像を見極めて正解を設定する必要があります。より「広い視野」で問題を捉えるためのやり方です。

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

これらの考えが重要であるのは、通信不確実性が発生するからです。
不確実性の中で「他人」(通信不確実性)に関する不確実性を取り上げました。この「他人」(通信不確実性)についてもう少し掘り下げましょう

3つの通信不確実性

ニクラス・ルーマンが3つの通信不確実性を論じました。

  • 他者理解の不確実性
  • 伝達の不確実性
  • 成果の不確実性

この結果、情報を知っている人と知らない人が発生する「情報の非対称性」と情報は知っているが各々別の行動を取ってしまう「限定合理性」が発生してしまう。

つまり、「自分は他人ではない」ということになってしまいます。

コミュニケーション能力とは

昨今「コミュニケーション能力」というあいまいな定義をされたスキルを社会人に当たり前のように求められるようになりました。

エンジニアリング組織における「コミュニケーション能力」とはまさに「不確実性を減らすことができる能力」であると言えます。

エンジニアリングの性質

エンジニアリングは、不確実性を下げ、情報を生み出す過程です。自分自身がどのように本能に囚われているのかを知り、仮説と検証を通じて、未来の不確実性を下げて生きながら、同じ目的で働いているはずの人々との間にあるコミュニケーションの不確実性を下げる必要があります。

「不確実性を削減し、秩序を作る」ことが、エンジニアリングの最も重要な性質です。

Chapter2. メンタリングの技術

メンタリングは対話を通じて、メンタリングをする人(メンター)の思考力を一時的に貸し出し、思考の幅を広げていくことで、その人の歪んだ認知を補正し、次の行動を促し、成長させていく手法です。

メンタリングとエンジニアリングの関係

エンジニアリングとは「不確実性を削減する」工程であるということ、そして組織でその力を発揮するのは「人間の不完全さ」の影響を減らしていくことが必要です。ソフトウェア開発を進めていくうえで、メンタリングのテクニックが必要になる場面は多くあります。

コードレビュー

コードレビューとは、組織内で一報が書いたソースコードを、レビュアーと呼ばれるその領域に知識のある人が、確認・チェックし、問題点を指摘したり、改善を促すという行為です。

レビュアーは、テキストコミュニケーションが主になることが多く、威圧的に見えてしまったり、独善的に見えてしまうということが発生しがちです。

コードを書いた人は、制約された状況下で精一杯書いたコードへのレビューを人格的な指摘だと受け取りやすい状況にあります。

指摘のポイントに気が付いてもらう

コードレビューにおいては「なぜ、そのようにしたのか?」ということを問いながら、コードを書いた人が指摘のポイントに気が付いてもらうことを促せるのがベストです。

また必要に応じて、直接口頭でコミュニケーションをとりながら会話していくという解決策もひとつです。

ペアプログラミング

片方がプログラムを書く人(ドライバー)、もう片方がどんな風に書くか考える人(ナビゲーター)に分かれて、ペアでプログラミングを行うのが、ペアプログラミングです。

ペアプログラミングはナビゲーターとドライバーの2人で役割分担しながら、問題に取り組むことでドライバーはソースコードを書くことに専念でき、ナビゲーターは次の問題解決のための戦略をたてることができます。ペアプログラミングがうまくいくと、別々でプログラミングするよりも高い生産性が出ます。
 しかし、2人のエンジニアが長時間・高密度で働くわけなので、相互の信頼関係や、配慮、メンタリングのテクニックがなければ高い効果は望めません。

障害時ハンドリング

障害対応の際は、多くの人が目の前の課題に目が向いてしまいます。こういったときに必要なのが障害時のハンドリングを行う司令塔です。
司令塔となったひとは、障害の発生状況や、課題の特定、事後対応に関して俯瞰的な目で情報を整理します。不確実な状況から障害原因を特定していき、障害を収束させるためにチームを支援していくのが、司令塔の役割です。

チームマネジメント

昨今の開発環境では「スクラム」がチームマネジメントの手法として取り入れられています。「スクラムマスター」という役職ではメンタリングやファシリテーションの能力が要求されます。

「自ら考える人材をつくる」

メンタリングは「自ら考える人材をつくる」テクニックです。もし組織内で「自ら考えることができない人材」がいるとしたら「自ら考える人材をつくる」マネジメントができていないに他なりません。

「依存型人材」と「自立型人材」

依存型人材

  • 問題を与えられてから考える
  • 問題と解決策を渡されてから動ける

自立型人材

  • 問題を自ら発見し解決できる
  • 問題について、自分事として考えている

これらは、上司と部下という関係における期待値が隔たりを作る要因になっています。上司の「ここまで考えてほしい」期待値と、部下の「ここまで考えるべき」という期待値の差異が自立型人材と依存型人材の隔たりを生み出します。この2つが一致していれば問題ありません。

「依存的な思考を行う快感」と「自立的な思考を行う快感」

上司と部下という関係における期待値の調整をするためにはどうするべきでしょう。これには2つの要素が関係してきます。

「依存的な思考を行う快感」(コンフォートゾーン)は、与えられた役割の中で自分自身が心地良くいられる思考の範囲や行動の範囲を言います。

「自立的な思考を行う快感」(自己効力感)は、自分から考えて動いた結果、評価されたり尊敬されたり、ポジティブな結果を手に入れた人は、正のフィードバックサイクルの中に快感を覚えます。

メンタリングは、対話を通じてこの思考の枠組みを外し、その人の力で問題解決できるように促していきます。その結果、評価や正のフィードバックを得て、自己効力感がコンフォートゾーンの快感を上回るように導いていく手段です。

メンターとメンティーの関係性

メンターとメンティーの関係性にはHRTというものがあります。謙虚(Humility)/尊敬(Respect)/信頼(Trust)の頭文字をとったものです。

メンターがメンティーに対して謙虚さや敬意が失われた場合では、仕事を押し付けるようになってしまったり、威圧的な態度をしてしまいがちです。そうするとメンティーはいい報告だけをしてしまうようになります。
メンティーの自尊心が高く、信頼や謙虚さが失われた場合は自己成長の必要性をメンティー自身が感じることができなくなってしまったり、他人に弱みを見せれなくなってしまったりしてしまいます。

階段を上る手助けをする

ではメンターが心掛けるべきことはなんでしょうか。それはメンティーが「成長の階段を上る」手助けをすることです。メンティーが「成長の階段を上る」ためには以下が必要です。

  • 階段を認識させる
  • 壁にはしごをかける
  • 階段を上りたくさせる

下ばかり向いている人は成長の階段に気づくことができません。上ばかり向いている人はつまづいてしまうかもしれません。時には、「足元は大丈夫?」と聞いてあげましょう。

他者説得と自己説得

他者説得は他人が、「こうしなさい、こうするべきだ」と答えを教える行為(ティーチング)です。自己説得はそれに対し、自分で答えを見つける行為です。他者説得と自己説得で導いた答えが同じでも、後者は高い納得感と自己効力感を得ることができます。また、応用力を身に着けることができて自ら考える力に結びついてきます。

「悩む」と「考える」

メンターは時に、メンティーが「悩んでいる」のか「考えている」のか気にしなければいけません。両者の違いは何でしょうか。
「悩む」は状態であり、「次取るべき行動」がわからずぐるぐると思考が回り続けていることです。
「考える」は行動であり、課題を終わらせる方向に進めることができます。

「悩んでいる」時間が多いほど、頑張っている割に成果が乏しく、自己効力感が薄れてしまいます。メンターはメンティーの「悩み」を「考える」ことに促してあげましょう。

傾聴・可視化・リフレーミング

メンタリングにあたって意識すべき流れがあります。

  • 感情的に固執していて解けないので傾聴する
  • 客観視できずに解けないので可視化する
  • 前提を変えるリフレーミングをする

傾聴はコップを空にするテクニック

「悩んでいる」メンティーは頭の中がいっぱいになってしまい、考える(気が付く)余白がない状態です。だからこそ、悩んでいて不安な状態を明晰な言葉に変換するという行為が必要になってきます。
 傾聴では相手を中心に、思考が整理され、前向きに考えられるように支援するよう会話をします。
point

  • 感情への共感を言動で表す
  • 話の内容を「可視化」する
  • 思考の盲点を探しながら質問する

傾聴するうえでやってはいけないこと

傾聴に大事なことは、「相手」です。「相手」が話してくれなくなったり、前向きに考えれなくなってしまうようなことは避けましょう。

  • スマホを見ながら話を聞かない
  • 腕を組み威圧的になりながら聞かない
  • 表情をコントロールする
  • あいづちや復唱で伝わったことをアピールする

共感と同感

傾聴においては「共感」を伝えることも大事です。「共感」と類似する「同感」と比較して「共感」について整理しましょう。

共感
 「相手がそのようになった理由を理解する」こと。相手の個人的な感情に関して、その根源、事情、価値観などを理解して、個人的な感情の背景を理解すること。

同感
 「自分が相手と同じ気持ちになる」こと。他人の意見や行動に表われている考えや感情が自分と同じだと感じること。

メンタリングにおいては、必ずしも相手に「同感」する必要はありません。なぜそう思うに至った背景を聞いていくことが重要です。

問題の「可視化」と「明晰化」

問題の根本となるものは、非常に個人的な問題です。個人的な問題だからこそ、メンティー自身が問題を解く必要があります。メンターはメンティーの問題の「可視化」と「明晰化」を行っていく必要があります。

可視化
 メンティの抱いている問題を、客観的な問題として捉えることができる状態にすること。

明晰化
 感情的に固執し待っている要素を引きはがして、問題が何であるかをはっきりとさせていくこと。

事実と意見を分ける

可視化する対象は事実関係です。対話の中で、事実として起きたこととそうでないことは分けていき、第三者的な課題を可視化します。
ホワイトボードに対話によって出た問題を書いていき、事実関係が取れていないことや、わからないことには「わからない」とはっきり書いてあげましょう。

フォーカスポイントを作る

メンティーに限らず、難しい問題は小さな問題に分解しながら解決する必要があります。
いろんな不安や悩みを一足飛びに全部解消することはないので、問題の範囲を適切に限定していくことが重要です。具体的な問題が見えてくると、対応策が見えやすいものに同時に変換されるため、メンティは自然と問題解決策にたどり着きます。
メンティーが気づけるようにフォーカスポイントを作ってあげることがメンターの仕事です。

認知フレームとリフレーミング

私たちは物事を「認知する枠組み」を持っていて、その枠組みの中でしか情報を処理することができず、このような枠組みを「認知フレーム」といいます。そして、この認知フレームの外側は「心理的な盲点」と呼ばれます。
 メンタリングでは、対話によって認知フレームを別のフレームに変えていくことで「解けない問題」を「解ける問題」に変えていきます。このことを「リフレーミング」といいます。

課題の分離

課題の分離とは、自分の課題と他者の課題を分けることです。人は他人から感情が伝染する生き物です。感情が「他人の問題」を「自分の課題」であると認識し、膨れ上がってしまうことで、小さく具体的な問題は、しばしば大きな抽象的な問題になってしまいます。複数の問題が「感情的に」癒着し、1つの問題に見えてしまっているときには、一度分離して考えてみる必要があるでしょう。

  • あなたにとって具体的に何が問題化
  • あなたがコントロールできるものは何か
  • どうなればその具体的な問題は解消されたといえるのか

上記のような質問を通じて、メンティ自身にとって本当の問題を抽出していきます。これはメンターになる人に対しても重要な警句です。

心理的安全性の作り方

「心理的安全性」とは、チームの他のメンバーが自分の発言を拒絶したり、罰したりしないと確信できる状態である。心理的安全性とは

「心理的安全性」を高めることで次のような影響が現れる。

  • 率直に話すようになる
  • 考えが明晰になる
  • 意義ある対立が後押しされる
  • 失敗が緩和される
  • イノベーションが促される
  • 組織内の障害でなく、目標に集中できる
  • 責任感が向上する

心理的安全性におけるメンターの役割

メンターの役割は、メンティーをラーニングゾーンに導くことで成長を促すことです。


心理的安全と責任のバランスによる4つの組織状態

アクノレッジメントとストーリーテリング

アクノレッジメントとは
「承認」を意味します。メンティの行動に対して、理解し、受け入れ、感謝を伝えることです。

アクノレッジメントには3つの段階があります。

  • 存在承認・・・この場(組織)に居ていいことを認める
     (例:挨拶をする、笑顔で話す、励ます)
  • 行動承認・・・行動に対して認める
     (例:結論から話すようになったね、前より良く調べてあるね)
  • 結果承認・・・成果に対して認める
     (例:すごい成果だね、よくできているね)

ストーリーテリングとは
メンター自身の弱さ(と成長)を物語として開示する技法です。

ストーリーテリングは、抽象的な伝えたいことをわかりやすく理解してもらうために、実際にあった経験を物語として、相手に追体験させて理解を深めてもらうための手法です。
※自慢話にならないように気を付けましょう

内心ではなく行動に注目する

内心は観測不可能かつコントロール不可能です。行動は観測可能かつコントロール可能です。

観測不可能かつコントロールできないものに対して、フィードバックされるとメンティは努力して改善しようとします。しかし、具体的に何をするべきかはわかっていません。そしてそれは報われず、再び同じように指摘された場合、メンティの成長は阻害され、心理的安全性も低下します。

SMARTな行動

「言葉は決して正しく伝わらない」という前提のもと、少しでも解釈の差を減らしていくための原則として「SMART」というフレームワークがあります。メンターとメンティの間で、次の行動の合意をするときは、SMARTの原則を意識しましょう。

  • Specific・・・具体的であること
  • Measureable・・・測定可能であること
  • Achievable・・・到達可能であること
  • Related・・・(メンティの課題と)関連があること
  • Time-Bound・・・時間制限のあること

メンティが行動を起こせない時

それでもメンティが行動を起こせない時は「リインフォース」を実施します。リインフォースは行動を促進する力を増やしたり、行動を阻害する要因を減らしたりすることです。メンターは行動を阻害した要因や、別の行動をとった要因を考えます。その要因について深く話を聞いて、どのように取り除いていくのか話し合っていきます。

メンタリングのゴール

メンタリングは、メンティがセルフマスタリーを会得することで完成します。
セルフマスタリーは将来のメンティが今のメンティをメンタリングしている状態を指します。
セルフマスタリーの会得のためには、ゴールに対して高いレベルで認識することが必要です。

メンターはメンティが具体的なゴールを認識できるようにサポートしましょう。

Chapter.3 アジャイルなチームの原理

Discussion