《构建之法》参考书和链接汇总
《构建之法》 参考书和链接汇总
参考书汇总
一些读者对《构建之法》引用过的参考书也感兴趣,因此我把所有参考书单独列出来。其实人大部分的思想都是受某些外部信息的启发影响而来,很多道理看似新颖,其实别人早就讲过了😀。这个参考书列表大致按照 类别 - 字母/拼音 的顺序排列。有些参考书是第三版加入的,第一、二版并没有:
行业和公司的兴衰
Dealers of Lightning: Xerox PARC and the Dawn of the Computer Age
"玩闪电的牛人们" ... 施乐公司PARC 研究院的故事,可歌可泣可叹。1970 - 80 年代天才们的创新, 在PARC 这个温床上孕育, 发展并被公司忽视。但是这些创新深深地影响了之后的计算机行业 - 包括 Apple 和 Microsoft.
Dreaming in Code by Scott Rosenberg, 中文版 《梦断代码》
一个有技术大牛,有资金,有宏大目标的团队,为何7年做不出一个好软件?
Fumbling the Future: How Xerox Invented, then Ignored, the First Personal Computer
施乐公司的Parc 研究院如何发明了第一个PC (以及其他先进技术), 施乐公司的领导如何又错过了这个浪潮。
Hard Drive by
In Search of Stupidity: Over 20 Years of High-Tech Marketing Disasters by Merrill R. Chapman
中文版 《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的说法,据说此类教育在小孩到了高中甚至成年都有积极的影响。
参见: http://www.apa.org/monitor/2010/04/classrooms.aspx