软件工程师如何预估项目所需时间

摘要:其实我们这些软件工程师同样被这个问题所困扰着。我曾经预计一个项目只需要两天的时间,但是最后它却花费了我4周时间。项目实际花费时间是预估时间的两倍以上,这根本不算什么新鲜事。我曾亲眼见过许多公司,为了上线一个新功能,像搬山一样费劲前行,最终用了好几个月的时间才完成项目。其实,对于项目时间预估,产品经理、PR和工程师的理解各不相同。大多数工程师在预估时间的时候,下意识想到的是在一切顺利的情况下,写出可用的原型所需要的时间。但是在产品经理等人看来,预估时间指的是从现在到项目正式上线所需要的时间——这两个时间可以差出十万八千里。

最近,我的一个产品经理朋友给我讲了一个她所遇到的问题:“软件工程师永远无法准确预估项目所需要的时间。我该怎么办?”另外两名CEO最近也跟我说了同样的话。

其实我们这些软件工程师同样被这个问题所困扰着。我曾经预计一个项目只需要两天的时间,但是最后它却花费了我4周时间。项目实际花费时间是预估时间的两倍以上,这根本不算什么新鲜事。我曾亲眼见过许多公司,为了上线一个新功能,像搬山一样费劲前行,最终用了好几个月的时间才完成项目。其实,对于项目时间预估,产品经理、PR和工程师的理解各不相同。大多数工程师在预估时间的时候,下意识想到的是在一切顺利的情况下,写出可用的原型所需要的时间。但是在产品经理等人看来,预估时间指的是从现在到项目正式上线所需要的时间——这两个时间可以差出十万八千里。

对于工程师来说,如何掌握项目预估时间的技巧,是一个终身的课题。不会预估项目时间,会给你和身边的人带来巨大的困扰。掌握了这个技巧,会让你和身边的同时合作的更加愉快,他们会更加肯定你的专业技能,认为你非常稳定,能够提供高质量的工作。

为何需要预估项目时间

我们先来说一个最基本的问题:为何需要预估项目时间?很多工程师抱怨预估时间是一个完全没有必要的事情。

需要预估项目时间,有两个主要原因:外部需求和优先事宜。

外部需求

没有人可以在真空里生存。项目的完成,通常需要工程师和其他人进行合作,例如非技术团队(财务、PR、客户支持等),以及其他工程团队,有时甚至还要和终端用户进行合作。通常情况下,产品经理或是CEO需要协调各方的合作。这意味着那些最需要做预估的人(也就是工程师),其实并不是特别需要进行预估。这种需求的不对称性导致很多工程师不喜欢预估项目时间。

优先事宜

项目时间预估也有助于确定优先事宜。在工程世界,时机是一个特别重要的东西,而缺少了项目时间预估,时机的掌握就无从谈起。就算你在做着全世界最伟大的软件产品,如果时间太长,你一样会错过时机。

例如,你打算做一个能让全世界的网站运行速度提速50%的项目。但是在预估过时间之后,你发现在同样的时间里,你可以做两个类似的产品,而且每个产品都能让网站运行速度提高40%。这就是时间预估的重要性。

项目时间预估基本知识

我们总是会低估时间的重要性,是因为我们经常会下意识的想:“写个基本版的这个东西需要多长时间?”

但是事实上,我们应该计算编写、测试、debug和抛光的全部时间。而且还要考虑日常工作中你每天有多少时间是在做其他事情,例如开会、代码评测、发邮件等。

另外,在项目进行的过程当中,我们还会遇到很多难以预计的问题,这些问题都会拖慢项目进度。例如IDE升级之后影响了代码,你需要花费一整天的时间进行修复。

在预估项目所需时间的时候,我通常会这样做:

Step 1: 制定技术计划

在开始项目之前,你应该做一份技术计划。你要用这个计划让其他人知道你正在做什么,并且从他们那里获得反馈。技术计划是开始对项目时间进行预估的最好方法。而且在做这个计划的时候,你会发现许多以前从来没有考虑过的问题,例如你会意识到自己需要对某一个库进行升级。你甚至还会发现自己需要使用的库根本不存在,而你需要自己先写一个库。

Step 2: 给每一步都添加时间预估

你要考虑技术计划上的每一步分别需要多长时间。要想做到这一点,你就必须要对细节进行考虑,例如“我需要的库是否已经存在,还是我需要自己写一个?”

Step 3: 添加缓冲时间

  • 在debug的过程中:bug会不断出现。具体需要多长时间,取决于你对某个代码库的熟悉程度以及这个代码库的成熟程度。
  • 会议、面试和假期等:在项目进行的过程中,你肯定不可能随时都坐在桌子前写代码。你每天实际写代码的时间有多少?在预估项目时间的时候,你应该先看看自己的日历。

最终测试和bug-bashing:除了代码之外,你还需要编写测试,而且很多团队在上线新功能之前,还要对代码进行额外的抛光和整合测试。在项目时间预估的时候要考虑这些工作所需的时间。

代码审核:你一般要对新代码进行几轮审核?每一轮审核需要多长时间?如果可能的话,你也可以和公司内专门负责代码审核的人员进行一下沟通。

Step 4: 上线之后回顾预估时间是否准确

你预估的时间是否准确?哪项工作预估的少了?哪项工作预估的多了?把它们写下来,让下一次预估变得更准确。

随着时间的推移,你的预估会越来越准确,你会发现自己预估的时间甚至能够造福整个团队。

沟通是关键

尽早、尽多的和公司内其他成员进行沟通。如果你在项目上线前一个月告诉经理,你正在使用的库有一个新的安全bug,你需要重头来过,他就会通知PR、财务或是用户新功能上线可能会推迟。

沟通还能让项目进行的更加顺畅。设计师可能会对你说:“如果那个高级动画需要一周的时间去写代码,那干脆就把它砍掉吧!”产品经理可能会说:“我们现在要的只是一个用于用户研究的原型产品,不用把它做的那么漂亮。”你的经理可能会说:“开会时间太长?我来处理,你安心写代码。”

项目时间预估永远无法做到完美。作为工程师,你一定不能在项目时间结束前一刻才告诉所有人预计的时间里无法完成任务,不然你会让所有人手忙脚乱。

而公司中的其他人,也应该意识到让工程师预估项目时间是一件非常困难的事情。只有不断的沟通,才能让项目进行的更加顺畅,在工程师耳边唠唠叨叨解决不了问题。

原 文:[The Software Engineer’s Essential Time Estimation Guide](https://hackernoon.com/a-software-engineers-essential-time-estimation-guide-d7328238c510# .guubjzti6)
译 文:SDK.cn
作 者:鲁行云(编译)

关键字:产品经理, 预估

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部