开发时间评估不合理导致的问题
- 开发任务不具体,工作难以开展
- 不好对项目有个整体进度及风险把控
- 开发人员有的忙成了996有的又闲的无事可做
为什么开发时间会评估不准确
主要有以下几点
- 未包含需求理解和分析时间
- 未包含代码定位时间
- 低估了联调矫正所需的时间
- 存在技术风险点或技术方案未细化或技术不熟悉
- 未包含buffer时间
- 未包含意外事件消耗的时间(如:请假),未考虑8小时工作日,实际的有效工作时间最多6小时
具体的例子
具体如何评估
总时间构成与评估
- 开发时间:开发一个功能正常需要的时间。时间占比: 100%
- 需求熟悉/分析时间以及代码定位:时间占比: 开发时间30%-50%
- 前后端联调以及ui矫正: 时间占比:开发时间20%-50%
- Buffer 时间: 开发完成自测之后,需要对开发阶段暴露的问题进行记录甚至项目中统一优化,避免下个阶段的问题重现,个人时间的缓冲期,做下个阶段的预研以及本阶段可能遗留问题的方案的研究。 时间占比 :开发时间20%-30%
实例:
以开发一个短信验证码登录需求为例:
假定需求如下
- 要求能且仅能通过短信登录
- 同一个手机号码每30秒只能发送一条短信
逻辑点特别多的功能的时间评估
某个功能经过产品的讲解,发现逻辑点特别多,那么每个逻辑点预估30-60分钟的编码时间
如:
显示用户信息逻辑
- 国内用户使用A模板显示
- 国外用户使用B模板显示
- 当字段A有值时,字段B,字段C也显示
- 当字段D有值时,字段E不显示
那么这4个逻辑点可以预估4小时的编码时间,1,2逻辑点涉及的字段可能比较多,因此每个60分钟,3,4逻辑点涉及的字段比较少算30-45分钟,剩余时间算缓冲时间
首选实现方案的取舍
应该优先采用简单的实现方案,然后在简单的实现方案上进行一定的优化
个人遇到的实例
动态表单方案 VS v-if/v-else
动态表单方案: json配置对象 + component is 对表单项进行动态加载
v-if/v-else: 使用简单的if-else控制动态表单的实现
如果不是对动态表单方案特别熟悉(或者说必须要有现成的代码,且你对该现成代码特别熟悉),那首选实现方案应该是v-if/v-else方案.
为什么首选v-if/v-else方案? 因为该方案的实现基本只需要考虑业务逻辑的实现时间,而动态表单的方案还需要考虑设计的实现时间
如果时间特别充裕,或者你就是在帮公司提取这类通用组件,那应该采用动态表单方案
功能涉及未用过组件的时间评估
如: 某些富文本组件,公司内部的上传预览组件
熟悉组件使用(1-3天)
第一天:先整体去过下组件的使用文档(明确开发环境,测试环境,生产环境的搭建和使用,以及记录一些特别使用事项),并搭建使用环境(如果第一步就受阻,一定要及时报告,该申请外部协助就申请外部协助,该换方案就换方案)
第二天: 编写几个猜想的使用场景示例
第三天: 用于编写复杂示例或组件抽取以及缓冲时间(因为第一天的环境搭建可能会需要外部协助)
如何增强评估的开发时间的准确性
在每次拿到需求之前,先自己进行一次时间评估,实现需求之后,对这次需求实现和评估进行总结,明确自己的编码速度以及实际的逻辑拆分/逻辑分析组件/系统设计能力
关于项目开始之初应该做的事情
- 明确项目需要使用的所有技术,明确风险点和备选方案,甚至是砍需求
- 搭建项目整体框架,提供公共组件,编写使用示例
- 对未使用过的技术进行预研,编写使用文档和实际的使用示例