最近在阅读温伯格的《程序员开发心理学》,这本44年前的书,其中的很多探索和观点,现在看来依然鲜活而不过时。它开创了以人为本的软件开发研究方法,是软件从业者思想启蒙的巨著,技术人生的必读经典。我在每周一书里推荐了它,回复10067可以查看。
当我想讨论加班到底有什么用时,《程序开发心理学》中的一些内容如同弹幕一样从眼前浮现,启发了我。
放眼周围,到处都是加班的程序员。我原来在零壹广场时,有时披着月光到路边打车,出租车司机就会和我聊天,说你是华为(华为在我们对面有个研发中心)的吧……其实,我不是的。很多公司都加班,这是软件开发从业者的噩梦。
我应聘时被人问过“你怎么看待加班这件事”这个问题,我面试别人时也问过这个问题。有的人这么回答:“我希望能在正常的工作时间内有效的完成工作,如果情况需要,也可以适度加班”。有的人这么回答:“我就是因为受不了加班才从上家公司离职的”。
这次我不想讨论这些,我只想理一理另外一个问题:加班到底有什么用?
尽管多数程序员对加班深恶痛绝,但加班并不是毫无作用。首先它有很多负面作用:
让程序员厌恶眼下的工作
让程序员厌恶传递加班指示的领导
让程序员厌恶所在的团队
让程序员厌恶所在的公司
让程序员无法对他需要照顾的家人交代
让程序员怀疑他所从事的这一行是否能长久干下去
降低工作效率
浪费公司资源(水、电、办公用品等)
耽误正常工作
造成“正常工作时间瞎胡混,加班赶白天落下的进度”这种工作方式
有效降低程序员的工作积极性
交付低质量和埋了各种雷的产品
其次,实际上,不管对个人还是对公司,它也可能多多少少有一些“积极”作用:
造成一种假象,让领导觉得大家都在忙,心里踏实
造成团队凝聚力、执行力高的假象
不能按时交付时,向老板和客户展示努力的过程,给个不是交代的交代
对于依赖工时的任务,是有效的
有助于那些不推不动的人产出点东西
对于海绵一样的新手或极度渴望学习的程序员,可以学到一些知识、技能、经验
磨练程序员的心性,让程序员变得敷衍或者淡然
影响绩效
从另一个维度来说,加班有没有作用,就看这次加班,这个人是接纳的,还是拒绝的。假如阿猿乐意通过加班来完成某些事情,那自然是有效果的,因为这样的加班有明确的目的性,阿猿是自发地奔向它的目的。此时的加班,不觉其苦,反倒有愉悦之感,只恨时间飞逝不能多做停留。
《程序开发心理学》在“积极性、培训及经验”一章里有这么一段话:
过于努力地去查找错误,与根本不去查找同样坏,甚至还要更坏。实际上,往往要等到程序员已经决定放弃从而不再承受压力之后,许多程序错误才能被排除掉。给程序员施加高压,以期他们能够很快地排除某个程序错误,这种做法已经被证明是最差的策略——尽管截至目前,这仍是最常被采用的策略。
44年过去了,温伯格的话还没过时,我们还天天在用这种“压一压就出活”的策略,想想真是令人唏嘘。