The path from good developer to great developer is a long road, and not one with clear markers along the way. When I started developing years and years ago, I was the fish floundering about, looking for the “Right” way of developing. Most of this desire came from a innate feeling that I had no idea what the hell I was doing. The first step I found from novice to expert was to acquire a depth, and breadth of knowledge on both how to write and how to deliver software. I read a lot of books throughout the years, some good, some bad, and some indispensible. Rather than come up with my own list, James Kovacs has an absolute perfect list:
If I could suggest a progression, it would be:
- Design pattern books
- Refactoring books
- Big Design (DDD, PoEAA) books
- Process books
It’s rather pointless to jump into something like DDD if you don’t understand what the Strategy pattern is, or how to recognize and execute on the “extract method” refactoring. These initial design and refactoring books are extremely important for a solid (ha ha) foundation, which the big design books build upon.
After I studied these books, I looked back on the work I had done, and saw it very similar to someone who learned the words of a foreign language, but never understood their meaning, and could never truly communicate. Sure, I could spout a bunch of words together and they might make sense sometimes on accident, but these books give the reader a fluency in design, architecture, development and process that experience alone will never quite match. You get quite a nice view standing on the shoulders of giants.