プログラマー脳という本を読みました
コードの読み方、書き方を認知科学に基いて解説を行った内容になっていました
簡単なまとめ
認知科学に基いた科学的アプローチを用いてコードに向かい合う内容の本
複雑で難しいコードの理解方法のヒントから、認知負荷を抑えるためのコードの書き方がまとめられています
各章のメモ
Chapter1:コーディング中の混乱を紐解く
コードを読んでいると混乱が起こることがあるが、なぜ混乱が起こるのかについて解説されている章
知識不足、情報不足、処理能力の付録のほか、プログラム言語知識の不足などの原因が解説されている
Chapter2:コードを速読する
コードの速読方法について書かれた章
キーとなるのは「長期記憶」で、プログラムを長く経験していると様々なプログラムパターン(for文などの書き方)が累積していく
そのような知識が多いとプログラムを見た瞬間に当てはまるパターンが浮かんできて「こういうことか」とすぐ理解できるようになる
Chapter3:プログラミング言語の文法を素早く習得する方法
文法の覚え方について書かれた章
フラッシュカード(学生の時に使っていた、表に英単語、裏に日本語訳が書かれているようなカード)を使うのが有効と書かれていた
意外!
Chapter4:複雑なコードの読み方
認知負荷についての解説
認知負荷の種類や、認知負荷を減らす方法など
リファクタリングでコードを綺麗にするのは認知負荷を下げる効果もあった
Chapter5:コードの深い理解に到達する
コードを読む際のコツについて
重要な役割を果たしている変数などを把握することで理解が深まる
Chapter6:プログラミングに関する問題をよりうまく解決するには
問題のとらえ方の解説
メンタルモデル:頭の中のみで処理し、(ホワイトボードに書くなど)手を動かす作業をしない考え方
想定マシン:コードを実行する機械の仕組みを説明する(プログラムを機械に見立てて説明 の理解)
といった解説。難しい・・・
Chapter7:誤認知:思考に潜むバグ
長期記憶に残った記憶は、ほかに転移できる(Javaを学んでいればC#にも応用できる というイメージ)
ただし、逆に過去の経験から新しい事柄についても「そうだろう」を思い込んでしまう(変数は勝手に初期化されるだろう→プログラム言語ごとに仕様が違う など)
テストコードやコメントを記述することで、上記の誤認知を防ぐことが出来る
Chapter8:よりよい命名を行う方法
キャメルケース、スネークケースそれぞれの認知の違いや考え方など
適切ではない命名が多いプログラムにはバグも多いが、必ずしも因果関係があるとは言えないという解説があり、意外に感じた
Chapter9:汚いコードとそれによる認知的負荷を避けるための2つのフレームワーク
長すぎるメソッドや不適切な名称のメソッドがワーキングメモリに大きな負荷を与えることの解説
アンチパターンの内容など
Chapter10:複雑な問題をより上手に解決するために
より良いプログラムを書く方法
・自動化(ショートカットを覚えるなど)で潜在記憶を強化
・ペアプロなどで同僚と共同作業
・GitHubや技術系ブログからコードを学ぶ
といった方法が有効
Chapter11:コードを書くという行為
プログラミングを行うときには検索、理解、転写、増強、探索など様々な作業やテクニックを組み合わせて行う
プログラミング中の割り込みは生産性を著しく下げるため、割り込みを阻害するようなアピールも必要になる
Chapter12:より大きなシステムの設計と改善
CDN,CDCBという考え方
CDN:表記法の認知特性
CDCB:上記の考え方をコードベースに拡張した本書独自の概念
気を付けるべき特性として、一貫性、拡張性、隠れた依存性などがあり、それらに対しての対策が書かれている
Chapter13:新しい開発者のオンボーディング
シニアエンジニアからジュニアエンジニアのオンボーディングに対しての注意事項
ジュニアエンジニアはプログラム活動は一度に一つだけにしたり、ワーキングメモリの負荷を抑えるため、用意できる資料は用意しておきましょう(見て覚えろ系はダメだということだと思う)というお話
個人的な感想
認知科学、かつ翻訳本ということで難しい言葉が多く、2週間の貸出期間では中身をきちんと理解できなかったという印象です
幸い、各章にまとめが書かれているため、まとめを眺めて、気になる内容は復習する という使い方ができるのは良いと感じました
プログラム系の書籍をス冊読みましたが
・命名規則(わかりやすい名前を付ける)
・シンプルな構造(ワーキングメモリの負荷を下げる)
といった内容は他プログラム解説書籍でも出てくる話題なので、重要な内容なんだなと再認識できました