From Davy Brion’s Blog… and I totally agree with him lol
I’ve stated previously that reading software development books is a good way of investing in your skills and your career. But which ones should you read? And in what order should they be read? I’ve compiled a list of books that i think can truly increase your skills substantially. I’ve put them in the order in which i believe they will have the most effect, and grouped them in 3 ’stages’. I primarily have young developers who are just getting started as professional developers in mind with this list, but it should be just as useful to developers who’ve been around for a while and simply want to improve.
The first thing that you should focus on is improving your ability to write clean, unambiguous, maintainable code. The following books should greatly help you with that:
1.Test-Driven Development (Kent Beck)
2.Refactoring (Martin Fowler)
3.Implementation Patterns (Kent Beck)
4.Code Complete: 2nd Edition (Steve McConnell)
5.Working Effectively With Legacy Code (Michael Feathers)
6.Clean Code (Robert C. Martin)
The order of this stage might surprise some people, but i’m willing to bet that this is the most efficient order to reading those books.
After you’ve learned how to write great code, you should really start focusing on clean design and architecture. That’s not to say that you should focus solely on design and architecture, but the more you know about it, the better off you will be:
1.Design Patterns (Gang Of Four)
2.Patterns Of Enterprise Application Architecture (Martin Fowler)
3.Domain-Driven Design (Eric Evans)
4.Enterprise Integration Patterns (Gregor Hohpe, Bobby Woolf)
5.Release It! Design and deploy production-ready software (Michael T. Nygard)
6.) Things Every Software Architect Should Know (edited by Richard Monson-Haefel)
This stage probably deserves a bit of clarification as some of the books listed in this part might be somewhat ‘controversial’. If you read and learned from the books in the first stage, then you should be capable of putting everything you read in the second stage in perspective. You will have learned that you shouldn’t just apply as many patterns as possible, but it’s certainly a good thing to know about their existence.
Finally, you need to learn about working in a team environment and understanding team dynamics. The following books aren’t about working in teams specifically, but contain a tremendous amount of wisdom and insight that will definitely help you when it comes to working in a professional team environment:
1.Extreme Programming Explained, Second Edition (Kent Beck)
2.The Art Of Agile Development (James Shore & Shane Warden)
3.The Mythical Man-Month, 20th Anniversary Edition (Frederick P. Brooks)
This one probably needs a bit of clarification as well. I’m not saying that you should do Extreme Programming. But it certainly won’t hurt you to learn about it, and at least try to apply the practices that you believe in when it makes sense to do so. You don’t really need to apply them all (though you will get bonus points from the cool kids if you do so, or at least pretend to), but there are a few of them that everyone really should do regardless of which agile variant you subscribe to.
So there you have it… try those books out in that order, and don’t forget to thank me later