We often like to think of ourselves as brilliant minds constantly seeking knowledge. However, reading books that simply confirm what we already know is a common practice among developers. Sometimes, we even use these books as shields against critiques of various theories or practices.
But are we sure the books we read as budding programmers contained the exact concepts that now form our solid convictions? Or are we so full of cognitive biases that we’re lucky if one in three decisions we make is correct?
If on a Winter’s Night a Programmer…
And what about those manuals we thought we finished but left halfway, interrupted by events like in Calvino’s famous novel? Unlike traditional fiction, technical books to learn coding reveal their “murderers” (key concepts) fairly quickly.
Not finishing them isn’t a huge deal, but when discussing books in crowded, open settings, I always double-check because nothing is more embarrassing for a programmer than being exposed for half-knowledge.
10 “Oldies but Goodies” Books To Learn Coding
Here are 10 books that, in my opinion, are classics. They have helped me make decisions or influenced my thinking. These books are frequently discussed in programming circles, ensuring that even though I consider myself a perpetual junior developer, smarter folks speak highly of them. So, take note and avoid dismissing them casually.
1. “Clean Code: A Handbook of Agile Software Craftsmanship” by Robert C. Martin
This book has many imitators. Some parts are fundamental for aspiring better programmers; others see it as impractical. You can identify the latter by mentioning automatic tests out of context and watching them blush with embarrassment or anger.
2. “Introduction to Algorithms” by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
The original hardcover is as valuable as the Gutenberg Bible, but fortunately, the PDF is free on many platforms. Over a thousand pages of algorithms essential for a complete programmer, but lethal if read all at once. Approach it gradually, like a cookbook.
3. “The Pragmatic Programmer: Your Journey To Mastery” by Andrew Hunt and David Thomas
I’ve read it countless times. Even today, I randomly open its worn-out cover to imprint its fundamental passages in my mind. A book I had to buy in print because highlighting on Kindle feels like writing on water unless you use a real pencil.
Recommended article: 5 Books on Open Source
4. “Code Complete” by Steve McConnell
An essential resource for software professionals, providing crucial tools and techniques for quality software development. A must-have despite the last edition being from 2004.
5. “Accelerate: The Science of Lean Software and DevOps” by Nicole Forsgren, Jez Humble, and Gene Kim
DevOps as a religion, backed by irrefutable evidence and metrics. Despite my alarms at the word ‘performance,’ it’s a book that firmly ends the “we’ve always done it this way” mentality in companies doomed to watch trains pass by without boarding.
6. “Don’t Make Me Think” by Steve Krug
Recognized for its lasting impact on web design and usability, this book has influenced generations of web designers and developers. Krug’s ability to explain complex concepts simply has spread improved design practices focusing on user experience. Recommended even for backend developers.
7. “The Mythical Man-Month” by Frederick P. Brooks Jr.
Brooks’ law states, “Adding manpower to a late software project makes it later.” Its corollary, “Everyone knows it takes nine months for a woman to have a baby, but you Americans think if you get nine women pregnant, you can have a baby in a month,” highlights the futility of adding more people to a delayed project.
8. “Refactoring: Improving the Design of Existing Code” by Martin Fowler
“Your code smells” could be the opening line of every good consultant called to solve legacy code issues. A manual with refactoring techniques and insights that remain highly relevant.
9. “Design Patterns: Elements of Reusable Object-Oriented Software” by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Despite the Singleton pattern causing more harm than good and many new books on the topic, this remains a recommended read for understanding the history of certain choices.
10. “Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems” by Martin Kleppmann
Currently, my obsession. This book covers everything you wanted to know about data management but were afraid to ask. Discovered via a social media post, it pleasantly surprised me, despite thinking I was well-versed in relational databases. And it’s just part of the book…
In the end, ten books are very few, even considering only agnostic ones. Education is unique and unrepeatable because reading remains a very subjective journey, even with manuals. Fortunately, new books to learn coding are released regularly, so the most important manual may still be unpublished.