友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
软件工程实践者的思想(PDF格式)-第10部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
日常交流中还是市井俚语的。因此评论中会说“以俚语入
词”。也可见填词作文章与说话毕竟是不同。再者说话也
存在方言的问题,因此方言之间平仄音调也当不同。古代
的歌妓是要求会“官话”的,这相当于现在“普通话”的
地位,她们歌唱起来,也是用的“官话”。
更进一步的推论是:古代的词律中的平仄是以官话为
基础的。然而如今的普通话毕竟不是古时的“官话”,也
就是说,即使我们以普通话的四声为基础在论平仄,在古
人看来,也是可笑的:这样做出来的词,依旧不可唱,也
不可读。
因此今人做词的标准,是应该重定的了。除了词格(这
里仅指字句的格式)和用韵之外,其它的部分是无法遵循
的了。在各字的平仄以及句式上,应当以“能通顺”和“能
品味”为准,风格上则以古雅为益。
仅此而已。
对于我这样的格律观点,一位网友曾有一句“未蕴而
变,自欺也。知律而变,智者之道也”,实为良言。变向
不变求。不变者,万变之所源,亦万变之所归。习诗词之
法度,若蚕虫之结茧,若无结茧于前,何有破茧于后?故,
知律而变,智者之道也。
…107
…………………………………………………………Page 112……………………………………………………………
第 8 章 是思考还是思想
“知律而变”中的“律”字,若解释作“规律”,那
么便是可以用于软件工程中的了。“道”是规律,如果明
“道”,而可以变化无穷,这样做软件工程才是活的。就
如同今人难于填词一样,不明道,则不明智,不明智则无
所以为,因而在软件工程实施中不可避免的盲目与停滞。
“知律”的另一层意思,是在于“知道原理”。明白
“为什么要这样”或者“为什么不是那样”。这在软件开
发中是常见的问题,大多数人不知究竟地使用着技巧和方
法,而一旦出了问题,则归究于这些技巧和方法的不好。
而真正的问题在于,这些人(我们通常叫做 Copy&Paster)
并不知道这些技巧、技术和方法的原理,因而不知道变通,
也不知道回避错误。
所以死读一本《软件工程》的人不会做真正的软件工
程。
所以我写《大道至简——软件工程实践者的思想》。
…108
…………………………………………………………Page 113……………………………………………………………
附 录
一、Jiangtao; Aimingoo关于序言的对谈(2005。11。06)
Jiangtao说:
大部分的人都希望看到招术,而不是学习其中之道。
但每个人碰到的情况是不同的,不通“道”,招数就不灵了。
Aimingoo 说:
是啊。明白道理,明白原理,即知变化之道,知变通之道。
亦步亦趋学不好编程,同理,也学不好工程啊。
Aimingoo 说:
正如你说所〃道理归到底是相通的〃,不同的人只是在换着不同的
方式在说而已。
Aimingoo 说:
像GoF这样深彻的理解,并不多。而我们看到GoF对他们的理解的
解释,文字量并不大。而更多的是别的人的、种种不同的说法。——
其实,根源在哪里呢?在GoF的思考,以及他们对既有事物的观察方法。
Jiang Tao 说:
易经,论语也很短,却可以解释世界万物之理,当然其中任何一
个话题展开也可以写成长篇大论。
Aimingoo 说:
从写作手法上,看作散文集亦无妨。但我是有大纲然后逐一先成
的,也就是说,在思想上是有中心并渐次展开的。
…109
…………………………………………………………Page 114……………………………………………………………
后语
Aimingoo 说:
《程序员》选了6;7;8三章发表,其实很正确。因为6;7两章的确
讲述了中心思想。但如果没有前面的,就有骨无肉,不丰满了。
Jiang Tao 说:
我知道,你有一个逻辑关系组织,不过每一篇其实是散着谈的。
Jiang Tao 说:
你是从根上谈起,一篇篇往后。
Aimingoo 说:
对对,每一篇与其它的段落,并没有直接关系。
Jiang Tao 说:
前面的道理大家觉得自己都明白,其实只是知道道理,却没有体
会上身。
所以会不断地犯错误,而不知道错误的根源。
Aimingoo 说:
是的。“知道”和“理解”,以及“理解”和“领悟”,都是不
同的境界。
Jiang Tao 说:
我们和这些专家正相反,专家是从根上来的,我们是从道理往后
寻找根源。
大部分人还根本不找。只是用这个结果,却不知道根在哪里。
Aimingoo 说:
对。我们做事,总是做到后来才发现道理与专家们说的是一样的。
我读书的时候,以及在Coder的一个很长的阶段,也是很排斥“专家”
和“理论”的。但现在我却在思考理论的东西。
Aimingoo 说:
因为我发现,这些理论,以及其背后的思想,是一切演化的根源。
…110
…………………………………………………………Page 115……………………………………………………………
『大道至简』
如果不想沦为代码工人,甚或代码机器,那么就需要思考并领会
这些背后的道理。
Aimingoo 说:
我在脚注里面,有一些文字是很值得关注的,例如:“其实所谓
‘经典’也是对既有知识的总结。大师们所知的,与你所思考的未必
就有天壤之别。”
再如“《三十六计》更多的时候是被当成方法论来读的。其根源
在于‘计谋’本身只是方法,而不是战略。”
Jiang Tao 说:
就是这个理,不过这一关不好过。
围棋的学习有四个阶段:记住定式 应用定式 忘掉定式 创造定
式。
Aimingoo 说:
大多数时候,“文字”只是思想的结果的描述。我希望更多的人
看到思考的过程,并知道其价值。如你所说,我也希望人们忘掉我所
说的,并创造自己的“定式”,乃至达到“法无定法”的境界。
Aimingoo 说:
所以我在甚至希望大家最终将这本书束之高阁,“思想已经领悟,
文字的、纸质的东西还有什么价值吗?”
Jiang Tao 说:
等电子版发表后,我们可以组织感兴趣的人延伸讨论讨论;很多主
题是可以展开讨论的。
对照自己的问题,再看这些思考,就会有感觉了;这样就有案例出
来了。
Aimingoo 说:
好啊。非常不错的主意。
…111
…………………………………………………………Page 116……………………………………………………………
后语
后 语
前言后语
你现在读到的文字,原本应该是这本书的前言的。然
而如今,它变成了后语。
如果读者是客户,那么我就应该是这本书的工程管理
人员了。与第一次著书不同,这一次我已经尝试参与整个
“做书”的过程。我必须要考虑客户问题,必须要知道作
为客户或者读者这个角色的你,在想些什么,或关注些什
么。
在这本书的最最最初的时间里,我把书稿给了我的老
朋友王寒松。然而我很失望地听到他的意见:这个前言没
法读。——我想了又想,是的,因为有了玄而又玄的观点
以及曲折旁引的论述,所以的确不是太容易读。
从我的角度上讲:
) 这个前言总括地讲述了我的观点
从读者的角度上讲:
) 读者关注的是细节的文字
) 读者享受的是阅读的快乐
发现我在“做书”的这件事中扮演的是工程管理人员
的角色的同时,我就决定了这篇前言应该改成后语。原因
很简单,客户并不关注我对观点的总括,至少一开始他们
不会关注。如果要客户做结论,或者要他们与技术人员讨
论结论,那就让他们在看完演示之后,在最最后的阶段去
…112
…………………………………………………………Page 117……………………………………………………………
『大道至简』
做。
读者的阅读行为决定了我将这篇文字放在这个位置:
这篇前言既不是细节的文字,又不能给读者以阅读的快
乐,因此它就应该放在后面。至于它是叫前言,还是改名
叫后语,那只是形式的问题。
如果你觉得你的项目中还有一个模块不是用户所关
注的,那么,En ,建议调整一下明天的客户演示,把这一
部分放到幻灯的最后一页的后面,只有客户提及时,才拿
出来跟他们解说。
否则,如果他们不感兴趣,那么他们将永远看不到这
张幻灯。一如这一篇前言。
软件工程
如果做一份软件工程中的经典书目,决不会有人漏掉
Roger S。Pressman 著的《软件工程》。这本书有第四、五版
梅宏教授译著的中译本。然而相信读这本书的人不会太多
的注意到它的副标题是“实践者的研究方法”。——从根
源上说,它是讲述软件工程方法的书,而不是软件工程思
想。
这有什么区别呢?拿这本书来作为软件工程活动的
参考时,绝大多数的人不能明白类似如下的问题:
) 为什么要这样做呢?
) 我们这里应该这样做,但是接下去呢?
) 这个环节很重要,但是如果不做会有怎样的风
险?
…113
…………………………………………………………Page 118……………………………………………………………
后语
) 我们在做这件事的时候,其它的人在做什么?
) 为什么失败了?
相关的问题很多,但总而言之,这本经典教材更多的
是在描述“怎样实做”,而绝少讲述“为什么这样做”。以
致于行为失去了思想的引领,能“完成”工程,而不能“做
成”工程便是可以想见的事了。
任何人在实施软件工程的过程中,或者处于工程过程
的某一个阶段的时候,都会有自己的思想或思考( 哪怕是
劳骚) ,那么为什么没有人写“软件工程思想”这样的书
呢?
我与软件工程
我始终认为无论是哪家公司实施软件工程,都将是一
部成功者的血泪史。然而不实施软件工程,则将是一部失
败者的血泪史。换而言之,做软件工程可能流血流泪,但
终究可能成功;而不实施软件工程,那就是抛头颅洒热血
的失败了。
我所遇见的却是不打算实施软件工程的公司。在“誓
死不做软件工程”的思想的引领下,一家堪称河南省最具
资本实力的软件公司于 2003…2004 年间倒掉了。我在这家
公司前后工作了 7 年。在 2003 年 2 月的时候,我开始请
假在家写书,以一个绝对 Coder 的身份完成了《Delphi
源代码分析》。用这一年的写书时间,完成了我对这些年
的程序生涯的回顾和反思,我看到了我在做 Develope
Manager 和 Project Manager 过程中的得失,也透析了那家
…114
…………………………………………………………Page 119……………………………………………………………
『大道至简』
公司几年来的成败与沉浮。
我再次与总经理 P&J 对坐的时候,我们又讨论到公
司的问题。他依旧固执地认为“最重要的是人的问题”。
我看不到他对管理、工程和决策上的任何反思,于是我终
于辞职了。
2004 年 3 月,我开始应职于一家新的软件公司。因
为规模小,所以实施软件工程的风险也就小。在一次公司
内的软件工程培训中,我突然意识到工程实践与工程思想
之间的差异与关系,也同时看到《软件工程——实践者的
研究方法》一书的根本性的不足。时值我那本《Delphi
源代码分析》将近完成之时,于是我匆匆记下当时的想法,
并确定了这本新书的名字《大道至简——软件工程实践者
的思想》。
大道至简
直到现在① ,这本书的基本目标仍旧与它最初定名时
一样:
) 这是一本小书
) 只用读与思考,没有实作
所谓“小书”,是我不想做成教材或者宏论。思想应
该简明,阐释应该清晰,而读者应该更多地去思考,而不
是跟随这本书去完成什么。
① 我写书的习惯是先写前言,这相当于大纲。因此所谓“现在”,
是指我写下前言的这个时候:2004。11。01 凌晨 5 时。
…115
…………………………………………………………Page 120……………………………………………………………
后语
老子说“道之为物,惟恍惟惚”。道是要体悟的,而
不是象做木工活那样是“会与不会”的问题。道是什么呢?
“道是本体,是规律,是自然”,简而言之,道是既存在
的事实和影响事物发展的规律。
这里需要说明的是,道并不人为的规则,而是事物本
身特质的规律。因此,本书中所要讲述重点是这种规律。
即使提及到一些“实践规则”,也是在对规律讨论之后。
读者应该发现这些“人为规则”是那样的遵从于“本质规
律”。
经常听到的一句话是“规矩是人定的”,因此也要“靠
人来推翻”。但是(初级的) 软件工程实施者经常抱着一些
经典的教材一步一趋,此谓之曰“知其然而不知其所以
然”。无僭越便无建树,无大成者。
画眉深浅入时无
我不是太喜欢写很“入时”的东西。“入时”的往往
是新的,因而也就乏有研究。这样的东西流于口头的讨论
是可以的。然而著书立说,是要将心得之见或谨严之论呈
现给读者,不是把自己想说的话说出来就可以的了。
在写《Delphi 源代码分析》的时候,Delphi 8 都已经
发布了,Win32 的时代也已近末路。促使我写那本书的原
因,在于没有人用 Delphi 来研究操作系统的内核机制,
而 Delphi 的源码中对这些的实现细节实在是宝藏。绝大
多数用过 Delphi 的开发人员,入源代码之宝山而空回,
实在令人痛惜的。因此那本书能否买得了钱我是不在乎
…116
…………………………………………………………Page 121……………………………………………………………
『大道至简』
的,我在乎的是读过那本书的朋友,能从编译器的角度上
对 Win32 体系增加多少的了解。
从 Delphi 7 的时代我就开始接触 Framework 。
2003 年的时候给 BorCon China 做演讲时,我已经对
Borland 在底层上为 Delphi 的实现非常了解了。因
此如果以“入时”( 以及“适时”)而论,在《Delphi 源代
码分析》完成之后,我应该写的书是《Delphi 源代
码分析》,来全面讲述 Delphi7 、Delphi8 和 Delphi9(Delphi
2005) 中对 下开发的实现。
这个计划被我搁置了。
在我如今看来,语言其实是开发的细微未节,而在大
学时代、在课桌上令人昏昏欲睡的《软件工程》才是软件
开发中的髓质与灵魂。十年的软件开发实践中,其实在很
多时间里我都落入了细节陷阱。
“实现”的欲望是从程序员出身的管理者的通病。因
此如果你仍然在思考选择什么语言、如何重构,以及在开
发部里争论一段代码有没有或应不应该采用某种模式,那
么请你暂时沉寂下来,听我说:那是细节。
真正的问题是:你的老板要求你下周二就给客户演示
这个系统;而客户并不关注你的实现细节,他关注的是你
本月月底是否能 Close Project 。
软件工程首先关注的是以客户为对象的、整个工程的
成败和质量。根本上说,技术性、重用性等等,只是保障
工程成败与质量的手段而已。
…117
…………………………………………………………Page 122……………………………………………………………
后语
①
重要的东西往往并不入时 。例如你的ThinkPad还在
工作,仅仅是因为电池还没有用光。
知之、好之、乐之
从读者的角度上来讲,是“知之不如好之,好之不如
乐之”的,因此作为作者,则希望自己的作品使人“以之
为知,以之为好,以之为乐”。在写《Delphi 源代码分析》
时,我的书稿的第一页就写着“知之、好之、乐之”,然
而那本书仅能给人以知识,让人“知道”就很不错了,况
乎乐哉?
读书给人以痛苦之感是有可能的。如果读《Delphi
源代码分析》不感到痛苦,那是没认真读。然而我毕竟不
是想让人(或者想授人)痛苦的,将《Delphi 源代码分析》
写到那般地步,非我所愿。
读《大道至简》的话,就用不着这样了。我虽然做不
到让读者“以之为乐”,但“以之为好”还是可以的。我
希望读者可以轻松地将这本小书读完,然后便可以束之高
阁了。毕竟这本书不是理论,也不是方法论,只是思想。
思想已经领悟,文字的、纸质的东西还有什么价值
吗?
① 你当然也可以由此反推出第 7 章的部分内容并不重要。的确,
那只是我思考事物的一种方式,我希望你看到本书中讲的思想是
如何被实例化的。但对于本书来说,如同我一再强调的那样:这
是枝节。
…118
…………………………………………………………Page 123……………………………………………………………
『大道至简』
致致谢谢
首先感谢我的老朋友,程序员杂志社社长蒋涛先生。
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!