見出し画像

「理解する」とはメンタルモデルを構築することだと思う。

理解という動詞を英語に翻訳すると「understand」と「comprehend」のような言葉が思い浮かびます。これらはどちらも対象の意味、重要性、または本質を理解することを指しますが、少し違いがあります。(他にも、seeやget、grasp、followなどを想起された方もいらっしゃると思います。)

「understand」は基本的な認識や認知からより深い理解に至るまでのさまざまな知識レベルを含むことができます。この単語は特定の理解の深さを指しているわけではありません。一方、「comprehend」は、表面的な理解を超えた、より深いまたは徹底した理解レベルを示唆しています。つまり、主題に関して完全かつ包括的な理解を指します。用例は下記のとおりです。

I don’t understand the instructions.
Doctors still don’t understand much about the disease.
The concept of infinity is almost impossible for the human mind to comprehend.
I couldn't comprehend the complexity of the quantum physics theory.

Oxford Learner's Dictionaries

また、『世界一流エンジニアの思考法』という本では、「理解」とはどんな人でもある程度時間を要する行為で、次の3つの要素からなると書かれていました。

①その構造をつかんで、人に説明できること。(explainable)
②いつでもどこでも即座に取り出して使えること。(anytime usable)
③知見を踏まえて応用がきくこと。(applicable) 

世界一流エンジニアの思考法』kindle版 p.28

さらに、42 Tokyo 運営スタッフの nop さんは、次のように述べています。

応用できるレベルにまで規則を理解する方法は、技術力の熟練度によって違うことは認識しておかなければならない。ある人は、ドキュメントを読むだけで規則を理解できる。ある人は、コードを読むだけで規則を理解できる。ある人は、何回もコードを模倣することで規則を導き出す。ある人は、その規則の仕組みの裏側を理解することで理解できる。ある人は、トライアンドエラーを何回も繰り返すことで理解できる。ある人は、自然界で類似しているコンセプトと認識を重ねることで理解できる。ある人は、抽象化と具体化を行き来することで理解できる。多種多様な方法が存在する。

すでに自分自身でどの方法が一番応用できるレベルにまで規則を理解できるか把握している場合、それが体感できるコンテンツを模索する。把握していない場合は、模倣する、適応する、実装する方法を1つずつ試し、応用可能なレベルまで規則を理解できるか判断するのが良い。

ソフトウェアエンジニアリングの性質を考慮した学習方法について

ピアジェの「構成主義」によると、知識というのは客体として存在するのではなく、学習者が構成するものだそうです。つまり、学習者が自分の言葉で理解したり、腑に落ちたと感じられたり、自分一人で実践できるようになったりするときに、学びが起きると考えられます。

私の言葉で言うなら、「『理解』とはメンタルモデルを構築すること」です。メンタルモデルとは、人々が世界を理解し、予測し、解釈し、新しい状況に適用するための、自己の心の中のイメージや理論のことを指します。私の頭の中で「理解する」という行為は、「自分の脳内に点を打ち、その点同士をつなげたり組み合わせたり構造化して、外界の理解対象を自分の脳内構造の一部にする」行為であり、それを「メンタルモデルを構築すること」と表現しています。学習の過程で、点を増やすだけでなく、点同士のつながりや構造を再構築することもありえます。理解の深さは、点の凝集密度の高さを指し、応用可能であるとは、構造をしっかりと把握して他の点集合にも適用できる状態を指すのだと考えています。

追記(2023-12-03):
故Charlie Mungerさん(有名な投資家ウォーレン・バフェットさんの右腕と言われていた)の「Multiple Mental Models」を構築するイメージに近い考えかなと思いました。また、LayerXの松本勇気さんの「世界をうまく理解できる表現モデル」という表現も近いと思います。

以下の記事もぜひ読んでみてください。

この記事が気に入ったらサポートをしてみませんか?