我之前曾說,閱讀軟件開發有關的書籍,是在你技能和事業上投資的好辦法。 但是哪些應該閱讀呢?而且該按照什么順序閱讀呢? 我已經編制了一份書單,我認為它能真正大幅提高你的能力。 我已經安排好它們的順序,分為3個階段,我相信這種順序是最有成效的。這份書單主要是為那些剛剛起步的開發人員編寫的,當然專業的開發者也可參照,它對周圍那些想獲得提高的人來說都是相當有用的。
首先,你應該關注的是提高書寫干凈,毫不含糊的,可維護代碼的能力。 下列書籍應該大大有助于您:
- 測試驅動開發(肯特·貝克)
- 重構(馬丁·福勒)
- 實現模式(肯特·貝克)
- 代碼大全:第二版(史蒂夫·麥康奈爾)
- Working Effectively With Legacy Code(Michael Feathers)
- Clean Code (Robert C. Martin)
上述的讀書順序可能使有些人感到驚訝,但我敢打賭,這是最有效的閱讀順序。
當你學會了如何書寫偉大的代碼,你應該開始以簡潔的設計和架構為重點。 這并不是說,你應該只集中于設計和架構,但你越了解它,你會變得越好:
- 設計模式(Gang Of Four)
- 企業應用架構模式(馬丁·福勒)
- 領域驅動設計(埃里克·埃文斯)
- 企業集成模式(格里高·Hohpe,鮑比·沃爾夫)
- Release It! Design and deploy production-ready software(Michael T. Nygard)
- 97 Things Every Software Architect Should Know (edited by Richard Monson-Haefel)
這一階段可能值得說明的是在這部分列出的一些圖書中可能是有點'爭議'的。 如果您已經閱讀了第一階段的書籍,那么你應該有能力用你自身的觀點看待第二階段的這些書籍。 你會了解到,你不應該僅僅仿照那些模式,但了解它們的存在肯定是一件好事。
最后,您需要了解如何在團隊環境下工作并理解團隊的動力。 下面的書籍不是具體介紹團隊中的工作,但包含了眾多的智慧和洞察力,這一定會幫助您在專業的團隊環境中工作:
這本書可能也需要一點說明。 我并不是說你應該做極限編程。 但你了解它肯定不會有害處,至少你應該在你認為有意義的時候去嘗試采用這種做法。 你并不會真的需要去采用所有的做法(雖然你這樣做會獲得額外的好處,或者至少假裝這樣做),但它們中的一些,每個人都應該至少了解一下。
所以就是這樣了...嘗試用上述方式閱讀這些書,不要忘了以后感謝我
A Reading Guide To Becoming A Better Developer
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