前端项目如何准确预估个人工时

大家好,我是宝哥

分享一篇前端人员比较感兴趣的话题,如何评估工时。

正文

看来很多小伙伴对这个问题感兴趣,大家不要忽视了压工时这个事。

领导为什么会压工时?

  1. 使他的KPI更好看

  2. 不清楚做这个东西实际要多长时间

  3. 因为第2点的原因,他也无法去争取合理时间

  4. 部分人看着下属加班,有种大权在握,言出法随的畅快感

码农为什么不要轻易答应压工时?

  • 无形中会打击你的自信心,当自信心全无的时候,要么是职业生涯结束,要么是变成人人都跑来拿捏一手的角色

  • 轻易妥协,会让你的说的话,可信度降低。毕竟,别人随便说一下,激一下,你就妥协了,那很容易就让人觉得,你就是随意乱说一个时间

  • 这会妨碍你对自己真实能力的认知和评估

被压工时了怎么办?

  • 偶尔有少量任务,被压了少量工时,个人认为是可以接受的,毕竟不可能一切都能按规划走

  • 大量工作被压工时,那就告知延期风险,你的工作速度应该保持不变,完不成,就让项目延期。如何解决延期问题?那是领导的事情,不是一个小码农应该操心的。

没怎么压工时,但把工作时间延长了?

  • 首先,工作该是什么速度,就是什么速度,不要替领导着急着赶进度

  • 其次,反馈这有延期风险,建议领导增派人手。(记得先和其他成员通个气)

  • 该提加班就提加班,调休或加班工资是你应得的,累了就调休,你是人,不是机器

为什么要给自己留缓冲时间?加缓冲时间是工作不饱和?

  • 加缓冲时间不是工作不饱和

  • 8小时工作日,你不可能每分每秒都在写代码,谁也做不到。

  • 你不可能熟悉每个API,总有要你查资料的时候,而查资料,可能你查了4-5个地方,才总结出正确用法,这需要额外的时间

  • 你的工作随时可能被人打断,比如:开会,喝水,同事问你问题等等,这都会耗费你的时间

  • 你拉取代码,提交代码,思考实现方式,和业务进一步确认需求细节,和UI沟通交互细节,自测,造mock数据,这都需要时间

  • 如果没有缓冲时间,一个任务延期,可能会导致,后续N个任务都延期。

  • 即使从项目角度分析,足够的缓冲时间,有利于降低项目延期风险

工作总是被人打断怎么办?

  • 比如:开会,比如插入了一个紧急工作任务,这种较长时间的打断,那就将这些被占用的时间,写进工作日志,即时向项目组反馈,要求原本的工作任务加工时或延迟开始

  • 被同事问问题。几句话能说清楚的,那不妨和他直说。几句话说不清楚的,那只能等你有空的时候,再给他解答。要优先考虑完成自己的工作任务。

大方的承认自己的不足,能力多大,就做多少事,明确自己的定位

可能有的小伙伴,可能被别人激一下,被人以质疑的语句问一下,后续就被人牵着鼻子走了。有很大因素是因为不敢承认某方面的工作能力暂有欠缺。其实大方的承认即可,有问题,那就暴露问题,如果项目组其他成员会,那就让他来教你,这也属于沟通协作。如果没人会,那说明这是一个需要集思广益的公共问题。

可能有同学觉得自己就是个小码农甚至因为自己是外包,不敢发表自己的想法和见解,其实大可不必,只要你就事论事,有理有据,完全可以大方说出来,你不说出来,你永远只能从自己的角度看这个问题,你无法确认自己是对的还是错的。错了咱改,对了继续保持。既不贬低别人,也不看轻自己,以平常心讨论即可。

明确自己的定位,就是个普通码农,普通干活的,项目延期了,天塌了也是领导想办法解决。自己不会的就反馈,别人不会自己会的,那就友好分享。不会的,不要羞于请教。干不过来了,及时告知领导,让其协调解决。坦坦荡荡,不卑不亢。

前提

  1. 此方法是在没有技术阻碍的前提条件下预估,如果有技术障碍,请先解决技术阻碍

  2. 此方法需要根据个人实际情况调整

  3. 这里以普通的以vue,element-plus,axios为基础技术的管理系统为例

  4. 这些都是个人见解,欢迎在评论区提出不同观点

  5. 请先以一个普通的CRUD界面,测算自己的基本编码速度

为啥评估会不准确

自我评估时

82139c80ff6e71b9a722900a32aea711.jpeg


领导给你评估时

功能领导认为的领导忘记的领导认为的时间实际时间
加个字段加个显示字段而已,实际只要3分钟吧码农要找到对应代码,查看代码上下文,或许还涉及样式的修改,后端接口可能还没有这个字段, 还要自测20分钟2小时
做个纯列表页面前端只要把后端的字段显示出来就好了吧,肯定会很快可能没有直接可用的组件,即使有,前端可能需要查组件文档,看具体用法, 还得处理loading状态,空状态,然后还得查看后端接口文档,看哪些字段需要额外处理,最后还得自测,甚至可能在真正对接前,需要自己造mock接口2小时8小时
编辑/新增界面就写个表单,前端把数据提交给后端就完事了前端需要理解业务逻辑,需要做数据校验,对于类似下拉数据,图片上传,可能还要和后端沟通,数据从哪里取,分别表示什么意思,怎么上传图片,提交数据后,成功后要怎么做,以及失败的异常处理,用户填了一半数据之后,刷新了界面,应该如何处理,后端接口没出来前,需要自己mock接口,用来自测4小时3天
一个响应式界面就一个普通界面应该不至于有什么难度吧忽略了这是一个响应式界面,前端需要与UI设计师沟通,确认在不同情况,界面如何响应,以及思考如何实现,如果业务数据还会对界面的响应式产生影响,那还得进一步深入分析8小时3天
实现多语言功能多语言,不就是用编码代替原本的文字嘛,根本不需要额外的时间处理吧前端需要考虑多语言数据从哪里来,多语言切换之后对原本布局的影响,多语言切换之后,表单错误提示的处理方式不给额外时间3-4天
做个3/4环直接使用图表插件,调下API就出来了前端可能需要进行数据转换,需要查看图表插件的文档,图表插件可能没有现成的,需要通过搜索引擎找类似的示例,然后模仿实现,甚至图表插件根本无法实现这种效果,需要用其他技术实现3小时4天
前期一个连续的类似界面上一个界面和这个类似,把上个界面的代码复制过来,改改字段和接口,应该能很快完成很多界面看着一样,但实际业务逻辑差别很大,只是界面表现形式类似,有些字段是动态显示/隐藏的,有些可以固定写,表单字段的验证逻辑,可能也不一样。并且上一个界面的代码都还没写,还没测试,这里还有很多不确定因素,直接复制还可能导致,同一个错误,在多个界面同时出现2-3小时前一个界面花了多久,这个界面可能还是花了差不多的时间
仿照xx官网的效果,做个静态界面好多网站都是这个效果,这应该是烂大街的效果吧某个效果可能是知识盲区,需要查资料2天1周,甚至可能做不了
参考公司内部其他系统界面,实现类似界面现成的东西,这系统也上线好久了,应该把代码复制过来,稍微改改就OK了吧当前这个人从未接触过这个系统,对这个系统一点都不了解,了解需要时间,可能另外的项目有自己的框架,和当前系统的框架不同,无法直接使用, 另外一个项目无法直接给项目代码给你,只能让人给你讲解,但讲解人没时间或不是随时都有时间,或就是随意讲讲,另一个项目的这个界面,可能是经过多人集思广益,多轮讨论与重构才最终得到了这个效果5小时3-5天
用低代码平台实现个界面就是拖拖组件的事情,代码都不用写,应该很快组件可能没有,有组件可能某些业务逻辑在这个低代码平台难以实现,需要咨询低代码平台的提供方,但低代码提供方,几个人需要服务几十个人,无法优先给你解答,即使解答了,可能给出的方案不通用(或者他们还需要继续问他们内部团队的人),遇到下个类似的情况,原来的解决方案又无效了。难以调试或无法调试,前端原本的知识储备,在低代码平台,仅剩原始的js语法有效2天3周

总原则

  • 不要duang的一下,对整个界面/模块进行评估,应该对行列,表单项,逻辑点,进行评估,然后将总的时间加起来,就是这个界面的预估工时

  • 要至少多估20%的时间,一个是因为你很难持续性的投入(比如:有人突然问你问题,上厕所,喝水,或有事请假)

  • 请将一天的工作时间最多算6.5小时(因为你可能需要开会,可能被其他事情打断,可能有时不在状态,同时也算是给自己留点思考时间)

  • 尽量不要在过了一遍需求之后,立马评估工时(不要被项目经理或业务的节奏带偏),而是要自己再思考一遍需求,想想大概的实现逻辑,重难点等等,尽量不要当天给出工时评估

  • 如果是给别人评估工时,那尽可能给别人多评点工时

  • 工期紧的时候,加人有必要,但1个人干7天的活,7个人未必能1天干完

  • 有公共组件和没有公共组件完成同样的功能,所需要的时间可能天差地别, 因此,请确保先完成公共组件的开发

  • 请先将业务逻辑理顺,把工作进行拆分,直至自己能正确预估的范围内

前端有哪些地方需要耗费工时

  • 思考实现方式

  • 静态UI界面还原与响应式

  • 业务逻辑实现

  • 动态UI交互

  • 后端接口mock

  • 后端接口对接

  • 自测

前端项目应该分成几步实现

  1. 整体项目搭建以及规范与约束确认

  2. 整体页面结构,路由结构搭建

  3. 统一UI风格,以及公共组件实现

  4. 具体的界面实现

1,2点应该由项目组长完成 3点应该由项目组长以及技术较强的组员共同完成

常见的公共组件工时

组件工时
查询按钮60 分钟
提交按钮60 分钟
confirm按钮60 分钟
下拉按钮60 分钟
分页表格360 分钟
JSON配置分页表格240 分钟
动态表单360 分钟
JSON动态表单360 分钟
模态框90 分钟
抽屉组件90 分钟
select组件90 分钟
tree组件120 分钟
cascade组件90 分钟
日期选择组件60 分钟
日期范围选择组件120 分钟
axios封装360 分钟
卡片组件60 分钟
面包屑组件60 分钟

列表页拆分与编码工时预估

73152fb9274171e329a7798dae431dc6.jpeg
image.png

首先做总体拆分,分成3大部分

  1. 头部的搜索表单

a2fe1c48a3e6db9f6e806233022e9388.jpeg
image.png

每个表单项30分钟左右,每个功能按钮40分钟左右

因此这里是1个表单项(30分钟),2个功能按钮(80分钟),总计110分钟

  1. 中间的工具栏

bd6b7f1d6ff58023a190caa7d8605c01.jpeg
image.png

P.S. 这里没算右侧工具条,只算了左侧功能按钮

因为是列表页,添加角色这个按钮,只考虑是个简单按钮加个点击事件,至于点击按钮之后的角色添加界面的工时不放在列表页评估,而是在添加角色界面单独评估,因此添加角色按钮算30分钟

批量操作按钮,应该使用公共组件的下拉按钮组件,以及与分页表格组件配合实现,因此算40-60分钟

因此这里整体应该总计在70分钟内

  1. 主体的分页表格

f2d588e9bc625d5568f9aeeffa65b6f7.jpeg


应该使用公共组件的分页表格组件实现

  • 普通列(直接显示字段值的列,和简单转换的列)每列算20分钟

  • 操作列按每个操作按钮另算

  • 复杂转换列按40-60分钟算

  • 排序列按40-60分钟算

  • 分页表格组件调用30分钟

从界面看,这里有6列,checkbox列和序号列,是分页表格组件实现的,无需再算工时,除操作列和创建时间外,其他都属于普通列算20分钟每列,创建时间列算40分钟,因此总共100分钟

操作列角色成员,角色权限和修改,都需要打开一个抽屉界面(抽屉界面里的东西另算,不算在列表页中),删除需要调后端接口以及确认,因此

  • 角色成员按钮: 20分钟

  • 角色权限按钮: 20分钟

  • 修改按钮: 20分钟

  • 删除按钮: 30分钟

总计: 100 + 20*3 + 30 = 190分钟

因此整个列表页工时

列表页需要mock 1个接口,列表接口,算20分钟

110 + 70 + 190 + 20 = 390 分钟 = 6.5小时

再在390分钟的基础上再多加20% = 390*1.2 = 468 分钟 = 7.8 小时

P.S.

  1. 添加角色/角色成员/角色权限这是独立界面,需要单独计算时间。计算方式也与上面的类似

  2. 没有单独计算自测时间,个人认为理想情况应该对1个界面,加2-3小时自测时间

  3. 没有计算联调时间,联调时间应该另算

  4. 没有计算UI还原时间,对于复杂UI界面或UI还原度要求高的界面,应该单独计算UI还原时间

  5. 对于复杂的业务逻辑,可以将业务逻辑拆解为一条条的业务逻辑项,每个业务逻辑项以40分钟左右每条作为参考实现时间

  6. 没有考虑思考时间,对于复杂的业务逻辑,或者没做过的界面形态,或者复杂的界面形态等,必须将思考时间计算进来,或者说,在已经基本想明白怎么去实现的基础上,再去评估工时

被误解的敏捷开发模式

错误的敏捷开发

  • 敏捷开发就是强调一个快字

  • 敏捷开发就是不断的压榨工时

  • 敏捷开发就是不停的加班

正确的敏捷开发

  • 测试在项目之初就介入,编写完测试用例之后,共享给开发,方便开发自测

  • 将一个完整的项目进行合理拆分,拆分为若干独立小迭代

  • 每个小迭代完成之后,进行提测以及收集用户试用反馈,尽早反馈,以及尽早发现问题

  • 在小迭代提测期间,应该让开发略作修整(改bug或修整)和总结(总结共性问题,避免下阶段,再重复出现这些共性问题),而非让开发立马进入下阶段开发,否则容易造成,开发一边赶下阶段需求,一边赶上阶段bug

  • 个人认为敏捷开发,重点在于敏捷,灵巧好掉头,分阶段交付,及早发现问题,拥抱需求变化。而非简单的抽着鞭子让程序员加班赶工996或007

相关文章

如何精确评估开发时间的 4 个小套路?- 知乎 (zhihu.com)[1]

关于本文 https://juejin.cn/post/7330071686489636904

公号文章分七类

随时都会有更新

程序员

  1. 真诚利他

  2. 一个30岁前端老社畜的人生经历

  3. 2023年中大厂面试经历分享,很可惜,但是没关系

  4. 给迷茫的朋友一点建议吧,主要是前端方向的。

  5. 37岁的老前端在大专院校教前端

  6. 一个30岁老前端的人生经历(学习+工作+婚姻+孩子),给迷茫的朋友一点激励。

  7. 程序员如何应对ChatGPT带来的改变

  8. 尤雨溪解读 2022 Web 前端生态趋势

  9. 阿里前端:我的老婆失业了,周围同事也在不断被裁

  10. 一个月薪 12000 的北京程序员的真实生活

  11. 作为前端,工作中处理过什么复杂的需求?

  12. 尤雨溪亲自回应Vue.js涉及国家安全漏洞问题

  13. 开源作者恶意搞破坏,谁来为开源买单?

  14. 程序员裸辞后,在家全职接单一个月的感触

  15. 2022年如何成为一名优秀的大前端Leader?

面试

  1. 14个JS面试难点深入解读与代码实现

  2. 中小型公司三年工作经验的面试经历

  3. 2023年中大厂面试经历分享,很可惜,但是没关系

  4. 面试官:能不能给 Promise 增加取消功能和进度通知功能... 我:???

  5. 一个22届被裁前端思想上得转变

  6. 23年底,两年前端菜狗被裁后的面试经历

  7. 一年空窗期后我是如何准备面试的?

  8. 一份比较完整的字节技术面试题,包含算法、计算机网络和前端等

  9. 面试官:请使用 JS 完成一个 LRU 缓存?

  10. 正确介绍自己的项目,终于不用害怕面试了

  11. 本人是工作 11 年的老前端,面试一个月忽悠了十几个 offer

JavaScript

  1. 14个JS面试难点深入解读与代码实现

  2. ES14数组升级来袭,这六个新API助你高效开发

  3. FaceBook 开源 AtomicCss 解决方案:Stylex

  4. 前端是怎么解析Excel、PDF、Word、PPT等文件的?

  5. 面试官:能不能给 Promise 增加取消功能和进度通知功能... 我:???

  6. 14个提高JavaScript代码质量的小技巧

  7. JS es6仿网易云音乐播放器

  8. WebSocket 从入门到入土

  9. 如何构建一个仅有2KB大小、无依赖的状态管理器(以及它如何帮我获得两个不同的工作机会)

  10. JS代码其实可以这样写

  11. 详解HTML中的拖拽案例和难点分析

  12. 20 个 JS 工具函数助力高效开发

  13. 使用 JavaScript 编写更好的条件语句

  14. JS 运行机制最全面的一次梳理

  15. 8个console.log的解决方案

  16. 25个有用的 JavaScript 单行代码

  17. 前端工程师都在忙些什么?

  18. 我用 80 行核心 JS 代码每个月躺着挣一瓶肥宅快乐水

  19. localStorage 的高阶用法

  20. 某一线前端小组长的 Code Review 分享

  21. 一行 Object.keys() 引发的思考

  22. 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理

  23. 常用的前端JavaScript方法封装

  24. 刷算法题常用的JS基础扫盲

  25. 2022前端应该掌握的10个 JS 小技巧

  26. Three.js实现跳一跳(在线玩)

  27. 10个常用的JS工具库,80%的项目都在用!

  28. 我的代码简洁之道

  29. 一行 Object.keys() 引发的血案

前端开发

  1. 聊一聊自己的前端之路以及后面晋升的一些想法

  2. 如何做好前端项目组组长

  3. 如何构建一个仅有2KB大小、无依赖的状态管理器(以及它如何帮我获得两个不同的工作机会)

  4. 高级前端开发工程师必备:Hooks、React Router v6 和状态管理

  5. 高级前端开发工程师必知:浏览器解析代码、JavaScript代码执行流程、原型链与闭包

  6. 高级前端开发工程师必备:Hooks、React Router v6 和状态管理

  7. 高级前端开发工程师必知:浏览器解析代码、JavaScript代码执行流程、原型链与闭包

  8. JS代码其实可以这样写

CSS

  1. CSS中的相对单位和绝对单位,以及rem自适应布局

  2. 10个常见渐变交互效果

  3. CSS动画的实现和最佳优化实践

  4. 现代CSS中的换行布局技术

  5. 你知道flex: 0 0 200px;和grid-template-columns: repeat(3, 1fr);的含义吗?

  6. 10 个不错的 CSS 小技巧

  7. 为什么会存在1px问题?怎么解决?

  8. 2022 年的 CSS 全览

  9. CSS mask 实现鼠标跟随镂空效果

AI

  1. 无代码工具+人工智能:19岁少年月入5000美元,八款免费工具助你在线赚钱!

  2. AI 时代来临,这些 AI 工具让你的工作更加高效!

  3. 程序员如何应对ChatGPT带来的改变

  4. 10个热门的ChatGPT项目推荐

  5. ChatGPT 8个场景下的灵活应用技巧,让您事半功倍!

资源

  1. 程序员必看!15个优秀的中文技术博客汇总

  2. AI 时代来临,这些 AI 工具让你的工作更加高效!

  3. 程序员如何应对ChatGPT带来的改变

  4. 10个热门的ChatGPT项目推荐

  5. 推荐15个有用的前端技术博客

  6. 尤雨溪解读 2022 Web 前端生态趋势

  7. 2022,VSCode 前端插件推荐

  8. 几个高级前端常用的API

  9. 30个前端开发人员必备的顶级工具

  10. 45 个 Git 经典操作场景,专治不会合代码

  11. 推荐 10 个很“哇塞”的Web“资源”给前端工友,收藏等于学会~

  12. 送给 xdm 的 10 个 web 在线前端资源,优雅永不过时~

  13. 干货!移动端真机调试指南,对调试说easy

  14. 25 个前端相关的学习网站和一些靠谱的小工具

最后

欢迎长按图片加好友,我会第一时间和你分享前端行业趋势,面试资源,学习途径等等。

afe3e68306a92e075ba4e34570d99b52.png

添加好友备注【加群】拉你进技术交流群

公众号前端开发博客 专注 前端开发技术,分享 前端开发资源WEB前沿资讯,如果喜欢我的分享,给 宝哥 点一个 或者 分享 都是对我的支持

关注公众号后,在首页:

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF

  • 回复「Vue脑图」获取 Vue 相关脑图

  • 回复「思维图」获取 JavaScript 相关思维图

  • 回复「简历」获取简历制作建议

  • 回复「简历模板」获取精选的简历模板

  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。

  • 回复「知识点」下载高清JavaScript知识点图谱

  • 回复「读书」下载成长的相关电子书

老规矩,学会了点个赞或在看呀~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值