软件开发十本书
? 幾年前,總結了“軟件測試十本書”,對從事軟件質量驗證和確認工作的基礎知識進行簡介。
? 軟件花錢最多、耗時最長、投入人力和精力最大的,是在開發過程。
? 根據個人經驗,推薦軟件開發相關的十本書,供入門和進階參考,坐等拍磚員。
1)代碼大全
? 軟件開發世界的“入口地圖”。
? 軟件行業人員的“新手圣經”。
? 專業軟件程序員的“百科全書”。
? 經典中的經典,大師中的大師,眾多大咖聯名點贊。
? 本書總結、歸納了,軟件工程業行之有效的、細節具體的實踐知識,讓你可以利用前人智慧、避免重蹈覆轍。如,通過“隱喻”理解和表達軟件,高質量的編程經驗細節,軟件質量改進方法,軟件集成,軟件人員,等等。
? 幾乎每一章,都是描述了軟件職業的一個深入方向,每章的“更多資源”,是更多本的深入學習的經典書籍。
? 本書近1000頁,適合先系統化學習,了解全貌,再隨時查閱,或深入研究。
? PS:如果你想做一個真正的“軟件行業”相關人員,本書必讀。
2)程序員修煉之道--從小工到專家
? 1999年首版,“Pragmatic系列”圖書的開山之作。
? 職業程序員的“工匠精神修煉之書”。
? 本書可以理解成《代碼大全》的精華版和提升版,適合有一定年限經驗的程序員。
? 本書兩位作者:大衛托馬斯(David Thomas),安迪亨特(Andy Hunt),都是程序員大牛,也是“敏捷宣言”發起人之二,他倆把各種實戰經驗總結、提煉成一條條的程序員“心靈雞湯”,并把雞湯的營養、配方、制作過程、火候掌握等,都簡要地展現出來,中間還穿插著各種段子,幫助程序員修煉成為熬制只有品牌雞湯的大師傅。
? 摘錄幾條喜歡的:
? 關心你的技藝(Care About Your Craft)
? 思考!你的工作(Think!About Your Work)
? 不存在最終決策(There Are No Final Decisions)
? ......
3)走出軟件作坊
? 本書可以理解為《程序員修煉之道》的農村版,是中國大多數小廠碼農的“生存及發展之道”。
? 本書的一個副書名,很好地體現了這一個主題:三五個人,十來條槍,如何成為開發正規軍?
? 作者阿朱,在書中總結和提煉了自己和他人的實戰經驗,對沒有進入頭部大廠的程序員,猶如一盞指路明燈,讓我們敢于直面現實,遠離眼高手低的無用抱怨,明確明天的目標,做好手邊的事,一步一步發展壯大。
? 個人認為本書最有價值的是,為大家展現了一個軟件類創業公司的方方面面:內部的需求、設計、編碼、測試、發布,外部的售前、報價、實施、運營,產品怎么定位,員工如何考核,組織怎么建設,為初創公司CEO描述了可能遇到的問題、并提供了實操性極強的解決方法。
先生存,再發展。
?
4)深入理解計算機系統
? 計算機系統方面的“經典之作”。
? 國內外頂級學校的計算機專業教科書。
? 本書的直面翻譯:程序員看計算機系統(Computer Systems: A Programmer's Perspectives)。
? 作者Randal E.Bryant、David R.O’Hallaron,是卡內基梅隆大學教授的教授,超過30年的經驗。
如果說常規計算機專業課是集中本體、忽略邊界,這本書則是以集中于整體運行為主,再關聯邊界上的各個專業重要概念。本書猶如串接珍珠的絲線,把各個計算機專業基礎課的關鍵知識點,連接成魅力四射的珍珠項鏈。數值表示、數據結構、程序設計、編譯、匯編、算法優化、操作系統、處理器、存儲器、網絡、并行計算,一個個獨立的干巴巴的概念,在這本書中鮮活起來。
? 看到前言里如此誘惑的字符串:“如果你學習和研究這本書里的概念,你將步入稀缺的“權威程序員”的行列......”,你還不行動嗎?
5)編碼:隱匿在計算機軟硬件背后的語言
? 計算機科普方面的“經典之作”。
? 作者Charles Petzold,是微軟公司設計Windows系統的大牛。
? 本書從十歲兒童的視角出發,采用成長學習法:由日常電器手電筒開始,介紹莫斯密碼,布萊葉盲文,制造出“拐彎通信”的電燈系統;然后從發報機、斷電器、十進制、二進制,引導出二進制電燈控制系統“繼電器”;再結合布爾系統,封裝出電路的基本單位,與門、非門、與非門、或非門、反相器、緩沖器;構造出初級組件:加法器、觸發器、選擇器、譯碼器、鎖存器、振蕩器;組合出計算機系統:時鐘、CPU、存儲器、總線、操作系統、GUI。看了本書,才發現對計算機系統,理解不如“十歲兒童”。
? 本書和上一本書一起看效果更佳,一個從專業程序員角度,一個從十歲兒童角度。
6)敏捷軟件開發:原則、模式與實踐
? 敏捷開發的“扛鼎之作”。
? 第13屆震撼(jolt)大獎圖書。
? 作者Robert C.Martin,是軟件開發和軟件工程專家,敏捷宣言發起人之一。
書名副標題顯示了作者的邏輯,而且也達到了這個效果:原則、模式、實踐(Principles, Patterns, and Practices),本書變成敏捷類書籍的標準模板。
? 本書正式對外宣導了“敏捷開發”,總結了之前極限編程、測試驅動開發、擁抱變化、重構的重要內容,描述了面向對象設計重要思想和一些常用設計模式,并通過展示案例把原則和模式結合起來。
? 如果說“深入理解計算機系統”串聯了計算機系統,本書則是串聯了“敏捷開發方法論”。
? 本書包含了接下來三本書的關鍵思想和核心內容。
7)面向對象分析與設計
? OOAD的“經典之作”之一。
? 深入理解各類設計模式書籍的“基石”。
? 作者Grady Booch,UML的創始人之一,Rational產品的開拓者之一。
本書用嚴密的邏輯、經典的案例、搞笑的漫畫,詳細描述了軟件系統的復雜性,程序設計語言的發展,面向對象的要素,類和對象的本質和關系,如何正確分類,如何用UML表示設計,最后還展現了5個應用案例。
? 如今,“面向對象”相關概念已經泛濫成災,我們都認為很重要,資料汗牛充棟,但卻感覺無從下手;學習本書能正本清源,還面向對象一個清白。
? 個人感覺,本書的結構以及作者,對Robert C.Martin有啟發作用,讓他能站在巨人的肩膀上,青出于藍而勝于藍。
?
8)Head First設計模式
? Head First系列(深入淺出XXX)的“奧運代表”。
? 設計模式類書籍的“顛覆之作”。
? 第15屆震撼(jolt)大獎圖書。
? 設計模式的書非常多,大多專業性強,以代碼和文字為主,可讀性不足,讓無數人嘆為觀止又望而生畏。這里的四位作者聚集計算機專家、作家、講師、藝術家、媒體專家的能力,以圖示、故事為主,文字內容為輔,為觀眾呈現了一道立體感十足的設計模式大餐:火箭鴨、氣象站、星巴茲咖啡、披薩店、巧克力工廠、萬能遙控器、黑話菜單、糖果機等等,讓食客不知不覺就爽爽地吃下了一個設計模式快餐,還感覺意猶未盡,想吃更多。
? 先看完這本爽文,再去啃其他專業書籍,不會讓人因噎廢食,反而更容易增肌加肉。
9)重構:改善既有代碼的設計
? 敏捷開發的“墊腳石”。
? 重構了重構(Refactoring)這個詞,成為一種方法論。
? 作者Martin Fowler,軟件開發、演講專家,也是敏捷宣言發起人之一,和上面幾位不是同事就是朋友。
? 本書角度獨特,聚焦于改善現有代碼而非新代碼,聚焦于改善設計而非編碼,描述了重構的原則(測試驅動開發、自動化測試),使用了“代碼味道”(Code Smell)來描述待改進的地方,列出了20多種經典的代碼臭味和改善方法。
? 本書和《反模式》有關,又比《反模式》走得更遠,成為后續敏捷開發、持續集成中的不可或缺之基石。
10)C程序設計語言
? 計算機語言書籍的“開山之作”。
? 計算機語言書籍的“星星之火”。
? 作者Brian W.Kernighian,Dennis M.Ritchie,是貝爾實驗室的大牛,Dennis 還獲得了“圖靈獎”。
? 本書1978年發布第一版,是所有計算機語言書籍的模板,經典的“Hello World”從此出發;幾十年來的升級版內容都大致相同;書籍100多頁,還包含了三部分,一是C語言本身,如關鍵字、控制流、函數、指針、數據結構等,二是輸入、輸出、庫,三是操作系統的接口,把“KISS”原則體現的淋漓盡致。
? 可以說,學習了這本書,并做完所有的練習題,你已經是一名可以上崗的初級程序員了。
? 歷史的長河中,軟件正在乘風破浪,關于軟件開發的書籍也如過江之鯽,本文主要選取關于軟件設計、思維、工程方面的相對通用的經典之作。以上推薦,僅為拋磚引玉,期待大家更多的分享交流。
總結
- 上一篇: selinux 的管理
- 下一篇: wxWidgets之wxGrid控件