`
number017
  • 浏览: 32172 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

程序员和建筑工人

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

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

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

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

JJ无语,但还是很坚持。

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

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

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

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

Oh,My God!!!我怎么会提起哲学?
分享到:
评论
14 楼 robbin 2006-10-17  
引用
我用这个类比的意思是,在我们看来,软件所存在的问题要比建筑来得多,来得不可救药...而不是仅仅说外表。
现实是,软件中糟糕的软件的比例要比建筑中的"豆腐渣工程"的比例来得高,在我看来是高很多,虽然没有准确的。记得某某人说过"要是这个世界是由程序员制造出来的,那么它将不可居住!"


那只不过因为你从来不关心楼盘,估计也没有自己买房子住,所以才有这种错觉。

软件中糟糕的比例并不比楼盘中的糟糕比例高,你见过没有问题的楼盘吗?不信你去房产论坛泡泡看,连那些获奖的楼盘,照样在论坛被业主痛批,我就没见过没有问题的楼盘。
13 楼 number017 2006-10-17  
ozzzzzz 写道

实际上众多的人谈论软件危机,说1968年就提出的这个问题到现在还没有解决,并且说没有银弹就是这个问题永远不能解决的理论基础。这似乎给我们暗示出,现在我们所要重点解决的问题同1968年的时候完全一样。切实的说,这样的看法是错误。当然我们并不是说1968年出现的问题我们已经解决,而是说今天我们面对的是更加新的问题。或者说新出现的问题的优先级别比1968年那个时候出现的问题优先级别高。

所以我想软件危机的提出,以及宣布没有银弹,更说明了软件的艺术性。
所以我们想把软件工程化的想法最终会出现很多问题,就像我们现在碰到的许多问题一样。
个人觉得XP倒是很多考虑了软件的艺术性这一面...
即将跑题
12 楼 number017 2006-10-17  
robbin 写道
number017 写道
不知哪时在哪里看到一个软件工程和建筑工程的对比...

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

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

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

JJ无语,但还是很坚持。

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

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

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

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

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


这种类比没有什么意思。

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

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

楼房,你不搬到里面住个几年,就光在外面看着光鲜,贸贸然下定论,说这个building有多好多好,就和你给客户demo一下,那都是一个意思。所不同的地方在于,楼房要盖好了才能demo,但是软件只要美工做几个页面就可以demo了,所以楼房不会离谱的太狠而已。


我用这个类比的意思是,在我们看来,软件所存在的问题要比建筑来得多,来得不可救药...而不是仅仅说外表。
现实是,软件中糟糕的软件的比例要比建筑中的"豆腐渣工程"的比例来得高,在我看来是高很多,虽然没有准确的。记得某某人说过"要是这个世界是由程序员制造出来的,那么它将不可居住!"
11 楼 ozzzzzz 2006-10-17  
number017 写道
不知哪时在哪里看到一个软件工程和建筑工程的对比...

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

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

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

JJ无语,但还是很坚持。

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

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

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

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

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

实际上众多的人谈论软件危机,说1968年就提出的这个问题到现在还没有解决,并且说没有银弹就是这个问题永远不能解决的理论基础。这似乎给我们暗示出,现在我们所要重点解决的问题同1968年的时候完全一样。切实的说,这样的看法是错误。当然我们并不是说1968年出现的问题我们已经解决,而是说今天我们面对的是更加新的问题。或者说新出现的问题的优先级别比1968年那个时候出现的问题优先级别高。
10 楼 buaawhl 2006-10-16  

条件的优先级。

用一个规则定义。
老实,优先级 10
听话,优先级 20

如果优先级,就用第一个条件。

需求矛盾,程序员要提出来,帮助客户理解需求。

100% 质量无法保证的。只能无限接近。
9 楼 axgle 2006-10-16  
“记住,布利奇特,”女主人对新来的女仆说,“我将要求你两件事:老实,听话。”
“是,夫人。”布利奇特回答道,“如果您让我告诉客人您不在家,而事实上并不是这样,那我该怎么办?要老实说,还是要听话?”
--------------------------------------
上面的笑话,与“测试”有关,也是"NP完全问题的一个缩影"。
测试要求一:老实
测试要求二:听话
但在某种情况下,要求一和要求二是“矛盾”的----你怎么能保证“全面测试”,同时避免矛盾和不一致?
假如测试要求有100个,这一100个要求任意组合,你怎么能够保证“全面测试”,同时避免矛盾?
看上去和谐一致的要求和命题,其实包含了逻辑上的矛盾。而且这种矛盾并不是很显然的。----软件包含了逻辑,因此免不了遭遇类似这样的逻辑上的困境
8 楼 Julien 2006-10-16  
我想过这个问题,而且有了结论
软件本质上是对变化编程,一个功能完全一样的软件不需要在第二个地方再编一遍,而是通过各种手段复用上去。
但是建筑就不同,完全一样的两个建筑也需要同样的成本和工艺实施两次,但是软件是可以复制的
因此大量讨论里面把建筑工程和软件工程进行类比是完全错误的
7 楼 axgle 2006-10-16  
把软件归结为艺术,与把一切归结为"道"一样,属于比较肤浅或者缺乏精度的解释。如同问:你在哪里?答曰:我在地球上。

而buaawhl提出的“质量要求”论就比“艺术论”来的更深刻与精确一些。虽然是否“准确”还有待考证。

buaawhl提到“测试会非常全面”---但软件中其实也存在所谓的“软件测试测不准原理”的说法。“全面测试在简单情况下是可能的,但非常有限”。由于"NP完全问题"的存在,必然导致“测试无法全面”.(我这里的推论过程可能有误,因为这个推论建立在对"NP完全问题"的理解上)

"NP完全问题"是另外一个有趣的话题了,不过我对NP完全问题也只是初步了解,不便多说,大家感兴趣可以google一下:)
6 楼 robbin 2006-10-16  
number017 写道
不知哪时在哪里看到一个软件工程和建筑工程的对比...

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

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

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

JJ无语,但还是很坚持。

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

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

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

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

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


这种类比没有什么意思。

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

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

楼房,你不搬到里面住个几年,就光在外面看着光鲜,贸贸然下定论,说这个building有多好多好,就和你给客户demo一下,那都是一个意思。所不同的地方在于,楼房要盖好了才能demo,但是软件只要美工做几个页面就可以demo了,所以楼房不会离谱的太狠而已。
5 楼 行为艺术家 2006-10-16  
没有公正的管理者,没有公平的机会,定性也是一句空话,我没有见到谁确实办好过,有时候觉得这是一句空话...
办公司政治在那里都存在的,有些人总能得到容易出效绩的工作,容易出问题的项目则总是给那些没有项目嗅觉的人,真是涝的涝死,旱的旱死.
指望别人都是空话,只能要求自己保持项目嗅觉,以免陷入项目陷阱.
4 楼 buaawhl 2006-10-16  
如果是质量要求很高的软件,价格很高,进度不会很紧,测试会非常全面。
一般公司的做法,让测试人员找开发人员的bug。到年底根据bug的种类和数量评定绩效。
这种做法比较保守,属于不求无功,但求无过。

要最大发挥创造性,就要思考更好的机制。agile, xp, fdd, essensial rup 都是这方面的尝试。
有人发过帖子(tianxinet据此发挥过),即使测试的量化(覆盖率)也不能直接保证质量。

很多关键的东西确实难以量化。不能定量的,只能根据经验定性了。

3 楼 行为艺术家 2006-10-16  
软件的艺术在于对业务的准确把握和信息归纳,优秀的软件相当于一个优秀的工程管理团队,用户只需要知道如何与它交流就能把握住问题本质.
2 楼 行为艺术家 2006-10-16  
楼上的,"软件出错,就要罚钱"不可定量,可执行性不高.
1 楼 buaawhl 2006-10-16  

软件是艺术。谢谢了,兄弟。知音哪。

其实很多行业做到高级水准,都可以上升到艺术。
比如,卖油翁,木工,武术等。
不过,艺术一般是说没有实用价值的。主要是带来精神的愉悦。
软件的创造性确实相对高一些。可以称为创造性工作。

软件做得差,我觉得,主要原因在于要求低,标准低。
当然,用于人命关天的领域中的软件,质量一定是很高的。
但是对于一般的软件来说。软件的标准比其他行业要低。
软件不是建筑。建筑盖得差,要死人的。而且,建筑难以修改。
软件可以反复升级修改。

这就使得人们对程序员的要求也放松了。加上程序本身就是带有创造性的工作,加上人的注意力问题,自制力问题,就容易出错了。
假设有这样的严格执法要求,软件出错,就要罚钱。那么质量就会高起来的。不过这样,也就提高了程序员的门槛,提高了程序员的工资,软件成本也就提高了。

相关推荐

    关于程序员的59条搞笑但却真实无比的编程语录

    语录6:“如果建筑工人像程序员写软件那样盖房子,那第一只飞来的啄木鸟就能毁掉人类文明。”(Gerald Weinberg) 这条语录表明了编程是一项需要细心和周到的工作,程序员需要具备这种技能和责任感。 知识点7:技术...

    Builder2:建筑工人

    Builder2:建筑工人是一款基于C#编程语言开发的软件应用,其主要目标是提供一个高效、易用的工具集,帮助开发者和程序员构建和管理软件项目。C#是一种面向对象的编程语言,由微软公司推出,广泛应用于Windows平台以及...

    行业分类-设备装置-砌砖机器人T型墙体砌筑方法.zip

    在传统的人工砌筑过程中,T型墙体的构建需要精确的测量和复杂的砌砖技巧,耗时且对工人的技能要求高。而砌砖机器人通过精确的计算和自动化操作,能够准确快速地完成此类工作,大大提高了工作效率。 砌砖机器人采用...

    面向对象技术与应用讲义

    建筑工人负责具体的施工任务,而建筑师则是负责规划整个建筑的设计方案。类似地,在软件开发中,初级程序员可能更多地关注于编写代码,而高级工程师或架构师则需要考虑整个系统的架构设计,确保系统能够高效稳定地...

    自我认识与自我评价.doc

    这些因素在某些职业中至关重要,如运动员、建筑工人或医护人员,他们的工作往往需要良好的体能。 其次,职业能力倾向涉及个体的智力和专业技能。能力分为一般能力和特殊能力,一般能力涵盖基本的认知和问题解决能力...

    那些解释起来很蛋疼的IT工种- 我是做网站的.docx

    在家人眼中,程序员(或程序猿/程序媛)可能被误解为传统的工程师,比如建筑工人,或者是简单的电脑操作员。DBA(数据库管理员)可能会被误认为是仓库管理者,而网络设备技术支持则可能被认为是修电脑或电线的人。...

    降噪耳塞分类及使用.docx

    工人们在嘈杂环境中作业,如建筑工地或工厂,使用降噪耳塞能防止噪声导致的听力损失。此外,对于需要集中精神的工作者,如程序员或设计师,降噪耳塞可以帮助他们屏蔽外界干扰,提高工作效率。 总的来说,降噪耳塞的...

    工地上的恶作剧-flash原文件

    它可能包含各种工地元素,如建筑工人、机械设备、安全帽等,并通过Flash的动画功能来展现一系列趣味横生的情节。 总的来说,通过分析这个Flash原文件,我们可以学习到Flash动画的制作流程、ActionScript编程技巧,...

    1-2霍兰德职业代码索引[借鉴].pdf

    例如,会计、行政助理和程序员等。在软件开发中,他们是代码编写者、测试工程师或数据库管理员。 通过霍兰德职业代码,个人可以找到与自己兴趣相符的职业,例如,一个人的兴趣代码为RIA,那么他可能适合牙科技术员...

    自考劳动与社会保障笔记.doc

    体力劳动主要依靠身体力量,如建筑工人。 5. **劳动力资源**:劳动力资源是指一个地区或国家所有可用于工作的能力总和,包括实际在工作和有潜力工作的人口。 6. **经济活动人口(劳动力人口)**:这是指正在工作或...

    Practical UML

    在建设行业中,建筑师与建筑工人之间通过蓝图进行沟通,确保建筑物按照设计图纸准确无误地建造。同理,在软件开发中,UML就像蓝图一样,为整个团队提供了一种通用的语言,确保所有参与方对软件的设计有共同的理解。 ...

    基于YOLOv5 目标检测工地安全帽和禁入危险区域识别系统源码,附 YOLOv5 训练自己的数据集超详细教程

    在建筑工地上,安全帽佩戴和禁止进入危险区域是两个关键的安全规定。通过YOLOv5的目标检测技术,可以实时监控工人的安全帽佩戴情况,及时提醒未戴安全帽的工人。同时,系统还能识别并警告工人进入危险区域,提高工地...

    1进入省溧中-目标行动成功(高一8班).pptx

    而有远大目标的人,如第二个建筑工人,最终可能会成为设计师,因为他们始终瞄准更高的职位,不断积累经验和提升自我。 罗斯福总统夫人与萨尔洛夫将军的对话则强调了具体化目标的重要性。在IT领域,这意味着不仅要...

    Ztree 资源包

    在IT行业中,"搬砖"常被程序员们戏谑地用来形容进行基础性、重复性的编码工作,就像建筑工人搬运砖块一样。这里将Ztree标记为"搬砖"可能是因为它提供了一种基础框架,使得开发者能够快速搭建和定制树形结构,简化了...

    2018年深圳市人力资源市场工资指导价位-深圳人社局-201809.pdf

    通过对制造业、建筑业、批发和零售业等众多行业的工资水平进行调研和统计,报告提供了详细的工资数据,帮助企业和求职者了解各行业的薪资水平。 **2. 经济类型工资指导价位** 根据企业的所有制形式不同,如国有...

    Screeps:Screeps`游戏中的教程以及更多内容!

    2. **单位类型**:游戏中有多种单位,如工人Creep、士兵Combat Creep、建筑工人Builder Creep等。每种单位都有特定的任务和行为模式,通过代码定制其行为。 3. **资源管理**:能量Energy是最基本的资源,用于创建和...

    screeps:Screeps 相关逻辑

    每个角色有特定的任务集合,如工人负责采集和运输,士兵负责防御和攻击,建筑师负责建造和升级。 2. **状态机**:为了实现复杂的决策逻辑,Creeps的行为往往通过状态机进行管理。例如,当Creep的能量满时,它可以...

    ai-roadmap:ApacheCN AI路线图(知识树)

    ApacheCN AI路线图(知识树) 协议: 如果建筑工人像程序员写软件那样盖房子,那第一只飞来的啄木鸟就能毁掉人类文明。 版本 赞助我们

Global site tag (gtag.js) - Google Analytics