软件工程的历史虽然说只有短短的四十多年时间 (1968 年提出), 但是软件工程的主体 – 人类 – 已经出现在世界上好些年了。 人还是那些人,事儿还是那些事儿, 好的,坏的,可笑的模式同样会出现。 我看到同学们在分析以前学生的项目的时候(link1, link2), 我不禁想起一个相声 – 画扇面。 我们不妨拿它和一些不靠谱的软件项目做个比较:
画扇面 | 做软件项目 |
相声是一门说学逗唱的艺术…
甲: 我刚买了一把纸扇 乙: 哦, 拿来看看,一把白纸扇… 上面空空如也太可惜,拿不出手啊。 如果能画上画就更好了。 我这几天也没什么事, 我就给你免费画画! | 软件工程讲究的是需求分析, 项目管理, 开发, 测试和维护…
甲: 我觉得咱们团队项目做一个好用的小工具就好了, 我已经做好了一个原型。 乙: 这想法固然好, 但是我们这么些个编程高手, 就做这么小的一个工具, 未免拿不出手。我们要把它搞大! |
甲: 太好了,您能画什么? 乙: 画个美女图怎么样? 美女出浴图, 或美女春游图都可以考虑。
甲: 我激动ing… | 甲: 那我们做什么呢? 乙: 我们扩展一下, 把所有工具都实现了,一统天下。几种工具结合起来!
甲: 我激动ing… |
过了几天, 甲问: 我那美女画好了么?
乙: 喔,美女, 画好了!你看这美女的小脸蛋儿, 眼睛稍稍大了点… 但是, 我不如给你改成张飞算了!都是人体, 我可以很快重构一下, 我画张飞最拿手了,过几天就好。 | 过了几星期…
甲: 通过调研才发现, 这么多工具都有自己独特的需求, 不同需求互相冲突怎么办? 乙: 我们可以做成一个通用的工具,统一需求, 解决用户从头到尾的问题。 |
过了几天,
甲问: 我那张飞? 乙:张飞?! 喔对的, 张飞也画得差不多了, 嗯, 你看这张飞的胡子, 这身躯… 是粗了点… 要不咱们画成山水,这张飞马上就可以变成一块怪石! | 过了几周…
甲: 通用的工具听上去很好, 但是太通用了, 不好掌握,我们到底要实现哪些具体功能呢? 乙: 我们可以做成一个开发式的平台!这样所有人都可以做一个插件, 来实现这个平台的一些功能!而且别人还可以用我们这一个通用的框架开发任意别的软件。 甲: 我激动ing… |
过了几天, 甲问: 我那山水?
乙: 啊,山水… 我也画好了。 你看那巨石,很巨大, 很给力吧… 构图有点那啥… 容我再改改。 甲: 您什么时候画好? 这夏天都快过了。 乙: 要不然这样, 我把扇面全涂黑了, 你再找人往上写金字好了! | 过了几周…
甲问: 项目发布时间到了, 我们的平台还没有,工具还没连起来,怎么办? 乙: 咱们可以把项目开源到网上, 另外也许有很多开源的朋友闲的没事, 可以给我们的代码写一些注释等等。这是我们对开源运动作的巨大贡献啊。
甲: 咱们太了不起了! |
很多学生学了一些编程语言, 读了一些技术博客, 一般都豪情万丈. 他们做一个项目恨不得展现自己平生所学, 再加上前沿技术, 做一个轰动性的创新。 这固然值得鼓励, 但是经验显示, 这些往往都不能成功。
我们看看成功的例子, 他们是怎么开始的, 例如Linux 刚开始的时候:
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones... (source)
我们还看到管理学大师 Peter Drucker 的忠告 –
Those entrepreneurs who start out with the idea that they'll make it big – and in a hurry – can be guaranteed failure. (source)
解决大问题固然让然感觉美妙, 但是把小问题真正解决好, 也不容易, 我们回头看看博客园, csdn 等IT 人士云集的网站, 每天都有很多巨大的新想法、惊世骇俗的评论冒出来, 争论美女/张飞/巨石的重构问题, 对一些通用的框架/平台发出一些人云亦云的评论, 等等。 这些文字, 大多数会转化为墨水, 把扇面涂黑, 让后人在上面写下金字。
原文在这里也发表了
[ http://www.cnblogs.com/xinz/archive/2011/03/13/1982585.html ]
[为了保护环境, 博客留言中只有"顶" 的一律删除]