职场求生攻略答疑篇之 1 —— 加班沉思录
有位同学在下面这篇谈加班的文章中,@sugar 同学留言谈了自己的切身感受
问题
sugar同学认为,加班还有一个主要原因是项目排期不准确。我来翻译一下的话,就是一个开发项目拆解成哪些小的开发模块,以及每个开发模块的开发时间,都不是很好估量。当有人问你:XX要做多久的时候,很难给出一个准确的答案。而给出一个时间之后,感觉就是一种承诺,要言出必行。如果做不完就得加班。毕竟是自己说的嘛。
研发=探索,探索=不确定
而软件研发的经验告诉我们,延期简直就是一定的,再丰富的经验,再充足的预算,也不能避免各种意外情况、考虑不周的地方、需求的变化等等等等。这些我在26 | 系统集成:为什么最容易出问题的是系统集成?里也有提起,不过那篇文章主要讲的是系统集成容易出问题,没有聚焦说由此带来的加班。
当然,除此之外,软件研发本身就包含了探索和试错的成分。正如sugar同学在问题里提到的,除非是做完全重复的事情,否则谁也不敢保证做一个事情要多久。就好像你种下一粒种子,你没法保证它,什么时候会生根发芽,能长几片叶子,能开多少多花。软件工程师从某个角度来说,就是花匠,我们在努力做了,什么时候能开花,真的不是我们能预测的。
为什么呢,代码不都是你写的么。正如种子一路生长直到开花,需要阳光雨露,各种肥料,我们软件开发写代码,也需要用到别人的类库,别人的工具,别人的系统,别人的数据,也要和别人的各种东西做集成,同时也不可避免的面临有些自己不会的知识需要学习,这都是不可控的因素。而这些因素,会导致开发周期的不可预测。
总结一下,别人扔给你一粒种子,并拍胸脯表示,要阳光给阳光,要雨露给雨露,要肥料给肥料,那么你能给出一个时间说这个种子什么时候开花吗?你能保证这个种子会开几朵花吗?不可能嘛,你都没种过这个种子(软件研发嘛,就是搞新东西),怎么可能直到这些?除非是之前种过多次的种子(做完全重复的事情)。你甚至都不知道这个种子会不会开花,没准它是一颗狗尾巴草种子呢?
排期=逼人加班
所以慢慢的就有这么一种感觉,每当有人问这个东西要做多久的时候,就是在潜台词说,你加班也得给我搞出来。
关于这个事情,我也是有切身体会的。如果说一个很长的时间,自己也没有依据。按照之前的经验呢?又很难把各种不可预料的情况计算在内。而且软件工程师本身就有一个高估自己产出的冲动,经常是会需要比预料的时间长一倍的开发时间。
人嘛,本能的不愿意认错,对方让自己估计一个时间,其实就是在逼自己犯错,甚至是变相的逼自己加班。而且这个加班,还是自己的原因——时间是你说的啊。
所以程序员都很排斥说给项目排期。还有人还因为这个与人翻脸。原因正如 sugar 同学所言,对方就是接预估开发时间,逼人加班。
怎么破?
那么怎么破这个事儿呢?
先换位思考
首先我们祭出这门课的三大法宝之一——换位思考。为什么对方会问排期呢?换成你是对方,会不会问这个问题呢?
当然必须一定要问啊,因为负责人要对项目进度和投入产出比负责,一个项目的产出可以问用户,投入就必须问研发。如果产出是10,投入是1就值得搞,投入是50就不值得搞了。而且,很多项目也有时间要求,必须在某个时间节点前搞定,比如电商大促之类的,如果预估完不成,那就得换方案。
所以这个事情,做还是必须要做的,绕不过去。
我们继续换位思考,如果我们手下有个人,每次预估都估计的很准,事情都能按照原计划完成,你会不会优先考虑给ta升职加薪呢?必须会啊,这就是人才啊,不升职加薪难道等ta跳槽么?
是挑战,就是机会
所以对于程序员来说,给项目排期,是挑战,也是机会,做不好就是打脸,甚至给自己埋坑,做好了就是给自己扬名立万。
给项目排期,其实锻炼的是自己的综合能力。当然,每个项目都必须具体项目具体分析。但是让排期不准的原因,我在专栏的文章中也大都提到过,包括但不限于系统集成,架构老化(导致开发新的feature难度增加),技术更新(所以有学习成本),外部依赖,上线有问题,系统假设不合理,环境搭建等等等等。
回到29 | 加班:加班逃不过,如何用正确姿势加班?里提到的一点。加班可以,但是反思是必须的。这次排期预估的不对,没关系,思考一下为什么。为什么不准呢?如果别人做,考虑的问题是不是会比我更全面一些,是不是会更准一些呢?我和别人的差距在那里呢?找到这些原因所在,就有针对性的解决。排期不准,只是最外层的表象,思考并解决根本的问题,才能提升自己。
当然,研发排期这件事,不准的大概率的,有多不准,就靠每个人的功力了。这个给项目排期的事情,是刚需,一定要做,谁能做的更好,就证明谁的能力更强,经验更丰富,也就证明谁就更有价值。自身有价值提升,就会在工资和级别上体现出来。
所以我们程序员,不妨乐观一点接受这个挑战。当然,预估的时候,还是要给自己留有余地。正如我前面说的,如果你吃不准,那就按照自己心里估计的时间x2,如果要和外部系统打交道做集成,那就x3。
旧事重提:选对公司,跟对人
专栏中不止一次的提及选对公司和跟对人的重要性,在这里再重提一下。
任何有经验的软件研发团队的管理者,都知道软件研发排期会不准,延期是大概率的。越是开创性的事情,越是有价值的事情,越不确定,越可能延期。
如果有人揣着明白装糊涂,极尽压榨之事,事后没加薪升值,也没奖金,那就是一将成名万骨枯。值得长期跟随的人,都是将心比心的人。
当然,每个公司管理的风格,肯定是和公司的风格相符的,所以选对公司,也是相当重要的。这里就不展开了。有兴趣的同学可以读读下面这几篇文章
版权声明: 本文为 InfoQ 作者【臧萌】的原创文章。
原文链接:【http://xie.infoq.cn/article/b169d74e5509171260c0841ed】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论 (9 条评论)