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

Jeff Atwood, from StackOverflow and CodingHorror, recommended these books:

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.

Refactoring: Improving the Design of Existing 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.

Clean Code: A Handbook of Agile Software Craftsmanship

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.

Test Driven Development: By Example

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.

Domain-Driven Design: Tackling Complexity in the Heart of Software

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.

C# in Depth

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.

Suggestions

And you? Which book you consider the most influential book in your programming career?

One Comment

  1. Comment by Ian:

    Yours is a great list, I particularly like Skeet’s book because he writes extremely well. I found it effortless to read which given the technical level of the material is a genius stroke on his part.

    The DDD book is a bit like the bible to me. In that a lot of people reference it but none have actually read it. It is worth reading, but I wish someone would write an anti-DDD book, debunking the common misapplications of DDD. Actually a one pager saying DDD is not suitable for all projects would be a starting point.

    My most influential book is an oldie, and it was influential for slightly different reasons which is why I thought I’d mention it.

    When you learned C, you generally got a copy of K&R and had at it. I hated K&R. It felt like a maths book. Precise but not written for human readers. All the information was there, but packed in a space saving format like tetris bricks, regardless of how that would affect the reader.
    Then I found ABC (literally titled A Book on C) which was accessible, readable and enjoyable. It gave me a sense that programming books could be well written and didn’t have to feel stale and because of that I carried on with C where I might have been discouraged otherwise. That led to a career writing software (not in C though :) )

Leave a Reply

Your email address will not be published. Required fields are marked *