Overview
虽然但是很多在今天可能不适用了。
- 人与月不可互换
- 越多的人不一定能带来越多的工作量(多个人月的工作量)
- 关键在于认知和计算方法的问题
- 人多了, 需要的沟通成本也多(IPC)
- e.g. 开会, 交流, 新人培训
怎解?
- 建议小团队工作
- 现代反例: 开源工作模式, e.g. github
- 外科手术团队的工作结构
- 好成员与差成员的管理(木桶效应)
- 所以不能平起平坐, 以好成员为核心开展工作, 其他各司其职打辅助e.g.
- 核心: 架构师, 主工程师
- 辅助: 文档管理, 子模块, 测试…
- 建议小团队工作
- 完善的文档 + 老人带新人快速上手
- 防微杜渐
- bug会放大
- 里程碑 = 100%完成读(经典瀑布模型)
- 防微杜渐
没有银弹
计算机技术变化非常块
软件工程的内在特性
- 复杂性: 用户自身需求的复杂性(用户自己都不懂), 软件开发的复杂性, 组织管理复杂性, 计算机复杂性(网络, 权限)
- 一致性: 没有银弹
- 可变性: 需求改来改去, 环境变化
- 不可见性: 软件是逻辑的, 沟通不一定描述得清
建议
- 新技术促生产
- 高级语言, 抽象, 人工智能
- 增量开发
- 先做原型机再扩展
- 人才 ==
$$$
- 新技术促生产