AI大佬揭密中国程序员为什么加班如此疯狂

程序员在国内的工做量是出了名的多,加班已经是习觉得常的事情。然而,不少人都说国外的程序员并不怎么加班。这是不是事实?如果真的,又为什么出现如此差别?知乎便有网友提出该问题,亚马逊AI实验室主任李沐、以及其它热心网友对此作了答复。

中国程序员,一个跟加班秃顶爱恨交织的职业,风里雨里都没法阻止加班的步伐。
前端


根据《2018年中国程序员生存现状报告》,近一半的程序员处于25-29岁年龄阶段,身体和精神方面都正处于加班黄金期java

中国程序员加班已然成为一种常态,而你们也会常常会据说,国外的程序员是不加班的。知乎便有网友提问:为何美国程序员工做比中国程序员工做轻松、加班少程序员



感受美国程序员工做时间灵活、加班少,相比与国内程序员工做,彷佛压力小不少。可是美国程序员的产出却很是牛逼(如google、fb等)。难道是由于他们效率更高吗?若是是,国内程序员是否能提升效率减小加班和压力呢?web


该问题一出,便引发知乎网友的热议。亚马逊AI主任李沐,“凯威的讲堂”、“李小白”等热心网友抛出答案并得到高赞。算法


新智元得到了三位的受权,对其答案进行了整理。编程


边际效用和生活习惯是重点



美国程序员工做比中国程序员工做轻松、加班少整体来讲是事实,但都归结到美国程序员效率更高,制度更好之类就过于片面了。我以为主要缘由在于别的一些地方,例如加班的边际效用,程序员的生活习惯后端


背景:我在baidu(北京)和amazon(湾区)都干过,微软研究院(北京)和google研究院(湾区)也实习过,由于目前作云计算和开源,因此也接触过不少公司。总体来看,网络


  1. 不以为美国程序员比国内程序员水平高多少,特别是在年轻人身上。2000年后计算机专业红火,学生生源好,这些人是当前程序员的主干力量。并且中国教育在工程学科上更加扎实,适合培养程序员。前端工程师

  2. 美国有很是厉害的领导者,例如几家大公司创始人都很厉害。但加班文化更可能是每一个项目的实管人控制。我见过好的,也见过差的。虽然没有具体统计过比例,但没以为中美差别明显。架构

  3. 美国这边开会确实要多一些,但这个也是美国教育重视沟通相关(3,4岁的小孩就开始练习演讲了)。开会对于大组织有用,这样能够几百人在同一个思想层面往前冲,但用这个来衡量百来人的小公司就不见得适当了。

  4. 美国公司创新度更高,一是社会承认,二是不创新难有机会生存,三是国内只盯着创新的公司看。但创新公司加班很广泛,例如Tesla老大都睡在厂房。


因此我以为问题在于一些更本质的东西。这里是个人几点观察:


第一是边际效用。美国社会成熟度比较高,在湾区生活的同窗也许过去10年都感受不到特别大的变化,而中国则翻天幅度,特别是互联网领域。例如手机支付,美国普及很难,由于信用卡已经很普及了,手机支付带来的好处不显得很大。但中国的基础设施没跟上,因此手机支付在便利性上提高特别大,一样的技术,你们会不惜余力的去推广。


经济学上这个叫作边际效用。一样的技术,中国的边际效用比较高,因此你们能够全力推广。美国由于起点高,因此更加谨慎一些。


这个影响到了加班文化。经过加班能够完成更多工做。若是项目经理以为这些工做带来丰厚回报,他们确定会压着组员作。在中国极可能是这样,例如作出这个产品立刻会有人用,升职加薪跟着就来。然而在美国,即便今天作出来,用户也是慢慢的过来,彻底不须要急着那么几天。


第二是生活习惯。美国程序员年龄广泛偏大,由于计算机行业在2000年在美国就很红火(参考互联网泡沫),培养的大量的程序员,这些人如今不少都有小孩。在美国小孩都是本身带,双方父母不怎么帮忙。请人又特别贵,例如湾区工做日请人带娃一个月起码是2千美金起。并且学校课程松,因此放学后都要靠父母照顾。此外,不少人住的房子都带院子,请人打理费用贵,不少时候你们亲自动手。例如Robin在创立百度前曾醉心于在湾区种菜。


因而在加班边际效用不高的状况下,你们纷纷早点下班回家作家务。并堂而皇之的叫work-life balance。


我认识好几个未婚朋友,他们以为天天那么早下班实在是太寂寞,毅然回国去了创业公司,并对996你们赞扬。记得Andrew Ng也表达过相似的观点。


但反过来讲,早9晚5真的好?计算机技术突飞猛进,并且随着经历增加,须要提高各项领导能力。这些都须要足够多的时间去学习。我认识的厉害的人无一不是在下班后努力挤出时间工做,丝绝不比996工做时间少。与其如今羡慕别人轻松,不如埋头努力工做十年再来看。


对问题的边界定义需清晰



先说结论:跟国外公司比,国内公司最大的问题就是管理者对问题的边界定义不清楚。提需求的人没有成本,无止境地提不靠谱的需求。码农本身开发时也追求快糙猛,提升了系统的风险。总的来讲,经理很忙,产品很忙,码农很忙,测试很忙,运维也受不了。。就是这样的结局。


我在血汗工厂,大亚麻。整个大部门有80号码工。想知道你们工做有多轻松。。。我先上图为敬。



这位是最忙的。。这Commit记录大家看着办。。。 咱们部门是前两年重组出来的,作了七八个全新的项目,按血汗工厂的风格,SDE是要full stack的,还要讲政治,写个类都要摆出个设计文档。跟本身组,隔壁组过完设计,你们blibli一通留言,而后针对几个service的API划分和命名再掰扯个一周。最后谁都说服不了谁,摆出一句”求赐名“这时高级经理或者SDE会猥琐地从希腊神话里找一个神的名字出来命名service,再随机指定几个比较顺眼的命名,会议就结束了。


除了内部Tech的会议,偶尔也会参与业务方的会议。在这里也是要讲政治的,你参会了就必需要多说,不管说什么,必定要存在感巨强。当小透明是行不通的,为何,小透明就说明你这我的没想法,能力不行啊。某种意义上,声音大就是impact,就是能力!!有没有!!


接着说对SDE full stack的要求。你觉得咱们有前端,有测试,有运维?想多了,新开的service,若是涉及前端页面。是要本身写的。。。。没错,别管你是前端工程师仍是后端工程师仍是算法工程师,首先你得是个工程师,工程师就没有解决不了的问题。。。咱们作前端时也要开不少会啊,跟业务方沟通进展和Demo时,业务方能够提意见,一旦提了意见是要sign off的。不是随意说说那么简单。这样有个好处,不少东西定下来了就不随意改变。提需求的人是面临很大的成本,你老提了需求又改,又sign off,不出两月你们就以为你这人不靠谱,会给你不好的反馈。


谈完了前端,该到开发阶段了吧,开发时50%的时间在也业务代码,50%的时间在写测试代码。若是没有测试代码,code review是说啥也过不去的。写完代码以后,内部有很完整的自动部署工具,把你的单元测试,集成测试都跑完,而后部署测试环境,gamma环境等等。包括日志监控,都是要本身上手的,也是前文反复说的full stack的概念。SDE真的是Someone Does Everything啊。。。


这么一说确实挺忙的,实际上50%的时间都在会议,20%时间写代码,20%时间写测试代码,10%时间捣鼓一下配置,监控。但历来没有人加班,成天在家办公,这公司怎么还没黄。。怎么还没凉。


我来总结一下,会议是生产力。讨论得越清楚,返工就越少。好比系统设计,几个组的人一块儿讨论清楚系统的边界,上下游系统的关系,你的问题边界和需求是很清晰的。码工本身啰啰嗦嗦地对全流程服务。测试,运维等看似工做量繁重,实际上有效地下降了风险,极大地提升了软件的质量。


跟国外公司比,国内公司最大的问题就是管理者素质不高,对问题的边界定义不清楚。提需求的人没有成本,无止境地提不靠谱的需求。码农本身开发时也追求快糙猛,提升了系统的风险。总的来讲,经理很忙,产品很忙,码农很忙,测试很忙,运维也受不了。。就是这样的结局。


社会形态有差别、企业迭代速度过快



这个题目能出书了。两边的IT的企业五花八门,形形色色的都有。大部分答案都是抱着批判的态度。主要谈谈本身的见解吧。毕竟我也只在一家美国公司工做过,国内的工做经验为0,不足的地方但愿指正。


社会形态的差别

社会形态的差别确定是缘由之一。美国是一个很讲究Work Life Balance(工做生活平衡)的国家,人权大于公司的利益。因此若是企业若是过度“压榨员工”,是确定会被劳工部告的。大公司只要有任何风吹草动,均可能惹上负面新闻。好比:


告的就是Google付给女性员工的工资低。固然男性员工也在告Google。



举这个例子只是说,在咱们眼里,美国是一个很是“事儿逼”的国家。两国人民从小接受的教育很是不同,美国人偏理想主义,而中国人比较现实主义。


美国的企业很是怕事,哪怕他们没错,他们都会花重金摆平这件事情。好比前段时间的UA事件,Starbucks事件,都很好的说明了美国企业有多怕事。因此过分加班这种高压红线根本不敢碰。做为一个企业CEO,该破产就破产。美国的企业是很是好“碰瓷”的,告本身雇主的事情是在太多了。在咱们眼里,屁大的事情他们都可以上法庭。公司即便没有错,也会花钱摆平。否则一帮好事的媒体成天在显眼的地方报道这些新闻,很是影响企业的声誉。


企业是趋于利益的。并且有时候确实须要加班来知足需求。因此不少公司喜欢雇佣亚洲人和墨西哥人,由于这两种人即便加班也不会抱怨。不少美国公司用各类非美国人的Contractor和ICC也是这个道理。


固然美国某些公司也是加班很严重的,好比四大。可是(据说)美国的四大好像没国内累。只是相对而言。


美国人看重家庭大于工做,家庭比工做重要。因此那种牺牲自我,保全公司利益的行为是不多会发生的。


固然中国也不是最差的啦。日本加班比咱们多多了。这边加班太多了。日本人讲究的是为了工做能够抛弃一切。要论程序员的幸福度:美国 > 中国 >>> 日本。


我没有见过美国码农的公会。也没见过罢工。。。


公会发达的是欧洲。法国是公会的巅峰。啥屁事,都罢工,并且彻底无论后果。你能想象地铁和大巴司机罢工吗?整个城市会陷入大混乱。有一次考试,我辛辛苦苦背完了全部的概念,结果地铁罢工,考试取消。。。致使我第二周得继续再背一遍。


封装和抽象


大学常常学的Encapsulation(封装)也是主要缘由之一!OOP编程里面的封装其实很是重要。美国这边的公司很是注重Encapsulation。最简单的例子就是,用web framework去写server比徒手用原生java sockets去写要容易多了。


不少公司都喜欢Everything As Service (把全部技术都封装成服务),而后把这些Service作成Platform(平台),而后模块化。好比在Google,全部的Infrastructure(架构)都被封装成Service了,使用起来只要关心业务逻辑和资源分配就行,很是省时间。在新的Server里面加Feature也只须要加一个加一个新的模块就行。相比而言,若是花大量时间去调各类开源软件的配置,会花大量的时间。Google的作Infra时间比Facebook长,Infra种类多余FB,这也是“Google比Facebook轻松一点的一个缘由”。


每次开发产品,我都有种搭积木的感受。从web framework,到pipeline framework,到monitoring和resource,基本都是很是直观的事情。偶尔有问题,一个邮件就能解决。


平心而论,硅谷的Infrastructure比国内好太多了,每一个公司都有专门的组去认真研发新的Infra。因此硅谷的公司,只要不是过小,都多多少少有一些开源的项目。


凡是作Public Cloud Computing的公司,封装都不会太差。国内如今不少公司也开始作了。由于Cloud Computing讲究就是把本身Infra打包给外面的程序员使用,一样的功能,接口越简单越好。若是外面的人均可以很好的使用,本身人就更容易了。


中国企业的迭代速度快


硅谷技术强,可是产品迭代速度比国内差太远了。因此,Uber,Airbnb,Linkedin在国内的市场表现都不怎么好。不少技术壁垒不高的产品,比的就是用迭代速度去占领市场。技术壁垒高的产品,不是迭代速度能解决的。


中国的IT公司对用户的需求感知的特别快,他们清楚的知道用户须要什么。国内公司对竞争对手的动做也特别敏感(抄的特别快)。你会发现, 阿里,京东比Amazon的功能多多去了。饿了吗,美团也比Ubereats功能多多了。王者荣耀的新东西出的实在太快了。


Google的大佬不少都是工程师出生,重技术,轻产品。而硅谷大部分有特点的新型互联网企业早期都有大量的前Google员工,因此这也是硅谷的一个特点之一。


因此中国的IT和硅谷实际上是两种IT。迭代速度和发现新的Use Case是中国企业的强项。为了保持这个优点,惟一的方式就是加班了。


提升效率,拒绝无理需求


近来网络中调侃中国程序员的段子可谓是层出不穷:



虽然诸如上述的段子较为轻松活泼,但更为现实且使人心痛不已的例子又什么时候中止过呢?


据统计资料代表,我国“过劳死”的人数每一年达到60万人!已远远超过日本,成为世界第一“过劳死”的国家!


2015年3月,深圳某IT公司程序员张斌,猝死于酒店马桶,年近36岁。当天深夜1点钟,张斌还发过最后一份工做邮件。根据张的同事透露,为赶工程进度,加班至早晨五六点是屡见不鲜,又要继续上班。在去世以前一天,他还跟母亲发过"太累了"的短信。


这条消息可谓在当年刷爆朋友圈。


2018年8月,深圳24岁程序员工做中猝死,让人心疼不已。


虽然不少人都知道如此强压的工做确定会对身体带来重负,但面对现实、面对生存,无奈也只能默默接受。


远离加班”,这句劝告可能对大多数IT从业者来讲就像是一个梦想:很美好,也很难实现。


那咱们能作的又是什么?


  • 自身:提升效率,从工做中学会积攒经验。

  • 拒绝无理需求:有些状况下多是由于别人考虑不周而致使你疯狂加班,时刻保持清醒的头脑,提醒本身,锅是圆的。


资料领取方式

关注公众帐号【飞马会

导航回复数字【12


便可查看下载方式




往期福利
关注飞马会公众号,回复对应关键词打包下载学习资料;回复“入群”,加入飞马网AI、大数据、项目经理学习群,和优秀的人一块儿成长!
相关文章
相关标签/搜索