プログラマー脳 ~優れたプログラマーになるための認知科学に基づくアプローチ [Kindle]
- 秀和システム (2023年2月15日発売)
- Amazon.co.jp ・電子書籍
感想・レビュー・書評
-
プログラマーの勉強法やコードの読み方、書き方を認知科学的アプローチで書いた本。
何故コードがわからないのかを原因別に分け、それぞれの対策を書いている。
ただし、ある程度熟練したプログラマーだと知ってて当たり前なことを認知科学的に書いてるだけなので、初心者レベルならオススメだけど、中級者以上だと当たり前すぎてしまうので注意。
ただし、原因を切り分けできるようにするのは中級でも難しい人はいるので良いことだと思う。詳細をみるコメント0件をすべて表示 -
プログラムを読む、書くといったプログラミングに関わる行為での認知プロセスを詳細に解説し、認知の観点からより良いプログラミング・ソフトウェア開発のための取り組みを解説している。折々に演習を交えて読者に体感させる方式は好感が持てる。
まず、コードをよりよく読むことが最初に出てきた点に個人的には意外だった。プログラミングを行う、という観点だと書く方が先だという思い込みがあったので。
ただ、よく考えてみれば、何かを外界から認識するというアプローチや、言語の習得や何かしら考えた時に書く以上に読むことが重要であるのは合理的である。
短期記憶や長期記憶、認知フレームワーク、アンチパターンなどを用いて解説している。
目の前の仕事からいったん離れてプログラミングを振り返ってみるときによい本だと思った。 -
- 後書に、「認知を知ることによって、何かをしているときに訳がわからなくなったり認知的に圧倒されたと感じた時も、それは問題ではなく、学習の一部であるというと認識することができる。そのことにより、自分の頭が悪いんだ思うのではなく『これは自分にとって認知的負荷が高いんだな』と自分に優しくなれる」という旨のことが書いてあって、まさにその通りのことを体感している。
- この本に書かれている認知的負荷という概念を知ることによって、うまくできない事柄に直面した時も、パニックになったり頭が悪いんだ…と変に悲観的にならず、認知的負荷という側面から俯瞰して自分の状態を見ることができるようになったし、この認知的負荷が高い状態をどう解決すれば良いか?と建設的に考えることができるようになった気がするので、この本にはとても感謝です -
プログラミングという作業を認知科学的に解き明かした本です。他人のコードはなぜ読みにくいのか、自分にとって書きやすい言語と書きにくい言語の差はどこにあるのかなどを明確に言語化してくれるので、読み始めは感動します。キーワードは「認知的負荷」です。
ただ少し内容が冗長ですね。もう少し項目を絞って薄い本にした方が良かったのではないでしょうか。 -
認知負荷(cognitive load) という切り口でプログラマの活動を考察した良書。
一つ一つの話は経験的には知っていた内容ではあるものの、体系的でアカデミックな論拠とともにまとめられているのがよい。
特に最終章のオンボーディングに役立てる部分は有用性が高いと思う。 -
自分が普段コード読んだり書いたりしている時の認知負荷にどんなものがあるのか自覚できる。また人に読ませるものを書くにあたって意識しようと思えることが書かれていた。
-
認知負荷は実際に感じた人しかわからないことも多く、こういった認知負荷がある現状をなんとか言語化したり可視化できるようにしたいが、かなり難しそうという印象がある。
問題が表面化するタイミングもだいぶ後になってからだったりと時間がかかるので、前もって対処するにはどうすれば良いのかを常に考えて創り、継続的に改善しないといけない。
個人的にはPart3以降が特に面白くて良かったと思う。 -
コードを読む際に脳のどういった機能が使用されているのか、それぞれの機能の限界はどの程度なのかといった記述が、認知の難しさを実感する為のサンプルコードや各概念を読者が日常で触れているコードや行動に具体化して考えるための表などと共に書かれている。
第1部 コードをよりよく読むために
第2部 コードについて考える
第3部 よりよいコードを書くために
第4部 コーディングにおける共同作業
という4部構成になっていて、
第1部は短期記憶、長期記憶、アイコニックメモリ、ワーキングメモリなどの脳の機能や、チャンク化、ビーコン、課題内(外)在性負荷などの脳への負荷に関する概念について書かれている。
第2部は変数の役割、メンタルモデルや想定マシン、(学習の)転移などについて書かれている。
第3部は命名、認知的負荷の大きいコード、記憶と学習などについて書かれている。
第4部はコーディング中の行為の分類と割り込み、認知の特性に応じたコードのユーザービリティ評価、オンボーディングについて書かれている。
本書はコードの単純な構造による分かりづらさだけでなく長期記憶の使われ方によってコードの分かりやすさが変わってくるなど、複雑で大規模なコードに接しているプログラマが普段感じていることを脳の機能の解説を交えて説明してくれるという点で、コードベースの課題の言語化や改善の方針を考えるのに役に立つ。
認知的な観点からコードの複雑さについて考えているプログラマにとっては、本書はいくつかの疑問に答えてくれる。
一方で、本書の中に出てくる概念を普段触れているコードに当てはめて整理する部分などは、人によってアウトプットが変わってくるだろうと予想される。コードの改善に関する議論は業務上は複数人で行うことになると思うが、複数人で読み合わせる場合には「誰が何をどう認知しているか」という主観を交えながら読んでいく必要があり、少々難易度が高いように感じた。
認知科学の立場からコーディングに関する作業について考えるいいきっかけになった。