The Programmer’s Brain: What Every Programmer Needs to Know About Cognition
Review by Sven Woltmann
Felienne Hermans, a professor of computer science at Vrije Universiteit Amsterdam, explains in her book “The Programmer’s Brain,” supported by scientific findings from neuroscience, how the human brain works during complex tasks like programming, specifically when reading, understanding, and writing code, as well as learning a new programming language.
She describes how long-term memory, short-term memory, and working memory work together and the role of “chunking” (the process of grouping small units of information into larger ones, e.g., letters into words).
We learn why complex tasks, such as working with unfamiliar code, can lead to cognitive overload, and we discover concrete techniques grounded in cognitive science that can help us reduce cognitive load – both for ourselves and colleagues we are onboarding into new areas.
We also learn why “Clean Code” techniques, such as meaningful and consistent naming, short methods, and uniform formatting, are so effective.
The author uses easy-to-understand language and numerous practical examples from various programming languages to illustrate her points.
I recommend this book to programmers of all experience levels who want to improve their handling of complex challenges, especially those who want to understand how to avoid the cognitive overload often caused by complex tasks.
🎧 Suitable as an audiobook? No, due to numerous code examples.
Other Recommendations From This Book’s Genres
The Pragmatic Programmer: From Journeyman to Master
Clean Code: A Handbook of Agile Software Craftsmanship
Refactoring: Improving the Design of Existing Code
Clean Craftsmanship: Disciplines, Standards, and Ethics
Effective Java (Third Edition)
Java Generics and Collections
Core Java: Fundamentals (Volume 1)
Core Java: Advanced Features (Volume 2)
Concurrent Programming in Java: Design Principles and Pattern, 2nd Edition
Mastering Lambdas: Java Programming in a Multicore World
Java Puzzlers: Traps, Pitfalls, and Corner Cases
Working Effectively with Legacy Code
Java Concurrency in Practice
Design Patterns: Elements of Reusable Object-Oriented Software
Growing Object-Oriented Software, Guided by Tests