人月神话札记:时间和人力

简介: 人月神话札记:时间和人力

前言:美食的烹饪需要时间,那么稍等片刻,你将享用更多的美味。缺乏合理的进度安排是造成项目滞后的重要原因,因素有以下内容:

- 对估算技术缺乏有效的研究

- 进度和工作量混淆,就是说人员和时间可以转换

- 对自己的估算缺乏信心

- 缺乏信心

- 对进度缺少跟踪和监督,所以站立会和燃尽图至关重要

- 意识到进度偏移时,第一个反应是增加人力,而这时大多数情况如同火上浇油,火越来越大,需要的汽油却越来越多


乐观主义


书中说,编程人员都是乐观主义者,我想,在国内,需求者比编程人员更“乐观”,他们引导设计者和架构师走上极端的左倾主义。我存有一种愿景就是,希望未来需求者能够考虑足够的风险,树立一种观念就是每一项任务不仅仅是花费它“应该”花费的时间。

对于创造者来说,只有在实现的过程中,才能发现构思的不完整性和不一致性。也就是说,我们去做1.0版,意义重大,1.0版能够帮助我们更好的去反思我们的设计。

作为我们程序员来说,“一切都会完美的运行”几乎是不可能的,从我们自身来说,当我们写完代码后,必须要抱着怀疑的态度,去检查我们创造的代码,减少bug。


人月


人员和时间不能在所有场所内进行替换。


对于像割小麦的任务中,人员和时间可以相互转换,增加人手,必定能减少割麦子的时间。

对于像母亲孕育孩子的过程中,必须要经历10月怀胎,这是无法进行分解的。

对于需要沟通可以分解的任务,其人员和时间的关系图,在人员增加到一定程度上时,需要的时间不会再减少

对于关系错综复杂的任务,其人员的增加在一定程度上还会增加时间的投入,这个是最可怕的。

从实际的开发经验中,可以得出,软件开发是错综复杂的过程,那么没有弄清楚效率降低、进度延迟的真正原因时,盲目的追求人员的增加会让事情更糟。


系统测试


系统测试的时间在大多数的软件开发中,系统测试被开发团队忽略,往往很多时候,开发人员做完自己的代码后,就将测试工作丢给测试人员,这种现象我之前有所描述,见小型团队的测试该何去何从这篇文章中,我介绍了这个可怕的现象,而其解决办法竟然是增加人员。

没有合理的规划系统测试时间的话,就会带来可怕的后果,因为系统测试往往是在产品发布之前,这个时候再出现延误,代价太高。


空泛的估算


大多数情况下,产品经理或者项目经理和客户的关系就如同蛋糕师和顾客的关系,蛋糕的烹制过程会受到顾客紧迫程度的影响。假如顾客催促蛋糕师,那么蛋糕师可能做出两种选择,第一个就是继续按照自己的进度,让顾客等待,这样可能失去顾客;第二个是加大火力,这样蛋糕就可能出现问题。


重复产生的进度灾难


当任务没有按照原定计划执行时,就出现延期,假如出现在项目进展的第一个阶段,项目经理发现了进度延缓的问题,那么假如说他盲目的增加人手来试图缩短产品研发时间的话,就必然会重复进入到灾难的陷阱中。

增加人手会带来严重的问题,原来的开发人员需要拿掉开发的时间来培训新的人员,这样同时又将原来的进度延缓,假如再增加人手,就会进入到万劫不复的灾难中。


作者有如下结论“Adding manpower to a late sofeware project makes it latter.”

那么我们该如何正确做出改变呢?


重新安排进度,也就是说分配充足的时间,来确保完整的解决项目。

削减任务,如果项目延期导致的二次开发成本非常高,那么这是必要的。

然而增加人手,这个决策是可怕的。

总结:项目的时间依赖于顺序上的限制,而人员的最大数量依赖于独立子任务的数量。如何把握人员数量和进度之间的关系是至关重要的。


相关文章
|
4月前
|
安全 NoSQL Java
单体项目偶遇并发漏洞!短短一夜时间竟让老板蒸发197.83元!
单体项目偶遇并发漏洞。故事基于真实事件而改编,如有雷同,纯属巧合~
|
4月前
|
测试技术 C++
🕒 笑cry!Debian:稳如老狗,时间见了都颤抖!宇宙级“时间管理大师”非它莫属 🚀
在数字时代的快车道上,系统们竞相提速与更新,唯有Debian宛如老僧入定,以“稳”字诀笑看风云变幻。当他人忙于应对崩溃与兼容问题时,Debian用户自在饮茶,体验着技术海洋中的避风塘。Debian以近乎苛刻的测试流程,成为服务器领域的定海神针,它似乎在说:“我虽慢,但却稳如泰山。”在这个追求极速的世界,Debian教会我们:稳定,不仅是一种技术标准,更是一种从容不迫的生活态度。🧠
37 0
|
7月前
|
机器学习/深度学习 程序员
程序员日常上下班通勤时间都在干什么?
对于许多人来说,通勤时间是每天工作日必不可少的一部分,但是对于程序员来说,通勤时间是一个宝贵的机会,可以利用这段时间做一些有意义的事情,而如何利用这段时间成为了一个重要的问题。那么本文就来简单分享一下程序员在日常上下班通勤时间里所做的事情,看看程序员们到底在干什么?以及展示他们如何充分利用这段时间提升自己和进行技术学习,还有程序员在通勤时间里的活动以及对个人发展的收获。
226 1
程序员日常上下班通勤时间都在干什么?
|
算法 Java
一个多月的时间,终于把这件事做完了!
一个多月的时间,终于把这件事做完了!
125 0
一个多月的时间,终于把这件事做完了!
|
XML 测试技术 程序员
人月神话札记:整体部分
人月神话札记:整体部分
120 0
人月神话札记:整体部分
|
移动开发 Java 程序员
程序员也需要的软技能,既为了生存,也为了早日财务自由
 最近读了一本不是编程的程序员技能书《软技能 代码之外的生存指南》,全书分为7个篇章,分别是职业、自我营销、学习、生产力、理财、健身和精神。其中在读过职业、自我营销和理财这三个篇章后,让我非常有感触,也让我很意外,本来以为国外的软件环境会与国内不同,现在看来很多情况都很类似。下面会着重围绕这三个篇章展开讨论。
|
移动开发 安全 关系型数据库
黑客马拉松经验谈:一个周末你能做出有趣、有用的服务吗?
“黑客马拉松”(Hackathon),是黑客 + 马拉松(Hack + Marathon)的组合字,大致上就是几个人聚在一起以马拉松的方式进行一段长时间的 Hack 活动,像是台湾 Yahoo! 办过 Open Hack Day、台湾微软办过 HTML5 或 IE 浏览器的黑客松活动,这类型的活动,实际进行的时间从半天、一天到两天一夜的长度都有。
548 0
黑客马拉松经验谈:一个周末你能做出有趣、有用的服务吗?
|
程序员 测试技术
人月神话札记:效率
人月神话札记:效率
123 0