The Most Influential Programming Books to Me as Developer
Today, I was reading some articles in the internet when I found this post by Jason Whaley – The Five Most Influential Books to Me as a Developer. I’m addicted for programming books, at least once in a week, I find myself searching new programming books at Amazon. I decided to see what the programming superstars like to read.
David Heinemeier Hansson, Rails creator, in his post, shared this list in his blog:
Smalltalk Best Practice Patterns
Refactoring: Improving the Design of Existing Code
Patterns of Enterprise Application Architecture
Domain-Driven Design: Tackling Complexity in the Heart of Software
Are Your Lights On?: How to Figure Out What the Problem Really Is
Code Complete: A Practical Handbook of Software Construction, Second Edition
Don’t Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition
Peopleware: Productive Projects and Teams (Second Edition)
The Pragmatic Programmer: From Journeyman to Master
Facts and Fallacies of Software Engineering
StackOverflow community also listed their top 100 most influential books in this post.
My Own List
When I started my programming career I did not read programming books. I thought that most of my learning would come from my daily work. I was wrong. Programming is a practical activity, you have to do the same thing once, twice, three times to become really good, but sometimes it is necessary to slow down and see what the real top performers think about coding. Most often, you will learn in a book in a month things that you would take you years to learn without them.
The books below helped me to change my opinion on programming and improve and critique my own code.
It was the first good book that I read. Before it, all that I read was focused in specific technologies like pascal, C or Java. This book explains what it is a code smell, how you can identify one and how you can fix it. In last section, there is a list of code smells and refactoring recipes. All developers should read this one.
This book teaches how to write good code. How to create good names, good functions, good objects, and good classes, how to format our code, how to write tests and so on. The second section is a case study when the author shows a bad code and transform it in a good code using good practices . I read this book once, but definitively is a book that I will read again, and again, and again, until absorb all the principles.
Ok, at this time, I knew a lot about how to identify a good code, how to write good functions, how to split my classes and so on, but one thing was frustrating myself. I couldn’t rewrite my code because I couldn’t guarantee that it would work again. I needed a way to verify that my code behavior wont change. I found it using TDD. In this book Kent Beck teaches us how we can write tests before write production code and how it can help us to achieve a better code and better design.
I started my career in a software factory. We normally used a design, known as anemic model, where our entities were copies from our database tables, and once created were unlikely to change. In this book, Eric, teaches how we can use more OO in our software, how we can design better our software, how we can bring the domain expert to increase our knowledge about software domain, and use iterations to refine our model. A lot of concepts are introduced like ValueObjects, Aggregates, Services and so on.
This books was the first book that I read that talk about language design. Through this book I could understand how C# is evolving, and why some decisions was taken. It also taught me some features that I never had used and that I could show it to my team to improving our code quality.
And you? Which book you consider the most influential book in your programming career?