President Harry Truman once said that not all readers are leaders, but all leaders are readers. I find truth in this. One great non-technical book that I recommend, though it just barely didn't make the list, is 5am Club. In it, Robin Sharma shares another quote that I find demonstrates the importance of reading. He says that ordinary people have large TVs, but extraordinary people have large libraries.
Following this theme, I think reading is a great way to improve our craft as software developers.
With the new year a few days away, I put together a list of 5 great books that I think every software developer should have read by the end of 2021.
Here is a list of books, both technical and non-technical that have helped me as a developer.
Written by Robert Martin AKA "Uncle Bob", I consider this a must-read for anyone learning to code. I was once asked if I recommended this book for a beginner or if it would be over their head. I responded by saying that I wished I had read this as soon as I was learning to code.
This is one that I keep near my desk and refer to regularly. A new coder might struggle with some of the Java examples, but the purpose of this book, as Uncle Bob states, is to struggle with some of these concepts, read slow and often, and do some deep thought. If you are finishing this one slowly, you are reading it as intended.
Another Uncle Bob masterpiece, I think this is a great read to follow up Clean Code with. The premise of this book is that writing code and getting to market is easy and can be done quickly. This is the wrong way of thinking. Poor architecture leads to high maintenance costs, debugging is very expensive. He talks about a common example, where a monolithic application gets so large and tightly coupled that eventually needs to be re-written. One team will work on building features into the old monolith, and another struggles to keep up with the re-write.
In this book he talks about the SOLID principles, OOP, functional programming, etc. Eventually he talks about architecture in a manner that is framework, database, and UI agnostic and focuses on patterns and design of communication between various components.
If you can already code, then this book by David Thomas and Andrew Hunt will help you do it better. There are both technical and soft skills discussed in this book. The authors talk about SOLID principles, clean code, and clean architecture just like the two books above. They also discuss how to look at requirements, responsibility, over-engineering, and a lot of other topics that the other two books above don't cover. This one is less detailed than Uncle Bob's books, but if you read and follow everything in this book alone with the two above, you would make a great developer.
Shawn Achor's book has been very influential in how I work in teams. The concept is that everyone has potential, but the potential you achieve alone is a small potential. It takes a large group working together, combining their small potentials, to reach a big potential.
He goes into the psychology and research behind every aspect of potential and teamwork that he talks about. I think that this should be required reading for anyone, especially developers, because we all work with others, rather it is with a team at a company, our clients directly as freelancers, or just the end-user that we know will consume our products.
I didn't go to business school and after learning to code and working in the field for only a short while, I was surprised by how entrepreneurial and creative developers need to be from a business standpoint.
Eric Ries's book is not only targeted at startups. He introduced me to the term "intrapreneurship" which is where an employee working for a large organization is entrepreneurial and pushes the team to create new products as an entrepreneur would without leaving their position to start a new company.
Thus, this book applies to freelancers, entrepreneurs, and those already working at an organization.
The most diluted idea of this book is that teams should work in small tasks, iterate often and quickly, put new features out to users to get feedback, improve and repeat. Sounds a lot like he created the lean/agile workflow eh?
He throws the vanity metrics aside and promotes asking customers and users for feedback. It's a great read with important tips and concepts that can propel your development career forward.
I wanted to come up with a list of 5 books that developers can (and should) read this coming year. These are books that have been influential in my development career both technically and non-technically.
It's important to always be learning and developing. I hope some of you will read these books. I also have a post about the best software development blogs and the best software development podcasts .