プログラミングと3つの認知プロセス

プログラマー脳 ~優れたプログラマーになるための認知科学に基づくアプローチ

プログラマー脳」を読みました。少し前に発売されて、ITエンジニア本対象2024 技術書部門ベスト10に選ばれた有名な書籍です。 買ってすぐ読んだものの、途中で積読してもらったため改めて読んでみることに。

脳科学の視点で「プログラマーはこうやってコードを認知している!」って内容です。

今回は、プログラミングで使われている3つの主要な認知プロセス

  • 長期記憶
  • 短期記憶
  • ワーキングメモリ

について見ていきます。

長期記憶

まずは長期記憶から。これは簡単に言うと、「頭の中にある大きな倉庫」みたいなものです。プログラミングの世界では、こんな感じで活躍しております

長期記憶を鍛えるには、こんな方法がおすすめです:

  1. 定期的に復習する:学んだことを時々おさらいして、記憶を強くする
  2. 実際に使ってみる:理論だけじゃなく、実際のプロジェクトに応用してみる
  3. 誰かに教える:他の人に説明することで、自分の理解も深まる

短期記憶

次は短期記憶。これは情報を一時的に覚えておく能力のことです。プログラミングでは、こんな場面で重要になります

  • 変数名やメソッド名を一時的に覚えておく
  • 今どこのコードを書いているか、どんな文脈か把握する
  • デバッグ中に「もしかしてこれかな?」という仮説を立てる

短期記憶を上手く使うコツは:

  1. コードを整理する:関連する情報をまとめて配置する
  2. コメントを活用する:重要な情報や意図を明確に書いておく
  3. 小分けにして作業する:一度に扱う情報量を制限する

ワーキングメモリ

最後はワーキングメモリ。これは情報を一時的に保持しつつ、操作する能力のことです。プログラミングでは中心的な役割を果たしてます

  • 複雑なアルゴリズムを頭の中で実行して追跡する
  • デバッグ中にいろんな情報を組み合わせて分析する
  • コードを最適化したり、構造を変更したりする過程

ワーキングメモリって何?

ワーキングメモリは、日常生活のいろんな場面で使われる重要な頭の働きです。数学の問題を解くとき、文章を読んで理解するとき、あるいはプログラムのロジックを追いかけるときなど、様々な状況で活躍しています。

ワーキングメモリと学業成績の関係

面白いことに、ワーキングメモリの能力は学習の成果とすごく関係があるんです。研究でこんなことがわかっています:

  • 学習が難しい子供たちの場合、ワーキングメモリの容量がIQよりも学習成果を予測するのに重要だったんです(Alloway, 2009)。
  • 5歳の子供のワーキングメモリ能力が、その後の読書、綴り、数学の成績を最もよく予測できたんです(Alloway & Alloway, 2008)。

これって、プログラミングを学ぶ時にも重要な示唆を与えてくれますよね。効果的にコードを書くには、強力なワーキングメモリ能力が必要不可欠ってことですね。

ワーキングメモリとIQの関係

ワーキングメモリとIQ(知能指数)は密接に関係していますが、同じものではないんです:

  • ワーキングメモリとIQの間には0.7という高い相関があるけど、それぞれ独立した頭の働きとして機能している(Colom et al., 2003)。
  • ワーキングメモリとIQの相関の95.5%が遺伝的要因によるものである(Goldberg et al., 2013)。

これらの研究結果を見ると、プログラミング能力を伸ばすには、ワーキングメモリのトレーニングが重要っすよねー。

ワーキングメモリを最大限に活用するテクニック

  1. ポモドーロテクニック:25分集中して作業して、5分休憩するのを繰り返す。これでワーキングメモリの疲れを防げます。
  2. タスクを小分けにする:大きな問題を小さな扱いやすい部分に分ける。
  3. 集中できる環境を作る:余計な邪魔を最小限に抑えて、ワーキングメモリへの負担を減らす。

3つの認知プロセスの相互作用

プログラミングでは、これら3つの認知プロセスが密接に絡み合っています:

  1. 長期記憶から知識を引っ張り出す
  2. 短期記憶で今の状況を把握する
  3. ワーキングメモリで情報を操作して問題を解決する

例えば、複雑なソートアルゴリズムを実装する時なんかは:

  • 長期記憶からアルゴリズムの基本的な考え方を思い出す
  • 短期記憶で今どこまで実装したかを把握する
  • ワーキングメモリでアルゴリズムの各ステップを追いかけて、もっと良くする方法を考える

認知プロセスを考慮したプログラミング学習法

  1. スペース反復法:長期記憶を強くするために、時間を置いて学んだ内容を復習する
  2. アクティブリーディング:コードを読む時に、その動きを頭の中でシミュレーションして、ワーキングメモリを鍛える
  3. デュアルN-バックゲーム:ワーキングメモリの容量を増やすためのトレーニン

まとめ

とにかくプログラミングは認知機能に左右されるので、知能が高いと有利なのは間違いなさそうですが、ワーキングメモリを鍛えることである程度は能力が上がるかもしれません。デュアルN-バックゲームはスマホのアプリでも出てるんで気になる方は試してみてもいいかもしれません。

平凡なIQを持つ私としては地道に長期記憶を積み上げていこうと思います笑