Back
Felienne Hermans: The Programmer's Brain (Paperback, 2021, Manning Publications) 4 stars

Your brain responds in a predictable way when it encounters new or difficult tasks. This …

Review of "The Programmer's Brain: What every programmer needs to know about cognition" on 'Goodreads'

5 stars

This book is phenomenal - I'm reeling from its depth and breadth, and will need time to properly digest it. While I've "finished" reading it, I have many notes/highlights/connections to process and thoughts to get out. (This is going to require blog posts). There are also exercises sprinkled throughout the book, from simple thought experiments to pencil-and-paper activities. I expect those to come in handy well into the future.

Some high points that stand out to me:

Read to understand, code and teach to be understood: I love the focus and clarity that this book brings to reading and understanding code. We learn about cognitive barriers in the way of understanding, and how we can write and teach code in a way that helps understanding.

Breakdown of memory and cognitive load: The explanation of memory types (short-term, long-term, working) and their role in various programming tasks was useful and interesting. The discussion around "germane cognitive load" (the effort required to store long-term memories) was a particular lightbulb moment.

* Specific words for my feelings: For a good while now, I have used/loved/modified/extended a command-line tool called VisiData. It's been hard for me to put into words what I love about it. Something hand-wavy about the feel of it. Now I have words, thanks to the "Cognitive Dimensions of Notation" section in this book. VisiData has high provisionality (you can think using the tool), low viscosity (it is easy to change), and high progressive evaluation (you can execute incomplete or imperfect code). All of those features are tradeoffs against other dimensions (such as error-proneness), and those tradeoffs make sense in the context of a tool designed for quick and easy exploration.