The Top 5 Books That Made Me a Better Developer
I've ran across a few books that excelled at making me a better developer, irrespective of a specific technology. The kicker is that some of them weren’t even directly about development.
While I could easily create a list with ten or twenty books, I wanted to challenge myself to limit the list to just five. Some of these books might not be as effective for you as they were for me, however I think there is a great deal of value for developers in each of these.
The Pragmatic Programmer
The Pragmatic Programmer by Andrew Hunt and Dave Thomas was the beginning of a journey for me. While some of the other books on this list (which came out after it) might do an even better job of drawing a portrait of the software craftsman, this book introduced me to the concept. This book did an amazing job of tying together rock-solid concepts that superseded any one technology.
“Programmers who are two or three levels removed from the actual users of their code are unlikely to be aware of the context in which their work is used. They will not be able to make informed decisions.” — The Pragmatic Programmer
At the end of the day, most all of the critiques around this book lie in the fact that is was written in 2000. A lot has changed since then, but the truths in this book are still relevant even if the tools have changed. I still think this is a great book for developers to dive into, and it gives a great introduction to software craftsmanship.
When I first picked up Clean Code by Robert C. Martin (usually referred to as “Uncle Bob” Martin), I was excited to build off the principles that I learned in The Pragmatic Programmer. This book greatly expanded on those principles as well as setting guidelines for what should be expected of developers in today’s industry. I found his book extremely challenging on many fronts, and through those challenges I grew immensely as a developer.
“Most freshman programmers…believe that the primary goal is to get the program working. Once it’s ‘working’ they move on to the next task, leaving the ‘working’ program in whatever state they finally got it to ‘work’. Most seasoned programmer know that this is professional suicide.” — Clean Code
The Clean Coder
After Clean Code, I was excited to read Robert Martin’s The Clean Coder. This is where the area of focus for me shifted from simply the code to other areas of my professional career. In addition to addressing areas of code, this book began to delve into areas of personal development process and estimation. Through this work, I developed a passion for understanding how to excel in those areas just as much as I excelled at writing code. In addition, I began to formalize education time as a part of my work week.
“You should plan on working 60 hours per week. The first 40 are for your employer. The remaining 20 are for you. During this remaining 20 hours you should be reading, practicing, learning, and otherwise enhancing your career… Those 20 hours should be fun!” — The Clean Coder
Through this book and the project I was working on while reading it, I began to have an appetite for understanding and evolving the process for how I and my team solved problems. Because of this appetite for understanding the process, I knew that next I wanted to invest time in a book that focused just on execution planning and process.
Agile Estimating and Planning
I’ve said many times that one of the problems with many developers is that they think that their responsibility lies mainly in the code. I think developers have to think and live in an agile mindset, and that requires understanding the process and procedures around an agile methodology as well as being a gifted developer. Mike Cohn’s Agile Estimation and Planning was a great resource in helping me understand several pieces of this puzzle.
“Agile planning balances the effort and investment in planning with the knowledge that we will revise the plan throughout the course of the project… We don’t want to change for the sake of changing, but we want to change because change means we’ve learned something or that we’ve avoided a mistake.” — Agile Estimating and Planning
In some ways, the agile methodology has evolved since this book, but the book itself provides a great base to build from. I firmly believe that any developer should have an agile methodology and tool set within their overall skill set. This book can help any developer with a first step in that direction.
How to Win Friends and Influence People
I can’t think of a scenario where it wouldn’t benefit a developer to know better how to navigate complex politics with an organization or team. Dale Carnegie’s legendary How to Win Friends and Influence People was another great resource in helping me fine-tune my skill set in this area.
“When dealing with people, remember you are not dealing with creatures of logic, but with creatures bristling with prejudice and motivated by pride and vanity.” — How to Win Friends and Influence People
As I’ve mentioned before, I often think that some developers miss opportunities for advancement because they believe that their responsibility lies only in the code. Every developer must foster the relationships around them. Whether consultant, freelancer, or employee you are required to communicate complex technical concepts. Learning how to better do this will only benefit you, and this book is one of the best at helping you do just that.
In an age where developers too quickly focus on getting a quick answer from StackOverflow or reading a three paragraph blog post to solve a problem, it is refreshing to look at resources that really help you understand the holistic environment of development. This is what is required to truly evolve from coders to craftsmen.
What resources have proved most valuable to you?