应变之道 -- 软件行者 [an error occurred while processing this directive]
SoftwarePractitioner.org


首页

作文

翻译

随笔

本站

English
  


应变之道

胡健
2006年4月18日

和其他工程产品比较,软件产品最大的特点就是可变性,这是我在软件开发实践 中的最大体会 (可能因为软件毕竟是软的)。可变性贯穿于整个软件的整个生命周期。在软件系统开发中, 特别是在商用系统开发中,需求通常是不很确定的,并且在系统 开发期间随时都在变化的, 一路扑爬跟斗地把系统开发完,投入运行,还是时常会有 新的需求出现,需要作所谓的维护性开发。

应付可变性已是软件设计中的一个重要原则。我认为目前软件开发实践中广泛应用的设计模式 (design patterns)很大程度上就是系统设计中的一套应变技术。除了系统设计技术, 最近几年兴起的“敏捷软件开发” (agile software development)运动(其基本要义 是采用递增式,或称之为迭代式、螺旋式等的开发方式)则是从方法学上来解决 如何应变 以开发出令用户满意的系统。

说来有趣,有两本书是最近两三年出的,书名都叫做“Agile Software Development”, 一本是Alistair Cockburn所著,另一本是Robert Martin所著(加副标题“Principles, Patterns,and Practices”)。Cockburn的书专论敏捷方法,而Martin的书也提到了敏捷方法 (practices),但重点是在原则和模式(principles and patterns)。本人反复研读, 看了若干日夜,“从字缝里看出字来,满本都写着两个字是”:(当然不是“吃人”而是)应变。

窃以为,软件开发之本在于应变之道。作为一个软件开发人员,要充分地认识到这一点, 才能随时做到蒋委员长教导的“庄敬自强,处变不惊”。

Comment 1 from kingtongcrystal@hotmail.com on 2006-05-07

不错,软件是时尚性很强的产品,应变求新也是本行业的图存之道,客户需求的不完备和客户与软件 人员对事物认知上的差距为开发人员提供了挥洒的空间,所以,不必为此而惊,喜还来不及呢! 众所周知,软性产品容易创造比刚性产品更高的附加价值,不知道这是缘于软件产品本身的特性呢 还是因为这个行业的不成熟,但"应变"的确应该是一个合格软件开发人员具备的基本能力.

Comment 2 from dongyong_dai@hotmail.com on 2006-06-03

读完‘应变之道’很有感触。记得 Martin Fowler 曾经说过 ‘所谓管理一个IT项目,实际上就是 如何有效地应付变化的过程’。除了商务需求从头至尾的变化外,还有开发人员对商务需求 理解的变化,管理者对项目所需时间及经费预算的变化, 以及公司大老板们的政治斗争所导致的 变化,等等等等,数不胜数。项目的变数越多, 风险也就自然大。对一个IT 项目计划,不论是大 到象目前英国卫生部的那个NPfIT (National Programme for IT. 计划十年,一年前的预算63亿 英镑,上周的预算增到了200亿英镑), 还是小得象建一个简单的网上购物商店,你唯一可以确定的 就是这个计划的不确定性, 你唯一可以保证的就是这个项目最终保证不会按原计划进行。这其中一个 最主要的原因是需求分析. 在一个软件工程开发之前(甚至在软件工程开发完之后),人们很难对 这个软件的商务需求有一个清楚明确的理解。因此对这个工程到底需要多少时间,多少钱就没数。 由此不难想象,一个IT项目的经理常常是如履薄冰,随时都有翻跟斗的可能。记得一年前我在IBM 干活时,同组的一个设计师要金盆洗手,放弃多年的技术活, 转到另一家公司当IT项目的经理。 欢送会上我们送给他一幅画。 画中是一只满脸旧社会的替罪羊,下面一行字写道:‘成功的秘 诀是随时都可以找到人替你背黑锅”(The secret to success is knowing who to blame for your failures)。

随着软件开发的出现,IT项目的管理学以及软件开法方法论也随之派生而出。尽管这些方法的 研究到目前已经到了天花乱坠,非常复杂的程度,但其商务需求却非常简单明了, 那就是降低风险, 减少成本,缩短时间。 我知道现在大学的MBA课程里几乎都有IT项目的管理,尽管本人对项目管理 几乎是一窍不通。仔细一想,IT项目的管理实际上是对人的管理。 那么谁对管理人最有方呢? 纵观这近一百年的历史,我认为毛泽东是当之无愧的领导者。所以建议那些IT项目的经理(以及准 经理)应熟读雄文五卷。 如果经理们太忙没有时间,至少要认真学习和。这样的结果,决不亚于 读个MBA. 同时也建议各大学把毛泽东思想加进MBA,作为必修课. 还要建议公司招经理面试时, 一定要问’人的正确思想是从哪里来的?’

基于对商务需求的理解,有人把软件开发的过程分为两类. 第一类叫预测法 (Predictive planning), 另一种叫应变法 (Adaptive planning). 预测法实际上是假设在做开发前需求已经确定了, 不会 再变了, 因此这个项目的所需的时间和经费就可以预测. 比如 瀑布式 (Waterfall) 过程就是这样. 由于认定需求不变, 接下来的设计, 编程, 测试也不再变. 整个开发过程就顺得象水流瀑布一样, 从头到尾一气哈成, 不需要重复. 软件开发走到今天, 大多数人都不认同预测法了. 但我认为有 两种人还在用预测法. 一种是执迷不悟, 根本不懂软件开发的傻瓜. 还有一种是聪明绝顶,有先知 先觉的天才. 如果你认同大智若愚的话, 那就只有剩下一种人了.

 
[首页]   [作文]   [翻译]   [随笔]   [本站]   [English]
 
Creative Commons License
Except where otherwise noted, this site is licensed
under a Creative Commons Attribution-NonCommercial 2.5 License
.