In 2018 I completed 59 books (my target was 50). 📚 During my yearly retrospective, I noticed I had only finished 7 programming books. Those were only 12% of my total reads. For 2019, I want to improve this ratio. My goals are still to read about 50 books. 🤓
I don't want just to read a book on a hot(random) tool/framework/whatever. Because most probably I won't need that, or it will disappear or change in a year. So, I sat down and compiled a list of evergreen classics which focus on programming as a craft and not on a particular tool.
Here is the list in no particular order (I had read some of the books):
Coding & software architecture
- Refactoring - most of the our time as developers is spend changing existing code
- Domain Driven Design
- Working Effectively with Legacy Code
- Code Complete
- Design Patterns
- Patterns of Enterprise Application Architecture - some of those are a bit outdated, but still useful to know
- Clean Code Collection
- Code Simplicity
- Structure and Interpretation of Computer Programs
- Seven Languages in Seven Weeks - it is essential for a good developer to know more than one programing language
Automated testing is an essential skill. In my experience, most issues during testing come because developers don't know how to test a particular functionality.
- Growing Object-Oriented Software, Guided by Tests
- The RSpec Book
- xUnit Test Patterns
- Test Driven Development: By Example
Programming is not only about programming languages. Often our database choices are the hardest to change, and we have the least amount of information when we are making database design decisions.
- Refactoring Databases - refactoring is essential. We often focus on code changes, but database changes are often even more important
- Seven Databases in Seven Weeks - it is good to know your options
- NoSQL Distilled
Every good developer should know things like process, usability and so...
- The Pragmatic Programmer
- The Cathedral & the Bazaar
- The Lean Startup
- Don't Make Me Think
- Refactoring UI - this one is fairly new, but it is one of the best summaries on UI, I have ever read.
- Continuous Delivery
- Extreme Programming Explained
You can notice a lot of books are focused on OOP. We all know that Functional programming is taking over. But I still all books in this list are valuable. Also, I'm still searching for similar books in Function Programming world.
Also, I don't know which are the evergreen books on "Cloud," Microservices," "machine learning" and "data analysis."
If you have any suggestions for books, I'm missing tweet at @rstankov. 🙌