為什么我很少更新我的讀書清單呢寂纪?因?yàn)殡m然在這 10 年里湃番,計算機(jī)一直在迅猛發(fā)展夭织,但人始終卻沒有變。 為了開發(fā)出更好的軟件吠撮,你需要理解人是如何工作的尊惰,這也是我推薦的這些書所關(guān)注的領(lǐng)域。
《代碼大全2》
Steve McConnell所著的《代碼大全2》就像是為軟件開發(fā)者所編寫的《烹飪的樂趣》泥兰。能夠去閱讀這本書弄屡,說明你很享受自己的工作,并且在認(rèn)真地對待自己的工作鞋诗。同時膀捷,你還想要不斷的進(jìn)步。在《代碼大全》中Steve寫到削彬,普通程序員每年閱讀的技術(shù)書籍不到一本全庸。僅僅是閱讀這本書的行為,就可能已經(jīng)把你和你90%的程序員同事們區(qū)別開來了融痛。
我非常喜歡這本書糕篇,以至于本站(coding horror)的名字也源于此書。書中列舉的編程反例都被打上了”Coding Horror”的標(biāo)簽酌心。沒有什么比Coding Horror更有意思的了拌消,直到你自己遇上一次。突然間一切都不那么有趣了。幫自己一個忙墩崩,把這本書作為你要研讀的第一本書氓英,并把它作為你推薦給同事的第一本書。
《人月神話》
這本書可能是我們這領(lǐng)域唯一的一本經(jīng)典了鹦筹。如果你還沒讀過铝阐,那就太不對了。
我敢說任何一個拿起這本書的程序員都沒有發(fā)現(xiàn)關(guān)于那個早就不使用操作系統(tǒng)的故事以及它的開發(fā)團(tuán)隊(duì)之間驚人的相關(guān)性铐拐。這本二十五年前出版的老書大膽的闡明了一個觀點(diǎn):計算機(jī)也許會變徘键,但人永遠(yuǎn)不會。
花時間去閱讀這本經(jīng)典書籍一定比你去閱讀當(dāng)今哪些幾千頁的大部頭書籍更加有意義遍蟋。
《點(diǎn)石成金 : 訪客至上的網(wǎng)頁設(shè)計秘笈》
在關(guān)于可用性的書籍中吹害,這是我讀過的最好的一本書。書名提到了“網(wǎng)頁的可用性”虚青,但是請不要被這一虛假的特指所迷惑它呀。Steve Krug在書中提到了可用性這一概念所包含的全部重要內(nèi)容,而且講的很好棒厘,書也很有意思纵穿。如果你只想讀一本關(guān)于可用性的書,那么讀這本就可以了奢人。這本書囊括了很多有用的信息谓媒,并且以簡練的、平易近人的方式將這些信息呈現(xiàn)給你何乎。這本書對于很多人都是適用的:技術(shù)人員篙耗、非技術(shù)人員、用戶宪赶、開發(fā)者、經(jīng)理等凡是你能說出名字的任何人脯燃。
呃搂妻。。辕棚。好吧欲主。從來沒有開過這樣的會議。順便提一下逝嚎,解決這個問題的辦法是進(jìn)行一次快速的可用性測試扁瓢。請想象這樣的場景:基于實(shí)際數(shù)據(jù)來做決定而不是基于一場為了通過說服所有持有反對意見的人的辯論。真是革命性的轉(zhuǎn)變安咕引几!
《快速軟件開發(fā)》
這本書的全稱是:《快速軟件開發(fā):掌控軟件開發(fā)進(jìn)度》,這個標(biāo)題不僅冗長還有些可笑挽铁,更不幸的是它用詞不當(dāng)伟桅。
《快速軟件開發(fā)》并不是一本關(guān)于快速開發(fā)的書敞掘。它講述的是軟件開發(fā)失敗這一現(xiàn)實(shí)問題。大多數(shù)的軟件開發(fā)項(xiàng)目都會失旈固:有時是沒能按期交付玖雁,有時是開發(fā)出了不合格的產(chǎn)品,甚至有的時候都沒有能夠完成開發(fā)盖腕。這并不是什么論點(diǎn)赫冬,而是一個事實(shí)。一個令人不快的事實(shí)是溃列,:你的團(tuán)隊(duì)要足夠的好劲厌,才能避免失敗,更別說取得成功了哭廉。盡管這一切聽起來可能會令人沮喪——好吧脊僚,這確實(shí)令人沮喪——但你仍然會想要去讀一讀這本書。
為什么呢遵绰?因?yàn)槟阍?jīng)犯過的錯誤辽幌,或者其他人犯過的錯誤,如果能夠避免再犯椿访,就已經(jīng)成功了一半*了乌企。這本書傳達(dá)了一個真諦:犯錯是有益的——只要這些錯誤是一些未曾犯過的錯誤。如果你犯了一些經(jīng)典的老錯誤,那么你在沒有開始前就已經(jīng)失敗了成玫。同時加酵,你可能并沒有意識到,你現(xiàn)在就在犯著類似的錯誤哭当。
對我們這一行來講猪腕,唯一不變的就是變化。所以擁抱變化和采取不同的“快速”開發(fā)技術(shù)是很自然的一件事钦勘。但是這句話反過來說就不對了陋葡。我們不能認(rèn)為自1970年以來,所有的舊式軟件開發(fā)課程同今天的技術(shù)相比已經(jīng)是廢棄的或是沒用的了彻采。老生常談的一件事是:計算機(jī)改變了很多腐缤;人卻沒有。在你準(zhǔn)備開始前肛响,至少對于哪些可行哪些不可行有個認(rèn)識岭粤。用 McConnell 的話說就是:“粉刷之前請先閱讀油漆桶上的說明文字√厮瘢” 誠然剃浇,這聽上去已經(jīng)足夠直白了,但是直到你讀了這本書,你才意識到偿渡,我們很少會真正去這么做臼寄。
根據(jù)書的內(nèi)容,嚴(yán)格來講溜宽,有四分之一的內(nèi)容吉拳。但是我覺得要比這多得多。
《人件》
如果你曾經(jīng)看到過一個全明星球隊(duì)适揉,因?yàn)榻叹毸讲桓叨鴳?zhàn)績不佳留攒,那你肯定會喜歡這本書。如果團(tuán)隊(duì)成員不能相互溝通或是認(rèn)同一件事嫉嘀,那么你的團(tuán)隊(duì)中不論有多少“編程之星”都沒用炼邀。如果一個開發(fā)者經(jīng)常被一些瑣事打斷,即使他是個天才剪侮,也不能夠高效的工作拭宁。開發(fā)者并不清楚他們自己的社交技能,但是瓣俯,諷刺的是:這可能是你項(xiàng)目成功的關(guān)鍵因素杰标。如果你希望成為一個真正的“團(tuán)隊(duì)領(lǐng)袖”,而不是徒有其名彩匕,你需要看看這本書腔剂。
盡管《人件》中有很多不錯的、完全正確的觀點(diǎn)驼仪,但是書中描繪的這種雇員管理對于大多數(shù)公司來講純粹是幻想掸犬。但是至少你可以在你的工作環(huán)境,或是你的團(tuán)隊(duì)出現(xiàn)問題的時候有所察覺——最重要的是绪爸,你可以知道怎么做湾碎。
《設(shè)計心理學(xué)》
軟件開發(fā)有時候是一件極度令人沮喪的事情,因?yàn)楹芏嗍虑槎紩鲥e奠货。我們做的很多事情都是防御性的:嘗試在情況變壞之前做出預(yù)測介褥。這令人十分傷神,并且最終可能會被證明是錯的仇味。我經(jīng)常根非技術(shù)人員這樣去解釋這個問題:就好像去造一塊有上千個運(yùn)動部件的手表,其中每個部件都會動不動就隨機(jī)壞掉雹顺。棒極了丹墨!
軟件開發(fā)是很困難的,這點(diǎn)沒錯嬉愧,但是做一個門也很困難贩挣。設(shè)計的微妙之處存在于我們接觸到的每個事物,不論是最新的 SQL 引擎還是一雙普通的鞋。這本書會讓你對“惡魔藏在細(xì)節(jié)里”這句話產(chǎn)生新的認(rèn)識王财。如果設(shè)計一個門并不是我們想象的那樣是一件很簡單的事的話卵迂,也許是時候因?yàn)橐庾R到我們也無法設(shè)計出完美的軟件而給自己放個假了。
《About Face:交互設(shè)計精髓》
Alan Cooper 是 Visual Basic語言之父绒净,可用性領(lǐng)域的教父級人物见咒。我擁有這本書的多個版本(現(xiàn)在是第四版),這本書是少數(shù)越修訂越好的書挂疆,越來越多的合作者向本書加入了不同的觀點(diǎn)捆蜀。
《About Face》一書中包含了關(guān)于移動應(yīng)用和 web 應(yīng)用的通用實(shí)用指導(dǎo)灾馒。 以老掉牙的 Windows 95 人機(jī)界面作為例子來進(jìn)行闡釋,將該系統(tǒng)已經(jīng)改進(jìn)的地方(在進(jìn)行對話框選擇前使用視覺樣例進(jìn)行展示)和還沒有改進(jìn)的部分(使用愚蠢的模態(tài)框來停止正在運(yùn)行的進(jìn)程)進(jìn)行對比是很有趣的一件事。
這是一本非常有用的書片吊;我在我自己的項(xiàng)目中用到了書中提到了全部的指導(dǎo)。
《交互設(shè)計之路:讓高科技產(chǎn)品回歸人性》
正是這本書向世人介紹了角色模型的概念:不要把用戶想象為一群抽象的绞呈、難以描述的膳叨、無定形的人。角色模型指導(dǎo)我們和特定的用戶進(jìn)行交談跌穗,這些用戶有名字订晌,有個性,有需求也有目標(biāo)瞻离。我們的用戶是否需要打印預(yù)覽功能腾仅?誰知道?但是套利,如果對于客戶經(jīng)理 Gerry Manheim 來說推励,打印每周花銷報表是他的工作,那你最好提供打印預(yù)覽功能給他肉迫。這里邊沒有什么神奇的東西验辞;一如既往的是,一切都?xì)w結(jié)于你的用戶是誰喊衫,他們究竟要做什么——角色模型是解決這一問題的好辦法跌造。
程序員認(rèn)為自己在設(shè)計產(chǎn)品可用性時能夠代表“普通”用戶作出某些決定,但是在現(xiàn)實(shí)世界中族购,他們完全不能代表用戶壳贪。程序員是一群怪人,充其量能算是是一種極端的用戶——就好比“邏輯人(Homo Logicus)” vs. “現(xiàn)代智人(Homo Sapiens)”寝杖。除非你碰巧開發(fā)的是一款編譯器违施,因?yàn)榫幾g器的用戶也是程序員。
這本書有一個隱含的觀點(diǎn)瑟幕,有的時候磕蒲,無論你的設(shè)計有多好留潦,就像由 Alan 擔(dān)任顧問并在此書中用作案例的這兩款軟件:掃描儀軟件以及網(wǎng)頁開發(fā)軟件,在市場上都沒有能夠取得成功辣往,但這和軟件的可用性無關(guān)兔院,因?yàn)樗鼈兊目捎眯砸呀?jīng)被證明是非常優(yōu)秀的了。有些時候站削,非常優(yōu)秀的產(chǎn)品同樣會失敗坊萝,而其失敗的原因是你無法掌控的,無論你多么努力钻哩。對于此書中的一些華而不實(shí)的詞藻屹堰,你可以用以上事實(shí)將自己拉回到現(xiàn)實(shí)當(dāng)中。
我有書中圖片里的同款 USB 掃描儀街氢,設(shè)備配套對軟件令我印象深刻扯键。后來我把這臺掃描儀送給了我父親。有一次和他打電話珊肃,我并沒有提到任何關(guān)于掃描儀的事情荣刑,但是他卻提到他很喜歡這個掃描軟件。這一切都發(fā)生在這本書出版之前伦乔!
《編程珠璣》
在這里推薦《編程珠璣》厉亏,我本來有些猶豫,因?yàn)檫@本書中介紹了很多底層的編程技巧烈和。但是書中確實(shí)包含了很多軟件開發(fā)中的『珠璣』爱只,所以值得每位開發(fā)者花時間去讀一讀。任何包含這幅圖的書…
都是物有所值的招刹。利用TRS-80 與 DEC Alpha 的對比來闡釋48n和n3算法的差別恬试?各位,真的沒有比這樣做更合適的了疯暑。能和大師一起工作一年是最好的了训柴,退而求其次,你也可以讀讀《編程珠璣》妇拯。這本書將很多軟件工程師的智慧提煉成了簡潔易懂的文字幻馁,納入其中。
我不會騙你:有一些章節(jié)是可以完全略過的越锈。比如說仗嗦,第11、13和14章分別介紹了如何實(shí)現(xiàn)排序甘凭,堆和哈希算法稀拐,考慮到現(xiàn)如今這些基本算法都有成熟的庫可以使用,我無法想象再去實(shí)現(xiàn)它們有什么意義对蒲。 對于那些和教科書一樣惱人的習(xí)題钩蚊,這里有一個很實(shí)在的建議。瀏覽一下這本書蹈矮,跳過代碼部分砰逻。有件事可能會讓你失望,第八章“粗略估算”(Column 8, “Back of the Envelope” )是必須要看的泛鸟。這里有我見過的最佳的估算方法蝠咆。這章還解釋了一些瘋狂的面試問題,一些公司很喜歡用這些問題提問我們北滥。
如果你還在猶豫刚操,你也可以在網(wǎng)上閱讀一下此書的樣章。最近我用書中關(guān)于字符串的章節(jié)去解釋了馬爾科夫鏈在生成人造數(shù)據(jù)填充空數(shù)據(jù)庫時的作用再芋。
《程序員修煉之道:從小工到專家》
看這本書時常會讓我想到《編程珠璣》菊霜,但是實(shí)際上這本書更好一些。因?yàn)檫@本書沒有那么的專注于代碼济赎,取而代之的的是鉴逞,作者在這本書中總結(jié)了實(shí)際工作中發(fā)現(xiàn)的全部實(shí)用方法。并非所有的方法都是與編程相關(guān)的司训。比如构捡,問問自己『為什么我要做這件事?是否值得這樣做壳猜?』勾徽,跳出固有的思維方式。你應(yīng)該把這些東西融入到你和你同事的日常生活中统扳。正是這些內(nèi)容喘帚,使得《程序員修煉之道》成為了一本如此優(yōu)秀的書。
如果你想再多了解一些這本書闪幽,我建立一個HTML 版本的插頁參考卡片啥辨,這個參考卡片很好的總結(jié)了這本書的內(nèi)容。
《Web 可用性設(shè)計》
Jakob Neilsen 因?yàn)樗鶆?chuàng)建的可用性網(wǎng)站而出名盯腌。1989年溉知,當(dāng)他的書出版的時候,他就是一個可用性專家了腕够〖墩В《Web 可用性設(shè)計》是一本專注于 web 可用性的新手教程,所以它和面向 GUI 的 Cooper 的那本書有所不同帚湘。
《定量信息的視覺顯示》
《視覺解釋:圖像和數(shù)量玫荣,證據(jù)與線索》
《想象信息》
《美麗的證據(jù)》
信息是很美的。一個設(shè)計良好的 GUI 也很美大诸。
除非你是個完美主義者(或是一個受虐狂捅厂,我猜)贯卦,否則你沒有必要把一套四本全買齊,但是前兩本是必須的焙贷。
Chris Sells 對 Tufte 的書有些有趣的見解撵割,這些見解源于他2004年6月參加Tufte研討會時的見聞。
《正則表達(dá)式經(jīng)典實(shí)例》
眾所周知 UNIX 非常復(fù)雜辙芍、難以理解啡彬。正則表達(dá)式也是這樣。
我可能已經(jīng)是『保持簡單直白』俱樂部的正是成員了故硅,但是我愿意將正則表達(dá)式作為一個特例庶灿。若能正確的書寫正則表達(dá)式,則在處理字符串時吃衅,它可以幫你節(jié)省非常多的時間往踢。我從來沒有遇到過一個項(xiàng)目,正則表達(dá)不能在某些地方為我們提供方便徘层。
一旦你深入研究了正則表達(dá)式菲语,你就會沉醉于正則表達(dá)式驚人的能力和潛力,這一切也造就了 Perl惑灵。記住山上,絕對的權(quán)利會導(dǎo)致絕對的腐敗。但是同樣非常的贊英支。
來自:devstore.cn