大道至简:软件工程实践者的思想(典藏版)
周爱民 著
ISBN 978-7-121-17790-3
2012 年8 月出版
定价:49.00 元
16开
228页
内 容 简 介
本书提出了审视软件工程的全新视角和软件工程的体系模型(EHM,软件工程层状模型)。本书用非工程的方式重新解析软件工程现象,全面、细致而深刻地分析了工程中各个环节的由来、价值及其内在关系。综合论述开发、工程二者的现状,例如对程序员“工匠思想”的起源进行广征博引的分析,也对工程中“敏捷过程”的经验主义本质进行深至髓质的论证。全书语言轻快,可读性强,薄且有味。
本书是在“思想方法学”这一软件工程尚未涉足过的领域中的实习之作。作者亲历国内软件工程的英雄时代、泡沫时代,从失败中醒觉而创建独特的思考方法,对软件开发、工程中的现状深刻反思,从而完成这本专著。在缺乏独立思维、对国外工程理论亦步亦趋的国内工程界、开发业界,该书无疑是一份激荡新思的佳作。本书是第一本讨论软件工程思想本源的书籍,也是第一本从工程实践出发溯源而论的佳作。
本典藏版在内容上以该书第二版为底本并进行了大量的文字修订,补充追加了第三版中的“具体工程”一章。并且,考虑到典藏的价值,本书收录了公开文档“幕后故事”的精华摘选。
对第二版的赞扬
最关键的还是思想和观念上的一些改变。
石头,http://blog.csdn.net/pizzq
立刻就被这本书深深地吸引住了,好几次在车上看得入迷了差点错过下车。
大 P,http://blog.csdn.net/planeboy
一口气通读下来后,能够留在我短时记忆十分糟糕的大脑里的就只剩下:语言只是工具、boss 是“经营者”,以及软件工程中作者的一些感悟。
wangwei,http://blog.wwtyler.com/
我们的名词太多了。其实我感觉最好的方法论,是《大道至简》,本来就是简单的道理何必复杂化?软件开发工程师就是把复杂的东西简单化。否则只能叫技术员。
蓝叶菱,http://hi.baidu.com/westsky
作者是程序员出身,是真正的软件工程实践者,这本书确实是一个有真正经验的人的总结。(这)在书中还是有不少体现的——这是我真实的感受!
Suilj,from http://hi.chinaunix.net/
又这么一口气看完了这本书,两三个小时对着电脑,哈哈,乐在其中。
高峰,http://blog.csdn.net/gaofen115
虽然是一本探讨软件工程方面的书,但包含其中的思维方法和道理,其实对其他许多情况也都是适合的。
RealTwo,http://hi.baidu.com/the3eye
真的将软件工程分析得很透,这本书你能够看到很多以前你学到的东西的缩影。他用生动形象的语言和插图给了一个诠释。(软件工程层状模型的)每一部分都是经典独到的。如果你细细品味,可以学到很多属于你的管理与设计的技巧。
http://suifengfeiyang1697.blog.hexun.com/
还没有读完一遍,我就已经有读第二遍的想法了!!!
雷伟波,http://hi.baidu.com/
本想随意翻翻,但看完第一章就忍不住看完了。
王德水,http://www.cnblogs.com/cnblogsfans
一本值得一看的好书,里面都是周爱民多年来对软件工程实践的思想,值得我们去阅读,
去思考。
http://www.cnblogs.com/TV9
很精简的一本书,就一百多页,但是里面诠释的东西却是软件工程的一些精髓。
http://blog.sina.com.cn/extinct
不断逼迫你去思考,从自己的亲身经历和愚公移山这个人所尽知的经典故事出发帮助你去思考。
陈瑞江,http://blog.csdn.net/rjchen
一本能让我有读第二遍的冲动的少有的书。读起来好像在聊天,将以往工作中的问题、疑惑摆出来,讲清楚,化解掉。将市面上充斥着的各种理论、方法加以梳理。
http://blog.sina.com.cn/zmoka
对第一版的赞扬(摘选)
国人对软件工程的深刻经验,薄且有味。
肇宇,http://zychen.blogbus.com/
清楚地阐述了软件工程的关键问题,绝对不像那些教科书一般说教。
Sqlxx,from http://www.yoese.net/
以独特的视角洞悉软件工程的精髓。
云海天潮,http://xmxsuperstar.spaces.live.com/
不做工具的奴隶,而做思想的主人。
狂奔的蜗牛,http://yubin530.bokee.com/
虽然有很多个人色彩在里面,……但这种思想让我受益匪浅。
Fireice,http://borland.mblogger.cn/fireice
喜欢这种写作的风格,以及短小的篇幅。
云风,http://www.codingnow.com/
愿朋友们也能从中感悟些什么。
LwT,http://zyonghua.spaces.live.com/
媒体评论
这是一本闪烁着思考光芒的作品,它的精彩就在于作者深入的思考。
——蒋涛 CSDN总经理《程序员》总编辑
停下来,思考才是进步的本质。
——李维原Borland/CodeGear公司大中华区首席技术官
传达了探究工程本质的独立思考精神。期待它能激发朋友们的共鸣,知其然且知其所以然,以至简之道应变万端。
——谭群钊盛大游戏总裁兼首席技术官
就如本书,最后所有的故事、理论不过是为了理解一个公式、陈述一幅图形而已。
——王昊DELPHIBBS总版主平台架构师
体现了一个软件开发人员的认真的思考,展现了他的独特思想。
——邹欣点评专家
《大道至简》和《走出软件作坊》,一庄一谐,用自己的深思与实践,探索中国软件工程实践之路。
——吕建伟(阿朱) 点评专家
实践出真知,软件工程领域尤其如此,作者以本书将这些真知灼见做了一次倾情奉献。
——王玮点评专家
这本书对软件项目管理生动的探讨——在点评版更显其特色,是对软件项目管理实践的“格物致理”。
——LwT点评专家
推荐序
停下来,思考才是进步的本质
我个人的工作是非常忙碌和繁杂的,由于Borland/CodeGear 同时拥有Win32、.NET和Java 的产品和开发工具,因此我必须了解这三个平台的知识和技术——更不用说软件工程了。因为Borland/CodeGear 近几年来除了有Together 这个产品之外,Borland/CodeGear内部的许多R&D团队也开始使用敏捷开发(AgileDevelopment)的软件工程来研发新产品,尤其是,Borland/CodeGear 拥有目前.NET 和Java 平台上最先进的MAD/DDA 技术和产品了。
因此我必须阅读大量的技术书籍,每天在Internet 上不断地补充新知,以应付工作上的需要。长期的积累,虽然让我学习了许多技术,但是真正让我不断超越昨日自我的因素,并不光是这些单点的技术,而是多参考业界大师级人物的思想,以及更实际地看看我们同侪的思考,更重要的是,不时地停下来融合思考的结果。以前我非常享受在工作时与李匡正先生、苏国钧先生以及我的其他好友共同讨论的时光,盖因在这些好友的谈话和思想中,蕴藏了他们丰富的知识和智慧的精华,让我受益良多。
爱民是我大陆的好友,年轻有活力。每次我到大陆,如果有时间和他见面,他总是有许多话和我谈论。爱民和我还有一个共同点,那就是我们俩都是技术书籍的作者,这让我更进一步认识到在我了解的技术书籍作者中,爱民是一位非常有实力的佼佼者。
由于工作的关系我认识了爱民,也让我有机会能亲自聆听他的一些想法、经验和智慧的结晶,因此我非常幸运地能够借由这个机缘不断地成长和进步。如果您不像我这么幸运,能够因成为爱民的好友而获益良多,现在您可以借由阅读爱民的新作《大道至简》来撷取他的思想精华。适时地停下来,参考优秀软件人才的想法,搭配我们学习的各种技术,最后再加入自己融合思考的结果,您将会体验到从未有过的成就感。如果您还不知道这个成功秘诀的话,那么不妨就从《大道至简》开始吧。
李 维
2007 年1 月
李维
Embarcadero 大中华区技术总监
乔治亚工学院信息研究所毕业,拥有超过20 年的丰富系统开发经验,熟悉CodeGear 的各种RAD 开发工具,例如Delphi、CBuilder、DelphiPrism 和JBuilder等。此外,李维先生先后任职于鼎新计算机及康大信息等公司,使用Informix、MS SQLServer 和Oracle等大型数据库,熟悉数据模型(DataModel)和应用系统。李维先生为知名计算机技术作家及专业技术研讨会讲师,其所撰写的技术文章有超过100 篇被广泛地刊登在RUN!PC、CSDN 等著名的计算机杂志中,而所著作书籍之中有多本中文Delphi/C++Builder 作品是最被津津乐道的,并最为大中华区开发人员熟知的。李维先生对于云端运算有丰富的见解,日前于台湾、泰国、新加坡、马来西亚举办过多场“云端策略和解决方案”研讨会。
第四版前言
不要急
我是天生的急脾气。据父母说,我曾经与哥哥各分得一桃,便见我一口、两口,未等到第三口咬实在,桃就已经全下了肚。然后便眼巴巴地看着哥哥吃得欢乐,而我却连桃的滋味都不太知道。
不知道我的父母是不是拿了《西游记》中的故事来哄我,但若以我小时候的性急,确实可以做到“桃味不知”。以至于到了后来,等到我十多岁的时候,渐渐懂事了,便在自己的书房写了一幅字:默然心自澄,谦逊品渐高。
个中还有许多缘由,但终归是渐渐地安静了下来。
安静下来了,便有了机会来反思一下。若是总急于去解释什么、争辩什么,那么眼里便只见别人的弊端,耳中便只有别人的错漏,因而也就总是很难回头来看看自己。可能那个自己,正立在田间地头指指戳戳,出言絮絮状若村妇。
读书
在我看来,反思既不是设问,也不是反问,更不是某种思维法(例如逆向思维),它只意味着对一个目标的持续关注。
读书与写书,是我持续关注的一个目标。
然而就读书来说,我读得不多。我习惯大量地收集与归目,这一方面是为了查阅的方便,另一方面,当遇到某些问题或思考倾向了某个话题,我总是能及时地知道“找某类书来翻翻”。收集这些书的目的,原本也无过于此。
但我总归还是读些书的。我读书很细、很慢,常在空白处写写画画,甚不爱惜。读书如食,贪而成嗜,这种读法的所得是难为浅读者道的。不过回到我们这里的话题,这样地收集与读书,或是我常常“反思”的一个源起。
写书
写书是我的另一种反思。
但凡一件事情,我们都该有自己的观点。对于这观点,应该先说清楚它,再坚持它,再尝试否定它。《大道至简》一书三版,便是我在说清楚自己的观点。而我这五年来沉默与坚持,便是不断地向自己挑战:我说得对吗?我在陈述一种什么样的道?这是道吗?这是未来吗?这是方向吗?以及,这一切或许原本就是错的?!
正如我一直以来在做的,写书即是在整理我的观点,坚持它,而后尝试否定它。这样的反思是我这些年来写作的主要动力。我的所得,往往不是在于追求新的技术,进而去学习、应用它们,以获得某种技艺上的纯熟,而是往往在于对它们背景里那些旧的、真实的、剥离了广告术语的东西的追问。这种追问,既是对别人的,也是对自己的。惟只这样公平地置疑,才脱离了促狭的味趣,而变成进步的动力。
这才是本书的姊妹篇《大道至易》的由来,也是本书发行它的第四版的原因。
第四版
首先,坦率地说,这一版并没有什么新东西。
若以完整性而言,第三版(点评版)已经有本书的全部内容了。但点评版的问题在于版式过乱,印刷质量也有问题,并且它的字体太小以至于影响到了阅读。因此若继续刊印点评版,其实是对读者的不负责任——所以如果你是第三版的读者,那么第四版真的只益“典藏”。若退至第二版,则又因为内容上缺少“第十章 具体工程”,而无法作为姊妹篇《大道至易》(以下称做“易”)的参考。当然,再追溯至第一版(电子版,2005.11.06),则内容上缺的就更多了。
“易”是本书的后续,并基于本书中几个关键问题的反思。这些反思起至本书电子版发布后不久,只是在这么多年之后,我才有将它写成一本书的能力与阅历罢了。但是“易”一书的写作风格和内容体系与本书完全不同,因此根本上无法做成同一本书。
所以一定程度上来说,这本“典藏版”既是为读者“典藏”而出,亦是专为《大道至易》的发行而出。在内容上以第二版为底本,加上了第三版中的“具体工程”一章。并且,考虑到典藏的价值,本书收录了公开文档“幕后故事”的精华摘选。惟只陈述这一事实,敬请读者谨细遴选。
致谢
感谢所有的读者、编者以及一直以来支持我的朋友们。
感谢李维先生为本书作序。
感谢所有对这本书提出意见、观点和评论的朋友们。
感谢那些在这本书的撰写与出版中给我帮助与支持的同事、好友和同行专家们。
感谢博文视点资讯有限公司。
感谢我的中学语文老师。
感谢Joy。En,……我最爱的妻。
周爱民
2012 年5 月
作者简介
周爱民(Aimingoo),有十余年的软件开发、项目管理、团队建设的经验。曾任多家软件公司高级程序设计师、项目经理、部门经理、区域总经理等职,前支付宝(中国)公司业务架构师,前盛大网络平台架构师。目前主要从事软件工程、体系架构和语言基础方面的研究与实践。
■ 2001 年,主持完成的“极光数据处理仓库中心系统”被河南省信息产业厅授予
省高新技术产品二等奖。
■ 2003 年,被美国Borland公司授予“BorlandDelphi 产品专家”称号。
■ 2004 年,出版《Delphi源代码分析》,被誉为“Delphi领域精品著作”。
■ 2005 年,发布《大道至简——软件工程实践者的思想》第一版(电子版)。
■ 2006 年,发起开源项目QomolangmaOpenProject,探讨语言系统基础技术。
■ 2008 年,出版《JavaScript语言精髓与编程实践》,电子工业出版社。
■ 2008 年,发起开源项目derlang,探讨erlang in delphi,以及erlang 的应用技术。
■ 2009 年,在开源项目QoBean中尝试MetaLanguage 与DSL 等实现。
■ 2009 年,发布《动态函数式语言精髓》(电子版)。
■ 2012 年,出版《JavaScript语言精髓与编程实践(第2 版)》,电子工业出版社。
■ 2012 年,出版《大道至易——实践者的思想》,人民邮电出版社。
■ 2007 年至2012 年,出版《大道至简——软件工程实践者的思想》第二版、第三
版(点评版)、第四版(典藏版),电子工业出版社。
目 录
第一章编程的精义.........................................................................................................1
第一节 编程的精义...........................................................................................2
第二节 能不能学会写程序的问题................................................................... 3
第三节 程序 = 算法 + 结构..........................................................................4
第四节 语言.......................................................................................................6
第五节 在没有工程的时代...............................................................................6
第二章是懒人造就了方法..............................................................................................9
第一节 是懒人造就了方法.............................................................................10
第二节 一百万行代码是可以写在一个文件里的........................................ 11
第三节 你桌上的书是乱的吗.........................................................................13
第四节 我的第一次思考:程序 = 算法 + 结构 + 方法................................ 14
第三章团队缺乏的不只是管理.....................................................................................21
第一节 三个人的团队.....................................................................................22
第二节 做项目 = 死亡游戏...........................................................................24
第三节 做ISO 质量体系的教训.....................................................................25
第四节 谁动摇了你的制度.............................................................................27
第五节 “那我们就开始开发吧”................................................................... 28
第六节 组织的学问:角色.............................................................................29
第七节 跟随蚂蚁,但不要栽进蚂蚁洞里.................................................... 31
第八节 “什么是增值税发票?”................................................................... 33
第四章流于形式的沟通................................................................................................37
第一节 客户不会用C,难道就会用UML 吗............................................... 38
第二节 项目文档真的可以用甲骨文来写.................................................... 39
第三节 沟通的三层障碍.................................................................................42
第四节 最简沟通.............................................................................................45
第五节 为不存在的角色留下沟通的渠道.................................................... 47
第六节 流于形式的沟通.................................................................................49
第五章失败的过程也是过程........................................................................................51
第一节 做过程不是做工程.............................................................................52
第二节 做过场.................................................................................................54
第三节 实现,才是目的.................................................................................54
第四节 过程不是死模型.................................................................................55
第五节 “刻鹄类鹜”与“画虎类狗”............................................................... 57
第六节 工程不是做的,是组织的................................................................. 59
第六章谁是解结的人...................................................................................................61
第一节 是谁的问题.........................................................................................62
第二节 正视你的成功.....................................................................................64
第三节 总得先做点儿什么吧.........................................................................65
第四节 你不是团队的腿.................................................................................68
第五节 三鼓而竭.............................................................................................71
第六节 先人后己.............................................................................................74
第七节 自相矛盾.............................................................................................76
第七章从编程到工程...................................................................................................79
第一节 语言只是工具.....................................................................................80
第二节 关注点.................................................................................................81
第三节 程序.....................................................................................................82
第四节 方法.....................................................................................................83
第五节 过程.....................................................................................................84
第六节 工程.....................................................................................................85
第七节 组织.....................................................................................................87
第八节 BOSS....................................................................................................89
第九节 上帝之手.............................................................................................90
第八章你看得到工具的本质吗.....................................................................................95
第一节 利器何以为先.....................................................................................96
第二节 神乎其技又有什么用呢..................................................................... 97
第三节 工具的本质.........................................................................................98
第四节 惟手熟尔...........................................................................................100
第五节 鲁班带了个坏头...............................................................................101
第六节 工匠思想...........................................................................................103
第七节 化而用之,融通与融同................................................................... 105
第八节 南橘北枳...........................................................................................109
第九章现实中的软件工程..........................................................................................113
第一节 大公司手中的算盘...........................................................................114
第二节 思考项目成本的经理....................................................................... 118
第三节 审视AOP...........................................................................................121
第四节 审视MDA/MDD ................................................................................122
第五节 审视AP 和XP..................................................................................125
第十章具体工程........................................................................................................131
第一节 预言——《人月神话》及其地位...................................................132
第二节 错误的命题——对《人月神话》的反思.......................................136
第三节 具体工程以及工程的具体化........................................................... 139
第四节 控制规模...........................................................................................142
第五节 隔离问题域.......................................................................................145
第六节 这样是不是太简单了....................................................................... 148
第七节 郑人的履...........................................................................................150
第十一章是思考还是思想..........................................................................................153
第一节 软件工程三个要素的价值............................................................... 154
第二节 其实RUP 是一个杂物箱.................................................................155
第三节 UML 与甲骨文之间的异同.............................................................. 156
第四节 经营者离开发者很远,反之亦然.................................................. 157
第五节 矛盾:实现目标与保障质量........................................................... 157
第六节 枝节与细节.......................................................................................158
第七节 细解“法”与“式”.......................................................................159
第八节 灵活的软件工程...............................................................................162
附录一愚公移山记.....................................................................................................165
附录二愚公移山记(文言)......................................................................................173
附录三幕后故事(摘选)..........................................................................................179
参考文献.......................................................................................................................193
前言后语.......................................................................................................................195
版本历史.......................................................................................................................203