学び方には少なくとも3つのモデルがある

  • 一方通行で講義受講するメンタルモデル
  • 独学で試行錯誤するメンタルモデル
  • 互いに知識を交換して学ぶメンタルモデル

一方通行で講義受講するメンタルモデル

nishio 学び方には少なくとも3つのモデルがある。 まず「教える役割の『先生』がいて、自分は『教わる役割』の『生徒』で、先生が生徒に一方通行で知識を与える」という講義受講のメンタルモデルがある。

  • 知識の流れが一方通行.icon

多くのソフトウェアエンジニアは「その方法でプログラミングができるようにはならない」と考えている。

独学で試行錯誤するメンタルモデル

nishio これに対して二つ目のモデルは「自分でプログラムを書き、実行してみて挙動を観察して自分の理解が正しいかを確認し、間違っているなら修正する」という試行錯誤を繰り返して一人で学ぶアプローチだ。 - 学びのサイクル.icon

  • これが「プログラミングを独学で学ぶ」と呼ばれる。

  • ITの急速な発展に教育はキャッチアップが遅れたため、IT業界において発言力の強い人が軒並み「自分は独学で学んだことのウェイトが大きい」「独学で学ぶことは避けられない」「独学の習慣を持つことが大事だ」という考え方を持つようになった。これが「独学」がポジティブに語られるようになった理由

  • nishio ところがここに見落とされがちな重要なファクターがある。

  • プログラミングの知識は理解が合っているかどうかを実験によって検証できる。

  • プログラミングができる人なら誰でも経験しているように、この過程では何百何千回と「間違いを指摘」されて、それを修正することによって学んでいる。

  • nishio 一方で、そういう「間違いの指摘」を受けない方法で「独学」する人は、間違った理解をしても修正されない。ここが、同じ「独学」という言葉を使っていても学びの性質が全く違う理由だ。「失敗から学ぶ機会」の量が全然違うのだ。

互いに知識を交換して学ぶメンタルモデル

では「実験による誤りの指摘」が得られない分野についての学びは?

nishio というあたりまでは5年前の拙著「エンジニアの知的生産術」に書いてあるのだけど、この後にChatGPTがリリースされて、さらに進んだ議論が必要になっているように思う


書いたきっかけ

反響

@takiuchi: 確かにプログラマーは処理系という専属教師が無制限に間違いを教えてくれる特殊な環境にある。人間の教師では到底及ばない試行錯誤を繰り返す事ができるから独学派の方が圧倒的に有利なんだよね

hrjn 講義形式の問題は二つあって、一つは講師は全てを教えてるわけではないこと。開発で言えばパソコンの使い方とかは当然教えないけど、実際は必要。細かいところは実技しない限りは補えない。 第二に、まねするのと応用するのは違う。学んだAというケースをBに当てはめてみるのは案外難しい。

  • hrjn 数学なんか特にそうなんだけど、みんなならったらできるようになると信じてるけどそんなことはないのよね。実際に問題を解けるようになるには一定汎用的なノウハウになってないとできない。

  • マニュアル通りにやればできるわけではないので、得た知識が汎化されることが必要になる。

  • hrjn どうやったら汎化できるのかは自分でもよくわからんけど、いろんなケースを想定して練習するしかないのかなー。

  • やってみていけたなとかいけなかったなとかいう経験を蓄積していくことで、ノウハウが汎化する。

  • ということじゃないかな多分。

@IWAN_NAOK: 学んでいくための「知識流入路の複数化」 この「知識流入路」は、ただのインプットではなく、自分のアクション・アイデアに対してフィードバックであることがキモだなと 自分が会社/カーリングの両方で日本/世界とやりとりしてるのはとても良い成長機会だなと、改めて思う また大学院も行きたいな