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: http://www.jameskovacs.com/blog/TheBookshelf.aspx 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...