杂谈 6月前

为什么我们自己评估的排期,仍然经常延期?

作者头像 刘宇帅
923 0

最近团队的延期的情况有点多,经常有人过来跟我说,

“宝哥,这个今天提测不了,需要延期一天”

“宝哥,这个不能按时测试完了,需要往后延一下”

先说一下背景吧:我们公司被集团收购之后,持续在做技术和业务的融合。大家需要学习新的工具、新的平台、新的语言,也接手了一些历史的项目,也需要跟其他业务部门做对接的磨合。

在这种背景下,我们已经把排期放的比较宽松了,尽量让大家根据自己的情况评估工作量,但是结果仍然不够理想。

所以,为什么我们自己评估的排期,仍然经常延期?

到底是为什么

这种情况就是完全符合时间领域的一个法则,叫做侯世达法则

事情总是比你预计的要花更长的时间,即使你考虑到了侯世达法则。 ("It always takes longer than you expect, even when you take into account Hofstadter's Law.")

举例说明下,大家就明白了。

产品提了一个需求,要修改前端页面的一个字段展示。

评审的时候,我们第一眼的感觉就是——“很简单”。后端数据驱动,从某个服务读取一个字段返回回来,完事。

动手后才发现,下游服务接口里没有这个字段。不过也还好,去改下游服务,让下游服务读数据库的时候多读取一个字段,返回回来就完事了。

可仔细一看,发现下游服务本来从数据库里读了这个字段,但是不知道为什么在返回之前特意把这个字段屏蔽了,而且前人还特意加了一行注释——该字段千万不能返回。

于是,我们开始分析历史修改记录,或者找人去问背景。可能最后我们理清楚了历史逻辑,也或者我们为了完成需求,换了一个字段来返回数据,避免对其他服务带来未知的影响。

最后,当我们以为都完事的时候,却发现前端展示还是不对。然后我们就找前端同学查,前端同学反馈说有一个A/B实验的逻辑…

于是,我们越陷越深…

这就是侯世达法则经常作用在程序员身上的典型场景。

大多数时候,出现这种情况的根源在于——我们对要做的这件事还不够熟悉

除非我们做过这件事,并且明白这件事的每一步的操作方法和可能存在的问题,那么我们才能把时间评估的比较准确,且执行的时候才能避免各种各样的坑。

否则,在我们完全不熟悉的情况下,那些所有可能的坑都会变成各种意外。我们面对这些意外需要花很大的精力和时间去处理,甚至还有可能因为我们的不熟悉让事情变得更复杂。

如何尽量避免侯世达法则

梳理整体流程

做任何需求的时候,都要先搞清楚自己到底在做什么,业务流程是什么?也就是搞清楚——“从哪里来,到哪里去”

如果我们明确知道数据从哪里产生,经过哪些环节流转,最终如何展示,那么在项目过程中就会减少很多这样那样的“意外”。

预留缓冲时间

不要把排期排得“刚刚好”。

除非我们对要做的事真的很熟悉,否则大家一定要尊重侯世达法则存在的事实,在评估完工作量后,一定要预留一些时间作为缓冲。

复盘问题,沉淀经验

延期不可怕,可怕的是——我们承担了延期的后果,却没有学到任何的经验。

每一个“意外”我们都要记录下来,定期做个人和团队的复盘。在复盘中,我们要认真去思考这些“意外”的根本原因到底是什么。

是需求考虑不清楚?是自己做的时候不够认真?还是自己对技术框架不够熟悉?

找到最最根本的原因,反思改进,这样我们才能避免再次踩同样的坑。

培养团队的“全局意识”

技术人习惯性只关注自己的“一亩三分地”,结果就是:前端觉得是后端问题,后端觉得是下游问题,下游觉得是历史问题…

最后大家都没有问题,可问题还是没有解决。

所以我们需要培养团队的全局意识,不要只想着是不是自己的责任或者需不需要自己开发,而是从全局的角度去看待问题,找到问题的最优解。

最后

产研项目本身就比很多其他类型的项目更复杂,“意外”也更多,所以我们必须承认侯世达法则存在的客观事实,接受延期是一种常态。

真正重要的是:从每一次延期里学到点东西,让下次坑更少,排期更准,团队成长更扎实。

祝好

作者头像

刘宇帅

非著名程序员,全栈开发工程师,长期专注系统开发与架构设计。

提示

功能待开通!


暂无评论~

相关文章

读书计划

这里记录以后准备读或者重读一些书的计划,计划起于 2018/11/01,多读书提升技术和各方面认知。 正在读 技术类 << 算法导论 >> 5% << 现代操作系统 >> 10% << 亿级流量网站架构核心技术 >> 50% << 这就是搜索引擎 >> 25% 介绍搜索引擎的架构和各部分实现方案。 << 编码的奥秘 >> 25% 计算机编码普及读物 << 数学史 >> 4% 数学历史发展和起源 &lt

和ChatGPT聊人生

ChatGPT最近很火,所以注册一个玩玩。本来想跟它聊聊人生,结果它却劝我换工作。。 聊聊人生 我:你叫什么名字 ChatGPT:我叫ChatGPT,是一个由OpenAI训练的大型语言模型。 我:我可以给你起个名字吗? ChatGPT:您当然可以给我起名字,但是请注意我是一个人工智能模型,没有实际意义上的名字。 我:好,我以后就叫你雨宝吧 ChatGPT:很高兴与您相识,您称呼我为雨宝。我会尽力回答您的每一个问题。 我:雨宝,人生的意义是什么? 雨宝:作为一个AI模型,我没有自我意识和个人感受,因此不能对人生的意义发表个人观点。不同的文化、宗教、哲学等对人生的意义有不同的解释,有的认为人生的意

2018 年终总结

今天距离上次更新博客正好一个月的时间,一是因为我过完年准备换工作这段时间一直在忙于整理项目代码、文档,二是最近没有看什么新的内容(因为我博客其实是当做笔记用的,只是用来记录一些知识点方便以后查询)。今天正好刚开完项目交接会闲下来了就总结一下 2018 年和定一下 2019 年的目标。 2018 年 工作 工作上的内容没什么好说的,没什么大的波澜,做了四个项目,项目主要是公司内部平台并且属于”公司机密“,所以就不详细说了。 总结 前端又会用几个库 ant design、vue、nuxtjs、uikit等 语言学习了 go,看了 dart、rust、zephir,又尝试了 c++ mysql 优

我为什么要写博客

锻炼写作能力 我的写作能力真的是很差,有多差呢,读完这篇文章就知道我表达有多差了。。 我以前也有写过一些博客,但是写出来的东西真的是很差劲,连我自己都不想看第二遍,还有在工作当中有时候需要写文档,然后写的也比较乱。所以这次特地花了很大精力建立这个博客就是希望能提高自己的写作能力,提升在一些需要文字沟通环境里的沟通能力。 提升技术水平 站内博客主要会以技术为主,而我要想把某一个技术方面的知识描述清楚,我自己就必须保证自己对该技术有比较深入的了解才行。 记录各种问题和坑 在平常的开发过程中经常会遇到各种问题,然后就会一阵google,然后好不容易解决了,过了段时间又碰到了相同的问题又要重新找解决方

梦的记录:2018/08/21 中午

前言 从我记事起就比较容易做梦,有多容易呢,我在桌子上趴10秒有时候就能做个梦,以前也有想研究或者记录下自己梦,每次都没坚持下来。这次在博客上开这个栏目用于后面记录醒来后记得比较清楚的梦并根据情况做些简单的分析,后面也会继续去关注梦方面的书籍深入研究这方面的东西。 梦的时间地点 梦的日期:2018/08/21,大约时间13:40-13:59 地点:公司工位 梦的内容 地点:一间很熟悉、同学很多的教室。 时间:梦开始时正在上课、梦里的教室人比较多、课本也比较多,推测应该是初中或高中的时候。 人物:梦里的人物没有比较清晰的特征,感觉好像是中学时期好多同学的形象交杂着,有个男同学感觉跟我比较亲近,表