—— 福特公司在一百多年前,将工作时间改为8小时制,然后它们发现在流水线上,8小时工作制的出错率更低,这样做的价值反而更高了。 想要让我们的价值最大化,必须对效率与时间的关系有正确的认识,更需要对延长工作时间,也就是加班这个事要有正确的认知。 仅站在自我立场,从“政治正确”的角度简单的反对与支持它,都不是正确的行为。
当我们想追求高效的时候,一定会联想到另一个问题,效率与时间是什么样的关系?
是否有延长工作时间的同时,又能保持非常高的效率,这样让我们的价值能够最大化。
本篇,我将讨论效率与时间的关系,并聊一聊我对延长工作时间也就是加班的认知。
这是追求高效的程序员的最终篇,本系列其它文章为:
- 追求高效的程序员(一):价值,效率与时间
- 追求高效的程序员(二):深度工作与心流
- 追求高效的程序员(三):高效的学习
- 追求高效的程序员(四):善用搜索
- 追求高效的程序员(五):要事优先
- 追求高效的程序员(六):目标与执行
- 追求高效的程序员(七):运动与阅读
- 追求高效的程序员(八):积极与乐观
避免“政治正确”
在谈论延长工作时间,也就是加班这个点上,我觉得有个事情是我们要极力避免的,就是尽量不要从“政治正确”的角度来看待与评估它。
所谓的政治正确是指:
当你站在管理层或责任者(比如创业者)一方时,可能会倾向于支持它,而如果你把自己定位于打工者或非责任者一方,则更多的可能会反对它。这就是政治正确
所以,我的立场是站在价值最大化这个角度来看待这个事情。
根据第一章所列的价值公式
*** 价值 = 效率 * 时间 ***
那意味着,提升价值的无非是提升效率,抑或是延长工作时间。
最理想的状态?
我认为加班也好,提升效率也好,两种方式都是可取的方式,因为它们都能提升我们产生的价值。产生价值当然是有益的。
所谓条条大路通罗马,那当然这两条路都能通到罗马了。
那有没有最理想的状态,又延长工时间又能提升效率?

如上图所示,有没有可能一直做事又能持续保持高效呢?
我们都知道,这种状态,对计算机来说,可以有,对我们人来说,没有可能。
所以,我认为关于这个的正确认知不是支持或反对加班,我所赞同的认知是:
保持高效的状态下,尽量延长这个时间
并没有最理想的状态可言,无论对于个人还是团队,或是公司,这个状态都是不一样的。
之所以国内 IT行业加班盛行的一个最重要的原因,我认为是:
提高效率难,提升团队效率更难,而延长工作时间这个则相对容易实现
因此,在做不到提升效率的情况下,选择延长时间,从价值最大化的角度来说,不失为一种可选项。当然,要预防加班会大幅度降低效率,否则会得不偿失,竹篮打水一场空。极大的浪费了人力与成本。
这也是为什么有公司加班成功了,有些加班却没什么效果的原因所在,关键不在于加班不加班,而在于怎么在加班的情况下,又能保持一定的效率,这个也是对管理能力的一种考验。
四大加班类型
当然,再换个角度,就算简单的从打工或非管理者的角度来说,对加班也需要有一个正确的认知,而不是简单的反对它。
我把加班分为四大类,分别是主动型,必要型,责任型以及得不偿失型四种
我逐一解释下这些分类。
主动型
如果你做为一个程序员,从来没有主动加班去解决过什么你感兴趣或想去解决的问题,我认为你得思考下你到底喜欢不喜欢编程。
我认为,但凡对编程有爱好的程序员,当遇上一个可能感觉马上就能解决的问题或感兴趣的技术时,选择主动加班是下意识的选择。
因为这种状态下,压根没有心思做其它事。
对于这一类型的程序员,这一类型的加班,我认为是非常值得赞赏的。
必要型
无论对于个人,还是团队。总会遇要紧急的任务吧,也许在下周一之前完成这个,我们就能把这个订单拿下来,这样的场景肯定是存在的。
那无论是你自己还是做为团队的一员,这种时候,多付出一些时间,以协助达成这个紧急任务的目标,是不是非常必要的。
没有理由去反对这种情况。
责任型
也许存在一些程序员,本来正常状态下两周能完成的工作,无法正常完成,又没有非常合适的原因可以解释,更多的可能在于自我能力或自我约束力过差。
那这样的状态下,选择对自己负责,主动付出更多的时间去解决它,弥补自己的过失,是不是非常有必要。
这理当属于你的责任的一部分。
得不偿失型
可能很多人反对的更多的我认为是属于这种加班,这一类型的加班的特点表现为:更多的是管理者的焦虑,抑或是管理上的无力感导致的一种选择。也许是没有能力提升团队效率的状态下,不得已的选择。
特别是一些管理者,可能不太理解技术,把技术的工作简单的理解成似乎只要时间工作的越久,写的代码越多,功能实现的越快,就越能走的更远,离成功越近一样。
而事实上,同样功能的东西背后,代码的质量可能千差万别,可维护性也完全不在一个层次上,表现上看起来走的很快,而时间会证明,后面的前进可能会越发困难。
所以涉及到技术管理的管理者,我认为都得先去学习和理解一个基本概念,就是技术债务,在每做出一个决定时,要能正确的预估会产生多大的技术债务,事后需要多大的成本来弥补它。
还有一些,压根没有任何理由,就是喜欢让大家加班,那种我付你钱了,你就得做死的干类型的就不在讨论之列了,没有任何值得讨论的价值。
追求高效的程序员
所以,我认为加班也是一种可选择的工具,适当的场景下使用它当然是无可厚非的。
福特公司在一百多年前,将工作时间改为8小时制,然后它们发现在流水线上,8小时工作制的出错率更低,这样做的价值反而更高了。
我们要明白一个科学上的事实:
加班是以损害效率为代价的
个人也好,团队也好,追求每一个人的价值最大化其实是对各方都多赢的局面。
而对于我们个人而言,尽量追求高效这应该是我们的追求。要相信,高效才是你的价值所在,因为时间对每一个人都是公平的,当你花费更多的时间去做一件事时,意味着你将损失一些能花在其它事情上的时间,我们每个人一天都只有24小时。
如果不能高效的做事,意味着那些本来你可以做你喜欢做的其它事情的时间,保持你身体健康的时间,陪伴你的家人的时间等都会减少,如果你能学会提升自我的效率,意味着你并不需要牺牲这些方面的时间。
而对于编程来说,更依赖这种高效的能力,因为编程的质量并不是与时间成正比的一件事,但凡有编程经验的人,应该都明白:
编程的质量与效率成正比,与时间并不成正比
这就是为什么我们要做追求高效的程序员的原因所在。
本系列终。