关于软件工程的反思

来源:互联网 发布:瑞士留学知乎 编辑:程序博客网 时间:2024/04/30 15:36
一、思想各不相同,行为却是一样的

  中国的程序员多数贫寒而有大志,看到国产软件行业凋敝,拯救中国软件业的愿望便由此生根发芽。但是,我越做就越失望。

  为什么?因为胡说八道胡乱指挥“项目经理”的太多,有寡不敌众的感觉吗?不是的。胡乱指挥的人的确多,什么中文软件,什么自主知识产权,什么扶持软件产业,什么硅谷梦想,的确寡不敌众。

  但这根本不重要!反过来,即使这个社会人人都是比尔.盖茨,安迪.葛洛夫,对中国的软件业的繁荣也于事无补!

  对“振兴民族软件业,知识救国”的失望,是因为我越来越意识到:人的思想和行为是两回事,人的思想可以有很大的差别,但他们的行动都是一样的。

  去买麦当劳,您很想守秩序排队,还想隔得很开,不要身贴身——身贴身完全没必要。但如果是那样,您就一直远远站着吧,所有人都以为您只是在等人。

  排队的好处他们不懂吗?可能不懂,但是即使懂,好象您自己就懂,但您也照样得挤进去。不挤不得食。您和他们的思想境界或许有巨大的差异,但身历其境,您的行动跟他们的都是一样的。你或许曾经迟疑,那你就已经吃亏。

  相信每个读者都遇到过��“项目经理”们都宣称要在项目实施软件工程。什么ISO90002,CMM,RUP。但行动上呢?他们的真实去做的是其实是很小的,仍然是无文挡,无控制,无注释的“三无产品”。如果帮助他们更彻底地履行他们的誓言,好意告诉他们,瀑布式的做法风险很大,软件需求必须定义清楚,团队必须沟通,他们就会拿出合同说时间不等人过期要罚款。

  说,可以有很多套;做,则只有一套。思想上,大家可以天马行空,各执己见,乱说一通,然后一口咬定——不要紧,没代价。但是,如果付诸行动,则要承受扎扎实实的损失。口头上我们势必要跟对手过不去,但行动上我们很难跟自己的钱包过不去。结果,在一定的约束条件下,可观察的人的行为都是非常相近的,至少比起他们内心想法的差异而言是如此。正因如是,思想上的伪劣商品,比实物世界的伪劣商品多得多!

  二、“做了什么”有别于“为什么那么做”

  我们永远不知道BILL.GATES那么作为什么便获得了成功,说“不知道”,那是因为很多失败的人也是那么做的。有人想模仿微软的成功经验,但无数失败的人也是那么做的,而另外很多不那么做的人却也同样取得了成功。

  我们不知道微软的开发方法为什么能使得WINDOWS独步天下?是霸权,是垄断,是市场的需求?我们不知道。我们只知道,只有那样,开发的成本才会最低,开发的质量才会很高。

  贫穷的印度为什么会有那么好的软件工程和软件管理?是他们会英语,是政府扶持,是劳动力便宜?我们不知道。我们只知道,在那样条件下,要靠软件来发展国民经济,那么CMM是软件出口的前提,好的软件管理是公司赚取利润的保证。至于这些不懂软件技术的印度项目经理为什么会发现并坚持这个选择,我们不知道。

  应该开诚布公地告诉读者:软件工程不知道怎样把一个好的idea变成举世闻名的软件。要成功,那么运气、努力和经验,市场环境,就缺一不可,但是,软件工程既没有兴趣、也没有能力逐一掂量这些因素、逐一对这些因素论功行赏。软件工程只是指出一个软件企业要符合什么条件才更有机会在竞争中生存和发展。但怎样才能达到这个点,软件工程就束手无策,无言以答。

  软件工程是解释软件开发过程行为的经验科学。它解释的对象是可观察的企业的行为,而不是不可观察的企业管理人员的动机、愿望、理想、观点和感受。软件工程只是解释——也仅能解释——一个成功的软件企业“做了什么”,而无法解释——也没有兴趣解释——一个成功的软件企业“怎么会这么做了”。

  这类似于我们知道一个奥运冠军是怎样的,但这种知识跟如何才能训练出一个奥运冠军是两回事;我们知道谁谁谁是诺贝尔奖得主,但这有别于要我们培养一个诺贝尔得主;我们知道一个健康、聪明的男婴是怎样的,但如何才能生育一个健康、聪明的男婴,则是另外一回事。

  三、通向繁荣之路漫漫

  一个在大学教书的软件工程教授的言论,与他如果担任的项目经理和软件企业老板时的行为,是有很大不同的。孰好孰坏不是我们这里讨论的目的,我只是指出人们的行为依赖于他所处的约束条件,而与他的或许五花八门的观点和理想没有多大的关系。

  不良的软件企业管理为什么会施行?这往往是在特定约束条件下,人们角逐自身利益的结果。他们要那样做,才去寻找自圆其说的理由,而不是他们先找到合理的理论后,才根据这个理论来行事。我们常常会颠倒了前后因果。是企业管理者想赶工期,才选择了“三无开发”,而不是有了项目经理有了“三无开发”才说服老板加快进度。不是软件企业的老板不知道“瀑布式开发”风险巨大才搞瀑布式开发,而是他们为了生计必须这样做,才选中了那些早就被彻底驳倒的理论和至今一知半解的项目管理者。不是BILL.GATES精通了软件工程才发财,而是他发了财后,软件专家才出来说:“那就是软件工程,象他那样就能发财。”

  Rational公司的软件工具盛行于世界,还邀请微软ORACLE来助阵,但我们的项目经理们听进去了他多少?

  大批的专家去印度,爱尔兰,以色列,去学习考察软件企业的管理,但是我们软件产业作坊式生产今天改观了多少?

  华为,金碟邀请IBM,微软来出谋划策,即使这些计谋都是正确的,但那也不比建议搞定信息产业部来的更好。人在江湖,知易行难!

  我们绝大多数人都懂得牛顿定律,但这一知识除了帮助我们更好地理解世界外,并没有对我们的个人生活产生多大的帮助。我们走路尚且没有跌倒,我们抛起儿子尚且不会忘记接住,恐怕不能归功于对牛顿定律的认识。是的,牛顿定律在工程技术方面极大地改善了我们的生活,但那是因为我们有足够的资源,可供反复试验的缘故。

  但软件工程却没有那么幸运。软件工程给我们带来了前所未有的智力上的乐趣,我们一旦掌握了软件工程的基本原理,我们就能象走路、骑车、游泳、说话一样自然地运用,用来理解软件开发中的现象。但我们每个企业的发展的顺流逆流,却似乎有着它本来的走向。

  在另一方面,人们却不能象做物理试验那样廉价地在一个企业中做软件工程的试验。一个软件企业管理理念的成败,往往不取决于它理论上是否成立,而只能取决于企业家、政治家、程序员与经理、官员,客户的共同博弈。

  软件工程能帮多大忙?

  软件工程确实提高了个人在软件能力上的洞察力,但它无力支配各种现实力量的角逐。

原创粉丝点击