軟件開發(fā)者必讀的10本編程技術(shù)書籍推薦
編者按:人生如逆水行舟,不進(jìn)則退。開發(fā)者想要保持自身的競爭力,做到所向披靡,知識儲備必不可缺。這就意味著,簡單的代碼閱讀遠(yuǎn)遠(yuǎn)不夠。
快速迭代的信息社會,技術(shù)前進(jìn)的速度遠(yuǎn)超人類歷史上的任何時期,技術(shù)攫取呈現(xiàn)出碎片化的特征,開發(fā)者更傾向于通過網(wǎng)絡(luò)搜素尋求問答。然而,這種淺嘗輒止的閱讀方式,會給人深沉的浮躁感,難以做到為自己切實(shí)所用。
新語言、新工具持續(xù)更替,讓人目不暇接,學(xué)習(xí)過程中必定伴隨著各種瑣碎的問題。事實(shí)上,許多偉大的技術(shù)人在以前就遇到過同樣的難題,并且提出了相應(yīng)的策略和解決方法。雖然具體問題具體對待,但其中蘊(yùn)含的思考方式,所凝結(jié)的智慧成果,只會歷久彌新,給開發(fā)者們以新的啟迪,提綱挈領(lǐng),助力自身的技術(shù)升級。
本文總結(jié)了業(yè)界的十本經(jīng)典書籍,我們來一一探索吧。
《The Pragmatic Programmer》
《The Pragmatic Programmer》,即程序員修煉之道。這本書直擊編程陳地,適用于所有編程語言,創(chuàng)建用戶樂于接受的、可工作和易維護(hù)的代碼。它不僅會改變你的編程習(xí)慣,還會改變你的性格。Andrew Hunt在多個行業(yè)工作過,電信、銀行、金融服務(wù)和公用事業(yè),還有一些外來領(lǐng)域,如醫(yī)學(xué)成像、圖形藝術(shù)、網(wǎng)絡(luò)服務(wù)。他擅長于將已驗(yàn)證的技術(shù)實(shí)踐和前沿技術(shù)相結(jié)合,創(chuàng)造新奇而實(shí)用的方法。所以,這本書的見解涉及了許多有趣的領(lǐng)域,從個人責(zé)任到職業(yè)發(fā)展,直至保持代碼靈活和易于改編重用的架構(gòu)技術(shù),開發(fā)者能夠從中學(xué)到防止軟件變質(zhì)、消除復(fù)制知識的陷阱、編寫靈活、動態(tài)和易適應(yīng)的代碼、避免出現(xiàn)相同的設(shè)計(jì)、用契約、斷言和異常對代碼進(jìn)行防護(hù)等內(nèi)容。
“程序員入門書、終極書、DRY、KISS···從做人到做程序員,這本書教給了你一切,你所需的只是遵循書上的指導(dǎo)。”——知乎,蕭井陌
“程序員技藝具備的古老特點(diǎn),此書表達(dá)的很清楚。此書涉及了軟件工程角度,個人技藝如何配合的方方面面。”——豆瓣讀書,皂角菌
《The Mythical Man-month》
《The Mythical Man-month: Essays on Software Engineering》,即《人月神話:軟件項(xiàng)目管理之道》。這本出版于1970年的書被奉為軟件行業(yè)的《圣經(jīng)》,即使在現(xiàn)在看來也是字字珠璣。Frederick Brooks是1999年的圖靈獎得主,致辭中曾提到,“今天我們所看到的計(jì)算機(jī)體系結(jié)構(gòu)、軟件工程,以及三維計(jì)算機(jī)圖形,均受惠于布魯克斯的開創(chuàng)性工作,是他改變了這些領(lǐng)域的面貌。”他在軟件工程領(lǐng)域的最廣為人知的經(jīng)典著作《人月神話》,讓軟件工程學(xué)真正進(jìn)入人們的視野。
《人月神話》對軟件開發(fā)過程的幾個重要關(guān)鍵點(diǎn),提出了獨(dú)到的見解:提倡外科手術(shù)式的團(tuán)隊(duì)組織;軟件項(xiàng)目的核心概念要由很少的人來完成,以保證概念的完整性;軟件開發(fā)中最大的風(fēng)險往往不是技術(shù)的缺陷,而是缺少溝通;在開發(fā)中,要保持適度的文檔;在軟件開發(fā)的過程中,只有適度改進(jìn),沒有包治百病的銀彈。
“書中記述的前輩們在解決這些窘迫所體現(xiàn)的才智和熱情,是永遠(yuǎn)值得后人借鑒的,也將啟迪我們開拓未來之路。”——豆瓣,pythia
“Software Development 的圣經(jīng)。如果只能讀一本書,那么是這本書。”——豆瓣,浪人BabyL
《Clean Code: A Handbook of Agile Software Craftsmanship》
《Clean Code: A Handbook of Agile Software Craftsmanship》,即《代碼整潔之道》。軟件質(zhì)量,不但依賴于架構(gòu)及項(xiàng)目管理,而且與代碼質(zhì)量緊密相關(guān)。這一點(diǎn),無論是敏捷開發(fā)流派還是傳統(tǒng)開發(fā)流派,都必須承認(rèn)。Rober C.Martin,Object Mentor公司總裁,也是面向?qū)ο笤O(shè)計(jì)、模式、UML、敏捷方法學(xué)和極限編程領(lǐng)域的資深顧問。作為編程領(lǐng)域的佼佼者,他給出了一系列行之有效的整潔代碼操作實(shí)踐,并提出一種觀念:代碼質(zhì)量與其整潔度成正比。本書閱讀對象為一切有志于改善代碼質(zhì)量的程序員及技術(shù)經(jīng)理,內(nèi)容涵蓋從命名到重構(gòu)的多個編程方面,雖然書中所有的例子都用的Java,但其經(jīng)驗(yàn)適用于任何編程語言。
“用整理代碼的決心替代創(chuàng)造廢話的沖動。你會發(fā)現(xiàn)自己成為更優(yōu)秀、更樂觀的程序員。”——豆瓣,陳
“本書中提倡寫代碼猶如寫文章,對此觀點(diǎn)我印象深刻!如何才能寫出整潔代碼呢?總的原則無非是KISS(Keep It Simple Stupid)。”——豆瓣,Wuqifu
《The Clean Coder: A Code of Conduct for Professional Programmers》
《The Clean Coder: A Code of Conduct for Professional Programmers》,即《代碼整潔之道:程序員的職業(yè)素養(yǎng)》,這是本列表中Robert C·Martin的第二本書,建議在上一本書之后閱讀。成功的程序員在以往的工作和生活中都曾經(jīng)歷過大大小小的不確定性,承受過永無休止的壓力。Robert C. Martin以自己40余年編程生涯的心得體會,介紹了真實(shí)軟件技藝中的各項(xiàng)原則、技術(shù)、工具和實(shí)踐,展示了怎么以自豪、自尊和自信的心態(tài)進(jìn)行軟件開發(fā),怎么取得卓越表現(xiàn)和豐碩成果,怎么做到有效溝通和確切估算,怎么以坦誠的心態(tài)面對困難,助力專業(yè)軟件開發(fā)人員具備令人敬佩的職業(yè)素養(yǎng)。這本書探討的主題可能不是你希望的,但一定是你需要的。
“創(chuàng)造性的輸入,產(chǎn)生創(chuàng)造性的輸出!這本Bob大叔定義專業(yè)程序員為目的的書,從個人的精進(jìn)練習(xí)到時間管理,測試,需求,壓力,到理想的團(tuán)隊(duì),描述作者的程序員修煉之道。”——豆瓣,liuwill
“這本不厚的書,給了普通程序員走向“專業(yè)”的燈塔。知易行難,“專業(yè)”的路上總有各種各樣的攔路虎,也許我會再走作者標(biāo)明了的錯路,我也并不孤單,但心里知道這是錯誤的,不要走遠(yuǎn)。每看到這種書,低沉的士氣會再次振奮。”——豆瓣,銀光
《Refactoring: Improving the Design of Existing Code《Refactoring: Improving the Design of Existing Code》,即《重構(gòu):改善既有代碼的設(shè)計(jì)》。Martin Fowler,世界軟件開發(fā)大師,在面向?qū)ο蠓治鲈O(shè)計(jì)、UML、模式、XP和重構(gòu)等領(lǐng)域都有卓越貢獻(xiàn),現(xiàn)為著名軟件開發(fā)咨詢公司ThoughtWorks的首席科學(xué)家。本書揭示了重構(gòu)的過程,解釋重構(gòu)的原理和最佳實(shí)踐方式,并給出了何時以及何地應(yīng)該開始挖掘代碼以求改善。書中給出了70多個可行的重構(gòu),每個重構(gòu)都介紹了一種經(jīng)過驗(yàn)證的代碼變換手法的動機(jī)和技術(shù)。其中提出的重構(gòu)準(zhǔn)則將幫助開發(fā)者一次一小步地修改代碼,從而減少開發(fā)過程中的風(fēng)險。
“大師Martin Fowler的經(jīng)驗(yàn)之談,看后有種醍醐灌頂、欲罷不能的感覺。重構(gòu)也是當(dāng)今敏捷開發(fā)一項(xiàng)不可或缺的技藝,建議所有有設(shè)計(jì)和項(xiàng)目開發(fā)經(jīng)驗(yàn)的開發(fā)者都應(yīng)讀一下。”——豆瓣,Kiwi
《Working Effectively With Legacy Code》
《Working Effectively With Legacy Code》,即《修改代碼的藝術(shù)》。即使是最訓(xùn)練有素的開發(fā)團(tuán)隊(duì),也不能保證始終編寫出清晰高效的代碼。如果不積極地修改、挽救,隨著時間流逝,系統(tǒng)的腐化程度會日積月累。Michael Feathers是世界級的面向?qū)ο蠹夹g(shù)專家,以豐富的軟件項(xiàng)目開發(fā)經(jīng)驗(yàn)著稱。他以獨(dú)到的洞察力,以及多年開發(fā)和指導(dǎo)軟件項(xiàng)目所積累的豐富經(jīng)驗(yàn)和深厚功力,針對大型的、無測試的遺留代碼基,提供了從頭到尾的方案,讓開發(fā)者能夠更有效地應(yīng)付它們,將遺留代碼基改善得具有更高性能、更多功能、更好的可靠性和可控性。本書是一部里程碑式的著作,更是代碼修改技術(shù)的集大成之作,可以大大提高對代碼和軟件開發(fā)的領(lǐng)悟力。
“許多似曾相識的代碼不斷地出現(xiàn)在書中,而作者舉重若輕的處理手法,正是讓我有拍案驚奇的地方。實(shí)際上,每個手法都不是什么很高超的技法,但正是因?yàn)橐娮R過類似的代碼,才能體會到這種手法的價值所在。”——豆瓣,dreamhead
《Code Complete: A Practical Handbook of Software Construction《Code Complete》,即《代碼大全》。真正的一本百科全書——960頁的最新修訂,讓人真切感受到沉甸甸的知識。這是一本完整的軟件構(gòu)建手冊,涵蓋了軟件構(gòu)建過程中的所有細(xì)節(jié):從軟件質(zhì)量和編程思想等方面論述了軟件構(gòu)建的各個問題,并詳細(xì)論述了緊跟潮流的新技術(shù)、高屋建瓴的觀點(diǎn)、通用的概念,還含有豐富而典型的程序示例。書中所論述的技術(shù)不僅填補(bǔ)了初級與高級編程技術(shù)之間的空白,也為開發(fā)者們提供了一個有關(guān)編程技巧的信息來源,大有裨益。
“作者的寫作風(fēng)格很客觀很務(wù)實(shí)。作者把每個章節(jié)最吸引人的地方,用巧妙的方法展現(xiàn)出來。并且代碼構(gòu)建其實(shí)也可以變得非常具有藝術(shù)性,F(xiàn)在我很慶幸當(dāng)初自己看完了它。”——豆瓣,Joshua
《Head First Design Patterns》《Head First Design Patterns》,即《深入淺出設(shè)計(jì)模式》。這本書是大多數(shù)非技術(shù)人員所選擇的編程書籍,以詼諧、幽默、圖文并茂、打破傳統(tǒng)著書的方式,由淺入深地詳解了設(shè)計(jì)模式的精神及重點(diǎn)。這本書涵蓋了解決現(xiàn)實(shí)問題所需要的主要模式,幫助開發(fā)者創(chuàng)建功能性的、優(yōu)雅的、可重復(fù)使用和靈活的軟件,明確權(quán)衡每個模式的利弊。除去大多數(shù)書籍都談?wù)摰降哪J綄?shí)現(xiàn)方法,本書也解釋了模式設(shè)計(jì)緣由。全書以Java程式語言為范例,是程式設(shè)計(jì)課程的最佳教材,其最新版本包括了Lambda中的Java 8更新。
“作者把原本屬于設(shè)計(jì)模式的來源還給設(shè)計(jì)模式的學(xué)習(xí)和應(yīng)用過程,讓讀者能夠從生活中的例子隨著論述的展開,逐步深入設(shè)計(jì)模式的核心,這個也是這本書能夠不負(fù)其初衷的重要原因。”——豆瓣,Jarod
“讀這本書不僅僅是學(xué)習(xí)知識,而是在學(xué)習(xí)一種思考的方法,學(xué)習(xí)一種認(rèn)知的技巧,學(xué)習(xí)一種成長的階梯。總之,用你閑暇的時間來讀這本書,并不亞于你專注的工作或?qū)W習(xí)。”——豆瓣,曹操
《Peopleware: Productive Projects and Teams》
《Peopleware: Productive Projects and Teams》,即《人件:腦力密集產(chǎn)業(yè)的人才管理之道》。《人件》和《人月神話》被譽(yù)為軟體書中「兩朵最鮮艷的奇葩」。前者關(guān)注的是「軟體開發(fā)」本身,后者關(guān)注的是軟體開發(fā)中的「人」。以往不認(rèn)為是問題的領(lǐng)導(dǎo)問題、開會文化、由不同世代所組成的混合團(tuán)隊(duì),以及,最常用的工具不見得是助力,反而可能是阻力。以辛辣而幽默的筆觸,加上務(wù)實(shí)的建議、豐富的專案經(jīng)驗(yàn),這本書一出版就引起轟動,一針見血地指出了團(tuán)隊(duì)管理的問題點(diǎn)──腦力密集產(chǎn)業(yè)的核心是人,應(yīng)該給予這些工作者充分的自由與信任。
“管理,不僅僅是技術(shù),更是充滿人文精神的藝術(shù)!度思分械囊恍┖芫俚捏鹧赃h(yuǎn)遠(yuǎn)超過了軟件管理的范疇。沒有大量的數(shù)字、精密的論證,也不需要這些。這正是《人件》深入淺出的長處。”——豆瓣,QingRen
《Soft Skills: The Software Developer’s Life Manual》
《Soft Skills: The Software Developer’s Life Manual》,即《軟技能:代碼之外的生存指南》。同樣,這不是一本關(guān)于編程的,卻是每個開發(fā)者都應(yīng)該讀的書。John Sonmez是“Simple Programmer”網(wǎng)站的創(chuàng)始人,也是軟件開發(fā)人員的人生導(dǎo)師,幫助軟件工程師、程序員和其他專業(yè)技術(shù)人員推動事業(yè)進(jìn)步,過上更充實(shí)的生活。這本書涉及開發(fā)者的生活習(xí)慣,又包括思維方式,凸顯技術(shù)中“人”的因素,全面講解軟件行業(yè)從業(yè)人員所需知道的所有“軟技能”:從揭秘面試的流程到精耕細(xì)作出一份殺手級簡歷,從創(chuàng)建大受歡迎的博客到打造自身,從提高自己工作效率到與如何與“拖延癥”做斗爭,甚至包括如何投資不動產(chǎn),如何關(guān)注自己的健康。
- 全部評論(0)