卖桃者说
池建强
极客时间创始人、墨问西东创始人
30376 人已学习
免费领取
课程目录
已完结/共 523 讲
第一季 (135讲)
第二季 (134讲)
第三季 (124讲)
第四季 (90讲)
卖桃者说
15
15
1.0x
00:00/08:00
登录|注册

第34期 | 反正项目都会延期的?

讲述:池建强大小:6.41M时长:08:00
你好,这里是卖桃者说。今天想跟你聊聊项目延期这个话题。
之前,我在斯坦福大学做过一次关于创业团队的演讲,其中提到了一个观点:做好 Code Review 和研发计划,反正项目都会延期的。当时台下的硅谷工程师们露出了会心的微笑,这让我觉得,人有国籍,国有国界,但项目延期是没有国界的。
工作了十几年,做过那么多软件项目,无论是他人估算还是自己预测,少有按期完成的项目,要么提前,要么延后,按期完成的,无非是熟门熟路十拿九稳,亦或是运气使然。
为什么软件项目的估算会这么困难呢?不怪老板心比天高,只怪程序员命比纸薄!我总结一下,原因大致有三:

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

由于计算机科学只出现了短短几十年的时间,人类很难按照以前的经验对项目进行判断和预测。
当你看到有人在三角钢琴上弹奏一首“两只老虎跑得快”的时候,你会很容易的判断出来,这件事不难,因为能弹出声音的人差不多都能学会这个曲子。
而当你看到“海上钢琴师”演奏那一曲惊世骇俗的“Enduring Movement”的时候,你会认为那是极度困难的,因为钢琴家弹到了风云变色,众人听到如醉如痴,钢琴家汗出如注,众人鸦雀无声。这种技艺,没有数十年的练习和极高的天分,断无可能掌握。
但是编程,你甚至难以从敲击键盘的速度上分辨出哪个是优秀的程序员,哪个是打字速记员。是的,搞速记的人,敲键盘的技巧会更加魔幻一些。
同样,我们可以从建筑物的大小、结构的复杂程度上判断,修建一座小桥的难度和工期会远远小于一幢摩天大厦。物理和感官上的认知,总能让我们的大脑去做出正确的判断,我们很少失误,几千年来,我们的基因就是这么告诉我们的。但是,软件没有物理的概念,既没有体积,也没有面积,也没有速度。你写了两万行代码,你的硬盘也不会多重一个毫克,即是从字节的角度衡量,10M 的代码,不一定会比 1M 的代码好用。
打开 Google 的官方网站,我们看到的是一个极简的页面,入口就是个搜索框。
一个工程师可以花费一个小时的时间把这个页面制作出来并挂在互联网上,但是,Google 却不可复制。这个简洁的搜索界面,就是整个 Google 科技帝国的入口,是浮在浩瀚太平洋上的冰山一角,冰山下面,是数以万计的工程师和庞大的计算机群在支撑着这个极简的页面。涉及的技术包括数十种编程语言、各种算法引擎、应用软件、硬件、运维、安全、工程等等,其复杂程度,常人难以想象,有时候程序员也难以想象。
互联网上有很多类似的简单页面,其中往往蕴藏着千百万台服务器和奔腾鼓噪的代码,就像大江上驶过的大船,出现却又不留痕迹,从江面上看去,杳然无踪。所以程序员们常常收到老板这样的需求:我就想要个淘宝那样的电子商务平台,卖点咱们和合作伙伴的东西,怎么就那么难呢?是的,就那么难,还不知道多长时间能做完!即使你找到的都是优秀的程序员!

2. 大部分程序员都是乐天派

我见过的大部分程序员都是乐观、积极、自信的,他们沉浸在代码的世界里,事实上,最好的程序员甚至是忽略项目工期的。他们只想把产品做到最好,或者逼近最好,至于时间嘛,应该是项目经理考虑的事情。所以,当项目经理和他们去核对工期的时候,他们会根据自己的经验给出一个非常乐观的期限。
和普通人一样,程序员们也会高估自己的编程能力和对复杂逻辑的处理能力。甚至,有时候程序员们给出的工期是自己负责的那部分程序编写完成的时间,然而一个功能的完成,包含编译、单元测试、提交代码、集成测试、功能测试、性能测试和上线等多个环节。
如果一个项目包含三个任务,每个任务的完成时间是 2 天,那整个项目完成,可能需要 12 天的时间。然而,这些细节往往被湮没在项目经理的时间表里,无法体现。
有一位项目经理告诉我,对于没有做过估算的程序员,他会把他们给出的估算时间乘以π,然后再提高一个数量级,差不多就是项目真正完成的时间,也就是说,如果程序员告诉你这个功能一周内能完成的话,差不多需要 3.14 月。我对他说,兄弟,你这样搞,难道真的不会被老板干掉吗?他说不会,这样反而可以提前完成任务!
即使是一个很有估算经验的技术人员,在新项目中也可能会遇到各种各样新的问题,你会惊奇的发现,上一个项目中的方法在新产品中失灵了。另外,开发中遇到的技术瓶颈或难以解决的 bug,会耗费程序员大量的精力和时间,这时候我们能做的只有等待,给他们时间去披荆斩棘,直到问题解决。

3. 不变只是愿望,变化才是永恒

众所周知,互联网世界充满不确定性和易变性,不变的只有变化,而在产品研发领域更是如此。我们都知道,在需求确定之前需要充分调研、充分分析,再做好清晰的定义,同时,产品和技术双方也要充分沟通,达成一致。
经过互联网行业这么多年的发展,技术和产品领域这么多年的“职业教育”,真正一拍脑门的产品经理基本已经绝迹了,大家都会遵守基本的产品研发流程。但很多时候,产品经理和程序员们会苦逼的发现,即使他们都做到了上面提到的这些要点,往往还是抵挡不住来自时间、来自外界的冲击,需求终究还是会发生变化。比如老板有了新想法,业务方的需求改变了,市场环境有变化,竞争产品出了新功能等等。
一个不得不接受的事实是,需求变化似乎已经成了软件开发的特性之一。另外还有一个有些苦逼的事实是,似乎“软件可以随意更改”的这种特性刺激了需求的不断变更。
还拿之前提到的建筑举例,比如你要盖房子,房子正盖着呢,但你突然觉得楼层之间的距离有点近,希望层高能增加个 0.5 米,但你肯定不敢提出来,也不敢说出类似“不就加个半米的层高,有什么难的”这样的话,因为你知道很难实现,也怕被打。
但在软件开发领域就不一样了,因为软件没有实体,再加上理论上代码怎么改都可以,导致大家很容易就忽视了改动的难度和成本,在开发过程中不断更改需求,还有个好听的说法是在不断完善产品。
现在你们知道为什么那么多项目都会延期了吧,也知道为什么《人月神话》这本书会畅销 30 年了吧,因为人月根本就没有神话!
那么你呢,你所在的项目延期了吗?在评论里说说。
好,今天关于项目延期的话题就先聊到这儿。卖桃者说,明天见。
(编辑:成敏) 
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《卖桃者说》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(21)

  • 最新
  • 精选
  • 笑忘日月星辰
    强哥,极客时间以后会有终身vip会员吗? 我在万门大学里买了终身vip,感觉他们这个理念挺好😊,希望极客时间后续也会有这种😁

    池建强回复: 不会有这种。终身?我不能保证这个

    4
    1
  • binginx
    不怪老板心比天高,只怪程序员命比纸薄!
    8
  • 瀚海星尘
    前公司改需求不加时间,重点是新需求还是以bug形式提出的,最最恶心的是,加的需求不扣产品和ui的kpi,扣开发的kpi。忍了半年,愤而离职。
    5
  • 熊斌
    私活儿做黄了一个,原因是我太过于乐观,高估了自己的编程能力,到最后无法独自应对客户提出类似于“就做成和xxx一样就行了,我就要那样的”这类的需求,找外援成本又过高,最后只好放弃。 公司的项目也是因为沟通、需求、商务等因素原本计划去年六月一期上线,结果延期到今年五月才上线。二期计划今年六月开发完毕,实际上前端才画完页面…
    2
  • 吃草🐴~
    项目延期是个永恒的话题哈。 估计工期是个挑战,说多了吧,比如像文中的 π 老哥,在我们公司应该就被咔嚓了,因为初创公司有些方面还是很急的。说少了吧,苦的是自己,只能到第二天了。 我发现,我属于乐观派,一般情况下,我如果自己估计 n 天,2n 天能完成。真正能够 n 天完成就是之前做过的~不过如果每天都做一样的那也太没意思了。 这么有共鸣的话题,看看其它猿怎么说。
    1
  • 壹雁🌟
    最近三个项目都没延期,并提前了。
    1
  • 桂鱼
    不延期的都是神话
    1
  • Geek_loser
    有些项目有几十个厂家一起参与,很多时候项目拖延得人神共愤了,可你还不是倒数第一!
  • 小斧
    每个老板都会高估员工的时间能力,有的消极员工都会说:老板的钱是美元。 找个好的老板体谅员工真的好难啊!老板找个匹配公司各项能力员工也难。 我们都需要为彼此做出些质的改变,把业绩做起来彼此都能实现个人价值。
  • 上善若水
    再说简单高速老板,谷歌够简单吗,一个检索页面,你知道多少研发人员反问
收起评论
大纲
固定大纲
1. 历史长河中累积的经验失效了
2. 大部分程序员都是乐天派
3. 不变只是愿望,变化才是永恒
显示
设置
留言
21
收藏
70
沉浸
阅读
分享
手机端
快捷键
回顶部