当软件失去灵魂
当软件失去灵魂
记得有这么一句广告词:“软件以用为主”。这句广告词的背后传达了时下人们对于软件的一种普遍的认识和价值取向:软件是而且仅是一种工具。不仅软件的普通用户或者高级用户,就算是软件供应商也对软件持这样一种价值观。功用或者功能似乎成了软件的全部。且看我们在做软件需求的时候,重中之重就是对功能需求的完整把握。衡量一个系统或者软件的成功与否的唯一标准就是是否全部实现了用户的需求,实现需求所要的功能成了软件的最高目标。这一标准作为唯一的线索,不仅在贯穿在开发的过程中,甚至贯穿了软件的整个生命周期中。功用性的要求成了悬在开发人员和软件公司头顶的一把斯巴达克之剑,而其他的因素似乎成了一种可有可无的或者并不是特别重要的因素,程序员们每天就背负着这样的十字架生活着。国外的软件在这方面情况可能还不是很严重,然而国产的软件和国产的程序员们似乎无一例外能够逃脱这个宿命的诅咒。
难道软件的价值就仅仅是这些吗?软件是否应该有自己的灵魂呢?软件的灵魂应该是什么呢?当一个软件没有或者失去灵魂又会是什么呢?如果软件应该有自己的灵魂,那么应该创造一种什么样的灵魂呢?如果软件应该有自己的灵魂,那么应该如何来体现呢?
我想所有热爱软件的人都会承认其实软件系统是有着鲜活的生命的。也许你还记得大学一本教程里这样的一句话:“如果电脑是躯体,那么软件就是躯体里流动的血液。”正是因为有了软件,计算机的世界里才会如此绚烂多姿,虚拟的世界才会如此引人入胜。既然软件是有生命的,如果这个生命偏偏是没有灵魂的,那么这又是怎样的一种生命呢?是鬼片里的听话的僵尸吗?还是阿拉丁神灯里受咒语驱驭的那个有着巨大法力的魔鬼呢?如果将软件比喻成一个女人,一个非常迷人而性感的女人,(我想这个比喻对于程序员而言是合适的,中国大部分都是男性程序员,有的爱编程的人就经常将软件比喻为自己的老婆)然而她却没有一点自己的思想,也就是说没有内在美,那么作为程序员的我们是否还会喜欢甚至痴迷的喜欢和执著的追求她呢?我想即使是埃及艳后您也不会喜欢她,也许和她发生一夜情,你还是十分欢喜的。(我说这个比喻是受当前红的发紫的、中央电视台百家讲坛的名角易中天教授讲述美学的一本书的启发)。既然如此我想你肯定会承认软件应该是有灵魂的,这个灵魂不是别的,就是软件本身所体现出来的独特的思想。不过你也可以不承认软件应该有自己的灵魂,譬如男人都喜欢漂亮的女人,但喜欢不一定都爱女人,就如有专门玩弄女人的男人,这个世界也觉得存在专门玩弄软件的程序员。性变态的还喜欢奸尸,在软件的世界里是否有这样的程序员呢?我不知道。强奸一个没有灵魂的软件我想应该是在没有多少乐趣。然而我们的程序员生活也许或多或少都陷入这样的令人作呕的境地里,也许是我们觉醒的太少而浑不自知罢了。我这样说也许有些夸张,如果招致您的鸡蛋,我想我是不会躲避的。
且看一个典型的软件过程,一个完全没有精神生活的软件过程。一个销售人员在一番挣扎和争斗以后,在一群支持和决策人员的群策群力之下,某个公司终于在众多的投标者中脱颖而出了,项目拿到了,合同签订了,第一笔启动资金到帐了,软件开始在一个本不该死的企业里实施了,公司上下一片喜悦,项目负责人马上确定了,项目小组马上成立了,系统分析人员马上赶赴企业开始进行需求调研了,需求报告很快写好了,概要设计马上写好了,详细设计马上搞定了(或者就在原来的设计上改改就好了),任务迅速分配下去,程序员们马上就如上了发条的时钟开始coding了,软件终于如期写完了(国内的软件项目好像从来没有这样的事),试运行结束了,项目结束了,最后一笔款打回了,又可以开庆功宴了。这就是我们的生活。没有人会去想一个软件或者一个项目应该有什么样的灵魂,我们只需要制造一堆肉交付给用户就可以了。也许有人会说软件开发的过程中实在太忙,根本没有时间去想这件事情,譬如一个患了性饥渴的男人或者女人,眼里只有白花花的一团,根本就没有时间去想她或者他是否有内在美一样。
前几天在博客园看到几篇文章,讨论中国人不重视技术的问题,从某个侧面来说他们如卢彦先生、Sir Torrylee讲的都很有道理,甚至很有见地,然而我总觉得观念决定生活,而境界决定质量。我们的程序员是很重视技术的,然而这个技术我觉得应该打个引号,在我的理解中这个技术应该是技巧,我常常听人说解决了某个问题是如何如何的兴奋,如何如何的具有快感,仿佛一边写程序一边手淫一样,对于技巧的追求确实是可以给我们以某种快感,然而现在让我回忆起当年的这样的快乐,我觉得简直就是在对软件意淫。对于所谓技术的追求充其量不过是对奇巧淫技的追求。我觉得对于技术的追求应该是在创新上面,而绝对不是对现有技术的掌握上。譬如炒菜,如果你从来没有炒过菜,突然一下可以煎鱼了(比如我到现在都不会煎鱼,曾经有一次煎到只剩下鱼刺,以后再也不敢煎鱼了),当然是可以乐不可支,然而煎鱼是一件多么古老的技术,也许将鱼煎的特别应该算一门技术吧。也许正是因为对所谓技术的狂热使我们失去了思考的兴趣,而用户的眼球有时候也往往导致我们设计软件的偏差,如会花费大量的时间将界面做的十分华丽,表面看起来真的如一个贵妇人一样,受水平和审美能力的限制,软件的界面往往搞的花里胡哨,就像一个在身上胡乱穿衣服的女孩一样,自己也觉得很美,而旁人或许就会作呕。软件的表代替了软件的里,这是一件多么可悲的事情。如果这个软件由你亲手设计和实现,不知道你心里会是什么滋味。
我常常很羡慕国外的作者对于某个技术的享受的心情。在C++的经典的著作中,我们能发现,他们将C++技术当作一种生活,在COM技术的经典著作里,也常常将COM技术比喻为COM生活。我很惭愧,我总在想为什么我不能有那种享受技术的心情,为什么我不能达到那样的境界?日复一日,年复一年,我是在度过那样的生活!!是在重复过去的所有生活!!有的时一个人的时候直觉一片酸心。
那么我们应该怎么做呢?我提出几点看法供大家扔鸡蛋。
1. 首先每个人都要提高自己的情趣,提高对软件的情趣。虽然
2. 充分了解你的软件的行业特征。每一种软件都会为一种行业提供一个解决方案,特别是管理系统软件,其特征更是十分的明显。如果不了解行业的特征,要做出符合行业的东西简直是胡扯,然而我经常听有的程序员说,当我做完某个系统以后我就成了那个行业的专家了,我觉得那简直是在放屁。不管哪个行业都存在其博大精深的地方。如果做完一个系统就成了专家,那全世界的专家比不是专家的都多。
3. 充分提炼你的软件体现出来的管理思想。目前存在很多的管理系统,比如ERP、MRP、MIS、PDM、PLM。每一种管理软件实质上都是建立在一整套哲学观念之上的。如果对这些管理思想没有一个很好的认识,做出来的软件也绝对不会深刻的体现出这些思想,可怕噩梦就是管理软件没有管理思想,其结果也就是一对软件功能的堆砌,有什么灵魂可言呢?
爱你的软件就给她一颗灵魂,她会因为有灵魂而更可爱!