老鸟教你如何精确评估开发时间

一个程序员能否精确评估开发时间,是一件非常重要的事情。如果你掌握了这项技能,你在别人的眼里就会是这样:

  • 靠谱
  • 经验十足
  • 对需求很了解
  • 延期风险小
  • 合格的软件工程师
  • 正规军,不是野路子

评估开发时间的重要性

首先,在一个项目中,所有的环节都是承上启下的,上一个环节结束的时间节点正是下一个环节开始的节点。那么在一个项目或者一次迭代正式启动前,所有的环节都应该有个时间评估。以一次APP需求迭代为例,项目计划像这样:

UI设计图 11.01 - 11.03(3工作日)
API接口讨论与设计 11.04(1工作日)
移动端开发 11.05 - 11.15(8工作日)
后端具备联调条件:11.11
产品体验 11.16 - 11.17(2工作日)
测试11.18 - 11.25(5工作日)
发布11.26

根据项目计划,各个部门自己要分配人员和时间。如果其中一个环节延期了,那么后面的各个环节都要顺延,就会造成损失。

其次,对于程序员来说,一个清晰的开发计划有助于自己有条不紊地开展工作,也能避免疏漏某个功能点。评估时间的过程,也是对需求详细拆分的过程,了解要做什么,做成什么样子。在评估的过程中,根据专业知识和经验,充分预估会遇到的风险,怎样的解决方案,预留多少时间?都想好了的话,项目也就没啥风险了。

然而,开发时间评估,最大的好处是程序员受益。认真地评估开发时间,会让你在开始动手写代码之前搞清楚要怎么写,每个模块的设计心理得有个谱。从宏观上拆分模块,然后详细地分解任务,具体到一个很小的功能点。这样你就能清晰地设计代码,而不是堆代码。也避免了很多时候写着写着发现不对,然后拉到重来的境地。就是要让你动手写代码之前胸有成竹!

初学者为什么评估不准?

如果你的项目经常delay,那么八成是时间评估不准。
刚毕业的学生被问到什么时候可以完成的时候,脑门一拍:“三天”,实际上两个星期过去了还没完成。
这里有一张表,看看你是不是这样子,对号入座:
图片来自网略,侵删

越是老程序员越是“胆小”,评估时间越准。

如何精确评估开发时间

最近几年,我都是以小时为单位进行时间评估的,有没有觉得有点恐怖?长期以来这样的习惯让我收获颇多。这得感谢我之前的领导,三年前强迫我们这样做,刚开始很抵触,后来才体会到其中的甜头。

1. 任务拆分

拿到新需求后,对其进行充分了解,不清楚的就去问清楚,然后对其进行模块化。之后,再进行技术上的拆分。由大到小,再到细节。细到什么程度呢?细到一个按钮的实现,细到一个点击动作是要用按钮还是要用手势的定夺,最好能细到代码块的划分。

这个能力是需要锻炼的,做好拆分,然后在实际开发过程中根据实际时间花销,回顾时间评估的准确性,以便让下次更准确。慢慢地,就会越来越精确,评估时间有依有据,不再是拍脑门给出的时间。下面看一个例子:
在这里插入图片描述

2. 合理认知时间

一天工作八小时,但你不可能专注地连续八小时在编写代码。一天的工作中,有开会、讨论、阶段性休息(刷新闻、喝咖啡、发呆)的时间开销,真正有效时间其实不足六小时,杂事多的话可能是四五个小时。

3. 预留buffer(缓冲区)

首先明确,预留buffer不是让你随便增加预估量,而是要明确知道buffer是给那些事情用的。要考虑到一下几点:

首先是沟通时间,你开发的时候不可能是闷着头一直写代码。要和UI设计师沟通,要和产品经理沟通,有可能还需要和组内的人沟通技术上的事情,以及和别的技术小组对接的问题。

等待时间。如果牵扯多部门协作,会有很多等待时间,因为你不能保证别的部门就能准确按照计划时间完成的。虽然等待过程中你可以安排其他任务,但你不能保证其他任务就能刚好填充等待时间,更何况任务切换也需要时间成本。

突发状况。例如,bug修改、需求微调、对接人请假。

不确定时间。和其他部门有交集的工作,最好多预留buffer。比如移动端和后台联调。后端信誓旦旦给你说11.11号可以进行联调,这次联调总共5个接口。如果你简单地认为他们给你提供的接口没问题,并且能顺利请求回来数据,预计一天联调时间足以,那你就等着delay吧。11.10号你已经准备好了所有联调准备,如果数据能正确返回,你的解析功能都是OK的,因为你之前用假数据已经处理的好好的。到了11号,你请求第一个接口就报错了,然后在即时通讯软件上问他们怎么回事,半个小时后给你回了“不好意思,地址变了,你用这个试试”。又错了……。终于回来数据了,然后发现缺少两个字段……。就这样,第一个接口调通已经快下班了。(当然很多后端技术人员也是很靠谱的,举这个例子只是为了让多考虑)

以上是可能会出现的状况,实际中有可能只是出现了一部分,这要根据实际情况而定。并不是让你能多预留buffer就多留,毕竟每个项目的时间都是很紧张的。一般buffer留在15%-25%。

4. 回头看

在实际开发过程中,测量实际花费时间,并与估算相比较。如果有些地方相差较大,就要看差在哪里,然后在下次预估中避免相同的差错。

总结

编程经验不等同于估算经验。一个不被包含在估算流程中的开发者将不会擅长估算。同样,如果实际的时间花费不被测量和用于与估算比较,那么将没有反馈来学习。

最后,每个程序员都应该具备估算的技能。为磨练这个技能,接手每个任务时,先决定你要做什么。然后在开始之前估算任务所需时间。最后测量实际花费时间,并与估算相比较。同样比较你实际完成的与计划完成的。这样你将会既提高你对一个任务包含细节的理解,同样也提高了你的估算技能。

尽管进行了精确估算,也不能保证每个项目都会100%精确。偶尔会遇到一些突发情况和没预估到的风险是不可避免的。那么面对风险,有一些原则可以帮助你:

  • 报风险时间置前,如果开发开始或者任何过程有可能导致项目延期或者需求无法实现的时候就报警,不要等加班能实现或者存在侥幸心理;
  • 对于不确定的需求,一定要沟通到位;
  • 涉及到交互细节,必须提前沟通好,充分明确细节;
  • 技术可行性方案提前调查清楚。

完结~~~~~~~

最后,欢迎讨论交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34107.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从FM推演各深度CTR预估模型(附代码)

作者: 龙心尘 && 寒小阳 时间:2018年7月 出处:https://blog.csdn.net/longxinchen_ml/article/details/81031736 https://blog.csdn.net/han_xiaoyang/article/details/81031961 声明:版权所有,转载请联系作者…

[项目管理] 如何评估工作量

1.1. 工作量估算的定义 工作量估算 即对开发软件产品所需的人力和时间的估算——人力成本是一个项目的主要成本。 我们可以根据预估的工作量决定具体由几个人、哪几个人参与该项目。 工作量通常以 人/天、人/月、人/年 的形式来衡量。 1.2. 为什么要进行工作量估算 做好工…

机器学习实战 | 综合项目-电商销量预估

作者:韩信子ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/41 本文地址:https://www.showmeai.tech/article-detail/206 声明:版权所有,转载请联系平台与作者并注明出处 收藏ShowMeAI查看更多精彩内容 1.案例…

Python:实现进度条和时间预估

一、前言 在python当中可以用进度条来显示工作的进度,比如for循环的进度或者一些模型训练的进度。 在这里可以使用progressbar包以及tqdm包来实现。 使用pip install progressbar 安装progressbar包。 使用pip install tqdm安装tqdm包。 二、代码 1. progress…

如何科学预估开发时间

0. 我是前言 一个开发人员能否精确评估开发时间,是一件非常重要的事情。如果你掌握了这项技能,你在别人的眼里就会是这样: 1. 评估开发时间的重要性 首先,在一个项目中,所有的环节都是承上启下的,不管你是…

编译原理之代码生成

前面提到了经过了词法分析->语法分析->语义分析->中间代码优化,最后的阶段便是在目标机器上运行的目标代码的生成了。目标代码生成阶段的任务是:将此前的中间代码转换成特定机器上的机器语言或汇编语言,这种转换程序便被称为代码生成…

前端案例-跟随鼠标移动的天使

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域新星创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

前端代码在线编辑器:codepen、codesandbox

文章目录 单文件在线编辑器项目级在线编辑器 推荐两个前端代码在线编辑器 单文件在线编辑器:https://codepen.io/pen/ 项目级在线编辑器:https://codesandbox.io/ 单文件在线编辑器 codepen 相信使用 element-ui组件库的小伙伴应该知道 codepen在线编…

vue前端生成二维码并提供二维码下载

在一个管理后台的开发过程中使用到了需要前端自行生成分享二维码,并提供二维码下载功能,网上的解决方案很多,最终自己做完的思路和代码整理记录方便后续学习使用! vue版本为2.x 具体实现步骤: 下载安装依赖&#xff0…

总结本人学习b站黑马前端课程,各部分案例汇总

目录 1.Ajax: 对应课程: b站黑马JavaScript的Ajax案例代码——新闻列表案例 b站黑马JavaScript的Ajax案例代码——评论列表案例 b站黑马JavaScript的Ajax案例代码——聊天机器人案例 b站黑马JavaScript的Ajax案例代码——图书管理案例 2.ES6面向对…

前端——动态生成表格

案例分析 因为表格数据是不断更新的,我们需要js 动态生成。 这里我们模拟数据,自己定义好数据。 数据我们采取对象形式存储。所有的数据都是放到tbody里面的行里面。因为行很多,我们需要循环创建多个行(对应多少人)每…

Methodot低代码电影票房管理系统实战案例(二):前端低代码搭建系统后台

本次系统后台实战将使用Methodot应用工厂中的前端低代码组件完成搭建,无需注册域名、购买云服务器、虚拟机等,可在Methodot云端一体化完成开发、交付、访问、运维,3s即可部署至线上 免运维,在Methodot上可直接开发部署到线上 本次…

c语言源码代码生成器,SoEasyPlatform 代码生成器

介绍 一款轻量级开源的代码生成器,相对较动软代码生成器而言要轻量的多,支持多种数据库,所用到dll组件也都在github有源码,代码非常的简单有点基础的看源码可以把生成的项目改成自已的风格。 特色 该代码生成器最大的特点就三个简单 ,无需安装,生成的代码 简单并且有教学…

基于GPT-4的免费代码生成工具

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

前端直接生成GIF动态图实践

前言 去年在博客中发了两篇关于GIF动态生成的博客,GIF图像动态生成-JAVA后台生成和基于FFmpeg的Java视频Mp4转GIF初探,在这两篇博客中都是采用JAVA语言在后台进行转换。使用JAVA的同学经过自己的改造和开发也可以应用在项目上。前段时间有朋友私下问&…

利用JS代码完成动态生成表格案例及解析

思路&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&…

屏蔽必应(bing)搜索引擎点开一个页面下面会出现“浏览 6 个相关页面”的网页推荐方法

如以上图片显示&#xff0c;“浏览 6 个相关页面” 的推荐内容是网页里面的js实现的&#xff0c;无法取消&#xff0c;微软官方也回复说不能关闭的&#xff0c;只能通过浏览器的屏蔽广告插件可以实现&#xff1a; 我用的是这个uBlock Origin插件根据这位大佬的帖子安装的&…

基于chatgpt-on-wechat的微信个人对话机器人搭建

1.开源项目选定 现在gpt很火,git中大佬们都创建了很多高星项目,我这里选用了chatgpt-on-wechat(项目地址:https://github.com/zhayujie/chatgpt-on-wechat),这个项目在扩展时也很舒服,大家可以去拉下来看看,学习源码才能方便后续的扩展 2.服务器选定 国内服务:前置条件需要走…

【模仿】调用微信聊天功能和分享功能

今天整理个不是问题的问题&#xff0c;没学到啥&#xff0c;主要完成功能&#xff1a; 老大要求能调用手机号码然后通过微信聊&#xff0c; 我去&#xff0c;说白了老大看到了应用-通讯录plus-的微信功能&#xff0c;要我模仿。 首先&#xff0c;坑啊&#xff0c;我以为是开放…

iOS微信QQ聊天界面的UI框架以及Socket简单实现群聊功能

7.1日更新 Python3 TCP Demo相关 https://blog.csdn.net/Deft_MKJing/article/details/80851879 2.2日更新&#xff0c;socket简易群聊通信&#xff0c;之前实现的是静态本地聊天模拟 最新版本Demo传送门 1.需要的先下载下来&#xff0c;先开启SocketSeverce 2 这个服务器代…