构建之法

邹欣

出版时间

2014-08-31

ISBN

9787115369161

评分

★★★★★
书籍介绍
这是一本让'野生程序员'见到'正规军打法'的书。市面上软件工程教材常被抱怨空洞乏味,而它最难得的,是讲清了'工程'二字真正的分量:软件不等于程序,软件工程也不是单纯消灭Bug的过程。作者以二十年一线开发经验为底,把需求分析、代码复审、结对编程、敏捷与MSF等流程,融进大量生活化的类比和场景里,读起来有种'专业书终于说人话了'的亲切。书中对'好软件何时算足够好可以发布'的探讨、对软件工程师职业道德与心智成长的强调,是许多同类书刻意回避的部分。它适合两类人:从未接触过正式项目、想快速建立全局观的初学者,以及希望检验自身实践的行业从业者。
作者简介
邹欣现任微软Windows中国工程团队首席研发总监。 1996年~2003年,邹欣在微软Outlook团队从事开发工作,2003年~2005年,他在微软内部质量工具团队和Visual Studio团队负责软件项目管理工具的开发。2005年~2012年,他担任微软亚洲研究院技术创新组研发主管,负责研究成果的产品化和创新项目。2012年~2014年,他担任微软亚洲互联网工程院首席研发总监,负责必应搜索客户端、必应输入法、必应词典等产品。加入微软前,邹欣从事过商用Unix系统、GPS/GIS软件开发及测试工作。 他在2007年出版了《移山之道》,于2008年出版了《编程之美》 (合作)。 他于1991年获北京大学计算机软件专业学士学位。1996年获美国韦恩州立大学(Wayne State University)计算机软件专业硕士学位。
AI导读
核心看点
  • 基于20年一线经验,通过做中学掌握实用技术
  • 覆盖ACM/IEEE标准,结合业界最新实践方法
  • 生动故事与隐喻解析需求、测试、团队协作等
读者共识
  • 内容接地气,语言生动有趣,告别枯燥理论
  • 涵盖面广,理清软件工程全貌,极具指导价值
  • 虽深度有限,但作为入门教材非常优秀实用
精彩摘录
  • "把所有的错误记在一个“我常犯的错误”表中,作为以后自我复审的第一步。"
  • "什么是好的软件?一些同学认为,所谓好软件,就是软件没有缺陷(Bug),所谓软件工程,就是把软件中的Bug都消灭掉的过程。这的确是抓住了软件工程的一个要素。和软件打交道的专业人士都知道软件有“Bug”(缺陷),软件团队的很多人都整天和Bug打交道,Bug的多少可以直接衡量一个软件的开发效率、用户满意度、可靠性和可维护性。 ——P15 很多人认为有Bug就是质量不合格,没有Bug就是质量完美,其实这也未必。我们在大街上看到很多小汽车,这些汽车出厂时都通过了各自的质量检测,符合行业的质量标准。但是你问路人哪些车的“质量好”,很多人会告诉你有些车的质量大大好于另外一些车,那为什么还有人买那些质量“不够"
  • "既然代码复审能发现这么多问题,有这么好的效果,如果我们每时每刻都在代码复审的状态,那不是很好么?事实上,极限编程(Extreme Programming)正是这一思想的体现——为什么不把一些卓有成效的开发方法用到极致(Extreme),让我们无时无刻地使用它们? ——p84页 极限编程对工程师提出了更高的要求。这种要求不关乎技术水平,也不关乎学历水平或工作经验。这种要求是对一个人的心智、道德修养的更高要求。结队编程中,编码不再是私人的工作,而是一种公开的“表演”。程序员的代码、工作方式、技术水平都变得公开和透明,这也许是一些人不喜欢这一方式的原因。 ——P87"
  • "计算机人工智能研究的一个重大挑战,就是计算机程序是否在国际象棋这个游戏中打败人类。从20世纪60年代开始,就有很多研究人员从理论和“智能”的角度去着手,取得了一定进栈,但是里最终胜利还是遥遥无期。1985年,还是一个研究生的徐峰雄这样想: “我们从一个不同的方向去逼近这个问题。我们,至少是我自己,把这个问题看成是一个纯粹的工程问题。” 历史证明,这个从工程的角度出发,用“蛮力”提高计算机速度的工程方法远远甩开了同时代的各种“智能”方案。1997年,徐峰雄带队设计的“深蓝”战胜了国际象棋大师加里·卡斯帕洛夫。 ——P13"
  • "用户体验设计的一个重要目的就是要降低用户的认知阻力(Cog-nitive Friction),即用户对于软件界面的认知(想象某事应该怎么做,想象某操作应该产生什么结果)和实际结果的差异。我们来看一个具体的例子,如果用户(一个生活在中国二线城市,有高中文化水平,有基本计算机基础的成年人)要在一个文稿中写居中的一句话,在下表所列的各种工具中,用户是怎么才能做到的。 倘若认知阻力大,学习曲线就会比较陡;但是经过学习和练习,如果用户适应了新的认知模式,工作效率便会有较大的提高。 ——P271"
  • "很多心理学家通过各种试验和分析告诉我们,纯粹强调外界的驱动因素(金钱的报酬或惩罚)仅仅对体力劳动或有明确规则的活动有效(奖金越多,结果越好),但对于需要创造性思维的活动,即使是简单的认知能力的活动,更多奖金反而起到相反的效果。 ——P409"
  • "一个成熟的软件工程师应该能够降低任务交付时间的标准方差。 软件领域可以分为两个方面:一方面是技艺创新的大爆发;而另一方面是坚持不懈的工程工作,包括软件的改善、维护和测试等,这一方面占了 90%~95% 的比例。"
  • ""Natural critical learning environment." In that environment, people learn by confronting intriguing, beautiful, or important problems, authentic tasks that will challenge them to grapple with ideas, rethink their assumptions, and examine their mental models of reality."
目录
第 1 章 概 论 1
1.1 软件 = 程序 + 软件工程
1.2 软件工程是什么
1.3 练习与讨论
第 2 章 个人技术和流程 /20

显示全部
用户评论
干货极多!强力推荐。。。所有干工程项目的都可以读一读
此类书中看过最好的一本
软件 = 程序 + 软件工程,这本书对于软件工程的方方面面:需求、设计、开发、测试、团队协作以及个人成长等都有所涉及且内容简洁、精炼可以很轻松的一口读完,不过读过了,还要亲自动手实践,这样才能够内化为你自己的知识,很值得多读几次的好书。
《构建之法》链接汇总(含对应序号):http://www.cnblogs.com/xinz/p/4470424.html
在生活中能不能锻炼PM的能力呢?当然可以,比如装修房子、组织一个大型活动、带自己的孩子、帮邻居家带三天孩子,等等。
读了一部分,无奈水平有限,很难跟自己有限的编程经历产生足够的关联
@2017-06-28 21:59:14
拖了几年才读完,惭愧。现在的工作,虽号称互联网大厂,但实属糙快猛,还是要往正统软件业的路子掰下。
我对软件工程是有信仰的
对了解整个开发流程很有帮助,作为产品也需要思考构建软件的全流程,才能更好的设计产品,以及和研发碰撞出更好的管理和实现方法。
求书
收藏