はじめに
プログラマーとして働き始めて、技術の勉強は順調。
でも、上司から「もうちょっと案件の仕様を把握しようか。」と言われることが多い...そんな悩みありませんか?
もしかしたら、その悩みは技術の習得では解決できないかもしれません!
プログラミングスキルとは別に「思考法のスキル」が必要かもです。
この記事ではプログラマーに必要な思考フレームワーク3つを解説します。
対象者
この記事は下記のような人を対象にしています。
- 駆け出しエンジニア
- プログラミング初学者
- 上司に「もうちょっと考えてみようか」と言われがち
- 複雑な問題にぶち当たると頭痛がする
結論
目的に合わせて、下記の思考フレームワークを使い分けよう!
- 実装 → ロジカルシンキング(垂直思考)
- 設計・障害対応 → ラテラルシンキング(水平思考)
- 顧客折衝 → クリティカルシンキング(探求思考)
突然ですがクイズです。
あなたはチョコレートを10個持っています。
喧嘩をせす、公平かつ均等に3人の子供がチョコレートを食べられるようにしたいです。
さて、あなたならどうしますか?
このクイズにどのように回答するかによって、あなたが得意な思考法がわかります。
回答例A(ロジカルシンキング)
チョコレートを3個ずつ渡す。
さらに、残りの1個を3等分して渡す。
きっちりと3等分するアイデアですね。
こんな回答をしたあなたはロジカルシンキング(垂直思考)が得意です。
回答例B(ラテラルシンキング)
チョコレート10個を溶かして、ホットチョコレートを作る。
3つのコップに均等にホットチョコレートを分けて、子供に渡す。
チョコレートの形で渡せ、とは言われていませんよね。
ホットチョコレートに変えて、3等分するアイデアです。
こんな回答をしたあなたはラテラルシンキング(水平思考)が得意です。
回答例C(クリティカルシンキング)
子供たちに内緒で、チョコレート1つを自分で食べる。
残りの9つのチョコレートを3人の子供に見せ、目の前で3個ずつ渡す。
10個全部を渡せ、とは言われてないですよね。
子供たちは最初から9つしかチョコレートはなかったと信じているので、均等に分けれたと納得するアイデアです。
こんな回答をしたあなたはクリティカルシンキング(探求思考)が得意です。
では、それぞれの思考法について解説していきます。
ロジカルシンキング(垂直思考)とは
ロジカルシンキングとは、論理的に物事を分解して考える思考法のことです。
複雑な課題を単純な課題に切り分けて、一つ一つ地道に考えていくやり方になります。
ざっくり言うと「AをやったらBになるはず」と言う考え方なので、とっつきやすいのが特徴。
プログラマーで言うと、主に実装を担当する人が使う思考法と言えます。
ロジカルシンキングでは、過去のデータや経験に基づいて判断します。
そのため、経験のない現象に関しては効果的に対処ができない場合があるので要注意です。
アプローチの方法は「演繹法」「帰納法」の2つです。
ロジカルシンキングの詳細はプログラマーに必要なロジカルシンキングとはをご覧ください。
ロジカルシンキングで使うフレームワークとは
ロジカルシンキングでは、複雑な課題を単純な要素に分解するのに役立つフレームワークを用います。
ラテラルシンキング(水平思考)とは
ラテラルシンキングとは、さまざまなやり方を考え、その中からより効率の良い解決策を採用する思考法です。
課題を解決できそうなアイデアをたくさん出して、比較検討することになります。
ざっくり言うと「プランAはどうかな、プランBもあるし、プランCもよさそう...よしプランCで行こう」というやり方です。
プログラマーで言うと、設計や障害対応で活躍する思考法です。
ラテラルシンキングでは、膨大な事象から共通点を見つける力が必要になります。
専門的な課題であればあるほど、素人だけでは共通点を見つけづらくなる点には注意が必要でしょう。
アプローチの方法は「類推思考」「仮説思考」の2つです。
ラテラルシンキングの詳細はプログラマーに必要なラテラルシンキングとはをご覧ください。
ラテラルシンキングで使うフレームワークとは
ラテラルシンキングでは様々なアイデアを出すのに役立つフレームワークが活用されます。
- ブレインストーミング
- 欠点希望点列挙法
- SCAMPER
- ミメーシス・ミミック
- シネテクス法
クリティカルシンキング(探求思考)とは
クリティカルシンキングとは、本当に達成すべき課題を見つけて最短で解決する思考法です。
表面上の課題を一旦無視するので、少し強引に見えるかもしれませんが、非常に効率的な考え方です。
ざっくり言うと「あなたは〇〇と言ってるが、本当はXXが問題ですよね?それは△△で解決できますよ」という感じです。
プログラマーで言うと、顧客折衝をする際に役立つ思考法です。
クリティカルシンキングでは、相手の意見を「それは本当に正しいのか」「なぜそんなことを言うのか」など、深掘りしていきます。
そのため、深掘りに時間をかけ過ぎてしまうと、結論に辿り着かずに時間を浪費してしまう点には注意が必要でしょう。
アプローチの方法は「弁証法」「背理法」の2つです。
クリティカルシンキングの詳細はプログラマーに必要なクリティカルシンキングとはをご覧ください。
クリティカルシンキングで使うフレームワークとは
クリティカルシンキングは、議論の論点を整理するのに有用なフレームワークが豊富にあります。
- ヒストグラム
- BATNA / ZOPA
- プロコン
- フィットギャップ分析
- ジレンマ
- PAC思考
- オッカムの剃刀
- 認知バイアス
おわりに
プログラマーに必要な思考フレームワーク3つについてまとめました。
ロジカル、ラテラル、クリティカルシンキングを使い分けて、駆け出しプログラマーを卒業しましょう!
関連記事
プログラマーに必要な思考フレームワーク3つ
プログラマーに必要なロジカルシンキングとは
プログラマーに必要なラテラルシンキングとは
プログラマーに必要なクリティカルシンキングとは