余于近日偶得打油诗一首不才姑赠予熊节透明贤弟共勉
贺岁赠熊透明
(张恂子,甲申十一月廿二日于浦东陆家嘴)
爆竹开花迎新年
好戏连台闹翻天
工程工艺胡乱点
宁撞南墙非等闲
[更新历史]
2005.1.20
2004.12.31 拆分成多个文件,添加了滚动菜单
2004.9.19
大看点
1)
话语争夺战
把 software craftsmanship 译作"软件工艺"恐怕是译者犯的最糟糕的一个错误,可谓错得透彻、错得精彩、错得圆满。什么叫“工艺”?生产工艺、制作工艺、贴片工艺、方便面工艺、泡菜工艺、青瓷工艺 ... 这个中文词实在是太普通、太简单,普遍存在于我们的日常工作和生活中。那么,“软件工艺”这四个字按照人们的使用习惯,当然是指你用什么流程、方法和技术来开发制作软件,所以大家可以想见:传统的结构化和面向对象是两种不同的软件工艺(方法),RUP 和 XP 是两种不同的软件工艺(流程),用 Hibernate 还是用 EJB 来开发企业应用,那是两种不同的软件工艺(技术),我们还可以对客户说,“我们的软件产品线很齐全,既可以用 IBM 的 Java 工艺开发,也可以用微软的 .Net 工艺开发,随需而变”。而从 craftsmanship (我将其译成“匠艺”)一书中对学徒、技师到工匠的显著划分,我们不难看出 Pete McBreen 明明讲的是软件手艺(或手工艺),以及如何学习过去手工作坊、手工业的优良传统! 软件“手工艺”和软件“工艺”虽一字之差,含义却明显不同。
用什么颠覆软件工程?用“软件工艺”吗?极具讽刺性的是,工艺(开发软件的技术和方法,英文叫 technics 或 technology )原本、从来就是世界软件工程界研究的核心问题,大概是欺负我们工程界无人,熊节却要用工程学话语(显然是太不熟悉)来颠覆软件工程及其话语体系(我猜他应该不是学工科的吧),再一次强烈地颠覆了读者的理解力和判断力。本人由此强力推举“主张软件工艺,颠覆软件工程”当选 2004 年度中国软件业十大行业笑话之首。
倘若有朝一日漫天下咿呀学语的菜鸟们真的开始天天嚷嚷着“我们要工艺,不要工程”,那效果将不啻于一场人间灾难。所以,让我们一起呼唤吧:“还我工艺,还我工程!”
2)“颠覆软件工程,开发回归人本”的荒谬性
只有颠覆了软件工程,开发才能回归人本。这么说,软件工程不是以人为本啰?
3)
拨开迷雾,揭示真相,批判地吸收。McBreen 原著存在的逻辑错误分析和经验总结
引子
干了几十年的老专家们也许会想:都到了21世纪了,怎么现在的年轻人越学越笨了,搞来搞去,连什么是软件工程也搞不清了?是啊,作为一方高手,您大概觉得我这里说的竟是些废话,没有闲工夫看,可有的时候废话还是要不得不重复几遍的,尤其是现在。借《软件工艺》中文版、影印版在国内横空出世,热销大卖的机会,我们被迫来探讨一下这个本该不是问题的问题——如何来颠覆软件工程?

首先,我觉得《软件工艺》确实是“一本值得深思回味的经典力作”,在此,我强烈鼓励所有的大家也都去买一本《软件工艺》作为个人的珍藏(对了,千万别忘了购买熊节的译本哦),每个人都能够为我国尊贵的翻译家、出版传媒巨擎乃至整个软件书市创造新的销量神话贡献一份菲薄之力,这是一件多么光荣,令人感到无比自豪的事情啊 ...
但对于那些工作还未满 3 年的菜鸟级读者,我还有一个小小的建议:请最好不要急于跟风,奋勇加入鼓吹“软件工艺”、声讨软件工程的伟大行列,比如,在公开场合、网络论坛上随便地乱下结论和表态。
背景
熊节,何许人也?这年头,搞软件的不知道熊节、gigix、透明,大概也算老土了吧。鉴于此名家地位和势力显赫,身后的追随者和拥护者怎么估摸着大概也有好几十万了吧。如果很没面子地数落人家,万一激起群愤,被千千夫所指,本人可消受不起。因此,我得赶紧先做个诚恳的自我批评,然后再行使个人的批评权利。
玩的就是颠覆,明天我们颠覆? —— 来自网易娱乐频道(绝对精彩!)
紫云英先生在《程序员》发表的文章,写得很好。这次《程序员》学会了平衡报道,值得表扬!
缘起
熊节译者序 - 其中大谈“软件工程话语霸权“? 真是荒唐!嗯,一般人确实想不到,有胆识,有把刷子!(胡刷)
韩磊书评:开发回归人本,软件工程遭遇危机? - 呵呵,大概是熊节颠覆说的直接受害者,看出来这是一篇外行写的 漏洞百出、颠三倒四、质量低劣的书评 (2005.1.20) 。
相比之下,孟岩的书评“人本主义和实话实说”要中肯、专业和出色得多,水平明显也比前两位高不少。
为了打破砂锅、弄清真相,我特地自费购买了一本熊节的中译本,进行一番深入的探查研究。
发现在此书的红色绶带上赫然印着两段话:
人民邮电出版社、CSDN网站、《程序员》杂志、第二书店(www.dearbook.com)联合强力推荐
“颠覆软件工程 开发回归人本 一本值得深思回味的经典力作”
韩磊(资深技术编辑) :
每当我面对一堆火候太过的鸡翅时,总是忍不住会想起软件工程——连号称生产过程最规范的连锁快餐店都无法避免品质偏差,我们怎么能对软件工程继续抱有幻想?
其实原文开始还有一句,“我一直为吃不到口味一致的炸鸡翅而耿耿于怀”,特有趣。
韩磊造访的大概是四等快餐店吧。他怎么会不知道品质标准范围和品质偏差率这两个概念呢?生产过程最规范并不等于不允许出现品质偏差或者可以彻底完全避免品质偏差,像肯麦这样国人钟爱的连锁快餐店,如果我们挑出一支支鸡翅,放到显微镜下或者试管中进行各种物理、化学的科学分析,一定能够发现它们之间的许多品质偏差,不过它们当然是在可以被我们的味蕾接受的范围之内(大概除了韩磊的味蕾之外),不然就很难解释这么多年来市场的表现,我们总不能不顾大家用脚投票的现实吧。
同样,在软件工程中,通过规范的“生产过程”,软件品质的缺陷也可以得到主动而有效的控制(从Windows一直到火星探测器),甚至精确到逼近零的程度,这样的实例也不用我多举了吧,韩磊应该不会这样的孤陋寡闻。
从连锁快餐生产低品质鸡翅到贬低软件工程,这是什么样的因果逻辑,竟然得到出版社、网站、杂志、书店乃至读者如此的追捧?我实在摸不着头脑,大概这就是弄文青年的逻辑,感觉有愚弄读者的嫌疑。学习了这样的句式和逻辑,不妨我也来造两句:
句1:每当我看见挑战者号的照片时,总是忍不住会想起建筑工程——连号称研制过程最规范的NASA都无法避免品质偏差(5架掉了2架),我们又怎么能对建筑工程继续抱有幻想?(接下去,就可以颠覆建筑工程了)
句2: 每当我面对一片片金黄脆皮下过于肥厚的白色脂肪时,总是忍不住想起汽车工程——连号称生产过程最规范的传统烤鸭连锁店都无法避免品质偏差(不是肥了就是瘦了),我们又怎么能对汽车工程继续抱有幻想? (接下去,就可以颠覆汽车工程了)
晕倒 ...
(附社会新闻一则,纯属虚构,切勿对号入座:
于 2005 迎新之际,各地群众纷纷呼吁有关部门在鸡年里彻底解决劳动模范韩磊同志多年来吃不上合格鸡翅的问题,造福于民,同时建议国际顶级快餐连锁店肯麦公司,鉴于韩磊先生的特殊贡献,专门聘请其为特邀鸡翅质量监督员,并获免费享用国际特级炸鸡翅 3 个月的待遇。)
孟言(知名技术作家) :
McBreen在一片对软件工程的朝圣之音中突然跳将出来,大声宣称:尔等不必向泥胎偶像顶礼膜拜,真正的圣灵正在尔等自身。
我的基本观点
(根据敝人的实践和认知,希望能还其本来面目,但陈述可能不一定准确):
什么是工程?(摘自金山词霸-美国传统辞典-双解):
The application of scientific and mathematical principles to practical ends such as the design, manufacture, and operation of efficient and economical structures, machines, processes, and systems.(
工程学将科学及数学原理运用于实际用途的应用手段,如设计、制造及对高效经济构造、机器、进程及系统进行操纵管理)。
从这个最基本的定义出发,我看不出把工程的观点用于软件开发,有什么根本性的错误。难道软件开发就那么高贵和特殊,就不需要科学和数学原则了?真是咄咄怪事!熊节大概没有看过这本字典,他不是一直炫耀自己对词源学很有研究,对话语很敏锐,很有品味吗?还搞什么“颠覆软件工程话语的体系”,看来都是些弄文青年的无病呻吟,大概用来糊弄糊弄懵懂的小孩子还行。
从手工业时代的craftsmanship走向现代化工业社会的engineering是历史发展的必然,软件工程诞生于工业社会也是历史的必然。“软件工程”是现代工业社会、信息社会、知识社会条件下“软件开发“的代名词。
工程师是工匠的“升级“,优秀的软件工程师必然是一名出色的软件工匠,而一名传统工匠未必能达到软件工程师、专家的水平。
软件工程是现代软件工业、软件产业的立业之本。
什么叫“工艺”?金山词霸/高级汉语大词典的解释为:[technology]∶将原材料或半成品加工成产品的方法、技术等
在该词典中还有一项[craft]∶手工艺。即需要手工技巧或运用艺术技艺的职业、行业或工作
软件开发当然是门手艺活了,难道可以不用手来干?同时,软件工程当然要重点研究软件开发的方法和技术——软件工艺。显然,craftsmanship已经是现代软件工程的一部分、一个方面,二者并不是互为对立、排斥的关系。
把“software craftsmanship”译成”软件工艺“看来有些问题(实际上可能是错误的,稍后详细解释),而用软件工艺来颠覆软件工程(或所谓的“软件工程话语体系”)就更加可笑,就好像一个人自断手足自废武功,因为工艺本身就是工程的一部分。
有谁听说过用“建筑工艺”颠覆“建筑工程”、用“化学工艺”颠覆“化学工程”、用“装潢工艺”颠覆“装潢工程”,这不是笑话吗?明显是外行人的自作聪明,哗众取宠。故意把软件工程与“以人为本”对立起来,与机械、僵化、死板等同起来,完全是错误的,是一种不付责任、为了一己私利而混淆视听的商业炒作。我想大家都明白,炒作并不是不好,关键看你怎么炒。炒出了格,炒错了方向,甚而愚弄读者的判断力和智力,就要挨批评,这体现了社会的一种公平性。这当然也是对我本人说的,我们应该始终保持humble的心态,我本人就很乐意接受大家的合理批评,而且我觉得现在优秀的批评太少了,便努力实践之,批评使人进步!
启示录
我罗罗嗦嗦地唠叨了这么多,为了什么呢?我想说的是:
之一:颠覆软件工程(或其话语体系)?
根本不存在这回事,也没有这种可能性,要么就是我们有些人的逻辑出了问题。想想看,当初为什么要提出软件工程?30多年下来都没有颠覆,难道现在有了熊节、韩磊,就可以颠覆了?他们有望挑起大旗,成为21世纪的布鲁诺、伽利略?事实可能恰好相反:世界发达国家的软件工程越来越成熟,越来越先进,而中国的民用软件工程离世界领先水平依然路途遥遥。
“什么是软件工程“?这大概是专业院校相关培养课程的第一课基础内容。我们确实可以不断地树立、颠覆、再树立、再颠覆软件科学和工程中的某些理论和观点,这体现了人类和科学的进步,但你是否能够颠覆软件科学呢?科学、工程,这种东西能颠覆吗?毫无这种可能性。恐怕"软件工程"的最基本、最原始的含义就是把软件开发本身当成一门科学来研究,为了解决现实世界的实际问题,把各种科学理论运用到软件开发的实践中,同时从实践中探索、总结出软件开发的新规律,形成新的理论,再用来指导新的实践,并据此不断地循环往复、螺旋式上升。难道100人以下的小项目就不要系统性、规范性和可度量了?我的观点和Pete恰恰相反,越是压力大、进度紧、小规模的项目,越要加强软件工程,因为对于小公司、小项目来说,在市场和强大对手的竞争压力之下,你几乎没有犯错重来的机会。 重载还是轻载,僵硬还是敏捷,无所谓对错,是度和context的问题,这些都属于软件工程理论研究和实践的范畴,但有没有软件工程,就是原则问题了。
熊节把我的观点有意歪曲成“张恂:软件工程不容颠覆(《非程序员》第36期)”。我笑了,哎,文学青年(哦,不,弄文青年)就喜欢牵强附会、搬弄词藻,这根本不是容不容颠覆的问题(你要颠覆什么,谁管得了?),而是你有没有本事颠覆,颠覆不颠覆得了的问题。
既然本来就没本事颠覆,那为什么还要抛出颠覆说和霸权说?
司马之心...
之二:
《负负得正,对颠覆的颠覆,评〈软件工艺〉中文版》(暂定名),大意是:国内有些人正在通过玩所谓的文字把戏,人为地割裂软件工艺与软件工程, 利用“颠覆软件工程”来搞促销,在我眼里无疑是一种拙劣的商业炒作行为(参见广告1,广告2)
TBC ...