本文最近一次更新是2015年3月份。 為什么我很少更新我的讀書清單呢?因為雖然在這 10 年里,計算機一直在迅猛發展,但人始終卻沒有變。 為了開發出更好的軟件,你需要理解人是如何工作的,這也是我推薦的這些書所關注的領域。

  《代碼大全2》

  Steve McConnell所著的《代碼大全2》就像是為軟件開發者所編寫的《烹飪的樂趣》。能夠去閱讀這本書,說明你很享受自己的工作,并且在認真地對待自己的工作。同時,你還想要不斷的進步。在《代碼大全》中Steve寫到,普通程序員每年閱讀的技術書籍不到一本。僅僅是閱讀這本書的行為,就可能已經把你和你90%的程序員同事們區別開來了。

  我非常喜歡這本書,以至于本站(coding horror)的名字也源于此書。書中列舉的編程反例都被打上了”Coding Horror”的標簽。沒有什么比Coding Horror更有意思的了,直到你自己遇上一次。突然間一切都不那么有趣了。幫自己一個忙,把這本書作為你要研讀的第一本書,并把它作為你推薦給同事的第一本書。

  《人月神話》

  這本書可能是我們這領域唯一的一本經典了。如果你還沒讀過,那就太不對了。

  我敢說任何一個拿起這本書的程序員都沒有發現關于那個早就不使用操作系統的故事以及它的開發團隊之間驚人的相關性。這本二十五年前出版的老書大膽的闡明了一個觀點:計算機也許會變,但人永遠不會。

  花時間去閱讀這本經典書籍一定比你去閱讀當今哪些幾千頁的大部頭書籍更加有意義。

  《點石成金 : 訪客至上的網頁設計秘笈》

  在關于可用性的書籍中,這是我讀過的最好的一本書。書名提到了“網頁的可用性”,但是請不要被這一虛假的特指所迷惑。Steve Krug在書中提到了可用性這一概念所包含的全部重要內容,而且講的很好,書也很有意思。如果你只想讀一本關于可用性的書,那么讀這本就可以了。這本書囊括了很多有用的信息,并且以簡練的、平易近人的方式將這些信息呈現給你。這本書對于很多人都是適用的:技術人員、非技術人員、用戶、開發者、經理等凡是你能說出名字的任何人。

  《快速軟件開發》

  這本書的全稱是:《快速軟件開發:掌控軟件開發進度》,這個標題不僅冗長還有些可笑,更不幸的是它用詞不當。

  《快速軟件開發》并不是一本關于快速開發的書。它講述的是軟件開發失敗這一現實問題。大多數的軟件開發項目都會失?。河袝r是沒能按期交付,有時是開發出了不合格的產品,甚至有的時候都沒有能夠完成開發。這并不是什么論點,而是一個事實。一個令人不快的事實是,:你的團隊要足夠的好,才能避免失敗,更別說取得成功了。盡管這一切聽起來可能會令人沮喪——好吧,這確實令人沮喪——但你仍然會想要去讀一讀這本書。

  為什么呢?因為你曾經犯過的錯誤,或者其他人犯過的錯誤,如果能夠避免再犯,就已經成功了一半*了。這本書傳達了一個真諦:犯錯是有益的——只要這些錯誤是一些未曾犯過的錯誤。如果你犯了一些經典的老錯誤,那么你在沒有開始前就已經失敗了。同時,你可能并沒有意識到,你現在就在犯著類似的錯誤。

  對我們這一行來講,唯一不變的就是變化。所以擁抱變化和采取不同的“快速”開發技術是很自然的一件事。但是這句話反過來說就不對了。我們不能認為自1970年以來,所有的舊式軟件開發課程同今天的技術相比已經是廢棄的或是沒用的了。老生常談的一件事是:計算機改變了很多;人卻沒有。在你準備開始前,至少對于哪些可行哪些不可行有個認識。用 McConnell 的話說就是:“粉刷之前請先閱讀油漆桶上的說明文字。” 誠然,這聽上去已經足夠直白了,但是直到你讀了這本書,你才意識到,我們很少會真正去這么做。

  根據書的內容,嚴格來講,有四分之一的內容。但是我覺得要比這多得多。

  《人件》

  如果你曾經看到過一個全明星球隊,因為教練水平不高而戰績不佳,那你肯定會喜歡這本書。如果團隊成員不能相互溝通或是認同一件事,那么你的團隊中不論有多少“編程之星”都沒用。如果一個開發者經常被一些瑣事打斷,即使他是個天才,也不能夠高效的工作。開發者并不清楚他們自己的社交技能,但是,諷刺的是:這可能是你項目成功的關鍵因素。如果你希望成為一個真正的“團隊領袖”,而不是徒有其名,你需要看看這本書。

  盡管《人件》中有很多不錯的、完全正確的觀點,但是書中描繪的這種雇員管理對于大多數公司來講純粹是幻想。但是至少你可以在你的工作環境,或是你的團隊出現問題的時候有所察覺——最重要的是,你可以知道怎么做。

  《設計心理學》

  軟件開發有時候是一件極度令人沮喪的事情,因為很多事情都會做錯。我們做的很多事情都是防御性的:嘗試在情況變壞之前做出預測。這令人十分傷神,并且最終可能會被證明是錯的。我經常根非技術人員這樣去解釋這個問題:就好像去造一塊有上千個運動部件的手表,其中每個部件都會動不動就隨機壞掉。棒極了!

  軟件開發是很困難的,這點沒錯,但是做一個門也很困難。設計的微妙之處存在于我們接觸到的每個事物,不論是最新的 SQL 引擎還是一雙普通的鞋。這本書會讓你對“惡魔藏在細節里”這句話產生新的認識。如果設計一個門并不是我們想象的那樣是一件很簡單的事的話,也許是時候因為意識到我們也無法設計出完美的軟件而給自己放個假了。

  《About Face:交互設計精髓》

  Alan Cooper 是 Visual Basic語言之父,可用性領域的教父級人物。我擁有這本書的多個版本(現在是第四版),這本書是少數越修訂越好的書,越來越多的合作者向本書加入了不同的觀點。

  《About Face》一書中包含了關于移動應用和 web 應用的通用實用指導。 以老掉牙的 Windows 95 人機界面作為例子來進行闡釋,將該系統已經改進的地方(在進行對話框選擇前使用視覺樣例進行展示)和還沒有改進的部分(使用愚蠢的模態框來停止正在運行的進程)進行對比是很有趣的一件事。

  這是一本非常有用的書;我在我自己的項目中用到了書中提到了全部的指導。

  《交互設計之路:讓高科技產品回歸人性》

  正是這本書向世人介紹了角色模型的概念:不要把用戶想象為一群抽象的、難以描述的、無定形的人。角色模型指導我們和特定的用戶進行交談,這些用戶有名字,有個性,有需求也有目標。我們的用戶是否需要打印預覽功能?誰知道?但是,如果對于客戶經理 Gerry Manheim 來說,打印每周花銷報表是他的工作,那你最好提供打印預覽功能給他。這里邊沒有什么神奇的東西;一如既往的是,一切都歸結于你的用戶是誰,他們究竟要做什么——角色模型是解決這一問題的好辦法。

  程序員認為自己在設計產品可用性時能夠代表“普通”用戶作出某些決定,但是在現實世界中,他們完全不能代表用戶。程序員是一群怪人,充其量能算是是一種極端的用戶——就好比“邏輯人(Homo Logicus)” vs. “現代智人(Homo Sapiens)”。除非你碰巧開發的是一款編譯器,因為編譯器的用戶也是程序員。

  這本書有一個隱含的觀點,有的時候,無論你的設計有多好,就像由 Alan 擔任顧問并在此書中用作案例的這兩款軟件:掃描儀軟件以及網頁開發軟件,在市場上都沒有能夠取得成功,但這和軟件的可用性無關,因為它們的可用性已經被證明是非常優秀的了。有些時候,非常優秀的產品同樣會失敗,而其失敗的原因是你無法掌控的,無論你多么努力。對于此書中的一些華而不實的詞藻,你可以用以上事實將自己拉回到現實當中。

  我有書中圖片里的同款 USB 掃描儀,設備配套對軟件令我印象深刻。后來我把這臺掃描儀送給了我父親。有一次和他打電話,我并沒有提到任何關于掃描儀的事情,但是他卻提到他很喜歡這個掃描軟件。這一切都發生在這本書出版之前!

  《編程珠璣》

  在這里推薦《編程珠璣》,我本來有些猶豫,因為這本書中介紹了很多底層的編程技巧。但是書中確實包含了很多軟件開發中的『珠璣』,所以值得每位開發者花時間去讀一讀。任何包含這幅圖的書…

  …都是物有所值的。利用TRS-80 與 DEC Alpha 的對比來闡釋48n和n3算法的差別?各位,真的沒有比這樣做更合適的了。能和大師一起工作一年是最好的了,退而求其次,你也可以讀讀《編程珠璣》。這本書將很多軟件工程師的智慧提煉成了簡潔易懂的文字,納入其中。

  我不會騙你:有一些章節是可以完全略過的。比如說,第11、13和14章分別介紹了如何實現排序,堆和哈希算法,考慮到現如今這些基本算法都有成熟的庫可以使用,我無法想象再去實現它們有什么意義。 對于那些和教科書一樣惱人的習題,這里有一個很實在的建議。瀏覽一下這本書,跳過代碼部分。有件事可能會讓你失望,第八章“粗略估算”(Column 8, “Back of the Envelope” )是必須要看的。這里有我見過的最佳的估算方法。這章還解釋了一些瘋狂的面試問題,一些公司很喜歡用這些問題提問我們。

  如果你還在猶豫,你也可以在網上閱讀一下此書的樣章。最近我用書中關于字符串的章節去解釋了馬爾科夫鏈在生成人造數據填充空數據庫時的作用。

  《程序員修煉之道:從小工到專家》

  看這本書時常會讓我想到《編程珠璣》,但是實際上這本書更好一些。因為這本書沒有那么的專注于代碼,取而代之的的是,作者在這本書中總結了實際工作中發現的全部實用方法。并非所有的方法都是與編程相關的。比如,問問自己『為什么我要做這件事?是否值得這樣做?』,跳出固有的思維方式。你應該把這些東西融入到你和你同事的日常生活中。正是這些內容,使得《程序員修煉之道》成為了一本如此優秀的書。

  如果你想再多了解一些這本書,我建立一個HTML 版本的插頁參考卡片,這個參考卡片很好的總結了這本書的內容。

  《Web 可用性設計》

  Jakob Neilsen 因為他所創建的可用性網站而出名。1989年,當他的書出版的時候,他就是一個可用性專家了?!禬eb 可用性設計》是一本專注于 web 可用性的新手教程,所以它和面向 GUI 的 Cooper 的那本書有所不同。

  《定量信息的視覺顯示》

  《視覺解釋:圖像和數量,證據與線索》

  《想象信息》

  《美麗的證據》

  信息是很美的。一個設計良好的 GUI 也很美。

  除非你是個完美主義者(或是一個受虐狂,我猜),否則你沒有必要把一套四本全買齊,但是前兩本是必須的。

  Chris Sells 對 Tufte 的書有些有趣的見解,這些見解源于他2004年6月參加Tufte研討會時的見聞。

  《正則表達式經典實例》

  眾所周知 UNIX 非常復雜、難以理解。正則表達式也是這樣。

  我可能已經是『保持簡單直白』俱樂部的正是成員了,但是我愿意將正則表達式作為一個特例。若能正確的書寫正則表達式,則在處理字符串時,它可以幫你節省非常多的時間。我從來沒有遇到過一個項目,正則表達不能在某些地方為我們提供方便。

  一旦你深入研究了正則表達式,你就會沉醉于正則表達式驚人的能力和潛力,這一切也造就了 Perl。記住,絕對的權利會導致絕對的腐敗。但是同樣非常的贊。

除非特別注明,雞啄米文章均為原創
轉載請標明本文地址:http://www.9385095.live/software/566.html
2016年5月9日
作者:雞啄米 分類:軟件開發 瀏覽: 評論:0