单从程序员本身来看这个问题就比较表面了,程序员本身都是追求效率的生物,加班明显不符合他们的预期。
引起加班的有两种情况,主要看老板
老板一:不懂技术但是脑洞大开想法多脾气急
目前引起互联网公司加班严重的这种至少占40%。老板一天一个想法,有了想法就觉得是个天才般的主意,做出来就成世界之王了。不断憧憬在自己的幻想中,然后要求立即实现,明天就上线。这种老板觉得程序员就是魔术师,敲一下回车就做好了。他们普遍不尊重互联网开发周期的客观规律,为了满足老板的需求,最后实现的任务就落到程序员的身上了,不加班怎么办? 然而这只是加班的开始,因为一切都很匆忙,产品架构,技术架构都不考虑充分,很多隐藏的问题没有测试出来,甚至使用带有硬伤的折中方案(每次老板跟我说你想个折中方案嘛,我作为运营都想打他)上线以后,本身的代码级bug层出不穷,产品设计本身的缺陷不断(比如视频列表没有分类,各种视频混在一起)光是解决这些问题就要很多加班,还要不断被用户骂街。好吧,就算这些都解决了,这个新产品或者新功能可能要用到一个新的代码库,这个代码库跟老项目是否兼容谁也不知道,如果只有这一个新功能还好,别忘了我们可爱的老板一天一个新想法,这样引入的新功能越来越多,就算新功能跟最早的项目都兼容,这些新功能之间打架不打架谁也不知道。所以会运行一段时间后鬼魅般的出现问题,然后就要用大量时间定位bug,修复,就算修复了也不知道什么时候会再出现。就像一个段子说的,我的项目运行良好,但我也不知道为什么。不是不知道,是不可能知道,因为变数被越来越多的引入,复杂程度越来越高,最后的难度就跟天气预报差不多,已经是不可准确预测的了。所以加班太正常了。所以为什么强调一开始宁可多用时间思考,设计,即使多一些时间也比之后永远缝缝补补要效率高的多的多的多,PC版QQ架构基本没变过,17年过去了,多少用户使用,想想这是多么牛逼的设计。所以给这种老板干活,尤其是没有一个他信任和授权的CTO,不加班我才觉得新鲜。而且这种情况不光是程序员,互联网各个职位是联动的,比如产品设计缺陷就要产品经理和UI不断返工,返工的结果还是要程序员实现(每个版本测试都要测试一遍)。其他问题要不断地由运营反馈,所以所有人都忙的没有x生活。打个比方,就像一艘船,破了个洞,然后随便拿沙子给堵上,把漏进船的水倒出去。过两天又破一个,然后又拿沙子堵上,你觉得沙子能抗多久,一会就忙的捉襟见肘了,但船依然破洞不断,直到最后漏的水已经无力回天了,那就GG了,大家一起沉船喂鱼玩吧。
老板二:技术出身对用户体验很重视要求严格
这种类型的代表有马化腾,周鸿祎,这些技术大佬本身技术出身不会犯老板一那种致命的错误。但是他们对产品要求很高,对用户体验极其重视,经常盯着用户论坛,微博等等看用户反馈,自己也不断体验自己的产品,提出各种优化建议或者缺陷。这些人都是工作狂,所以一发现哪些体验做的不好就立即召集人员来改进,尤其是互联网时代一切反馈都很迅速,竞争也很激烈,节奏很快。所以就好像有无数的改进要做,还是那句话,最后都要程序员实现,所以加班到夜里很正常。然而我觉得能跟这样一个老板还是比较幸运的,你看看前述的那种老板有一个做成的么?最后做出成就的都是这种老板,虽然他们有时候近乎无情的带着你加班,但是别忘了你做的都是有用功,因为他们真实的改变了产品的体验,产品在迅猛的发展,但是别忘了,你自己也在高速成长,而不像前述那种一样完全是原地踏步做无用功。我身边360的朋友确实吐槽过360变态的加班,但是他也承认,自己在360一年的成长,抵得过其他公司三年的。然而也正是因为能看到良好的结果证明自己的价值和工作的意义其实这种公司的程序员加班反而更加自愿,自带鸡血很有干劲,其实从强度来说比上述老板手下要累的多的多,所以也容易工作过于忘我出现过劳的悲剧,所以程序员朋友不要攻坚起来就没日没夜,工作是做不完的,进行合理的规划,给自己休息的时间,否则身体垮了一切都没意义了。