大道至简:软件工程实践者的思想
分類: 图书,计算机与互联网,软件工程及软件方法学,软件工程理论,
品牌: 周爱民
基本信息·出版社:电子工业
·页码:168 页
·出版日期:2007年
·ISBN:7121038692
·条形码:9787121038693
·包装版本:1
·装帧:平装
·开本:0开
产品信息有问题吗?请帮我们更新产品信息。
内容简介《大道至简:软件工程实践者的思想》提出了审视软件工程的全新视角和软件工程的体系模型(EHM,软件工程层状模型),用非工程的方式重新解析软件工程现象,全面、细致而深刻地分析了工程中各个环节的由来、价值及其内在关系。《大道至简:软件工程实践者的思想》综合论述开发、工程二者的现状,例如对程序员“工匠思想”的起源进行广征博引的分析,也对工程中“敏捷过程”的经验主义本质进行深至髓质的论证。全书语言轻快,可读性强,薄且有味。
作者简介周爱民,有十余年的软件开发、项目管理、团队建设的经验。曾任多家软件公司高级程序设计师、项目经理、部门经理、区域总经理等职,现任上海盛大网络平台架构师。目前主要从事软件工程、体系架构和语言基础方面的研究与实践。
2001年,主持完成的“极光数据处理仓库中心系统”被河南省信息产业厅授予省高新技术产品二等奖。
2003年,被美国Borland公司授予“Borland Delphi产品专家”称号。
2004年,出版《Delphi源代码分析》,被誉为“Delphi领域精品著作”。
2005年,发布《大道至简》第一版(电子版)。
2006年,发起开源项目。Qomolangma Open Project,探讨语言系统基础技术。
媒体推荐前言
“你在做什么?”我经常这样反问那些跑来问我问题的人们。然后他们就愣住了。.
做了许多年的开发,其实有很多人并不知道“自己在做什么”。《愚公移山》的故事里面,愚公为山所阻,苦于“出入之迂”,然后就决定“移山”。看起来伟大而风光的工程,可能只是拍拍脑袋的一时主意——如果只是觉得绕路太远,那么劈山开路岂不是更加经济?
愚公移山只是一种精神追求,而做工程却不是追求精神目标。我们的目标是完成工程,但是你现在环顾一下你的团队:有多少人的眼光是落在工程本身上的呢?
程序员正在调试代码,项目经理在忙着开会,市场经理在请客吃饭,老板可能还在来公司的路上……总之,你的身旁没有什么人关注工程本身。即便有一个人或几个人在像模像样地画着模型图,或者写着需求、分析与设计书,但是对于他们来说,这只是例行的工作,而不是出于工程本身的需要。
其实这也是我在几年前的状态,同时身兼主程、团队负责人和项目经理的时候,我列出的工作清单排满了上班与下班的时间。我甚至忙到不知道自己有多忙。直到我将自己的角色分解到“工程层状模型(EHM)”中,我才渐渐地梳理出自己的工作方法。
《大道至简》这本书的名字并没有什么奥妙。因为是先有了EHM,所以这本书根本上是随着EHM的层次来展开的。它的第一版曾在《程序员》中选载过三期,那时我为了方便就以《从编程到工程》作为书名。后来出电子版时,才恢复到现在这个名字。而本质上来说,这本书还是讲的“从编程到工程”的各个环节。
至于“道”,其实在乎于你的认知。它不过是规律、本质的代名词。现在的书名,更像是一个以程序员出身的工程实践者,在历经10年后,终于领悟到“自己在做什么”时的一声感叹。
《大道至简》向你讲述两个内容:做什么和为什么做。“做什么”作为一种状态或者现象,通常是(阶段性)不变的,所以人们了解自己“在做什么”时大多只需要观察。简而言之,只需要自省,就可以了解自己的所作所为了。然而“为什么做”却相对更难于理解,因为这是“表象下的实质”,潜藏得很深:习以为常,便会根本上忘却“习”的来由。例如项目总监说要一份计划,你大概只需要拿一个以前做过的文档模板,很快就能写出一份项目计划案来。但在这个过程中,你已经忘掉了“项目计划案”真正存在的价值——写它的目的,并不是“完成工作”。
写一份项目计划案的时候,你的角色是项目经理,你的职责是计划与分工,你的目标是工程的时间、进度与质量的平衡。这份文档是工程的纲要,因此阅读群体是整个团队和项目干系人。所有这些,都可能导致文档的规格和措辞存在差异。
所以你需要认识“为什么做”。
这其实并不是非常困难。例如我在工程中经常问的问题是“可不可以不做”——哈哈,看起来我很偷懒似的。其实不然,。因为接下来我就会从不同的人那里得到“非做不可”的种种理由。
然而这是方法或者手法。《大道至简》并不告诉你这些具体的方法与手法。我只是叙述了基本的原理与思想。《大道至简》陈述的是一种途径、一个方面,以及一些探求途径、方面过程中的故事与思考。
做事有没有章法,在于你头脑够不够清醒;头脑够不够清醒,在于你是否视见到事物的本实。具体到如何做一件事(例如做软件工程)的方法与步骤,是本书所不能告诉你的。而反过来说,如果你认为你自己“足够清醒”,那么这本书原本也就不会告诉你更多。
你足够清醒吗?
第二版的增改
写这一版的《大道至简》,其实用掉的时间与整个第一版差不太多。但新添加的内容,也就两章三节而已:
第六章,谁是解结的人;
第八章,你看得到工具的本质吗;
第四章第三节,沟通的三层障碍;
第九章第五节,审视AP和XP;
第十章第七节,细解“法”与“式”。..
此外,第二版的《大道至简》加入了一个有趣的部分,就是九幅四格漫画和一篇《愚公移山记》。
除了增加的内容之外,本版的《大道至简》还修改了一些章节的位置。例如第七章的“关注点”一节。因为EHM图提出来的不仅仅是一个“多层”的体系,而且它的“关注点”也是EHM体系的一个重要部分。因此放在一起来讲述,会使这个体系更加完整。
还有一些细部修改。例如第一版说李冰与愚公处于“差不多同一时间”。这经不起考究,就改掉了。
关于新添加的章节
第一版的EHM体系中有一个关注点没有详述。也就是“组织”。事实上在 “失败的过程也是过程”中,最后一节“工程不是做的,是组织的”,就是打 算延伸到“组织问题”进行讨论的。但写第一版的时候,并没有就此展开。所 以有些读者在看第一版时,觉得这一段没什么意义。
本版中添加的第六章“谁是解结的人”,讨论的就是组织和管理的问题。 承接上文而讨论“组织角色,分工明确,步调一致”等这些问题。为此,在综述EHM的第七章,也修改了“组织”小节的部分文字。
在本版中,我还添加了一章“审视XP和AP",对敏捷编程与极限编程做了一些讨论。我试图站在更中立的角度上来讨论AP、XP,以及传统的工程过程(例如RUP)。因为本书并不打算去迎合某种或者某些过程、方法与工具。
但即使如此,“敏捷(Agile)”也与本书表达的“灵活(Flexible)”的观点有相近的地方。其实本书在英文名上,就曾考虑过使用“Thinking In Flexible Engineering”这样的名字。我在这里特别补充这一点,是希望不要把本书的思想与AP和XP等同起来。
新添加的第八章“你看得到工具的本质吗”,占了不少的篇幅。其实,对于我自己来说,理解“语言只是工具”是一个顿悟的过程。但对于读者来说,是顿悟还是领悟,则更多的取决于思想方法与工程积累。我不能期望大家都能顿悟,所以就详写了这一章,希望能以渐进的说理,对我的思想脉络做一概括,并阐述工具之于工程的本末。
关于《愚公移山记》
在基本不影响原故事的前提下,我在本书中对愚公移山的故事进行了续。我在2005年4月就完成了本书的第一版,7月赴西藏旅游时,在珠峰大本营扎营之夜构思了“愚公移山”的续写概要,但到10月发布本书第一版(电子版)时,这篇续却没能够写出来。此次编写第二版,把这一年来在头脑中渐渐清晰的故事重理脉络,编撰成一篇文言,就是附录中的《愚公移山记》。为方便阅读,在本书附录中又附了一篇白话文的版本。
书中的九幅四格漫画,不但概括了故事的大意,也是整本书的框架骨骼。为了使得整个故事更加完整并具连续性,我对愚公移山中人物的历史背景进行了一些设定(姓氏的设定主要是为了避免在故事中出现“愚公n代”这样的写法)。这里先作一些交待:
愚公,复姓公输,祖上虞国人(今山西平陆县北)。后迁居到太行山北时以虞人自称,性情耿正,人称愚公。
智叟,复姓端木,魏国河曲人(今山西芮城西,风陵渡一带),后迁与愚公毗邻,仍以河曲人自称。
邻人京城氏,世居此地。有孀妻遗男。京城一氏的后代中,有很多复祖姓目夷的人。
序、前言及其他
这一版本,仍请蒋涛先生作序,替换了由他为本书第一版(电子版)所写的序言。在请李维先生做推荐辞时,先生不辞辛劳,寄过来一份推荐序,因此,我敬而重之地做在本书的序中。本书的另一篇序,则是请我的老朋友王昊写的。
第一版的“前言”以“后语”的形式在书末给出,这一版中保留了这个做法,具体的原因参见书末的“前言后语”。
此外,为了便于读者阅读理解本书,我也为新版写了这篇“再版前言”。
编辑推荐★在"思想方法学"这一软件工程尚未涉足过的领域中的实习之作!
★第一本讨论软件工程思想本源的书籍,也是第一本从工程实践出发溯源而论的佳作。
《大道至简:软件工程实践者的思想》是在“思想方法学”这一软件工程尚未涉足过的领域中的实习之作。作者亲历国内软件工程的英雄时代、泡沫时代,从失败中醒觉而创建独特的思考方法,对软件开发、工程中的现状深刻反思,从而完成这本专著。在缺乏独立思维、对国外工程理论亦步亦趋的国内工程界、开发业界,该书无疑是一份激荡新思的佳作。《大道至简:软件工程实践者的思想》是第一本讨论软件工程思想本源的书籍,也是第一本从工程实践出发溯源而论的佳作。
目录
对第一版的赞扬
精彩在于思考
停下来,思考才是进步本质
屏幕上的第四种颜色
再版前言
致谢
第一章编程的精义
第一节 编程的精义
第二节 能不能学会写程序的问题
第三节 程序=算法+结构
第四节 语言
第五节 在没有工程的时代
第二章是懒人造就了方法
第一节 是懒人造就了方法
第二节 一百万行代码是可以写在一个文件里的
第三节 你桌上的书是乱的吗
第四节 我的第一次思考:程序=算法+结构+方法
第三章团队缺乏的不只是管理
第一节 三个人的团队
第二节 做项目=死亡游戏
第三节 做ISO质量体系的教训
第四节 谁动摇了你的制度
第五节 “那我们就开始开发吧”
第六节 组织的学问:角色
第七节 跟随蚂蚁,但不要栽进蚂蚁洞里
第八节 “什么是增值税发票?”
第四章流于形式的沟通
第一节 客户不会用C,难道就会用UML吗
第二节 项目文档真的可以用甲骨文来写
第三节 沟通的三层障碍
第四节 最简沟通
第五节 为不存在的角色留下沟通的渠道
第六节 流于形式的沟通
第五章失败的过程也是过程
第一节 做过程不是做工程
第二节 做过场
第三节 实现,才是目的
第四节 过程不是死模型
第五节 “刻鹄类鹜”与“画虎类狗”
第六节 工程不是做的,是组织的
第六章谁是解结的人
第一节 是谁的问题
第二节 正视你的成功
第三节 总得先做点儿什么吧
第四节 你不是团队的腿
第五节 三鼓而竭
第六节 先人后已
第七节 自相矛盾
第七章从编程到工程
第八章你看得到工具的本质吗
第九章现实中的软件工程
第十章是思考还是思想
附录一与蒋涛就电子版序的对话
附录二愚公移山记
附录三愚公移山记(文言)
前言后语
……[看更多目录]