阅读软件开发相关书籍,是程序员在技能和职业上为自己投资的好办法。但是,需要阅读那些书?应该按照什么顺序来进行?这份书单适合那些刚刚开始,一心想要提高自己的编程能力,想要以程序员为职业的人。
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:
- Test-Driven Development (Kent Beck)
- Refactoring (Martin Fowler)
- Implementation Patterns (Kent Beck)
- Code Complete: 2nd Edition (Steve McConnell)
- Working Effectively With Legacy Code (Michael Feathers)
- 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:
- Design Patterns (Gang Of Four)
- Patterns Of Enterprise Application Architecture (Martin Fowler)
- Domain-Driven Design (Eric Evans)
- Enterprise Integration Patterns (Gregor Hohpe, Bobby Woolf)
- Release It! Design and deploy production-ready software (Michael T. Nygard)
- 97 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:
- Extreme Programming Explained, Second Edition (Kent Beck)
- The Art Of Agile Development (James Shore & Shane Warden)
- 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