新卒2年目になり、最近になってやっと「具体と抽象」という概念の大切さに気づいたのですが、今回は「学ぶ」という営みを具体と抽象の行き来という形で整理しようかと思います。
具体と抽象の大切さ
具体と抽象という概念が重要なのはこの世の物事の基本的にすべてが具体と抽象に分けられるからです。
とはいえ、現実的にはこんなふうに世の中を2つに分けることはできません。
というのも具体と抽象は常に相対的な概念だからです。
よく使われる例ですが例えば、「うさぎ」という概念はそれ一つで具体か抽象かは判断できません。
「うさぎ」は「アンゴラウサギ」という概念に比べると抽象的ではありますが、「動物」という概念に比べると具体的です。
これが「具体と抽象」についての簡単な説明です。
さらに知りたい方は以下の書籍をおすすめします。
このことを前提に「学ぶ」ことについて整理します。
「学ぶ」という営みを整理する
「具体と抽象」を使って「学ぶ」というプロセスを整理しようとするとナイーブには以下の4つの分類が考えられます。
- 具体から具体を学ぶ
- 具体から抽象を学ぶ
- 抽象から具体を学ぶ
- 抽象から抽象を学ぶ
これに「概念を知る」というプロセスを加えた計5つのプロセスを用いて学びを整理していきます。
以下ではそれぞれのプロセスについて具体例を述べます。
概念を知る
文字通りなにがしかの概念を知ることです。
例えば、ネットでAWSについて調べてSQSというサービスを知ること、あるいは社内会議の中で専門用語を知ること等がこの学びに該当します。
このプロセスは全ての学びの基本です。
なぜなら知らない概念は学ぶことができないからです。
ただし、この段階の知識はいわゆる「知らないことを知っている知識」です。
これを「知っている知識」に変えていくにはこの後説明する学びのプロセスを経る必要があります。
具体から具体を学ぶ
おそらく普段の業務で学ぶことの殆どはここに該当するかと思います。
例えば、新人エンジニアであれば実装に詰まることはよくあると思います。
この際、先輩が過去に実装したコードを見て「ここのコードをそのまま使えば良いんじゃん!」となるのも新人にはあるあるだと思います。
この学びは具体的な実装を見てそれをそのまま具体的なやり方として自分の中にインプットするので「具体から具体」の学びです。
このような学び方を通称「真似」といいます。
真似は非常に即効性があり、かつ簡単にできるので日々高速で遂行しなければいけない業務においては強力な学びの手段であると言えます。
具体から抽象を学ぶ
これは業務の振り返りなどにおける学びが該当します。
例えばプロジェクトの振り返りの際、問題点として以下が挙がったとします。
- プロジェクトがイマイチ上手く行った感覚がない
- メンバーのやる気が下がるタイミングがあった
これらの事象の原因として「KPIを決めるのが遅かったのではないか?」あるいは「メンバー間での目標の共有が甘かったのではないか?」と考えられたとしたら、これは具体から抽象を学んだことになります。(原因 → その具体的な問題、という関係性を突き止めることができた)
他の例を出します。
「スノーボール」という本をご存知でしょうか?
投資の神様ウォーレン・バフェットの伝記です。
この本を読んで「よし!自分も個別株投資をやるぞ!ファンダメンタルな価値を見抜くんだ!」となったらそれは「真似(具体から具体の学び)」です。
一方、「お金持ちって普通はめちゃめちゃ嫌われがちなのにバフェットは全然そんなことないよな。これってなんでなんだろう?」という疑問を持ち、考えることができたとしたら、それはおそらく具体から抽象の学びです。(具体的な事例から抽象的な人間論を考えることができた)
このような具体から抽象に話をシフトさせることを「抽象化」といいます。
具体から抽象の学びは即効性はありませんが、抽象概念を手に入れるための貴重な方法です。
抽象から具体を学ぶ
これは例えば研修から現場に出た際などに結構ある学びなのかなと思っています。
例として、研修のときにAWSのWell-Architectedフレームワークを覚えたとします。
研修のときにはどういう意味かわからなかったとしても、実際のシステムでSQSがDBとの間に入って動いているのを見たり、システムへのリクエストが時間変化しているのを見るとWell-Architectedフレームワークへの理解が進むと思います。
こういう抽象から具体という流れの中で理解が深まることを「解像度が上がる(具体化)」と言います。
抽象から具体への学びは具体を学ぶことで抽象の解像度が上がるという部分が肝です。
抽象から抽象を学ぶ
これは全く異なる分野から学びを得る際などが該当します。
例えば物理学にはエントロピー増大の法則という法則があります。
これは例を出すとわかりやすいのですが、例えば
- 温かい空気と冷たい空気を混ぜて時間が立つと均一な中間の温度の空気になる
- 温かいコーヒーが冷めた後、放っておいても元の温度には戻らない
のように、物理現象が乱雑な方向に動き、もとに戻らないことを言っている法則です。
これを人の性質にも適用して、「散らかった部屋は勝手に片付かない」といった説明をすることがあります。
これは物理法則という抽象概念から人間の性質という抽象概念を学んでいるといえます。
このように抽象を抽象に移すことを「アナロジー」と言います。
アナロジーは別の分野の知見を活かすことができるという点で非常に便利な道具です。
マトリックスでの整理
以上、基本となる「知」と4つの「学び」を紹介しました。
特に4つの「学び」を整理したマトリクスが下の図になります。
若手がベテランと渡り合うためには
ここで、試しに自分のような若手がベテランの方々と対等に渡り合うためにはどうすればいいか考えてみます。
まず、若手とベテランの一番大きな差は何かといいますと「経験」です。
そして、経験というのは基本的には非常に具体的なものです。
- あるプロジェクトでこういう実装をした経験
- 顧客とこういう話をした経験
- マネジメントでこういう苦労をした経験
具体的な経験に裏打ちされているからこそベテランは強いです。
ですが、具体に勝つ方法はあります。
それは「抽象」をしっかりと使うことです。
例えば、Well-Architectedフレームワークを知っているのと知らないのとでは実際のシステムを知ったときの見え方が全然違います。
Well-Architectedフレームワークを知っていれば、なぜそのような実装になっているのかを体系的に体にいれることができるでしょう。
一方、Well-Architectedフレームワークを知らなければ「そういう実装である」という理解で止まります。
抽象概念を知っているということが具体の業務での学びを加速させるのです。
また、具体の学びを得たらそれを抽象化することも忘れてはいけません。
日頃の振り返りなどは抽象化のための絶好の機会であり、だからこそ振り返りは重要です。
加えて、たとえ業務のタイミングでは真似に終わってしまったとしても、深い部分を調べることでその知識を抽象に昇華することもできます。
例えば、今実装したい部分にプロダクト内の別のコードをそのまま引用できそうだと気づいたとします。
それをそのまま引用したらそれは真似で終わってしまいますが、その実装意図や、そもそもなんでそれで動くのかについて考えることができれば抽象化を行うことができます。
以上のことから
- 抽象概念を知る
- 具体をまとめておいて抽象化の時間を取る
- 解像度が上がったことを意識する
といった抽象と具体を行き来するようなアプローチをとることで学びを加速させることができます。
補足として、アナロジーに関しては非常に強力かつ便利な手法なのですが閃きに依存するような部分もあるので、「閃いたらラッキー」くらいに思っておけば大丈夫だと思います。
この記事を読んでどう思った?
この記事の内容に「よくわからん」となる方
少し前までの自分と同じです。
おそらく、そもそもの具体の経験やなんとなくでも抽象化、解像度を上げる経験が足りてないのだと思われます。
特に気にせず普段の業務を頑張ればそのうち分かるようになるので安心していただければと思います。
この記事の内容に「なるほどね~」となる方
おそらく自分と同じような状況と思われます。
具体と抽象については今までの経験を元に理解できるものと思われます。
この記事で書いたように具体と抽象を日頃から意識して学ぶことができれば更に速く成長していくことができそうです。
この記事の内容に「当たり前やろ」となる方
自分もそれくらいの高みに行きたいです。
おそらく具体と抽象を日頃から意識したうえで、具体の経験だけでなく抽象知識をしっかり蓄えていっているのでしょう。
自分もあなたに追いつけるように精進します。
まとめ
今回は「具体と抽象」という概念をもとに学ぶというプロセスについて整理しました。
自分も折を見てこの記事を見返し、具体と抽象を意識できているか確認しつつ、日々学んでいこうと思います。