`
robbin
  • 浏览: 4825887 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
377a9ecd-1ea1-34ac-9530-9daa53bb2a7b
robbin谈管理
浏览量:137460
社区版块
存档分类
最新评论

驳:程序员和建筑工人

阅读更多
number017 写道
不知哪时在哪里看到一个软件工程和建筑工程的对比...

前日吃饭的时候无聊,便提到这个:"你看,对面那栋漂亮的楼房。把他们建起来的是一群建筑工人,有些甚至被我们称为民工(这里,无歧视);而我们做软件的,大多受过高等教育,甚至很多被成为精英,为什么还把软件搞得这么糟糕。自从1968年软件危机第一次被提出以来,还长期存在。这是为什么呢?"

旁边的JJ说话了:"因为建筑师叫那些民工怎么做,他们就怎么做。而大多数软件开发人员都很有个性、很有想法,所以困难重重。"

偶抬杠:"这么说,去招一批民工来做软件,就可以解决这个问题?"

JJ无语,但还是很坚持。

旁边的猥琐男见状,正是提出自己高论的好时机:"这说明了建筑工程发展得很好了,而软件工程还没到达那个境界。这是一个长期、持续、抗争的过程,不过有一天会好起来的。"

嗯...科学的乐观主义者,他还在想着银弹。

偶想想,一位大师上课的时候说过:"软件本身是技术,但带着与生俱来的艺术性。"很多东西具有两面性,可以拿摄影来对比:一般人认为摄影是艺术,但它带有与生俱来的技术性。这大概不算矛盾,但却是统一体。

大师的回答着实很能回到这个问题:艺术能有完美的吗?所以软件也不能。你可以把软件的一面--技术做得很好,用很合理的技术,高超的算法;但是你永远不能把软件的另外一面--艺术做到极致。难道这就是传说中的哲学?

Oh,My God!!!我怎么会提起哲学?


这种类比没有什么意思。

你怎么知道一个外表看起来很漂亮的building,里面就不是充满各种各样问题的呢?现在豆腐渣工程,盖的很糟糕的小区比比皆是。买房子一不小心买到质量残次的楼盘,然后打官司的,你随便找到房产论坛去看看吧,多到令你吃惊的地步。

开发软件也是一样的,你让美工做个漂亮的首页,然后给客户demo一下,唬的客户眼花缭乱的,那还不是小意思的事情吗?他怎么可能知道你里面的代码全部都是垃圾?

楼房,你不搬到里面住个几年,就光在外面看着光鲜,贸贸然下定论,说这个building有多好多好,就和你给客户demo一下,那都是一个意思。所不同的地方在于,楼房要盖好了才能demo,但是软件只要美工做几个页面就可以demo了,所以楼房不会离谱的太狠而已。
分享到:
评论
3 楼 JeffreyHsu 2006-10-19  
我认为软件工程和土木工程的区别根本所在是:
无论什么样的土木建筑都受到一个终极定律的约束,就是基本的物理定律,所有的建筑都必须符合力学要求,你没办法把楼盖得太离谱,只要不是设计人员水平太次,盖出来的楼没住人就倒了,质量差点就差点基本上还是能用的

但是软件工程不一样,程序的随意性,同样的功能实现代码可以写成任何样子,虽然说现在有了设计模式,框架的约束,但是这只是“软约束”,你不遵守,天也不会塌,地也不会陷,可是盖房子就不行了,你不按照客观规律建造,楼就会倒就是会死人。所以程序外观看起来很光鲜,可里面代码结构就是一坨。还有robbin说的豆腐渣工程也不很适用软件,造成豆腐渣工程大部分原因都是用料而不是设计,这是故意人为因素。而软件里的豆腐渣工程都是设计问题,而不是“用料”。写代码有什么用料?给他换台好点的电脑?

而且前面说的,建筑项目里客户的需求相对软件来讲基本都是明确合理的,因为必须要遵守客观规律和常识,这个是共同认同的,可是软件业的就不是这样了,因为不了解技术,客户可能会提出各种各样不合理的需求,而同样的功能实现方案又可能多种多样,这种随意性不是土木工程能比的
当然我不是说盖栋楼就很容易,但是土木工程流程化,模式化已经非常成熟标准,因为都受到客观规律的制约,基本上大家都认同就是最佳方案,除非有一天地心引力改变方向了
而软件业还远没有达到这样的程度,也可能永远达不到,因为总是有更好的方案被提出

计算机系统的终极原理是0和1,现在CPU都64位了,这个终极原理有多少种可能性?

随便涂鸦,语无伦次,欢迎拍砖
2 楼 denis 2006-10-19  
楼房在盖之前都会有日景、夜景效果图,同时楼房内部乃至整体也会有框架结构图、配电图等各种视图,也就是给客户看的demo,甚至比软件所体现的demo更接近实际,更直观,robbin用这个例子说明不了问题。

我首先声明,我不完全赞同楼主的观点,但是更不赞同robbin的观点。
1、建筑业比软件业的成熟度高的多。从建筑产业链的细分程度、包括就业人数就可见一斑。附着在这个产业链上的分支那就更多了。一句话,发展成熟度高的行业的进入门槛就相对低,竞争就更激烈,竞争能带给终端消费者的基本都是好处。

2、建筑业所关注的问题领域比软件要窄,换句大白话,就是建筑所关注的没软件那么多(这里我要声明的是:建筑的关注点比软件少不代表建筑比软件简单,相反,建筑很复杂,但是绝大多数关注点都能被现有的产业结构所覆盖),自然不确定或者比较抽象难以描述的就自然少的多,风险与隐患能更早的被规避和发现。

3、建筑业的沟通成本、认知成本比软件业低。大家都知道,完成一个复杂的系统不可能是一个人的事,需要多人协作才能完成,沟通协作是成功的关键因素之一。完成一个建筑需要协作配合的团队比软件只多不少,不过他们之间的协作沟通都有比较约定俗成,被大家所接受的方法、规则、沟通载体。也就是游戏规则比软件健全。同时,建筑是看得见,摸的着的东西。对客户、对监理而言认知成本也比软件要低的多,对于工程进度方面,大家能更容易有共识。

4、软件业不存在银弹。同样,建筑业也不存在银弹。不过建筑业天生的比较适合(规划分析、设计、施工)这样的解决过程。规划的关注规划,设计的只搞设计,施工的需要做的就是照图施工就可以了,每种角色都分的很清楚,而且之间能很好的结合。软件业就不适合这种方式了。

5、建筑业就没问题了么?建筑业的最大问题是体制法制不健全。说白了,不是技术问题,而是社会问题。预算100元能实实在在用在楼上的有30元就已经是很好的建筑了。我可以负责任的讲,99%建筑工程都会有工程回扣问题,而且数量大的惊人。尤其是市政工程更甚。而产生质量问题的楼房往往不是建设单位的能力问题,而是投资单位渎职或监理单位监管不力所造成,这里为什么渎职或者监管不力就不说原因了,实在是太多了,说不完。

以上种种,不是谁优谁劣,更不是民工程序员的问题。我相信软件业也会越来越成熟,游戏规则也会越来越完善,产业链也会更长更细。带给客户的是风险更低,成本更低的产品。

1 楼 mmmagice 2006-10-19  
哈哈,又意思的论题~

相关推荐

Global site tag (gtag.js) - Google Analytics