一些讀者對《構建之法》引用過的參考書也感興趣,所以我把全部參考書單獨列出來。其實人大部分的思想都是受某些外部信息的啓發影響而來,不少道理看似新穎,其實別人早就講過了😀。這個參考書列表大體按照 類別 - 字母/拼音 的順序排列。有些參考書是第三版加入的,第1、二版並無:php
Dealers of Lightning: Xerox PARC and the Dawn of the Computer Age html
"玩閃電的牛人們" ... 施樂公司PARC 研究院的故事,可歌可泣可嘆。1970 - 80 年代天才們的創新, 在PARC 這個溫牀上孕育, 發展並被公司忽視。可是這些創新深深地影響了以後的計算機行業 - 包括 Apple 和 Microsoft.java
Dreaming in Code by Scott Rosenberg, 中文版 《夢斷代碼》python
一個有技術大牛,有資金,有宏大目標的團隊,爲什麼7年作不出一個好軟件? linux
Fumbling the Future: How Xerox Invented, then Ignored, the First Personal Computergit
施樂公司的Parc 研究院如何發明了第一個PC (以及其餘先進技術), 施樂公司的領導如何又錯過了這個浪潮。 程序員
Hard Drive by github
web
In Search of Stupidity: Over 20 Years of High-Tech Marketing Disasters by Merrill R. Chapman
spring
中文版 《IT 大敗局》
不少精彩的IT 行業失敗的故事和分析,大可能是20世紀80年代 - 90年代PC 浪潮中的事件, 字處理軟件,瀏覽器,網絡計算機(NC)等。故事有些老,可是經驗教訓是很是相似的。
Information Rules: A Strategic Guide to the Network Economy by Carl Shapiro, Hal R. Varian
信息時代的產品和競爭和以往的競爭不一樣, 有一些特殊的規律, 這本書經過很多實例, 描述了這些規律。一個領域的先行者,就能制定規範,這是先發優點的一個例子。
Intuit 的創始人分析了市場上全部我的財務軟件的狀況,發 現市場上已存在46家公司,他們自嘲說本身有 47th Mover Advantage. 結果就是這第 47 個競爭者最後成爲市場的老大,戰勝了包括微軟公司在內的諸多對手。 微軟在2009年宣佈中止其我的財務軟件 Money 項目,退出這個市場。
Intuit 早期的兩個工程師還留下了最先的結對編程的記錄(見第三章 兩人合做)
浪潮之巔 做者:吳軍
科技公司在各次浪潮中的命運,科技、商業、資本的結合。
Revolution in The Valley: The Insanely Great Story of How the Mac Was Made by Andy Hertzfeld
做者Andy 就是Mac 團隊的一員,他也在這個書單中的 "Programmers At Work", "Dreaming in Code", "Steve Jobs" 出現過。
盛田昭夫 日本製造精神是這樣創造的 做者 [日] 江波戶哲夫 馬英萍 翻譯
Walkman 的故事被收錄在創新一節中。這本書(三冊)有不少值得技術人員和企業家學習的地方。
《喬布斯傳》
這個傳記裏有不少關於創新,項目管理,企業成長的經驗教訓。
Where Wizards Stay Up Late: The Origins of the Internet by
互聯網在美國怎麼建起來的過程,不少計算機科學和工程的早期人物在此中出現,不少咱們如今習覺得常的規矩 (例如email 中的 @ 符號)就是那時候出現的。
Competing Against Luck Clayton M. Christensen
這本書提出了 "Jobs To Be Hired" 理論,來指導如何提升創新產品的成功率,而不是隻靠運氣。
Cross the Chasm by Geoffery A. Moore
著名的early adopter 和 early majority 之間的鴻溝(chasm) 就來自於這本書,很是有洞察力的分析方法。 2014年更新的第三版有不少新的案例分析。
Death by Meetings: A Leadership Fable, by Patrick Lencioni
若是說交流是團隊合做的重要途徑,那麼,要開多少會,怎麼開好會,很值得研究。 Lencioni 很會講故事,故事之餘他提供了一個 「以什麼節奏開什麼會,解決什麼問題」 的框架。
Driven by Difference: How Great Companies Fuel Innovation Through Diversity by David Livermore
怎樣讓背景和思路各異的團隊成員凝聚在同一目標下,達成最終結果?
書中提出不少獨到的解決辦法,其中 pre-postmortem 作法, 讓團隊成員想象如今就是產品發佈後一個月, 可是產品失敗了,讓團隊成員列出可能的緣由。這樣能促使團隊成員討論目前項目的風險在哪裏,如何面對。
Escape Velocity: Free Your Company's Future from the Pull of the Past by Geoffrey A. Moore
你們都在相似的軌道中打轉,你怎麼調整動能和勢能,得到 「逃離速度」, 讓你的產品比別人好一個等級? Geoffrey 的分析方法獨具一格,從這個視頻也能看出他的洞察力和激情。《構建之法》的創新一章中引用了其分析方法。
The Five Dysfunctions of a Team: A Leadership Fable by Patrick Lencioni
經過講故事的形式,描述了領導團隊崩潰的五個特徵,以及怎麼去解決這些問題。
Hackers and Painters by Paul Graham
黑客與畫家,第一章描寫了書呆子,和對書呆子不利的學校環境,事實上一個碌碌無爲的大企業,也會培養相似的環境。這對於學校和公司裏鑽研編程的同窗是一個很好的啓發。 做者比較推崇LISP 語言,可是他的創業系統也只有他負責的部分是用LISP 寫的,其餘的模塊都不是。可是一些讀者認爲,這說明了 LISP 就是比其餘語言都高大上的語言! 這告訴咱們,不教條是多麼的不容易。
The Hard Thing About Hard Things: Building a Business When There Are No Easy Answers by Ben Horowitz
創立一個企業是爲何? Build To Win.
不少人以爲創業公司都很忙,沒時間搞什麼培訓。做者在書裏引用了Andy Grove 的計算培訓價值的公式:
假設公司花了12小時的時間備課並給10個員工培訓四小時。總共花費12 + 10*4 = 52 小時。在培訓後的一年中,這10個員工會有20,000 個小時的工做時間,若是培訓能提升1% 的效率,那麼公司將會節約200 小時。
In Search of Excellence: Lessons from America's Best-Run Companies by
(1) 崇尚行動 實施「走動管理」,到問題現場去;鼓勵試驗。(2) 貼近顧客 (3) 自主創新
(4) 以人促產
用交流、培訓、保障和獎勵代替死板的員工手冊;高層主管實行「不關門制度」,任何人均可以上門交流。
(5) 價值驅動
有效的價值體系應該致力於激勵公司基層員工。
(6) 不離本行
不進行多元化,或只進行相關行業的多元化,儘可能避免大規模的併購。
(7) 精兵簡政
控制管理層規模;切分大的部門避免管理的複雜度。
(8) 寬嚴並濟
寬鬆的工做氛圍,嚴格的價值觀體系。
Innovation: The Five Disciplines for Creating What Customers Want by Curtis R. Carlson, William W. Wilmot
SRI 的專家總結了創新的方法,NABC,《構建之法》中的NABCD 就是來自這裏。
The Innovators Dilemma, by Clayton M. Christensen
中文版《創新者的窘境》
成功的大公司, 能聽取用戶的意見,把精力投入增量改進現有產品中;成熟的價值鏈從多方面阻止公司去冒險嘗試新興領域; 同時公司爲了爭取更高的利潤率,不得不忽視萌芽階段的小市場;專家對新興市場的分析每每基於現有經驗,結論每每大錯特錯! 就這樣,每每有一些名不見經傳的小公司從薄利的小市場切入,使用比較粗糙的顛覆式技術,慢慢掀翻了大公司。
The Innovator's Solution, by Clayton M. Christensen
Kiss Theory Goodbye, Bob Prosen
一本實話實說的領導力手冊。每一本相似書籍都會提到分析問題並改進,大部分團隊在實施改進計劃後一段時間,又會人走燈滅,舊毛病又回來了。我欣賞他強調的是 ICA: Irreversible Corrective Action,怎樣保證這個改進措施不會隨着時間和人事的變更而消失?
The Myths of Innovation by Scott Burken
創新的迷思。《構建之法》中創新的不少內容受到這本書的影響。
Secret of Software Success by by Cyriac R. Roeding, Gert Purkert, Sandro K. Kindner, Ralph Muller, Deltiv J. Hoch
中文版《軟件業的成功奧祕》
1999 年出版。 麥肯錫的商業顧問們採訪了全世界不少軟件團隊,總結經驗並展望將來。成功的奧祕之一是: 天天都有成功的構建 - have working daily build.
Six Thinking Hats by Edward De Bono
六頂不一樣顏色的思惟帽子,很是有效的工具,能幫助團隊思考問題,解決問題。
The Tipping Point by Malcolm Gladwell
中文版 《引爆點》爲何有些產品能迅速擴張?有什麼產品以外的因素?
The Wisdom of Teams by Jon R. Katzenbach
什麼是團隊?一羣各自行事,沒有依賴關係的人能夠叫 「工做組」, 而不是團隊。 強行把一羣人命名爲團隊,只會獲得效率低下的假團隊。 (構建之法第17章團隊一節)
After The Gold Rush by Steve McConnell
這是Steve McConnell 另外一本著做 Professional Software Development 的beta 版本。
Agile Project Management with Scrum by Ken Schwaber
敏捷開發的專家解釋敏捷和SCRUM。
Agile Software Development, Principles, Patterns, and Practices by Robert C. Martin
中文版 《敏捷軟件開發 原則、模式和實踐》
從實踐出發,講解了敏捷方法,OO設計原則和設計模式。這本書並非靜態地羅列並讚美 N 種設計原則和模式,而是分析原則和模式產生的必要性和使用的時機。 例如對於 Single Responsiblity Principle, Open-Close Principle, 做者寫到:
變化的軸線僅當變化實際發生時才具備真正的意義。若是沒有徵兆,那麼去應用 SRP,或者其餘原則都是不明智的。
遵循OCP 的代價也是昂貴的……顯然,咱們但願把OCP的應用限定在可能會發生的變化上。… … 最終,咱們會一直等到變化發生時才採起行動 。
回頭看看咱們在軟件工程課上給學生布置的做業,有「變化的軸線麼」? 有需求的變化麼?沒有! 那既然不用任何考慮變化,爲什麼不把全部的功能放在一個大類裏面,或者就寫在main()函數裏面,儘快實現就交做業了,管他什麼SRP , OCP原則,什麼內聚,耦合,信息隱藏?! 這說明咱們的學生偏偏是明智地完成了老師佈置的做業。沒有足夠複雜性,易變性的軟件工程做業要求,反而讓學生陷入 「我有銀彈」, "軟件工程的要求沒啥用" 的誤區:
「哎,你看我搞了一通宵,就寫好了程序,得了高分。也不用啥軟件設計的原則,事先也不用需求說明書,也不留什麼文檔,就搞定了!軟件工程對我沒用!」
Art of Project Management, by Scott Burken (後續版本叫 Make Things Happen)
中文版 項目管理的藝術
Scott 在1994 到 2003 在微軟 IE 等團隊作Program Manager, 後來又作了內部培訓工做。他對以微軟爲表明的項目管理有很深的看法。(我參加了他離開微軟前作的最後一次講座,他喝了啤酒,彈起吉他...)
Behind Closed Doors: Serects of Great Management by Johanna Rothman, Esther Derby
經過一個虛擬的項目,幾個經理和員工交流的各類場景一個來串聯不少關於交流和管理的建議。
Best Kept Secrets of Peer Code Review by Jason Cohen
不少關於代碼複審的心得,同時還清晰地描述了 PSP, TSP, CMMI 的關係。
Code Complete (2nd Ed)Steve McConnell ISBN: 9780735619678
中文版 代碼大全 (第二版)斯蒂夫·邁克康奈爾 ISBN: 7121022982
大道至簡 軟件工程實踐者的思想 做者 周愛民
Debugging the Development Process: Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams by Steve Maguire
這本1994年出版的書總結了微軟鼎盛時期的軟件工程實踐心得。
Engineering—An Endless Frontier by Sunny Y. Auyang
中文版《工程學 無盡的前沿》 做者 歐陽瑩之。 做者論證了:當今的工程學不只是科學的合做者,並且二者同等重要。
譯者之一李嘯虎的解讀:
哲學家的宗旨是:「我思,故我在。」
科學家的宗旨是:「我發現,故我在。」
而工程活動主體(工程師和企業家)的宗旨則是:「我構建,故我在。」
Engineering Software as a Service: An Agile Approach Using Cloud Computing by Armando Fox and David Patterson
UC Berkeley 的軟件工程+雲計算課程
Facts and Fallacies of Software Engineering by Robert Glass
幾十個軟件行業的傳說,和一些謬論。做者從1954年(!)開始在軟件行業工做,展轉工業界和學術界,1999 年成爲 ACM Fellow.
The Mythical Man-Month: Essays on Software Engineering by Fred Brooks Jr.
中文版《人月神話》
中文版 快速軟件開發斯蒂夫·邁克康奈爾 著 譯者: 席相霖 等 ISBN 9787505372856
Refactoring: Improving the Design of Existing Code by Martin Fowler
中文版 《重構 改善既有代碼的設計》
Make it work, make it right, make it fast, make it extensible. 這本書提供了許多在OO 開發模式下 「make it right", "make it extensible" 的建議。
重構是 」不改變軟件可觀察行爲的前提下改善其內部結構」。 若是軟件的行爲不變,爲啥要折騰代碼? 由於咱們想把程序的結構變好,這樣方便程序員理解,測試,維護(right),也方便未來的擴展(extensible). 大學生們交了軟工大做業以後,還會有人去理解、測試、維護、擴展它麼? 若是沒有,那就解釋了爲什麼在大學裏沒有人理解重構的意義。
Software Engineering: The Current Practice by Rajlich Vaclav
做者是資深的軟件工程教授,對於程序理解(Program Comprehension)和軟件重用頗有研究。
Writing Solid Code by Steve Maguire
歷久彌新的指南。
走出軟件做坊 做者 阿朱
深刻分析中國軟件企業和員工的常見毛病,給出不少好的建議。
About Face: The Essentials of Interaction Design by Alan Cooper, et al.
中文版:《軟件觀念革命》
Design of Everyday Things by Donald Norman
茶壺嘴和茶壺把手在同一邊的茶壺就出自這本書。
Emotional Design: Why We Love (Or Hate) Everyday Things by Donald A. Norman
在彩色顯示器剛出現的時候,做者借了一個回家試用, 他總結綵色並無給他的工做效率帶來什麼提高,可是他卻不捨得把顯示器還回去,爲何?
The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity by Alan Cooper
對以「技術人員爲主導」 的設計給予辛辣的諷刺和鞭笞 (就像瘋子在管理瘋人院)。給出了怎麼從普通用戶出發作設計的辦法。
Microinteractions: Full Color Edition: Designing with Details by Dan Saffer
在小小的移動設備上,怎麼作人機交互?
Success through Failure: The Paradox of Design by Henry Petroski
從PowerPoint的前生, 到各類橋樑的演化,設計思想也在各類失敗中演進。
怎麼樣從用戶體驗出發 (而不是從產品團隊自己的技術出發)來設計產品。
Tog on Software Design by Bruce Tognazzini
人機交互專家 Tognazzini 在1995年對將來軟件設計的展望。
《全程軟件測試》 做者 朱少民
對測試的理論,技術和最佳實踐有全面的覆蓋,主張軟件測試工做應貫穿軟件開發整個生命週期 , 比較結合實際。
Coders At Work Peter Siebel, ISBN-13: 978-1430219484
對15 位頂級程序員的採訪, 總共600頁,很是多的心得能夠在軟件工程的實踐中借鑑。我也寫了一個讀後感。
Eric Sink on the Business of Software by Eric Sink
若是把軟件開發沿着某個維度推到一個極致:一我的搞定軟件開發過程和相關的商業活動,能行麼?這是最先的關於「全棧」 的探索。 做者 Eric Sink 開發過Internet Explorer 的前身和 SourceGear.
I.M. Wright's Hard Code: A Decade of Hard-Won Lessons from Microsoft by Eric Brechner
微軟的開發經理以幽默的風格談論在巨大的軟件公司作複雜的軟件的各類經驗教訓, 同時也覆蓋了在這些公司的職業道路。
The Old New Thing by Raymond Chen
微軟Windows 資深工程師 Raymond Chen 用親身經歷講述Windows 設計,發展,編程和debugging 的種種趣事和 「祕訣」.
Showstopper!: The Breakneck Race to Create Windows NT and the Next Generation at Microsoft by C. Pascal Zachary
Windows NT 和建立它的團隊的故事,其中描寫了Dave Cutler 的職業生涯和獨特性格
The Soul of a New Machine by Tracy Kidder
這是一本小說,講述一個軟件團隊爲成功發佈一個新的小型計算機奮鬥的故事,這本書和 Showstopper! 恰好對應, 講的分別是虛擬和現實的故事。
Art & Fear Observations on the perils (and Rewards) of ARTMAKING by David Bayles & Ted Orland
除了莫扎特那樣的天才,普通人能創造高質量的藝術品麼?
這本薄薄的小書很受藝術愛好者歡迎,它的 29 頁講了這個故事:
陶藝課的老師在第一堂課宣佈,坐在教室左半邊的學生將以做品的數量和重量來考察,期末評價就以學生作了多少重量的陶器來衡量;教室右邊的學生將以質量來衡量,期末只看一個完美的做品。
你猜高質量的做品是從哪一邊出來的多?軟件工程的教育和陶藝課相似麼?
What the Best College Teachers Do by Ken Bain
這本書研究了優秀美國大學老師的教學經驗(這些老師絕大多數都不是在名校教書)。總結的關鍵是 Natural Critical Learning Environment. 在《構建之法》中 「給老師和助教的建議」 能夠看到詳情。
前言
2 請看大學生們在微博上對軟件工程課程的意見:http://www.cnblogs.com/xinz/archive/2013/02/06/2908169.html
3 所謂「作中學」的辦法也不是包治百病的,這篇博客剖析了各類誤區:http://www.douban.com/note/344117673/
4 參見:http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
5 參見:http://www.cnblogs.com/xinz/archive/2011/12/29/2306652.html
6 參見:http://www.cnblogs.com/xinz/archive/2012/01/15/2322913.html
7 參見:http://www.cnblogs.com/xinz/archive/2011/12/03/2274445.html
8 參見:http://www.cnblogs.com/xinz/archive/2012/08/25/2656822.htm
TO Teacher & TA, 給任課老師和助教的建議
1 參見:http://edu.163.com/10/1106/10/6KQ4JC8800293L7F.html
3 能夠參見相似課程的打分狀況,例如:http://www.cnblogs.com/softwareTA/p/3458182.html
5 參見:http://www.douban.com/note/260623954/
8 參見:http://www.acm.org/education/CS2013-final-report.pdf
10 參見:「習而學的軟件工程教育」,http://www.cnblogs.com/xinz/archive/2012/01/08/2316717.html
Ch 1 概論
練習與討論
更多練習與討論參見:http://www.cnblogs.com/xinz/p/3803035.html
7 http://www.cnblogs.com/buaashine/archive/2012/12/12/2813931.html
8 http://weibo.com/2210132365/BiYTws242
http://baike.baidu.com/subview/545069/545069.htm
尾註
2 文檔下載:http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF
3 參見:http://en.wikipedia.org/wiki/Kent_Couch
4 參看:http://en.wikipedia.org/wiki/Larry_Walters
5 參見:http://en.wikipedia.org/wiki/Wright_Flyer
6 參見:http://en.wikipedia.org/wiki/Qantas_Flight_30
7 參見:http://en.wikipedia.org/wiki/US_Airways_Flight_1549
8 參見:http://en.wikipedia.org/wiki/Moores_law 又稱摩爾定律。
12 參見:http://en.wikipedia.org/wiki/Engineering 翻譯時略有刪減。
14 Microsoft Academic Search項目地址:http://academic.research.microsoft.com
15 參見:http://www.infoq.com/presentations/tony-hoare-computing-engineering
18 這一文檔能夠從http://www.swebok.org 下載。
19 參見:http://en.wikipedia.org/wiki/Software_bug#Etymology
20 圖片來源:http://en.wikipedia.org/wiki/File:H96566k.jpg
22 來源: http://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html
Ch 2 我的技術和流程
練習與討論
更多練習和討論參見:http://www.cnblogs.com/xinz/p/3803109.html
2 http://news.cnblogs.com/n/501488/
http://www.ted.com/talks/golan_levin_on_software_as_art?language=zh-cn
3 http://news.cnblogs.com/n/513177/
http://st-threath.blogspot.tw/2013/06/an-engineer.html
http://aknow-work.blogspot.tw/2013/06/reply-to-coder-hacker-and-architect.html
尾註
2 http://channel9.msdn.com/Events/Build/2012/3-015
4 參見:https://github.com/
5 詳情見:http://www.visualstudio.com/en-us/products/visual-studio-online-overview-vs
7 Trac工具:http://trac.edgewall.org/
Ch 3 軟件工程師的成長
正文:
中國計算機協會計算機職業資格認證考試:http://cspro.ccf.org.cn
以浙江大學計算機學院爲首開發的計算機程序設計能力考試:http://pat.zju.edu.cn/
結合中國軟件行業的特色,咱們能夠概括出在中國IT行業「好工程師」的要素,並作成一個自我評價清單(Check-list),供有志於這個職業的工程師們進行自我評價和跟蹤。清單見博客:http://www.cnblogs.com/xinz/p/3852177.html
練習與討論
更多練習和討論參見:http://www.cnblogs.com/xinz/p/3852172.html
5 http://www.techug.com/norris-numbers (翻譯)
http://www.teamten.com/lawrence/writings/norris-numbers.html (原文)
6 http://www.zhihu.com/question/27180582
http://news.cnblogs.com/n/509554/
http://www.tuicool.com/articles/r6Vramr
http://www.cnblogs.com/xinz/p/3852177.html
7 http://blog.jobbole.com/21881/
http://blog.jobbole.com/12176/
8 https://www.hakkalabs.co/articles/climbing-cto-ladder-fall-2
9 http://www.guokr.com/article/439517/
原文:http://www.psmag.com/health-and-behavior/confident-idiots-92793
尾註
1 參見:http://china.nba.com/stats/teams/teamStats/1610612745_2010_2_00.html
4 參見:http://sk.neea.edu.cn/jsjdj/index.jsp
6 參見:http://en.wikipedia.org/wiki/Microsoft_Certified_Professional
7 參見:http://en.wikipedia.org/wiki/Oracle_Certification_Program
8 參見:http://www.ieee.org/education_careers/education/professional_certification/index.html
11 參見:http://pragprog.com/the-pragmatic-programmer/extracts/tips
12 參見:「軟件天才與技術民工」 http://blog.csdn.net/bitfan/article/details/6106212
13 參見:http://www.billbuxton.com/xc.html
14 參見:http://en.wikipedia.org/wiki/Margaret_Mitchell
Ch 4 兩人合做
練習與討論
更多的說明和討論參見:http://www.cnblogs.com/xinz/p/3852241.html
1 http://c2.com/cgi/wiki?PairProgrammingCaseStudy
http://www.thefreelibrary.com/Case+study%3a+using+pair+programming+in+development+of+a+complex+module.-a0246014267
http://www.cs.utexas.edu/users/mckinley/305j/pair-hcs-2006.pdf
3 代碼複審檢查表:http://blog.fogcreek.com/increase-defect-detection-with-our-code-review-checklist-example/
5 http://dhruba.name/2012/08/21/do-you-hate-reading-other-peoples-code/
http://kb.cnblogs.com/page/192086/
尾註
1 讓 {} 獨佔一行還有一個好處:一眼就能看出是否有多餘的代碼行,這在有些狀況下是致命的錯誤,參見:http://lpar.ath0.com/2014/02/23/learning-from-apples-goto-fail/ 或搜索「apple code to fail source code」.
5 火車司機也有這樣的例子:http://www.zhld.com/zkwb/html/2011-10/20/content_187201.htm
7 關於這一點,請看史蒂夫·喬布斯的觀點:http://daringfireball.net/2014/02/working_backwards
8 請看: http://en.wikipedia.org/wiki/Myers-Briggs_Type_Indicator
9 另外請參見 《對性格內向者的10個誤解》: http://blog.jobbole.com/12488/
10 參見:http://www.vaikan.com/the-conventions-we-follow/
http://www.aqee.net/things-everyone-should-do-code-review/
http://scientopia.org/blogs/goodmath/2011/07/14/stuff-everyone-should-do-part-2-coding-standards/
Ch 5 團隊和流程
正文中的連接
http://www.youtube.com/watch?v=X1c2--sP3o0
練習與討論
更多說明和討論請參見:http://www.cnblogs.com/xinz/p/3852332.html
7 http://www.pingwest.com/i-visited-the-manufacturing-of-xiaomi-4-in-foxconn/
8 http://blog.jobbole.com/19772/
尾註
1 http://topic.csdn.net/u/20080623/13/25ff50e2-16a7-49c1-ac7b-fcbdda18fa86.html
6 請搜索 Miles Davis 「So What」的視頻。一個參考來源爲:http://v.youku.com/v_show/id_XNTkzOTg4MTY=.html
7 參見:http://en.wikipedia.org/wiki/Miles_Davis
11 論文參見:http://en.wikipedia.org/wiki/Waterfall_model#CITEREFRoyce1970
12 參見:http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process
13 圖片來源:http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process#mediaviewer/File:Development-iterative.gif
14 參見 http://venturehacks.com/articles/minimum-viable-product
Ch 6 敏捷流程
正文
http://www.ituring.com.cn/article/9363
練習與討論
更多內容與討論請參見:http://www.cnblogs.com/xinz/p/3852390.html
表6-4
http://www.cs.umd.edu/class/spring2003/cmsc838p/General/NoSilverBullet.html
http://www.drdobbs.com/there-is-a-silver-bullet/184407534/
http://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar
http://queue.acm.org/detail.cfm?id=2349257
中文版:
http://www.ituring.com.cn/article/9363
The Rise of 「Worse is Better」
http://www.jwz.org/doc/worse-is-better.html
Is Worse Really Better?
http://dreamsongs.com/Files/IsWorseReallyBetter.pdf
瀑布模型
http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
對此模型的誤解:
http://www.youtube.com/watch?v=X1c2--sP3o0
http://martinfowler.com/articles/newMethodology.html
http://pragdave.me/blog/2014/03/04/time-to-kill-agile/
中文版(http://www.testwo.com/article/77)
the corruption of Agile
http://www.drdobbs.com/architecture-and-design/the-corruption-of-agile/240166698
Erik Meijer: http://vimeo.com/110554082
"In Defense of Agile" by Nic Ferrier
http://manifesto.softwarecraftsmanship.org/#/zh-cn
http://agile.dzone.com/articles/jez-humble-why-software
http://continuousdelivery.com/2012/08/why-software-development-methodologies-suck/
尾註
1 參見:http://en.wikipedia.org/wiki/Agile_software_development#Agile_principles
3 圖片來源:http://en.wikipedia.org/w/index.php?title=File:Scrum_process.svg&page=1
4 參見:http://msdn.microsoft.com/en-US/library/vstudio/hh500404.aspx
5 這裏有幾個 現代軟件工程學生小組的Daily Scrum的過程:
http://www.cnblogs.com/ustc_msra_ase/archive/2011/02/17/1957382.html
http://www.cnblogs.com/southseven/archive/2011/11/20/2255685.html
http://www.cnblogs.com/Gun-N-Rose/archive/2012/09/29/2708889.html
6 忽悠敏捷流程的一個例子:http://www.cnblogs.com/xinz/archive/2011/02/20/1958907.html
8 參見:http://www.cnblogs.com/xinz/archive/2012/02/20/2358888.html
9 參見:http://en.wikipedia.org/wiki/Six_Sigma
10 你們能夠觀賞Scrum視頻培訓:http://scrumtrainingseries.com/
12 參見國外漫畫系列Dilbert 的諷刺:http://dilbert.com/strips/comic/2007-11-26/
13 例如這篇文章描述了 Boehm 在1980年代提出的軟件工程原則和二十年後的敏捷原則的關係:http://blog.csdn.net/dylanren/article/details/6526907
14 參見:http://en.wikipedia.org/wiki/Hawthorne_effect
15 網上關於敏捷流程中執行的具體問題描述例子:http://www.cnblogs.com/davidzhang33/archive/2011/04/27/2030020.html
16 參見:http://manifesto.softwarecraftsmanship.org/#/zh-cn
17 參見:http://www.infoq.com/cn/news/2012/09/craftship-cn
Ch 7 MSF
練習與討論
更多內容與討論請參見:http://www.cnblogs.com/xinz/p/3854387.html
尾註
2 參見:2014年的介紹網頁,http://msdn.microsoft.com/en-us/library/jj161047.aspx
3 參見:http://baike.baidu.com/view/837280.htm
6 參見:Joel Spolsky, http://www.joelonsoftware.com/articles/Micro-ISV.html
9 參見:Seven Basic Principles of Software Engineering, Barry W. Boehm, 連接:http://dx.doi.org/10.1016/0164-1212(83)90003-1
10 http://news.sina.com.cn/c/2006-11-30/202110650498s.shtml
Ch 8 需求分析
練習與討論
更多內容與討論請參見:http://www.cnblogs.com/xinz/p/3854436.html
1 Steve McConnell 軟件估計的10宗罪
http://www.ewh.ieee.org/r5/central_texas/austin_cs/presentations/2004.08.26.pdf
Quora精選: 爲何軟件開發週期老是預估的2~3倍
http://jandan.net/2013/07/16/quora-software-development.html
3 具體項目練習:
http://www.cnblogs.com/xinz/p/3308608.html
尾註
3 參見:http://www.businessballs.com/treeswing.htm
4 如何作好深刻面談,也有各類訣竅:http://www.gv.com/lib/get-better-data-from-user-studies-16interviewing-tips
5 參見:http://en.wikipedia.org/wiki/Card_sorting
6 參見:http://www.emarketing.net.cn/magazine/adetail.jsp?aid=1354
7 參見:http://thesocialnetwork-movie.com/
8 參見:http://www.cnblogs.com/meng-meng/archive/2011/11/14/2248589.html
9 參見:http://blog.sina.com.cn/s/blog_628a7333010186wq.html
10 參見:http://www.zdnet.com/blog/btl/eye-tracking-web-usability/2776
11 參見:http://en.wikipedia.org/wiki/Participatory_design
12 參見:http://en.wikipedia.org/wiki/Palm_(PDA)
13 參見:http://www.wired.com/business/2012/04/ff_abtesting/all/
14 參見:http://glinden.blogspot.com/2007/06/ab-testing-at-amazon-and-microsoft.html
15 參見:http://exp-platform.com/Documents/GuideControlledExperiments.pdf
16 參見:http://codeascraft.com/2014/04/03/web-experimentation-with-new-visitors/
17 參見:http://news.cnet.com/google-designer-leaves-blaming-data-centrism/#!
18 參見:http://caddellinsightgroup.com/blog2/category/strategic-planning/
19 參見:http://book.douban.com/doulist/1253169/
21 參見:http://en.wikipedia.org/wiki/Switching_costs
24 參見:http://www.amazon.com/Software-Estimation-Demystifying-Practices-Microsoft
25 參見:《...第八次全國表明大會第二次會議文件》,http://dangshi.people.com.cn/GB/165617/166496/168117/10012143.html
29 請看網上的方法介紹:http://www.stellman-greene.com/aspm/content/view/23/38/
http://en.wikipedia.org/wiki/Wide-band_delphi
http://drdobbs.com/article/printableArticle.jhtml?articleId=184414570
31 參見:http://www.lvye.cn/article-26533-1.html
32 參見:http://www.cnblogs.com/MSRA_SE_TEAM/archive/2011/01/17/1937765.html
33 參見:http://lostgarden.com/2006/04/managing-game-design-risk-part-i.html 。該圖參考了Danc的「Managing game design risk : Part I」
34 參見:http://en.wikipedia.org/wiki/Planning_poker
35 關於時間估計,這裏有更多相關內容:
http://www.pmhut.com/agile-estimating-%E2%80%93-estimation-approaches
36 參見:http://www.cnblogs.com/bawangyishan/archive/2011/03/03/1969771.html
37 參見:http://www.cnblogs.com/se2011/archive/2011/03/04/1971185.html
39 參見:http://www.leadershipnow.com/leadingblog/2007/05/the_innovation_mindset.html
Ch 9 項目經理
練習與討論
更多內容與討論請參見:http://www.cnblogs.com/xinz/p/3855189.html
1 http://v.youku.com/v_show/id_XMzE1Mzc2NTE2.html
4 http://www.cnblogs.com/xinz/p/3308608.html
http://www.weibo.com/1657236125/BtDnHzTrs
尾註
1 參見:http://en.wikipedia.org/wiki/Charles_Simonyi
2 參見:http://en.wikipedia.org/wiki/Wysiwyg
4 參見:http://en.wikipedia.org/wiki/MITS_Altair_8800
5 參見:http://www.joelonsoftware.com/items/2009/03/09.html
6 參見:http://blogs.msdn.com/b/jmeier/archive/2010/07/03/what-is-a-pm-at-microsoft.aspx
7 在別的團隊中,也有產品經理的職位,例如這個博客(和書):http://iamsujie.com 但不是每一個人都能成爲產品經理的。
8 參見:http://iamsujie.com/0000/0013/
10 參見:http://blogs.msdn.com/b/eric_brechner/archive/2012/07/01/pm-secret-weapon-or-wasted-headcount.aspx
11 斯科特·伯昆(Scott Berkun)也談到了一些PM的反作用:http://www.scottberkun.com/blog/2009/the-lost-cult-of-microsoft-program-managers/
12 參見:http://v.youku.com/v_show/id_XMTEzNDA4NDg4.html
13 能夠閱讀不少相關博客和書籍,例如:http://scottberkun.com/making-things-happen/ 和 http://blogs.msdn.com/b/techtalk/archive/2005/12/16/504872.aspx
Ch 10 典型用戶和場景
正文
關於這個「繫鞋帶的Spec」練習的完整說明,能夠參見相關網頁:http://www.cnblogs.com/xinz/p/3855296.html
練習與討論
更多內容和討論請參見:http://www.cnblogs.com/xinz/p/3855296.html
尾註
1 關於典型用戶的討論,參見:http://visualstudiomagazine.com/articles/2008/06/01/a-mort-by--any-other-name.aspx 以及 http://blog.codinghorror.com/mort-elvis-einstein-and-you/
2 在TFS項目的門戶網站中有定義典型用戶的模板(路徑通常是<網站名>Requirements/Persona.doc),可資參考。
3 參見電子書: http://www.ivarjacobson.com/Use_Case2.0_ebook/
4 參見:http://news.163.com/10/0722/01/6C5MUM6R00014AED.html
5 參見:http://www.nebulon.com/articles/fdd/latestfdd.html 以及 http://en.wikipedia.org/wiki/Feature_Driven_Development
6 參見:本書「分而治之(Work Breakdown Structure)」一節
7 http://www.cnblogs.com/DOOM-scse/archive/2012/11/06/2756238.html
8 http://www.cnblogs.com/teamshit/archive/2012/11/06/2756224.html
Ch 11 軟件設計與實現
練習與討論
更多內容與討論請參見:http://www.cnblogs.com/xinz/p/3855460.html
4 在這個時候是否碰到「團隊成員不給力」的問題?請看別的同窗的吐槽:
http://www.cnblogs.com/xinz/archive/2010/11/27/1889935.html
5 咱們是在寫代碼解決問題呢,仍是在搭建宏偉的架構?
請看:http://ourjs.com/detail/53dbb5292ee109090700000c
英文版:http://nsainsbury.svbtle.com/java-developers
6 好的修改/重構是什麼樣的?請看幾個例子:
http://world.kankanews.com/w/2014-11-22/0015946771.shtml
http://www.cnblogs.com/marvin/p/TalkFromReflactingCode3000To15.html
尾註
1 圖片來源於http://commons.wikimedia.org/wiki/File:MindMapGuidlines.svg
2 請參考網上關於安全設計,威脅模式分析(Threat Modeling)的文章,例如: https://msdn.microsoft.com/en-us/magazine/cc163519.aspx
4 參見 文章 Death by UML Fever 做者 ALEX E. BELL, 和Grady Booch 在文章後的評論。 http://queue.acm.org/detail.cfm?id=984495
7 VS2010以及以後的版本還提供了燃盡圖等功能,請參見相關同窗的博客,例如
http://www.cnblogs.com/OMG-Team/archive/2011/09/30/2196150.html
Ch 12 用戶體驗
練習與討論
更多內容與討論請參見:http://www.cnblogs.com/xinz/p/3855531.html
1 究竟什麼是用戶體驗呢?請看:
http://www.infoq.com/articles/aaron-sanders-user-experience
(中文版)http://kb.cnblogs.com/page/508097/
2 http://toastytech.com/guis/guitimeline.html
Windows File Explorer 的界面的演化:
http://blogs.msdn.com/b/b8/archive/2011/08/29/improvements-in-windows-explorer.aspx
3 http://reynold.cn/archives/1314.html
http://ux.stackexchange.com/questions/9946/should-i-use-yes-no-or-ok-
4 http://www.digitaljournal.com/article/317856
http://daringfireball.net/2012/01/iphone_mute_switch_design
http://book.douban.com/subject/21336456/
5 產品設計的細節—漢堡包
一些歷史: http://www.ui.cn/project.php?id=31286
它真的是廣泛適用麼?
http://www.guimobile.net/avoid-using-menu-hamburger.html
6 請看VI編輯工具的設計是怎麼來的:
http://www.catonmat.net/blog/why-vim-uses-hjkl-as-arrow-keys/
http://blog.jobbole.com/18650/
尾註
1 參見:http://www.amazon.com/Design-Everyday-Things-Donald-Norman/dp/0465067107
2 參見:http://photo.weibo.com/1993715557/wbphotos/large/photo_id/3497141001110677
3 參見:http://dict.bing.com.cn/#empathy
4 參見:http://cn.bing.com
5 參見:Malcolm Gladwell. Blink(ISBN 9780316172325). Back Bay Books, 2007.
6 參見:http://www.reuters.com/article/2011/06/21/us-airshow-button-idUSTRE75K1XR20110621
7 參見:http://www.baddesigns.com/call-button.html
8 參見:http://www.codinghorror.com/blog/2010/03/the-opposite-of-fitts-law.html
9 圖片來源:http://www.amazon.com/dp/0470084111/ref=rdr_ext_tmb
10 參見:Kerry Patterson. Influencer: The Power to Change Anything(ISBN 007148499X). McGraw-Hill,2007.
11 參見:http://academic.research.microsoft.com/
12 參見:http://blog.xiqiao.info/2010/12/21/917
13 2013年,專家們在討論新型的USB接頭是否也將採起相似的設計。
14 參見 「防呆」 條目: http://zh.wikipedia.org/wiki/%E9%98%B2%E5%91%86
19 參見:http://en.wikipedia.org/wiki/Fitts_law
20 參見:http://en.wikipedia.org/wiki/Heuristic_evaluation
21 參見:http://www.imore.com/steve-jobs-you-have-start-customer-experience-and-work-backwards-technology
Ch 13 軟件測試
練習與討論
更多內容與討論請參見:http://www.cnblogs.com/xinz/p/3856332.html
計算機程序在處理閏年這個問題上出現過不少bug,請看相關的博客:
http://www.cnblogs.com/xinz/archive/2011/11/29/2267022.html
歷史上的20 大bug
http://www.devtopics.com/20-famous-software-disasters/
http://www.devtopics.com/20-famous-software-disasters-part-2/
http://www.devtopics.com/20-famous-software-disasters-part-3/
http://www.devtopics.com/20-famous-software-disasters-part-4/
http://www.safetyresearch.net/Library/BarrSlides_FINAL_SCRUBBED.pdf
這是什麼樣的bug?要過37年才修復?
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/head/head.c?rev=1.18&content-type=text%2Fx-cvsweb-markup
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/head/head.c.diff?r1=1.17&r2=1.18&f=h
http://www.reddit.com/r/programming/comments/2ind4f/fix_a_37_year_old_bug_introduced_by_bill_joy_on/
Ch 14 質量保障
正文
「咱們須要專職的QA 嗎?」:http://coolshell.cn/articles/6994.html
若是要以「產出」來評價某個角色的績效,能夠看看這個包裝設計的視頻:
http://v.youku.com/v_show/id_XMzQ3NTUxOTU2.html
引發網上討論的兩篇文章在這裏:
http://www.aqee.net/on-testers-and-testing/,
http://www.quora.com/Is-it-true-that-Facebook-has-no-testers
練習與討論
更多內容和討論請參見:http://www.cnblogs.com/xinz/p/3857368.html
尾註
2 參見:http://en.wikipedia.org/wiki/Precision_and_recall
6 參見:http://www.aqee.net/on-testers-and-testing/
7 參見:http://baike.baidu.com/view/7167245.htm
9 參見:http://www.wooyun.org/bugs/wooyun-2010-04728
10 參見:http://baike.baidu.com/view/53445.htm
11 參見:http://tech.sina.com.cn/i/2014-06-06/08029421207.shtml
12 參見:http://en.wikipedia.org/wiki/Heartbleed
13 參見 http://en.wikipedia.org/wiki/Shellshock_(software_bug) 和 http://coolshell.cn/articles/11973.html
Ch 15 穩定和發佈階段
練習與討論
更多內容和討論請參見:http://www.cnblogs.com/xinz/p/3857424.html
4 http://calleam.com/WTPF/?page_id=2086
http://www.nytimes.com/2005/08/27/national/27denver.html
http://www.computerworld.com/article/2556725/it-project-management/united-axes-troubled-baggage-system-at-denver-airport.html
尾註
1 參見:http://www.engadget.com/2009/03/17/iphone-finally-gets-copy-and-paste/
3 參見:採訪《對話洪鋒:小米米柚(MIUI)如何迭代開發》
http://www.managershare.com/post/141581
5 參見:http://en.wikipedia.org/wiki/Retrospective#Software_development
6 http://www.cnblogs.com/buaashine/archive/2012/12/17/2821563.html#2590003
Ch 16 IT 行業的創新
練習與討論
更多內容與討論請參見:http://www.cnblogs.com/xinz/p/3857550.html
1 材料:http://www.cnblogs.com/xinz/archive/2011/07/09/2102027.html
5 http://www.ccf.org.cn/resources/1190201776262/2014/06/11/1.pdf
6 http://viniciusvacanti.com/2010/08/03/new-ideas-can-kill-your-startup/
http://buzzorange.com/techorange/2012/05/29/new-ideas-can-kill-your-startup/
7 http://research.microsoft.com/en-us/um/people/blampson/Slides/AltoAtPARCIn1970s_files/frame.htm
http://research.microsoft.com/en-us/um/people/blampson/38-AltoSoftware/WebPage.html
http://research.microsoft.com/en-us/um/people/blampson/38-AltoSoftware/
尾註
3 限於篇幅,更多內容參見:http://www.cnblogs.com/xinz/archive/2011/07/09/2102052.html
4 參見:http://www.cnblogs.com/codingcrazy/archive/2010/12/15/1906600.html
5 參見:http://etc.usf.edu/clipart/77900/77913/77913_telephone.htm
6 參見:http://tran.httpcn.com/Html/1301/94428122124.shtml
8 參見:http://research.microsoft.com/en-us/people/larus/quotes.aspx
Armando Fox,David Patterson. Engineering Software as a Service. Strawberry Canyon LLC,2013.第三章也有記錄
9 參見:http://workawesome.com/productivity/dvorak-keyboard-layout/
11 參見:http://en.wikipedia.org/wiki/Personal_Jukebox
12 參見:http://support.microsoft.com/kb/2118008
14 參見:http://www.jeremyhouchens.com/blog/what-is-innovation-geoff-nicholson-explains
另外參見 「促進中國高科技科研創新的想法」做者 李凱 http://www.ccf.org.cn/resources/1190201776262/2014/06/11/1.pdf
15 參見:http://en.wikipedia.org/wiki/Digital_Equipment_Corporation
17 參見:http://www.gartner.com/it/content/1395400/1395423/august_4_whats_hot_hype_2010_jfenn.pdf
18 參見:http://people.hofstra.edu/geotrans/eng/ch7en/conc7en/stages_in_a_bubble.html
19 傳統行業也有這方面的嘗試,例如海爾集團。
參見:http://weibo.com/p/23041849643c8f0102vny8
24 參見:http://news.pconline.com.cn/hy/0411/487081.html
25 參見:http://www.ericsink.com/bos/Micro_ISV.html
27 成功的例子看周奕的故事:http://tech.sina.com.cn/path/2000-11-17/517.shtml
30 參見:http://blogs.technet.com/markrussinovich/about.aspx
31 參見:http://www.nytimes.com/2009/10/27/opinion/27iht-edma.html 若是訪問有困難能夠搜索Jack MA, Small is Beautiful.
Ch 17 人、績效和職業道德
練習與討論
更多內容與討論請參見:http://www.cnblogs.com/xinz/p/3855586.html
2 http://china.nba.com/news/4/2014-11-12/1048/24547.html
http://sports.ifeng.com/lanqiu/special/dingdingdangdang/#6467378-tsina-1-77816-c61ed62311c3e83ee6c7315bfe5cdbfe
3 http://www.cnblogs.com/xinz/p/4298446.html
http://www.joelonsoftware.com/articles/fog0000000070.html
5 http://www.pbs.org/wnet/humanspark/
http://archive.wired.com/wired/archive/9.12/baron-cohen.html
7 http://techcrunch.cn/2014/07/02/ethics-in-a-data-driven-world/
11 http://blog.jobbole.com/79450/
12 http://tech.ifeng.com/a/20141020/40841049_0.shtml
http://www.chinahightech.com/html/727/2014/1020/15575128.html
http://www.zhihu.com/question/22131582
http://www.chuapp.com/2014/10/17/88997.html
http://weibo.com/1919387783/ByDRrqYyE?type=comment
13 http://weibo.com/1620213837/BgSGLhdAe
http://www.csdn.net/article/2014-09-29/2821931
http://www.csdn.net/article/2014-10-01/2821945
尾註
1 豬和雞的故事也可參見:http://en.wikipedia.org/wiki/The_Chicken_and_the_Pig
2 參見:http://book.douban.com/subject/5954810/
3 參見:http://blog.handsbrain.com/weiyu/entry/10063
5 參見:http://www.kaner.com/pdfs/Bugcount.pdf
6 參見:http://dustyvolumes.com/archives/497,
另見:Sackman, H., W. I. Erikson, and E. E. Grant. 1968. 「Exploratory Experimental Studies Comparing Online and Offline Programming Performances.」 Communications of the ACM, Jan.
7 參見:http://www.valvesoftware.com/
8 參見:http://media.steampowered.com/apps/valve/Valve_Handbook_LowRes.pdf
13 參見:http://www.acm.org/about/se-code
14 我和學生們翻譯了完整內容,參見:http://www.cnblogs.com/xinz/archive/2011/03/28/1997566.html 譯文還有不許確之處,請在博客上留言指正。
16 國外還有Social awareness + emotional skills = successful kids的說法,聽說此類教育在小孩到了高中甚至成年都有積極的影響。