在对量化管理的狂热之中,人们常常忽视了机械活动与智力活动之间的差异。Fitts法则主要时针对机械活动的-尽管移动鼠标、点击按钮的动作需要眼睛和手的协调,但它仍然只是一个(比较复杂的)机械活动。Hick法则则试图度量人大脑中的活动。这正是软件工程犯下的一个经典错误:它认为能够度量的东西时最重要的,但情况并非如此。
从根本上来说,软件开发还是一项智力活动。打字的速度从来不是、也永远不可能是软件开发的瓶颈。要谈论一项智力活动,唯一的方式就是通过不精确的讨论,因为你能度量的东西对于提升效率根本无济于事。软件工程之所以有害,因为它忽视了开发者之间讨论的价值-而那是我们理解软件开发、提高开发效率的唯一途径。
软件工厂总是表现出一种倾向:它们试图模仿制造业从前的模式。但是,就连制造业也在不断发展。现在,哪怕是最热衷于生产线的人也早已不再谈论"完全集成的制造业"了。如今,汽车企业不再拥有钢铁工厂、煤矿和橡胶种植园。他们不再自己制造轮胎,而是向擅长制造轮胎的企业购买轮胎。对于软件组件,道理也是一样:借助于唾手可得的组件,小型团队也可以开发出优秀的软件。
"软件工厂"的概念没有真正流行,因为软件的制造实在太容易了。如何与用户协作、交流,创建一个良好的设计,并使其不断演进发展,这才是软件业中真正的难题。
忠告
如果你的项目拥有实际上无限的资源,那么软件工程就是一条有效的软件开发途径。但是,如果你的资源有限,如果你养不起数百名软件工程师,请及时放弃软件工程。你必须认识到:软件开发更多地是一项智力的、社会性的工作,而非机械性的工作。认识到这一点之后,你将可以从软件工程中学到有用的东西。
下一篇:论软件工程中的分工协作是否真地有效[1]
"软件工程"是指我们在学校中学习的那些理论,经过多年的开发实践和技术交流中,我们不断在对传统的软件工程理论进行反思。在将软件开发分为3个阶段(需求分析、设计和编程)时,我们很自然地会提出一个问题,"软件开发者应该继续提高专业化程度吗?"毕竟,劳动的分工是工业革命的基础。正是由于将制造业分解成多个精确定义的小任务,一组工人的生产率才能得到突飞猛进。所以,我们想当然地认为:对于软件开发,这种"专业化"的方式也将同样有效。
这看起来显而易见,不是吗?...[查看详情]