JobPlus知识库 互联网 互联网+ 文章
解析为什么很多产品项目会延期

去年参加极客邦科技组织的中国技术力量,我在斯坦福大学做了一次关于创业团队的演讲,其中我提到了一个观点:做好 Code Review 和研发计划,反正项目都会延期的。当时台下的硅谷工程师们露出了会心的微笑,这让我觉得,人有国籍,国有国界,但项目延期是没有国界的。

工作了十几年,做过那么多软件项目,无论是他人估算还是自己预测,少有按期完成的项目,要么提前,要么延后,按期完成的,无非是熟门熟路十拿九稳,亦或是运气使然。

为什么软件项目的估算会这么困难呢?不怪老板心比天高,只怪程序员命比纸薄!总结一下,原因大致有三:

历史长河中累积的经验失效了

由于计算机科学只出现了短短几十年的时间,人类很难按照以前的经验对项目进行判断和预测。

当你看到我老人家在三角钢琴上弹奏一首「两只老虎跑得快」的时候,你会很容易的判断出来,这件事不难,因为能弹出声音的人差不多都能学会这个曲子。当你看到「海上钢琴师」演奏那一曲惊世骇俗的「Enduring Movement」,你会认为那是极度困难的,因为钢琴家弹到了风云变色,众人听到如醉如痴,钢琴家汗出如注,众人鸦雀无声,琴声急如咆哮的海浪,荡人肺腑,撼人心魄,又似玉珠落地,粒粒分明,颗颗透骨。这种技艺,没有数十年的练习和极高的天分,断无可能掌握。

但是编程,你甚至难以从敲击键盘的速度上分别出哪个是优秀的程序员,哪个是打字速记员。是的,搞速记的人,敲键盘的技巧会更加魔幻一些。

同样,我们可以从建筑物的大小、结构的复杂程度上判断,修建一座小桥的难度和工期会远远小于一幢摩天大厦。物理和感官上的认知,总能让我们的大脑去做出正确的判断,我们很少失误,几千年来,我们的基因就是这么告诉我们的。但是,软件没有物理的概念,既没有体积,也没有面积,也没有速度。你写了两万行代码,你的硬盘也不会多重一个毫克,即是从字节的角度衡量,10M 的代码,不一定会比1M 的代码好用。

打开 Google 的官方网站,我们看到的是这样一个极简的页面:

一个工程师可以花费一个小时的时间把这个页面制作出来并挂在互联网上,但是,Google 却不可复制。这个简洁的搜索界面,就是整个 Google 科技帝国的入口,是浮在浩瀚太平洋上的冰山一角,冰山下面,是数以万计的工程师和庞大的计算机群在支撑着这个极简的页面,涉及的技术包括数十种编程语言、各种算法引擎、应用软件、硬件、运维、安全、工程等等,其复杂程度,常人难以想象,有时候程序员也难以想象。

互联网上有很多类似的简单页面,其中往往蕴藏着千百万台服务器和奔腾鼓噪的代码,就像大江上驶过的大船,出现却又不留痕迹,从江面上看去,杳然无踪。所以程序员们常常收到老板这样的需求:我就想要个淘宝那样的电子商务平台,卖点咱们和合作伙伴的东西,怎么就那么难呢?是的,就那么难,还不知道多长时间能做完!即使你找到的都是优秀的程序员!

因为:大部分程序员都是乐天派。

我见过的大部分程序员都是乐观、积极、自信,他们沉浸在代码的世界里,事实上,最好的程序员甚至是忽略项目工期的。他们只想把产品做到最好,或者逼近最好,至于时间嘛,应该是项目经理考虑的事情。所以,当项目经理和他们去核对工期的时候,他们会根据自己的经验给出一个非常乐观的期限。和普通人一样,程序员们也会高估自己编程能力和对复杂逻辑的处理能力。甚至,有时候程序员们给出的工期是自己负责的那部分程序编写完成的时间,然而一个功能的完成,包含编译、单元测试、提交代码、集成测试、功能测试、性能测试和上线。如果一个项目包含三个任务,每个任务完成的时间是2天,但整个项目完成,可能需要12天的时间。然而,这些细节往往被湮没在项目经理的时间表里,无法体现。

有一位项目经理告诉我,对于没有做过估算的程序员,他会把他们给出的估算时间乘以π,然后再提高一个数量级,差不多就是项目真正完成的时间,也就是说,如果程序员告诉你这个功能一周内能完成的话,差不多需要3.14月。我对他说,兄弟,你这样搞,难道真的不会被老板干掉吗?他说不会,这样可以提前完成任务!

即使是一个很有估算经验的技术人员,在新项目中也可能会遇到各种各样新的问题,你会惊奇的发现,上一个项目中的方法在新产品中失灵了。另外,开发中遇到的技术瓶颈或难以解决的 bug,会耗费程序员大量的精力和时间,这时候我们能做的只有等待,给他们时间去披荆斩棘,直到问题解决。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
65人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序