程序員書庫(ID:CodingBook) 猿妹編譯
鏈接:https://blog.codinghorror.com/recommended-reading-for-developers/
這份讀書清單已經(jīng)很久沒更新了,至于為什么閱讀列表為何很少更新?Stack overflow 創(chuàng)始人Jeff Atwood表示這10年里,計(jì)算機(jī)發(fā)展迅猛,帶來的變化也是翻天覆地,但人卻沒有改變。
為了開發(fā)出更好的軟件,你需要了解人們的工作方式,這也正是他推薦的書籍時(shí)所注重的地方。以下就是Jeff Atwood就是推薦的書單內(nèi)容:
1、《代碼大全2》
出自Steve McConnell之手的《代碼大全2》就像在為為軟件開發(fā)人員訴說編程的樂趣。能讀的下去這本書的人,證明他喜歡目前的工作,對(duì)待工作認(rèn)真負(fù)責(zé),并且想不斷提升自己。在書中Steve指出,普通程序員每年閱讀的技術(shù)書不到一本。選擇閱讀這本書,就已經(jīng)證明你與90%的程序員不一樣了。
我非常喜歡這本書,以至于這個(gè)網(wǎng)站的標(biāo)題(Coding horror)就是從這本書中衍生出來的 - 書中的編程反例都標(biāo)有“Coding horror”圖標(biāo)。沒有什么比Coding horror更有趣了 - 直到有一天你自己也碰上了,然后你就會(huì)覺得突然間不再那么有趣了。使這本書成為您閱讀的第一本書,而且這本書絕對(duì)值得讓你推薦給身邊的任何一個(gè)同事。
2、《人月神話》
這本書可以說是我們這個(gè)領(lǐng)域唯一的經(jīng)典書籍了,假如你還沒讀過它,那真是太可惜了
我敢說任何一個(gè)拿起這本書的程序員都沒有發(fā)現(xiàn)關(guān)于那個(gè)早就不使用操作系統(tǒng)的故事以及它的開發(fā)團(tuán)隊(duì)之間驚人的相關(guān)性。這本已經(jīng)出版25年的書大膽地說明了一個(gè)觀點(diǎn):電腦可能會(huì)改變,但人卻不會(huì)改變。
閱讀這本經(jīng)典作品肯定比你沉迷于最新的千頁技術(shù)書籍更有價(jià)值。
3、《點(diǎn)石成金 : 訪客至上的網(wǎng)頁設(shè)計(jì)秘笈》
關(guān)于我所閱讀的關(guān)于可用性中最好的一本書。書名說“網(wǎng)頁的可用性”,但不要被它的字面意思所誤導(dǎo)了。Steve Krug在書中涵蓋了所有重要的可用性概念,而“網(wǎng)頁的可用性”只是其中的一部分。書中的內(nèi)容也十分有趣,如果只想閱讀一本有關(guān)可用性的書籍,那么選擇它準(zhǔn)沒錯(cuò)了。它里面包含了很多重要的知識(shí)點(diǎn),并以簡(jiǎn)潔,通俗易懂的文字呈現(xiàn)。適用于任何讀者:技術(shù),非技術(shù),用戶,開發(fā)人員,經(jīng)理等。
呃。。。是不是發(fā)現(xiàn)自己從來沒有開過這樣的會(huì)議。順便提一下,解決這個(gè)問題的辦法是進(jìn)行一次快速的可用性測(cè)試。請(qǐng)想象一下:根據(jù)實(shí)際數(shù)據(jù)來得出事實(shí)依據(jù),而不是基于一場(chǎng)為了辯論來讓其他人認(rèn)同你。這難道革命性轉(zhuǎn)變么?
4、《快速軟件開發(fā)》
這本書的全稱是:《快速軟件開發(fā):掌控軟件開發(fā)進(jìn)度》,這個(gè)標(biāo)題啰嗦而且含糊不清,更重要的是還用詞不當(dāng)。
《快速軟件開發(fā)》并非是一本關(guān)于快速開發(fā)的書。書中圍繞軟件開發(fā)失敗這一現(xiàn)實(shí)問題展開。絕大多數(shù)的軟件開發(fā)項(xiàng)目都會(huì)失敗:有時(shí)是沒能按時(shí)上線,有時(shí)是開發(fā)出來的項(xiàng)目不合格,甚至有些時(shí)候都沒辦法完成。絲毫不用懷疑,事實(shí)就是如此。說難聽了就是:除非你的團(tuán)隊(duì)非常厲害,能夠避免失敗,否則根本不用提成功了。雖然這聽起來可能會(huì)令人沮喪——好吧,這確實(shí)令人沮喪——但你仍然會(huì)想要去讀一讀這本書。
為什么呢?因?yàn)橹灰悴恢貜?fù)犯曾經(jīng)犯過的錯(cuò),不走別人走過的彎路,你就已經(jīng)成功一半了,本書提供的示例就是為了表明,犯錯(cuò)并非壞事,只要犯的這些錯(cuò)都是之前沒有出現(xiàn)過的,如果你犯了同樣的老錯(cuò)誤,那么,表明你在一開始就已經(jīng)失敗了,所以,從現(xiàn)在開始去發(fā)現(xiàn)那些你可能正在犯的錯(cuò)誤吧
對(duì)我們這一行來講,唯一不變的就是一直在變。所以接受這種變化并嘗試不同的“快速”開發(fā)技術(shù)是很自然的一件事。但是這句話反過來說就不對(duì)了。我們不能認(rèn)為自1970年以來,所有舊的軟件開發(fā)課程與我們今天的技術(shù)相比已經(jīng)是過時(shí)了的或是沒用的了。老生常談的一件事是:計(jì)算機(jī)不斷改變;人卻沒有。McConnell 曾說過:“粉刷之前請(qǐng)先閱讀油漆桶上的說明文字?!币馑季褪窃谀銣?zhǔn)備開始做一件事之前,至少要對(duì)于哪些可行哪些不可行有個(gè)認(rèn)識(shí)。雖然這聽上去并沒有什么不妥,但是當(dāng)你讀了這本書之后,你才會(huì)意識(shí)到,我們很少會(huì)真正去這么做。
5、《人件》
如果你曾經(jīng)看過全明星運(yùn)動(dòng)隊(duì),因?yàn)榻叹氃驅(qū)е卤憩F(xiàn)不佳的話,那么你會(huì)很喜歡這本書。當(dāng)團(tuán)隊(duì)中人都不能相互交談,或者在某件事情達(dá)成一致時(shí),無論你得到多少“編程之星”都于事無補(bǔ)。而且,無論多聰明的開發(fā)者,都不能在被干擾的情況下依然高校的工作,開發(fā)人員本身并不知道他們的社交技能,但頗為諷刺的是:項(xiàng)目的成功與否正取決于此。如果你想真的在實(shí)踐中成為“團(tuán)隊(duì)領(lǐng)導(dǎo)者”而不止是名義上的,那么,你需要拿起這本書。
雖然《人件》有許多完美的觀點(diǎn),但里面描繪的這種雇員管理對(duì)大多數(shù)公司來說都是純粹的幻想。但至少你可以你的工作環(huán)境或你的團(tuán)隊(duì)在什么時(shí)候出現(xiàn)了問題 - 更重要的是,你知道該如何做。
6、《設(shè)計(jì)心理學(xué)》
開發(fā)軟件可能是一件令人極度沮喪的事,因?yàn)楹芏嗟能浖伎赡軙?huì)出錯(cuò)。我們所做的很多事情都是防御性的,比如試圖預(yù)測(cè)會(huì)出現(xiàn)哪些問題。這是十分費(fèi)腦的,而且最終還可能表明是錯(cuò)誤的。我有時(shí)會(huì)和非技術(shù)人員這樣解釋:就好比制造一個(gè)帶有一千個(gè)移動(dòng)部件的手表,所有這些部件都有可能在無意中就壞掉了。這真是個(gè)悲傷的故事。
軟件開發(fā)肯定是困難的,但設(shè)計(jì)也很困難。設(shè)計(jì)的微妙之處在于它可以延伸到你能接觸到的每一個(gè)事物,無論是一些最新最熱門的SQL引擎,還是一只普通的鞋子。這本書都會(huì)讓你對(duì)“惡魔藏在細(xì)節(jié)里”這句話有一個(gè)新的認(rèn)識(shí)。如果設(shè)計(jì)軟件并不是我們認(rèn)為的那么簡(jiǎn)單的時(shí)候,那么也許是時(shí)候該讓自己休息一下了。
7、《About Face:交互設(shè)計(jì)精髓》
Visual Basic的父親 Alan Cooper 是可用性領(lǐng)域的教父。我已經(jīng)擁有這本書的多個(gè)版本(這是第四版),這本書越修訂越好,并且有越來越多的合作者像本書融入了不同的觀點(diǎn),這是十分罕見的
《About Face》有很多適用于移動(dòng)端和Web應(yīng)用的通用指南。在用于說明的GUI問題中 - 以舊的Windows 95用戶界面的例子 - 將該系統(tǒng)已經(jīng)改進(jìn)的地方(在進(jìn)行對(duì)話框選擇前使用視覺樣例進(jìn)行展示)和還沒有改進(jìn)的部分(使用愚蠢的模態(tài)框來停止正在運(yùn)行的進(jìn)程)進(jìn)行對(duì)比是很有趣的一件事。
這是一本非常有用的書。我已經(jīng)將本書作為我所從事項(xiàng)目的指南。
8、《編程珠璣》
推薦《編程珠璣》這本書我有點(diǎn)猶豫,因?yàn)樗w了很多底層的編碼技術(shù),但本書中嵌入了足夠的軟件開發(fā)的“珠璣”,使它值得任何開發(fā)人員花時(shí)間去閱讀。任何包含此圖的書
..的確是物有所值。利用TRS-80與DEC Alpha來說明48n與n 3算法的區(qū)別,所以真的沒有比這個(gè)更合適的了。能和大神級(jí)別的程序員共事一年固然美好,如果不行讀《編程珠璣》也是不錯(cuò)的選擇。這本書將很多高級(jí)工程師的智慧提煉成簡(jiǎn)潔的語言和易懂的文字。
說實(shí)在的:有些章節(jié)可以把它被忽略。例如,我無法理解本書的第11,13和14章中居然在介紹如何實(shí)現(xiàn)排序,堆或哈希算法。但是,對(duì)于每一本教科書繁瑣的練習(xí),都有真實(shí)可行的建議。你只需瀏覽本書,忽略代碼部分。但第8章“粗略估算”是至關(guān)重要的,可能是我看到過的最佳評(píng)估方法。這張還解釋了一些經(jīng)常出現(xiàn)的面試問題。
你可以現(xiàn)在網(wǎng)上閱讀這本書的一些樣章。我最近使用了書中“粗略估算”這一章節(jié)的內(nèi)容來說明馬爾可夫鏈生成人造數(shù)據(jù)以填充空數(shù)據(jù)庫
9、《程序員修煉之道》
本書時(shí)常會(huì)讓我想起《編程珠璣》,但相比這本書還更好一點(diǎn),因?yàn)樗惶P(guān)注代碼。作者把在現(xiàn)實(shí)工作中發(fā)現(xiàn)所有實(shí)用方法歸結(jié)為一本書。并非所有的這些方法都是與技術(shù)上的編程相關(guān)。例如,問自己“我為什么要這樣做?這樣做值得嗎?” 跳出固有思維方式; 并把這種思想融入到你的日常工作中。這就是《程序員修煉之道》為什么會(huì)成為如此出色的書的原因。
如果您想了解更多有關(guān)該書的內(nèi)容,我創(chuàng)建了一個(gè)HTML版本的插頁參考卡片,可以很好地概覽這本書的內(nèi)容。
10、《Web 可用性設(shè)計(jì)》
Jakob Neilsen 以其創(chuàng)建的可用性網(wǎng)站而聞名,1989年,當(dāng)時(shí)他的第一本書出版,這時(shí)就已是一名可用性專家了?!禬eb 可用性設(shè)計(jì)》顯然是一個(gè)專注于Web可用性入門的書,所以它與面向GUI的Cooper書籍有點(diǎn)不同。
11、《定量信息的視覺顯示》
12、《視覺解釋:圖像和數(shù)量,證據(jù)與線索》
13、《想象信息》
14、《美麗的證據(jù)》
信息很美。設(shè)計(jì)良好的GUI也是如此。除非你是完美主義者(或者是受虐狂,我想),否則你不需要擁有系列中全套的四本書,但前兩個(gè)是必不可少的。
Chris Sells于2004年6月出席的Tufte研討會(huì)后,對(duì)Tufte書籍有了一些有趣的見解。
15、《正則表達(dá)式經(jīng)典實(shí)例》
眾所周知,UNIX十分復(fù)雜而且難以理解。正則表達(dá)式也是如此。
我可能是“Keep It Simple Stupid”原則的忠實(shí)遵循者,但我正在為正則表達(dá)式做一個(gè)特例。若能正確書寫正則表達(dá)式,那么她們會(huì)為你在字符串處理上節(jié)省大量時(shí)間,我從來沒有遇到一個(gè)正則表達(dá)式不能派上用場(chǎng)的項(xiàng)目。
一旦深入了解正則表達(dá)式,你可能會(huì)因?yàn)閾碛畜@人的力量和潛力而沉迷于此,這也就是Perl的由來。請(qǐng)記住,絕對(duì)權(quán)力會(huì)導(dǎo)致絕對(duì)的腐敗。但它也是絕對(duì)的好用。
聯(lián)系客服