Michi's Tech Blog

一人前のWebエンジニアを目指して

【書評】『プログラマー脳』を読んでみた

こんにちは!スマレジ テックファームのMichiです!

今回の記事は『プログラマー脳』という本を読んでみた書評になります。

プログラマー脳』とは?

脳の働きをより深く理解することで、プログラマーとしてのスキルや習慣を向上させることを目的とした本です。

長年プログラミング教育の研究に取り組んでいる著者が、最新の「認知科学」に基づいて、プログラミングの際のさまざまな作業や技術の取得を効率的に行うための方法を解説しています。

楽天ブックス: プログラマー脳 〜優れたプログラマーになるための認知科学に基づくアプローチ - Felienne Hermans - 9784798068534 : 本

最近、「どうすればもっと効率的にコードを読んだり書いたりすることができるだろうか」という悩みがあり、本書を手に取ってみました。

要約

私たちが何かを認知するとき、脳は異なる3つの認知プロセスを利用しています。それはプログラムを読み書きするときも例外ではありません。

その3つのプロセスとは、長期記憶、短期記憶、ワーキングメモリのことです。

次に、この3つのプロセスについて順に解説します。

長期記憶

長期記憶とは、私たちの記憶がすべて永続的に保持されている場所です。何年も前の出来事を思い出せたり、靴ひもを結ぶといった日常的な動作を意識せずに行えるのも、すべて長期記憶にその出来事や動作が記憶されているからです。

コンピュータに例えるなら、人間の長期記憶はストレージ(HDDやSSD)に当たります。

プログラミングでいえば、変数やfor・if文などを理解し、特に意識せずに読んだり書いたりできるのは、これらの概念が長期記憶に保存されているからです。

短期記憶

短期記憶とは、私たちの脳に入ってきた情報を一時的に保存するための場所です。たとえば、誰かが電話番号を読み上げたとき、その番号はすぐに長期記憶に入るわけではなく、いったん短期記憶に保存されます。

コンピュータに例えるなら、人間の短期記憶はRAM(メモリ)に当たります。

プログラミングでいえば、変数の中身や関数の処理内容、利用されているデータ構造などが一時的に短期記憶に保存されることによって、プログラムを解読することができます。

短期記憶に保存できる情報の個数は非常に小さく、どんな人でも2~6個の情報しか同時に保持できないと、最新の研究からわかっています。

ワーキングメモリ

ワーキングメモリとは、長期記憶や短期記憶の情報を利用して計算を行ったり、新しい考えやアイデアを形成する場所です。

コンピュータに例えるなら、人間のワーキングメモリはプロセッサ(CPU)に当たります。

プログラミングでいえば、関数の計算結果を求めるときや、アルゴリズムを書いているときにワーキングメモリを使用しています。

短期記憶と同様に、ワーキングメモリも一度に処理できる情報の量は2~6個であるとされています。

熟練したプログラマーは長期記憶を活用する

この3つの認知プロセスのうち、短期記憶とワーキングメモリに関しては個人差がほとんどなく、また後天的に伸ばすことも難しいとされています。

一方で、長期記憶には無限の可能性があり、個人の努力や工夫で伸ばすことが可能です。

そして、熟練したプログラマーはこの長期記憶に過去の経験が大量に蓄積されているため、短期記憶やワーキングメモリの不足を補うことができます。その結果、人よりも素早く大量のコードを書いたり読んだりすることができるのです。

感想

この本を読んだ感想をひとことで表すなら、

『良いプログラマーになるには、たくさんコードを書いてたくさんコードを読むしかない』

です。(いや、元も子もないな。)

これは私も前々から思ったいたことですが、「プログラミングという行為は、基本的には過去の経験・記憶から似たパターンを引っ張り出してきて、現状のコードに当てはめているに過ぎない」ということです。
(言語やライブラリの開発者など、ゼロからの構築が必要な場合は別だとは思いますが。)

この本では、そのことを科学的データを用いて解説しています。

また、プログラムに関する長期記憶を鍛える方法として、フラッシュカードを利用したり、紙に印刷したコードに手書きでコメントを入れるといった方法が紹介されていました。

たしかに効果はあるんでしょうが、現役のプログラマーがそれをする暇があるならもっと実務でコードに触れる方がいいのでは、というのが私の感想です。実務経験がない、プログラミング初心者にはよい方法かもしれません。

私が前々から思っていた仮説を、科学的データに基づいて証明できたという意味ではよい読書でした。