程序员在国内的工作量是出了名的多,加班已是习以为常的事情。然而,很多人都说国外的程序员并不怎么加班。这是否是事实?若是真的,又为何出现如此差异?知乎便有网友提出该问题,亚马逊AI实验室主任李沐、以及其它热心网友对此做了答复。
中国程序员,一个跟加班和秃顶爱恨交织的职业,风里雨里都无法阻止加班的步伐。
根据《2018年中国程序员生存现状报告》,近一半的程序员处于25-29岁年龄阶段,身体和精神方面都正处于加班黄金期。
中国程序员加班已然成为一种常态,而大家也会经常会听说,国外的程序员是不加班的。知乎便有网友提问:为什么美国程序员工作比中国程序员工作轻松、加班少?
感觉美国程序员工作时间灵活、加班少,相比与国内程序员工作,似乎压力小很多。但是美国程序员的产出却非常牛逼(如google、fb等)。难道是因为他们效率更高吗?如果是,国内程序员是否能提高效率减少加班和压力呢?
该问题一出,便引起知乎网友的热议。亚马逊AI主任李沐,“凯威的讲堂”、“李小白”等热心网友抛出答案并获得高赞。
新智元获得了三位的授权,对其答案进行了整理。
边际效用和生活习惯是重点
美国程序员工作比中国程序员工作轻松、加班少总体来说是事实,但都归结到美国程序员效率更高,制度更好之类就过于片面了。我觉得主要原因在于别的一些地方,例如加班的边际效用,程序员的生活习惯。
背景:我在baidu(北京)和amazon(湾区)都干过,微软研究院(北京)和google研究院(湾区)也实习过,因为目前做云计算和开源,所以也接触过很多公司。整体来看,
不觉得美国程序员比国内程序员水平高多少,特别是在年轻人身上。2000年后计算机专业红火,学生生源好,这些人是当前程序员的主干力量。而且中国教育在工程学科上更加扎实,适合培养程序员。
美国有非常厉害的领导者,例如几家大公司创始人都很厉害。但加班文化更多是每个项目的实管人控制。我见过好的,也见过差的。虽然没有具体统计过比例,但没觉得中美差异明显。
美国这边开会确实要多一些,但这个也是美国教育重视沟通相关(3,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、大数据、项目经理学习群,和优秀的人一起成长!
回复 数字“1”下载从入门到研究,人工智能领域最值得一读的10本资料(附下载)
回复数字“2”机器学习 & 数据科学必读的经典书籍,内附资料包!
网友评论