2018年04月6日网站服务器迁移完成……

为什么程序员不擅长估算时间?

互联网 苏 demo 1956℃ 0评论

总会有比较大的时间调整,离他们之前的预估,多数时候是翻倍的时间。

钟大为 Davy Zhong

Oracle 架构师/首席应用工程师

各种不同水平,层次”程序员”太多,不可一概而论. 但是这种情况在程序员以外的群体看来,似乎是一种普遍现象.其实内部产生的原因会有所不同.

粗略划分一下,分外在因素和内在因素吧:

内在的情况,大致分为下列几种:
1) 对于”做过的”内容,通常有一定水平的程序猿应该会估计比较准确的.因为重复性劳动基本就是体力活.
–这个可以类比项目管理PMP中关于项目的估算方法.比较类似与”专家估算”或是”经验估算”

**这里有一种情况,资深的/或者是高级别的程序员简单分析需求后分配任务,定schedule.但是视角是从自身出发的,可是实际开发却是安排给其他比较初级的程序员去实现.
而那些比较初级的程序员的知识背景不同,相应的知识储备也不同,对某些”难点”或相关联外围知识了解程度也不同.这类的估算失误在新组建的团队中比较常见.长期的配合与磨合可以降低偏差

2) 对于”没做过”的东西,通常就没底.估算偏差通常也较大.不是高估了解决方案的难度就是低估. –通常还都是低估[很多程序员都很有”自信”]

–各类论坛上常常可以看到诸如”XX服务器选项如何配置”, “XX在Unix/Linux下如何安装”, “XX接口如何调用”. 这种了解”窍门”的人只要几分钟,不了解的人会花几天时间反复摸索. 其实不论高级/初级程序员,在没有经验的问题面前,处境都差不多.差别只是:
-有经验又比较聪明的程序员懂得举一反三.
-谦虚的新人程序员懂得去请教有经验的程序员–[有些”老人”会不好意思,什么问题请教什么人也是个学问]
-好学的程序员通常都会有常常去的技术论坛/博客,也会在那上面寻求解答.微博也是一个好渠道
-有好习惯的程序员会有自己的KB[知识库], 收集整理各类有用的知识笔记.有一定的积累下,这个也是个好渠道. [有不少大牛长期积累后,简单整理一下就可以出书]

{感谢Google,搜索引擎的出现大大提高了解决这类问题的效率.}

3) 问题没有分析清楚,隐藏的”地雷”导致估算偏差. 此类情况有些复杂, 有
–需求本身描述过于简单,开发实现过程中发现技术难点的.
–分析估算人员认为简单,就不将需求任务详尽分析. 实现人员经验不足,估算出现偏差 [也有可能估算人员经验不足,没有发现其中的技术难点]
–实现人员对于解决方案的特点了解不足,选择了错误的解决方案[技术上有实现难度/无法满足需求/架构层面改造成本大而无法接受/与其他模块有冲突]

4) 分析人员工期与任务优先级安排不合理,从而导致资源依赖或者是资源冲突
–基础模块高优先级开发 [减少功能模块依赖]
–接口模块,设计与开发先于功能模块 [降低外围系统依赖]
–测试计划优先设计/安排, 测试人员尽早参与项目 [加深功能理解/降低后续问题影响]

外在的情况:
1) 客户需求变更
–这种情况多/乱/杂. 需求变更有大有小,虽然各类项目管理教材中对于需求的管理有大幅的章节进行描述.可是实际项目中,不论是国内项目还是国外,需求变更的问题几乎是不可避免的. 项目经理们也只有各显神通,通过各种手段来尽量降低变更对于项目的影响.

2) 其他配合团队的问题,软件开发是个工程型项目.程序员个体虽然是具体实现人员,但是其他团队的参与也有很大的影响
–DBA, 处于安全和专业的考虑,很多公司和项目安排了专门的数据库管理人员.由他们进行数据库层面的更新与设置. 此类专门的人员数量通常都不多,多个程序员都有需要DBA配合的时候,势必有冲突和先后.
–BE[build engineer] 部署人员. 很多公司也安排了专门的部署和构建人员或者是团队,这类人员也和DBA一样,同时服务与多个项目. 也会有冲突和影响.
–SA [system administrator]系统管理员. 专门管理服务器,配置服务器目录/权限,在服务器安装各类应用等…

以上的各类人员,开发过程中必然会接触到.很多时候处于部门管理问题或是其他原因,会影响到程序员的进度 [毕竟,这一类的时间,程序员是无法估算的. WBS中也无法描述和罗列此类时间, 难道要程序员汇报:等DBA更新索引-2小时, 等SA清除日志缓存-4小时 ]

3) 天灾人祸
–电脑有问题 这个就多了,有时候也很浪费时间. e.g. JDK版本不对/开发工具/网络/鼠标键盘
–疲劳 没错,就是疲劳. 程序员大部分都是夜猫子,更不要说什么世界杯/奥运会的影响了. 世界杯期间,估计很多项目的进度都多少受到了熬夜看球的影响
–生病 长期空调房对屏幕, 腰酸背痛鼠标手那是标配,其他的三高和肩周炎也是普遍存在.项目可不会因为你请病假就顺延, 一个萝卜一个坑的安排导致在病假期间照样要接电话, VPN使得你在家一样要联网工作. 可是, 这样一来效率就打折扣了. 延期也是必然的.

暂时就总结了以上这些, 基本都出自于自身开发和管理工作经验.
纯属胡言乱语,如有不当,敬请无视

——————————————————————-
补充一个,来自图灵社区的:
程序员的时间换算表—-为什么程序员不擅长估算时间
http://www.ituring.com.cn/article/details/8290

打赏

转载请注明:苏demo的别样人生 » 为什么程序员不擅长估算时间?

   如果本篇文章对您有帮助,欢迎向博主进行赞助,赞助时请写上您的用户名。
支付宝直接捐助帐号oracle_lee@qq.com 感谢支持!
喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情