【人月神话】02 各司其职与规则

简介: 【人月神话】02 各司其职与规则

一、外科手术队伍

在接手一个大型项目时,该如何分配你的资源?例如OS/360,Exec 8 、TSS 这样的产品。

软件经理很早就认识到这个问题。从人员角度上,他们认为优秀程序员和较差程序员之间的生产率的差异,但实际测量出的差异令人吃惊。

有人曾对一组具有经验的程序员进行测试,发现最好和最差的表现在生产率上平均比例为10:1,在编程速度和空间上具有5:1。为什么开发成本会如此差别巨大?很关键的一个问题是协作沟通问题。Books常常重复这样的观点:需要协作沟通的人员数量影响着开发成本,因为成本的主要组成部分是相互的沟通和交流,以及更正沟通不当所引发的不良结果,如系统调试。

一拥而上的开发方法是高成本、速度缓慢且低效的。例如,在OS/360项目中,当项目进行到顶峰时,有超过1000人在为它工作,其中包含了程序员、文档编制人员、秘书、管理人员、支持小组、操作人员等等,从1963年到1966年,用在设计、编码、文档上话费了大约5000个人年。而用人月进行等量置换,你会发现这尽然需要25年。那么,一个产品在其最初设计的25年后才出现,你还会对其感兴趣吗?

那么如何处理这样的处境呢?

Mills建议大型项目的每个部分由一个团队专门负责,然后由该团队的每一个成员负责该部分中的某个部分。这就像一场外科手术,每个人各司其职,进行专业化分工。

二、贵族专制、民主政治和系统设计

概念完整性

在欧洲大教堂的建设设计上,不同时期、不同建筑师的风格均存在差异,更甚者,后来还加入了个性化的设计元素。例如,美剧《硅谷第五季》你看到设计字体的某某设计师,将自己的署名刻在他为“互利”设计的字体作品上。

对于计算机系统而言,绝大数系统体现出的概念差异和不一致性远远超过了欧洲大教堂。这通常并不是因为它由不同时代的设计师们开发,而是由于设计被分成了若干人完成的若干任务。

那么,让每位设计师独立的完成会有什么问题呢?

在系统设计中,概念完整性是需要给予重要性考虑的因素。为了反映一系列连贯的设计思路,宁可省略一些不规则的特性和改进,也不提倡独立和无法整合的系统,哪怕他们其实包含着许多好的设计。

获取概念完整性

编程的目的是使计算机更加容易使用。虽然计算机为此装备了语言和各种工具,但是使用这些工具是有代价的:会造成用户很难进行选择,并且用户要记住太多的选项和格式。

只有当这些功能说明节约下来的时间,比花费在学习、记忆和搜索手册上的时间要多时,易用性才会得到提高。现代编程系统节省的时间的确超过了花费的时间,但是近年来,随着越来越多复杂功能的添加,节省和花费的比率正在逐渐减小。

由于目标是易用性,功能与理解上复杂程度的比值才是系统设计的最终测试标准。单是功能本身或者简洁都无法成为一个好的设计评判标准。可是你一定常常见到,这样的标准过去一直被用来作为衡量设计人员工作的出色程度。

要表达意见待完成的事情,常常需要对基本元素进行意料不到的复杂组合。而且,仅仅了解基本要素和组合规则还不够,还需要学习惯用的用法,以及在实际工作中如何进行组合。简洁和直白来自概念的完整性。每个部分必须反映相同的原理需求的一致平衡。语法上,每个部分应使用相同的技巧,语义上,应具有同样的相似性。

因此,易用性实际上需要设计的一致性和概念上的完整性。

贵族专制统治和民主政治

首先,我们先来了解一下什么是“系统体系结构”。

系统的体系结构指的是完整和详细的用户接口说明。对于计算机,它是编程手册;对于编译器,它是语言手册;对于控制程序,它是语言和函数调用手册;对于整个系统,它是用户要完成自己全部所需参考的手册的集合。因此,系统的架构师,犹如建筑设计师,是用户的代言人。架构师的工作,是运用专业技术知识来支持用户的真正利益,而不是维护销售人员、制作者所鼓吹的利益。

但是,你要注意,体系结构必须同具体的实现区分开来。体系结构陈述的是发生了什么,而实现描述的是如何实现。就像一盘时钟,它额结构包括表盘、指针、发条按钮等等。当小孩知道了时钟的外表结构,他能很容易地从手表或教堂上的时钟辨认时间。而时钟的实现,描述了表壳中的事物,如动力、精度控制。

但是,你可能也会认为架构师是贵族,他们通过指定制度来告诉你该怎样工作。可是,是否所有的创造性活动都被这些精英单独占有,而实现人员当当只是机器中的齿轮?我的观点很简单,我不会认为只有架构师才有好的创意。新的概念经常来自实现人员或用户。但是,你必须考虑到如果出现很多非常重要但不兼容的构想,就应该抛弃原来的设计,对不同基本概念进行合并,在合并后的系统上重新开始。

而架构师是否是专制的呢?

如果回答“是”呢?如果你想让系统达成概念上的完整性,你必须回答是。因为需要有人来控制这些概念。架构师长期处在解决用户问题上,实现用户的核心地位。所以,有时候我们可以把这种肯定的看法认为是一种善意的专制。

其实,无论回答是与否,纪律和规则是对行业有益的。记住,“没有规矩,不成方圆”。



相关文章
|
6月前
|
SQL 监控 数据库连接
数字安全网:深入解析服务容错的三大绝招“
数字安全网:深入解析服务容错的三大绝招“
45 1
|
4月前
|
测试技术
ACL 2024:大模型性能掺水严重?北大交出答卷:交互评估+动态出题,死记硬背也没用
【7月更文挑战第8天】北大研究团队推出KIEval框架,针对大语言模型(LLMs)的性能评估进行创新。KIEval采用互动评估和动态出题,通过多轮基于知识的对话测试模型理解和应用能力,旨在减少数据污染影响,挑战死记硬背的评估。然而,该方法可能增加计算需求,且评估结果可能受主观因素影响,不适用于所有类型LLMs。[论文链接:](https://arxiv.org/abs/2402.15043)**
93 24
|
安全 区块链
ARBT阿尔比特智能合约系统开发方案设计/详细案例/规则介绍/源码程序
The basic principle of the ARBT pledge mining system is that users lock a certain number of ARBT tokens in the system for pledge and receive corresponding mining rewards. During the pledge process, the user's ARBT token will be frozen, making it unable to freely trade and transfer to ensure the stab
|
XML 安全 网络协议
网络安全专业术语对照
网络安全专业术语对照
178 1
|
数据采集 算法 数据处理
期现套利系统开发源码规则解析
期现套利系统开发源码规则解析
|
测试技术
【解决方案 二十一】系统专业名词梳理及释义
【解决方案 二十一】系统专业名词梳理及释义
124 0
|
区块链 开发者
Jogger慢跑者跑鞋零撸模式系统开发详细规则/逻辑分析/案例详情/项目方案/源码部署
  DApp是指以区块链为底层技术平台的分布式应用程序,它使得开发者可以构建去中心化和自主运行的应用程序,并通过链上的合约机制实现代码不可更改性和事务透明性。
|
数据库 开发者
读书·技术 |《重构》· 重构的原则
读书·技术 |《重构》· 重构的原则
162 0
|
程序员 C++ C语言
《C++编程规范:101条规则、准则与最佳实践》——导读
许多糟糕的编程规范都是由一些没有很好地理解语言、没有很好地理解软件开发或者试图标准化过多东西的人制定的。糟糕的编程规范会很快丧失可信度,如果程序员不喜欢或者不同意其中一些糟糕的准则,那么即使规范中有一些合理的准则,也可能被不抱幻想的程序员所忽略,这还是最好的情况,最坏的情况下,糟糕的标准可能真会被强
1884 0
《战争论》第七篇《进攻》的主要原则
《战争论》第七篇《进攻》的主要原则   《进攻》是《战争论》的第七篇,主要论述了六部分内容,包括进攻概论、消灭敌军的四种看法、破坏敌人作战力量、进攻的顶点、战略机动和各种进攻(如图1所示)。
1476 0

相关实验场景

更多
下一篇
无影云桌面