本文主要是介绍软件工程:人月不是神话!乔布斯说一个优秀的员工可以顶50个平庸的员工?看完此文你可能会发现,乔布斯这么说太保守了。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
每篇一格言
雇佣许多人去做一件复杂的事,往往是错误的。数量永远难以弥补质量优势,人多还会降低效率,增加任务成本。
——埃隆马斯克
目录
- 1.智力资本定义
- 举例
- 2.智力资本等级
- 知识等级分类
- 技能等级分类
- 智力资本等级分类
- 3.智力资本与人月问题
- 简化的模型
- 对项目工作和工程师的智力资本分布假设如下:
1.智力资本定义
美国学者托马斯·斯图尔特(Thomas.A.Stew art)定义智力资本为:“公司中所有成员所知晓的能为企业在市场上获得竞争优势的事物之和”。
由于这个定义十分抽象,我更喜欢将智力资本简单理解为:知识+技能。
两者区别:
知识:理论层面
技能:应用层面
举例
“钻木取火”的原理“摩擦发热”,属于知识。
“用钻木的方式取火”这个动作属于技能。
2.智力资本等级
既然智力资本包含知识和技能两方面,我们就需要分别讨论知识和技能。
知识等级分类
下表是我对知识的分级与归类。由于博主从事android开发,因而在最后一栏以android作为举例,从而更容易理解。
应注意的是,高等级与低等级是包含的关系,即高等级应具备低等级所有的素质。
技能等级分类
下表是我对技能的分级与归类。
智力资本等级分类
根据以上等级的划分,我们便可以对智力资本分级了。
下表是我对智力资本等级的划分:
应当指出,这里采取了“与”的关系,即n级的智力资本应同时具备n级或以上的知识与技能。
这样划分基于一个常理,[To say is one thing, to do is anther.]
以软件开发为例,软件是理论与实践紧密联系的产业,仅掌握知识却不具备对应技能,会成为纸上谈兵;同样仅掌握技能却不懂得对应知识,则会不明就里。因而知识与技能两者不能偏废。
3.智力资本与人月问题
接下来引入一个实际问题:
100人月的项目规模,10位工程师参与开发,开发周期要多久呢?
为了回答这个问题,我们需要做一个量化模型,然后用这个模型去计算结果。
简化的模型
不妨先考虑一个简化的模型,先解决基本问题。之后迭代再 解决更复杂的 问题。
假设前提:
1.为了简化,这里的100人月已经包含了所有工作量(需求分析,可行性分析,设计与编码,单元测试,压力测试等的debug)。
2. 假设每位工程师的工作效率(速度)是一样的。(而现实中,差别巨大)
3. 假设沟通引起的工作效率损耗是0。(而现实中,沟通成本随人数增加呈指数级增长)
对项目工作和工程师的智力资本分布假设如下:
工作要求的智力资本等级
工程师智力资本等级
注意到智力资本等级n级的工作只能由n级或以上的工程师处理。当出现无法胜任的情况,则会block整个项目。
未完待续。
作者:
GentlemanTsao,资深软件工程师,android技术专家,专注于移动终端软件开发。
本文为原创文章。看完点赞,每天进步一点点
这篇关于软件工程:人月不是神话!乔布斯说一个优秀的员工可以顶50个平庸的员工?看完此文你可能会发现,乔布斯这么说太保守了。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!