本ページはプロモーションが含まれています

IT全般

プログラマー脳の書評|コードが読めないのは能力不足じゃないと分かった

CATEGORY
REV.
DRAWN BY
TOM
SHEETS
9枚
プログラマー脳(読めないのは能力不足じゃない)

トム

SESで約8年、環境を変えられないもどかしさの中にいました。32歳で自社開発企業に転職し、今はClaude Codeと自動化で、仕事も時間も組み直している途中です。
・Javaバックエンドエンジニア(Java歴12年以上)
・資格:基本情報技術者/応用情報技術者/Java Silver/Python3エンジニア認定基礎
詳細なプロフィール

𝕏

プログラミングと認知科学という組み合わせが気になって、単純な興味で読んだのが『プログラマー脳』です。

結論から言うと、コードが読めなかったり、覚えたはずの書き方を忘れたりして、自分の力不足だと感じている人に合う1冊です。読めない・覚えられないことには、頭の働き方から説明できる理由があると分かります。

いちばん役に立ったのは、第1章の「3つの認知プロセスと3つの混乱」の話でした。読んでから、コードの読み方と、覚え方を変えています。

プログラマー脳はどんな本か

書名プログラマー脳 〜優れたプログラマーになるための認知科学に基づくアプローチ
著者フェリエンヌ・ヘルマンス(訳:水野貴明、監訳:水野いずみ)
出版社秀和システム
発売日2023年2月16日
ページ数・定価288ページ(B5判)/3,300円(税込)
原書The Programmer's Brain(Manning、2021年)

書誌情報と章の内容は、紀伊國屋書店のページに載っている出版社内容情報によるものです(定価は書店の掲載価格)。著者はオランダのライデン大学の准教授で、プログラミング教育を研究している人です。コード例はJavaScript、Python、Javaなどで出てきますが、特定の言語の知識は必要ないとされています。

全13章が、4つの部に分かれています。

全13章の4部構成(読む → 考える → 書く → チームで働く)
1
PART 1 / 読む第1部 コードをよりよく読むために
2
PART 2 / 考える第2部 コードについて考える
3
PART 3 / 書く第3部 よりよいコードを書くために
4
PART 4 / チームで働く第4部 コーディングにおける共同作業
NOTE部の見出しは出版社内容情報の目次によります。

読む・考える・書くそれぞれで、頭のどの働きを使っているのかを説明し、それに合ったやり方を紹介する作りです。最後の部では、新しい開発者を迎えるオンボーディングも扱っています。

読んだきっかけ|単純な興味

LOG興味で手に取ったプログラミング × 認知科学が気になった

悩みがあって読んだわけではありません。プログラミングを認知科学で説明する、という組み合わせに興味がわいて読みました。

役に立ったところ|3つの認知プロセスと3つの混乱

いちばん役に立ったのは、第1章です。出版社内容情報では、第1章は「プログラミングを行う際に重要な3つの認知プロセスと、それぞれの認知プロセスがどのような混乱と関連するか」の章とされています。

原書のManningの公式ページで見られる第1章の見出しでは、混乱の種類として「知識の不足」「情報の不足」「処理能力の不足」の3つ、認知プロセスとして「長期記憶(LTM)」「短期記憶(STM)」「ワーキングメモリ」の3つが挙げられています。

「読めない」の3つの種類と、関わる認知プロセス
CONFUSION / 混乱
関わる記憶
どういう状態か
知識が足りない
長期記憶
書き方や概念を、そもそも知らない
情報が足りない
短期記憶
必要な情報が、いま見ている場所にない
処理する力が足りない
ワーキングメモリ
一度に考えることが多すぎて、頭に収まらない
NOTE混乱と認知プロセスの名前は原書第1章の見出しによります。対応と説明は私の言い換えです。

Javaのコードで言うと、たとえばこうです(説明用の例)。

// 1. 知識が足りない:書き方そのものを知らない
Map<Rank, List<Member>> byRank =
    members.stream().collect(Collectors.groupingBy(Member::rank));

// 2. 情報が足りない:中身が別の場所にあって、ここからは見えない
int fee = feePolicy.apply(order);   // apply の中で何をしている?

// 3. 処理する力が足りない:一度に頭に置くことが多すぎる
if (a > 0 && (b < limit || flag) && !(c == null || c.isEmpty()) && retry < max) {
    ...
}

どれも「読めない」ですが、原因が違います。1つ目は書き方を知れば解決し、2つ目は定義を見に行けば解決し、3つ目は条件を分けて名前を付ければ楽になります。

読んでから変えたこと|読めない理由を切り分ける・繰り返し思い出す

1. 読めないのを、能力不足だと思わなくなった

読んでから、コードが読めないことを、自分の能力不足だと思わなくなりました。読めないときは、3つの混乱のどれなのかを切り分けるようにしています。

読めないときは、どの混乱かを先に決める(Q1から順に答える)
QUESTION / 質問
はい
いいえ
Q1. 書き方や用語を知らない?
調べて覚える知識の不足
Q2へ
Q2. 必要な情報が、ここにない?
定義や呼び出し元を見に行く情報の不足
Q3へ
Q3. 一度に考えることが多すぎる?
書き出す・分けて読む処理能力の不足
―
NOTE原因が分かれば、手の打ちようがあります。3つの混乱の分け方は原書第1章の見出しにより、対処は私の整理です。

「なんとなく分からない」のままだと、どこから手を付ければいいか決まりません。種類が分かれば、調べるのか、見に行くのか、書き出すのかが決まります。

2. 覚えたいことは、繰り返し思い出すようにした

もう1つは、覚えたいことを繰り返し思い出すようにしたことです。原書の第3章の見出しには、フラッシュカードで構文を覚える方法、忘れないための「間隔反復(spaced repetition)」、「情報を見るだけでは不十分」「思い出すことで記憶が強くなる」といった節が並んでいます。

見るだけより、思い出すほうが残る
LOOK / 見るだけ分からないたびに検索して、答えを見るその場は解決するが、次もまた検索する
RECALL / 思い出す答えを見る前に、一度自分で思い出そうとする間隔を空けて、何度か思い出す
NOTE原書第3章の見出しをもとに、私がまとめました。

出版社内容情報でも、第3章は「プログラミングの構文や概念をよりよく、より簡単にきちんと学ぶ方法」の章とされています。新しい書き方を覚えるときに、答えを見る前に一度思い出してみる。それだけでも、同じことを何度も検索することが減ります。

ほかに読みどころになる3つの話

刺さったのは第1章ですが、目次を見ると、ほかにも実務ですぐ使える話が並んでいます。原書の見出しをもとに3つ紹介します。

複雑なコードは、頭の外に書き出して読む(第4章)

原書の第4章の見出しには、ワーキングメモリがいっぱいになったときの助けとして、依存関係のグラフ(dependency graph)と状態表(state table)を作る方法が挙がっています。状態表は、ループの中で変数がどう変わるかを、表に書きながら追う方法です。たとえばこんなコードなら(説明用の例)、

int total = 0;
for (int i = 1; i <= 3; i++) {
    total = total * 2 + i;
}

頭の中で追う代わりに、1回ずつ書き出します。

ループ   i   total(計算)
開始前   -   0
1回目    1   0 * 2 + 1 = 1
2回目    2   1 * 2 + 2 = 4
3回目    3   4 * 2 + 3 = 11

3つの混乱のうち「処理能力の不足」への対処で、頭に置いておく量を紙やエディタに逃がす考え方です。

名前の良し悪しは、バグの数にも関わる(第8章)

第8章の見出しには、名前の書式は短期記憶を助ける、分かりやすい名前は長期記憶を助ける、「悪い名前のコードはバグが多い」、そして名前の型(name molds)といった節があります。名前の付け方を、好みではなく、読む人の頭の負担とバグの話として説明しているのが特徴です。

名前と中身が食い違うと、混乱が増える(第9章)

第9章の見出しには、コードの臭いが認知的な負荷を生む理由と、「言語的アンチパターン(linguistic antipatterns)」の節があります。言語的アンチパターンは、名前から想像する動きと、実際の動きが食い違っている状態のことです。

// 名前と中身が食い違っている(説明用の例)
public boolean isValid(Order order) {
    order.setCheckedAt(LocalDateTime.now());   // 「確かめるだけ」に見えて、状態を書き換えている
    return order.total() > 0;
}

public List<Member> getMember(MemberId id) { ... }   // 単数形の名前なのに、リストが返る

名前を信じて読むと間違え、中身を確かめに行くと情報の不足になる。名前の付け方は良いコード/悪いコードで学ぶ設計入門の書評でも書いています。

今のレベル別の読み方

4つの部に分かれているので、今の自分の困りごとに合わせて読む部を決めやすい本です。

今の自分読む章ねらい
コードを読むのに時間がかかる第1章 → 第2章 → 第4章 → 第5章読めない理由の種類と、速く・深く読む方法を知る
新しい言語や書き方がなかなか覚えられない第1章 → 第3章覚え方と、忘れないための方法を知る
読みやすいコードを書きたい・チームで働く第8章 → 第9章 → 第13章名前の付け方、コードの臭い、オンボーディングを知る

向いている人・向いていない人

  • 向いている人:コードが読めない・覚えられないことを、自分の力不足だと感じている人。プログラミングの学び方そのものを良くしたい人
  • 向いていない人:特定の言語やフレームワークの使い方を知りたい人。この本は、頭の働き方から読み方・覚え方を考える本です

出版社内容情報では、すべてのレベルのプログラマー向けとしつつ、特に職業プログラマーが直面する状況を取り上げている、とされています。

あわせて読みたい

読んだ本はほかにも、トムの本棚に並べています。

よくある質問

Q. 認知科学の知識がなくても読めますか?

読めます。出版社内容情報では、まず認知プロセスを説明してから、それぞれの場面でどんな方法を採るべきかを具体例で説明する、とされています。

Q. Javaの人でも役に立ちますか?

役に立ちます。コード例はJavaScript、Python、Javaなどで出てきますが、特定の言語の知識は必要ないとされています。

Q. 原書はありますか?

あります。Manningから2021年に出た「The Programmer's Brain」です。

REVISIONS / 改訂履歴
REV.DATE内容
32026-10-16図解を描き直し(図面のデザインにそろえた)
22026-10-14一人称と言い回しの表記をそろえた
12026-10-13初版
NEXT STEP
次にコードが読めなくなったら、「知識・情報・処理」のどれが足りないかを1つ選んでみてください。

選べたら、調べる・見に行く・書き出す、のどれをすればいいかが決まります。

NEXT READ本棚から1本

AIで開発を組み直すなら、まずこの5冊から

入門・実践・設計まで、Claude Codeの本をレベル別に5冊選んで比べました。

→ おすすめ5冊を見る

  • この記事を書いた人
  • 最新記事

トム

SESで約8年、環境を変えられないもどかしさの中にいました。32歳で自社開発企業に転職し、今はClaude Codeと自動化で、仕事も時間も組み直している途中です。
・Javaバックエンドエンジニア(Java歴12年以上)
・資格:基本情報技術者/応用情報技術者/Java Silver/Python3エンジニア認定基礎
詳細なプロフィール

𝕏

IT全般 ・