建房子和写软件

建筑一般只能修建一次,如果中间出现错误,唯一的办法应该就是炸掉重新来过。软件却不同,今天一个PATCH ,明天一个补丁,大家都很习惯。

我有时会想,为什么人们不能像修建房子一样的创造软件?
最初的理解是因为软件面临的问题很多:操作系统多样,开发工具繁多,人员水平不尽相同,等等。但仔细想来,发现全部不对。建筑要面临的问题要远胜于软件行业。他们会遇到沙土、淤泥、海水、沟壑等地形;会遇到潮湿、干旱、大风等天气;会因为预算而拿不到足够多的钢筋水泥;大部分施工人员都不识字等等。但是奇怪的是,普遍来说,建筑的质量要比软件的口碑好得多。

在一般的软件开发项目管理理论中,会把 时间,成本,质量,功能作为最基本的四个变量来进行权衡,以说明质量的低劣,大部分原因是因为时间很紧,成本不足,功能太多造成。

事实并非如此,有很多项目,耗资巨大,周期很长,功能未必很复杂,但实施结果就是很差。往往是实施第一个版本,发现问题很多。那么开始第二期,改正了一些问题,带来更多的问题。为了填补第二期的问题,开始了漫长的第三期... 如此循环往复,直到花光了所有的预算,烦死所有的用户。

后来发现,这些项目之所以如此失败,大部分都是因为一个共同的原因:没有正确的架构设计。现在很多人在进行软件开发时,都是号称有架构设计的。尤其是在J2ee盛行的年代,但凡有规模的系统集成公司,都会说,我们使用WEBSPHERE(weblogic) + oracle (DB2)! 而连刚出校门的学生,也会说:我们的架构是Struts + Spring + Hibernate! 很让人无语。

软件架构设计的缺乏体现在两个方面:
第一个是对软件架构设计必要性的认识不足。在建筑业内,大部分人都知道,一个建筑在施工之前,是需要请很专业的人来进行设计的。但是在软件行业,这样的行为常会受到质疑。老板认为:我们的开发人员都是干什么吃的?开发人员会认为,我的技术很好,为什么要请人来设计,他懂什么?
第二是能够进行架构设计人才的稀缺,真的是很稀缺。
软件技术是复杂的,知识更新频繁的,也是枯燥的。这三个特点赶走了很多人。
同时在国内,从事技术工作也是贫穷的,这根稻草压死更多的人。所以大部分脑子清楚,学历还不错,技术熟练的人都改行做了项目经理或者技术管理者。

一切没有成熟的事物都是混沌和模糊的,没有天和地,没有光和火,没有规则和次序。自计算机出现到现在只有62年,软件行业真的还很年轻。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值