為程序員編寫(xiě)的10本經(jīng)典軟件開(kāi)發(fā)書(shū)籍(為程序員編寫(xiě)的10本經(jīng)典軟件開(kāi)發(fā)書(shū)籍)
看看這篇 Bounty 的文章,它給出了作者對(duì)10本書(shū)和資源的建議,這些書(shū)和資源會(huì)讓你成為一個(gè)更好的程序員
當(dāng)我開(kāi)始進(jìn)入軟件開(kāi)發(fā)領(lǐng)域的時(shí)候,網(wǎng)上的資源非常少,我的大部分學(xué)習(xí)都是通過(guò)閱讀倫敦環(huán)線上的書(shū)籍來(lái)完成的。其中,斯科特 · 邁爾斯,斯坦 · 利普曼和唐 · 博克斯在90年代后期陪伴我在埃奇威爾路和塔山之間(謝謝你們!).
Edgeware Road Tube Station.
下面列出了9個(gè)經(jīng)典的開(kāi)發(fā)類(lèi)書(shū)籍,它們經(jīng)常出現(xiàn)在你的工程團(tuán)隊(duì)的書(shū)籍收藏中,或者如果你不能買(mǎi)到新書(shū),你可以以合理的價(jià)格買(mǎi)到二手書(shū)。他們中的大多數(shù)人都曾經(jīng)和我一起在倫敦地鐵旅行過(guò),我推薦他們作為一種很好的方式來(lái)建立堅(jiān)實(shí)的軟件工程技能,以補(bǔ)充你特定工作所需要的具體知識(shí)。我已經(jīng)盡量使清單多樣化,并保持足夠的一般性。其中一些書(shū)包含特定編程語(yǔ)言的示例,但是不要因?yàn)檫@個(gè)問(wèn)題而放棄,因?yàn)橐话愕男畔⑷匀皇沁m用的。
我肯定錯(cuò)過(guò)了一些人的最?lèi)?ài),請(qǐng)讓我知道哪些在評(píng)論中,以及為什么你認(rèn)為他們應(yīng)該被包括在內(nèi)。請(qǐng)注意,我鏈接亞馬遜只是為了提供進(jìn)一步的信息,但這些不是聯(lián)盟鏈接,我絕不會(huì)從這些推薦中獲利,也不會(huì)得到作者的補(bǔ)償(除了他們已經(jīng)傳授給我的知識(shí)!).
1.The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas
在一系列課程中收集的一組關(guān)于軟件開(kāi)發(fā)情況的敘述,這些課程構(gòu)成了技巧。這本書(shū)將提高你的編碼習(xí)慣和作為一個(gè)程序員的前景。
2.Refactoring: Improving the Design of Existing Code 重構(gòu): 改進(jìn)現(xiàn)有代碼的設(shè)計(jì)by Martin Fowler et al.
如何改進(jìn)現(xiàn)有代碼,或從其他開(kāi)發(fā)人員繼承的代碼。這本書(shū)是我多年來(lái)經(jīng)常翻閱的經(jīng)典之作。
3.Clean Code: A Handbook of Agile Software Craftsmanship 整潔代碼: 敏捷軟件工藝手冊(cè) by Robert C. Martin
這本書(shū)是由永遠(yuǎn)可靠的 Bob 叔叔編寫(xiě)的,它只是簡(jiǎn)單地教您如何編寫(xiě)好代碼,以及如何將壞代碼轉(zhuǎn)換為好代碼。
4.Testing Computer Software 電腦軟件測(cè)試 by Cem Kaner, Jack Falk, and Hung Q. Nguyen
一本經(jīng)典的書(shū),展示了如何測(cè)試計(jì)算機(jī)軟件在現(xiàn)實(shí)世界條件下。它顯示了它的年代,所以尋找最新的版本和瀏覽過(guò)時(shí)的例子。
5.The Mythical Man Month 人月神話 by Frederick P. Brooks, Jr.
這本關(guān)于軟件項(xiàng)目管理的文章集首次出版是在我還是一個(gè)蹣跚學(xué)步的孩子的時(shí)候,但是它仍然是非常相關(guān)的(可能比我更相關(guān))。推薦給任何從事或管理復(fù)雜項(xiàng)目的人ーー這是我們中的大多數(shù)人,對(duì)嗎?
6.Programming Pearls 編程珠璣 by Jon Bentley
這本書(shū)描述了一些核心的編程問(wèn)題及其解決方案,充滿了幽默、實(shí)用的編程技巧和扎實(shí)的設(shè)計(jì)原則。
7.Design Patterns: Elements of Reusable Object-Oriented Software 設(shè)計(jì)模式: 可重用面向?qū)ο筌浖脑?by Erich Gamma et al.
我對(duì)這本書(shū)很矛盾。這是一本經(jīng)典著作,如果你能讀完它,你一定會(huì)成為一個(gè)更好的工程師。我沒(méi)有讀完,這讓我很遺憾,但我個(gè)人發(fā)現(xiàn),研究火車(chē)座位上的圖案比其中所包含的冗長(zhǎng)的散文更有趣。
8.Organizational Patterns of Agile Software Development 敏捷軟件開(kāi)發(fā)的組織模式by James O. Coplien and Neil B. Harrison
閱讀這本書(shū),然后把它交給你的經(jīng)理,并要求他們也這樣做。它描述了如何通過(guò)一組清晰簡(jiǎn)單的模式來(lái)提高公司的效率。
9.The Inmates Are Running the Asylum: Why High-tech Products Drive Us Crazy and How to Restore the Sanity 為什么高科技產(chǎn)品會(huì)讓我們瘋狂以及如何恢復(fù)理智by Alan Cooper
這本書(shū)有點(diǎn)自相矛盾,因?yàn)樗呀?jīng)過(guò)時(shí)了,同時(shí),隨著軟件可用性失控(經(jīng)常是偶然的,盡管其他人認(rèn)為它是一種有意識(shí)的方法,通過(guò)分散用戶的注意力來(lái)創(chuàng)造社交媒體成癮的循環(huán)) ,它仍然具有高度的相關(guān)性。
我的最后一個(gè)建議是收集在線資源,而不是一個(gè)單一的書(shū)名。
10.Safari Books OnlineSafari
時(shí)代變了,這些天我不再上下班了,我通常會(huì)瀏覽一些關(guān)于特定發(fā)展領(lǐng)域的博客文章,而不是坐下來(lái)讀一整本關(guān)于某個(gè)主題的書(shū)。然而,當(dāng)我需要一本書(shū)的時(shí)候,我會(huì)去 O’Reilly 的 Safari 在線書(shū)店,那里有大量的書(shū)籍,我強(qiáng)烈推薦給任何一個(gè)開(kāi)發(fā)團(tuán)隊(duì)或者個(gè)人,他們可以負(fù)擔(dān)得起訂閱費(fèi)。Safari 在線收集范圍從高度特定的一般標(biāo)題適用于大多數(shù)軟件工程師。除了書(shū)籍,你還可以訪問(wèn)在線培訓(xùn)和 O’Reilly 會(huì)議視頻,通過(guò)互動(dòng)教程和學(xué)習(xí)途徑來(lái)衡量你在某一學(xué)科上的進(jìn)步。
注意,至于我上面的書(shū)推薦,我和O’Reilly沒(méi)有任何關(guān)系。
請(qǐng)?jiān)谠u(píng)論中向我推薦你的書(shū),無(wú)論是經(jīng)典的還是新的。