[转]为什么我们不用软件工程?软件工程能帮多大忙?
软件工程能帮多大忙?

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

一、思想各不相同,行为却是一样的

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

三、通向繁荣之路漫漫

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

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

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

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

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

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

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

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

软件工程能帮多大忙?

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

转载于:https://www.cnblogs.com/hilite/articles/235758.html

[转]为什么我们不用软件工程?软件工程能帮多大忙?相关推荐

  1. 0基础小白都说简单!10秒做好酷炫图表,可视化工具帮了大忙

    0基础小白,10秒做好酷炫图表,动态可视化工具帮了大忙. 优秀的数据可视化,选择正确的图表类型是第一步. 再酷炫,再黑科技的可视化大屏,不也是一个个图表组成的吗? 图表制作,其实要说难也不算太难,但是 ...

  2. 用几小时,零基础也能学会可视化大屏,这百张模板帮了大忙

    几小时,零基础,不会代码也能学会可视化大屏,是不是觉得活在梦里? 并不是,因为这100多张模板帮了大忙 可视化现在为什么可以这么火?甚至很多地方都能看见? 尤其是IT人的职场,工作展示.领导汇报,动不 ...

  3. 华为手机7个超实用的功能,关键时刻帮你大忙,赶紧开启吧!

    权威调查显示,日常使用手机的用户其实连手机30%的功能都没开启,造成了万元机不值万元机的错觉.所以,如果你正在使用华为手机,这7个超实用的功能一定要开启,关键时刻帮你大忙,赶紧了解一下吧. 1.后台进 ...

  4. python 软件工程,软件工程实践之 django/python | 码农网

    软件工程实践系列文章, 会着重讲述实际的工程项目中是如何协作开发软件的. 本文主要介绍了 django/python 系列的 工具 链. outline 本文包括以下内容: outline djang ...

  5. 软件工程-软件工程基本概念

    知识要点: 软件危机的概念.原因以及消除途径: 软件工程的概念.基本原理.方法学: 软件生命周期,主要软件过程的特点. 一.软件危机的定义:软件开发和维护过程中所遇到的一系列严重问题: 二.软件危机产 ...

  6. 初识软件工程-软件工程的产生与发展

    软件开发面临的挑战 软件工程的发展历程 史前阶段 小作坊式开发. 诞生 1968年,北大西洋公约组织(NATO)召开国际会议,提出"软件工程"概览和术语. 发展过程 1968 - ...

  7. 软件工程-软件工程概述

    一.软件 定义:计算机系统中的程序及其文档 程序:计算任务的处理对象和处理规则的描述 文档:为了便于了解程序所需的阐明性资料 特点: 软件是无形的.不可见的逻辑实体 软件是设计开发的,而不是生产制造的 ...

  8. [软件工程] 软件工程概念

    软件工程概念 一.软件工程的介绍 (一)软件工程的两个定义 (二)软件工程的发展已经历了四个重要阶段: 1.第一代软件工程 - 传统的软件工程 2.第二代软件工程 - 对象工程 3.第三代软件工程 - ...

  9. 软件工程--软件工程概述

    软件工程概述 什么是软件? 软件=计算机程序+数据+有关的文档资料. 软件危机 软件危机? 在计算机软件的开发和维护过程中所遇到的一系列严重问题. 产生软件危机的原因? 与软件本身的特点有关. 软件开 ...

最新文章

  1. 参加拥抱HTML5大会及TOPGEEK社区活动纪实
  2. 欢迎参加城市大脑与智慧城市前沿趋势 主题论坛 |未来科技大讲堂 第12期
  3. bgi::detail::content用法的测试程序
  4. html GPS坐标实现,JavaScript 实现GPS坐标点距离计算(两个经/纬度间的距离计算)...
  5. lvs mysql 端口_LVS配置及多端口服务配置
  6. 如何将日志配置文件放入到Apollo配置中心并支持热更新
  7. 使用SQL Server Management Studio 创建数据库备份作业
  8. Reading query string values in JavaScript
  9. 第一台全自动电子计算机,关于世界上第一台电子计算机ENIAC的叙述错误的是() senny全自动微电脑水位控制仪...
  10. pgAdmin III 导出excel数据
  11. 半监督学习方法:协同训练
  12. 【ACO MTSP】基于matlab粒子群优化蚁群算法求解多旅行商问题【含Matlab源码 1616期】
  13. JAVA班车项目_JavaBooks/班车服务.md at master · Aim-Tric/JavaBooks · GitHub
  14. 基督-神[上帝]的道,真理的本真归回
  15. 配置OpenWRTnbsp;校园网实现amp;nbsp…
  16. Myeclipse报错:The word is not correctly spelled
  17. 渐进式web应用程序_为什么渐进式Web应用程序很棒,以及如何构建一个
  18. HDFS物理块存储大小
  19. Photoshop CS2 视频教程-PS锁定图层(转)
  20. 别争了,Excel和Access都靠边,WPS也退,划时代电子表格早已出现

热门文章

  1. Java虚拟机(JVM)的内存划分
  2. JAX-RS客户端WebClient的使用教程
  3. 单片机最小系统制作记录
  4. ELF格式文件特点的简单说明
  5. eigen3.3.8帮助文档下载 chm_MAXHUB文档v1.10.1-MAXHUB文档电脑版下载
  6. 4.1.6 OS之文件的基本操作原理(创建、删除、打开、关闭、读-写)
  7. makefile文件中的依赖关系理解
  8. Cpp 对象模型探索 / new 运算符内部调用过程分析
  9. 启明云端分享|sigmastar SSD201/ssd202核心板升级参考,可实现开机自动从 SD 卡升级固件或开机自动从 SD 卡烧录 MAC 地址
  10. 判别测试字段怎么算它的位数_心理测试 | 成人依恋量表-亲密关系经历量表ECR...