问题

为什么美国程序员工作比中国程序员工作轻松、加班少?

回答
关于“美国程序员工作比中国程序员工作轻松、加班少”这一说法, 并非绝对,但确实存在一些普遍的观察和趋势,背后有多重文化、经济、法律和社会因素在起作用。 要详细阐述这一点,我们需要从以下几个方面来分析:

1. 工作文化和价值观念的差异

美国:强调工作与生活的平衡(WorkLife Balance)
个人主义和权利意识: 美国文化更强调个人权利和自主性。员工普遍认为工作是为了实现个人价值和财务自由,但不应以牺牲个人生活和健康为代价。加班被视为效率低下的表现,而不是对公司的奉献。
公司文化: 许多美国科技公司(尤其是大型、成熟的公司)奉行“结果导向”而非“时长导向”的文化。只要按时完成高质量的工作,通常不会被要求长时间加班。公司也更注重营造积极、健康的工作环境,鼓励员工在工作时间高效完成任务。
法律和合同: 美国的劳动法对加班补偿有明确规定(如“同工同酬”法案),对强制加班有一定限制,尽管执行力度因公司和行业而异。一些公司会提供额外的加班费或调休政策。
员工的议价能力: 在人才饱和度相对较低、技能需求旺盛的时期,美国程序员的议价能力较强,他们有更多的选择权,不太愿意接受长期过度加班的工作。

中国:强调“奋斗者文化”和“996”现象(部分已改变)
集体主义和奉献精神: 传统中国文化中存在一定的集体主义色彩,强调个人为集体(公司、国家)做出贡献和牺牲。在快速发展的经济环境下,“奋斗”被赋予了极高的价值,尤其是在新兴行业和初创公司。
“内卷”和竞争压力: 中国科技行业经历了爆发式增长,但同时也伴随着激烈的竞争。为了在快速变化的市场中保持优势,许多公司推行高强度的工作模式,以求更快的产品迭代和更快的市场响应。
行业普遍现象: 在一段时间内,“996”(早上9点上班,晚上9点下班,每周工作6天)等工作模式在中国科技行业非常普遍,甚至成为一种“潜规则”。虽然这受到了广泛的批评并逐渐有所改善,但其影响仍然存在。
法律法规执行和企业文化: 尽管中国也有劳动法规定了工作时长和加班限制,但实际执行过程中可能存在一些模糊地带,一些企业倾向于通过“项目压力”或“公司发展需要”等理由来要求员工加班,且加班补偿(如加班费或调休)的力度和普适性不如美国。

2. 工作强度和节奏的差异

美国:更注重效率和流程优化
成熟的工具和流程: 美国科技行业拥有非常成熟的开发工具、自动化测试、CI/CD(持续集成/持续部署)流程等,这些工具能够显著提高开发效率,减少重复性劳动,从而降低对加班的依赖。
清晰的任务分配和项目管理: 好的项目管理和清晰的任务分配能够确保开发人员集中精力在核心任务上,避免无效的加班。
会议文化: 虽然美国也有会议,但通常更注重效率,会有明确的议程和时间限制。无意义的会议较少,或者可以通过异步沟通解决。

中国:早期追求速度,流程可能不够完善
快速迭代和“追赶”心态: 在中国科技行业发展的早期阶段,许多公司处于追赶国际先进水平的状态,需要快速推出产品以占领市场。这种心态容易导致对人力资源的过度依赖,而非流程和工具的优化。
需求变更频繁: 部分项目在开发过程中,需求变更可能较为频繁且缺乏规范流程,导致开发人员需要不断返工,增加了工作量和加班的可能性。
“人海战术”的惯性: 在一些情况下,面对压力时,企业可能会倾向于通过增加人力(或让现有人力更饱和)来解决问题,而不是从根本上优化流程。

3. 薪酬和福利的差异(间接影响加班意愿)

美国:高薪酬、更完善的福利体系
薪资水平: 美国的程序员普遍拥有较高的薪资水平,这使得他们有更强的经济基础,不必为了微薄的加班费而牺牲个人时间。
福利: 许多美国科技公司提供优厚的福利,包括但不限于带薪年假(通常比中国多且更灵活)、病假、股票期权(RSUs)、401(k)退休金计划、健康保险等。这些福利提高了员工的整体满意度,也让他们更倾向于在工作时间高效完成任务,享受工作之外的生活。
年假和休假政策: 美国普遍有带薪年假,且鼓励员工休假。相比之下,中国在带薪年假方面虽然有法律规定,但实际执行度和员工敢于休假的情况可能存在差异。

中国:薪酬增长迅速,但福利体系仍在完善
高薪酬是吸引力: 中国程序员的薪酬增长速度也非常快,尤其是在一线城市和热门公司,这对于吸引和留住人才起到了关键作用。
福利的差异化: 尽管一些顶级科技公司提供的福利也相当可观,但整体上,中国科技行业的福利体系可能不如美国那样普遍和完善,尤其是在中小企业。这种情况下,一些员工可能会为了更高的收入而接受加班。

4. 法律法规和执行的差异

美国:相对成熟的劳动保护体系
加班费规定: 美国联邦法律(FLSA)对加班费有明确规定,通常是时薪的1.5倍或2倍,对于“豁免”员工的定义也相对严格。
工会的作用: 在某些行业和公司,工会的存在能够为员工争取更好的劳动条件和加班政策。
申诉和维权途径: 员工遇到不公平的加班待遇,有相对成熟的渠道进行申诉和维权。

中国:法律框架逐渐完善,但执行仍需加强
《劳动法》和《劳动合同法》: 中国的法律规定了标准工时、加班上限和加班费标准。
实际执行的挑战: 许多时候,尤其是在某些行业和初创公司,法律规定的加班限制和加班费支付可能未能得到充分执行。企业文化和市场竞争压力使得很多员工选择默许或默认加班。
对“996”的讨论和政策调整: 近年来,社会对“996”等过度加班现象的讨论日益增多,国家也出台了一些指导意见,对规范工作时间、减轻员工负担有所推动,但这需要一个长期和持续的调整过程。

总结:

虽然不能一概而论地将美国程序员的工作描述为“轻松”,但相较于过去一段时间中国程序员普遍面临的“高强度”和“过度加班”状况,确实存在一定的差异。

这些差异主要源于:

不同的工作文化和价值观: 美国更注重工作与生活的平衡和个人权利,而中国在快速发展阶段曾普遍流行“奋斗者文化”和高强度工作模式。
成熟的工具和流程: 美国科技行业更早地应用自动化和效率工具,优化了开发流程。
完善的福利和更高的薪酬基础: 使得美国程序员有更多的底气和意愿拒绝过度加班。
更成熟的劳动法律和执行机制: 为员工提供了更好的劳动保护。

需要强调的是,中国科技行业也在不断进步和变化。随着技术的发展、管理理念的成熟以及社会对劳动者权益的日益关注,情况正在逐步改善。许多中国优秀科技公司也在努力优化工作环境,提高员工的工作效率和生活质量。同时,美国公司中也存在项目紧急、需要加班的情况。所以,上述分析更多是基于普遍趋势和历史背景的对比。

网友意见

user avatar

时隔两年多,更新一下。

两年前相比,国内近年来对devops/(翻译为研发效能)开始反复提及,这也算是一种进步吧。

然而,和上一次说的情况相比,新的奇葩问题又冒了出来。

某司两年多之前声称要改革,然后...然后制定了一堆据说是反复研究了google之后定义出来的“研发效能标准”,比如啥lead time要多少天,覆盖率要多少(这个还算正常),说开发人员必须负责所有自动化用例编写(??g家的兄弟出来说说,你们帮印度qa在写自动化?),什么自动化成功标志就是线上bug漏出只有多少多少个,哦,还有个啥圈复杂度(我是这么多年第一次听说)...

此外还加了一堆线上运维指标...

其实说白了就是自动化覆盖+运维响应,这也没什么稀奇。然而这帮中层干部就开始作妖了,说一定要统一,单测框架要统一,研发流程要统一,工具全部要统一。这个统一不是业务开发说了算,是并不负责业务产品的研发部说了算。而这研发部呢,其实是以前多测试部门...

其理由是:业务团队的开发不懂怎么设计通用型服务(貌似qa很懂),所以不管是xx还是yy(不说产品名字,反正都是大家从小用到大的东西)历经十多年内部的工具体系统统不算数,统统都是“没考虑通用性”,只有某顾问定义的“效能体系”下给出的工具才能是“标准统一”。

然后就疯狂要hc要人呗,做一堆奇葩的工具,这部门自己都无法全部串联起来,然后再申请hc,说要去“培训开发团队写单测”,不然的话开发者不知道不会写单测...

具体就不写了,不然太多细节。

总之好处是研发体验开始收到重视,是个好事,但由于中高层的一窍不通,底层一线缺乏实际经验,cr也好ci也好能起到什么作用都不清晰,只能说勉强在摸着石头过河。

然而不会有人出来回答:能否大规模统一使用jenkins

用jenkins?这tm怎么好去申报项目?怎么好意思在大众面前吹逼。一定要自研,一定要“统一,面向未来”...

******分割线******

举个例子,中国某家一线互联网公司,没有统一的ci体系,问一下有没有内部公用的jenkins系统,说都是各个项目组自己搭建维护(修正一下,今天了解到其实有一套,应该是在jenkins上搭建,设计思路很有些特色,虽然初次使用一如既往被网络隔离卡了一下,但是我觉得还是个不错的系统。然而,也失去了使用jenkins各种插件的可能。。。不过应该满足我自己团队目前需求了。这套他们自造的轮子似乎只是用来给应用做daily build,跟CI其实没啥关系,比如并没有针对单元测试做出什么东西,可能压根就没觉得CI要包括测试。。。)


然后不知道从哪里规定“代码必须只能在公司内部机器”,所以你要学美帝去work from home是不可能的,要接触代码必须在公司工位上。

所以呢,单元测试没有的,自动跑测试是没有的,code review更是做梦。

所以只能瞎check in,然后不敢回家只能等,出了问题赶快加班,测试全靠手,然后最爱扯性能和安全。

最可怕的是因为大多数中高层老板在他们的职业生涯中是在国内早期互联网浪潮中野蛮成长的,对现代开发流程和工具可以说没什么体会和了解,现在面临新浪潮的冲击,首先是要让他们自己能理解现代模式,这就更难,别人说老子不玩你那套一样在赚钱,你忽悠谁呢?

累吗?


但是另一方面,国内程序员自己也有相当大责任。小组之间互相不透明,生怕别人看到自己代码,不愿开放共享,造成难以独立debug(所以国内把“联调”看得很重);对微服务不理解,很多喜欢把自己的东西作为“组件”(也就是库或者独立程序)提供,非要别的组用各种奇葩方式来调用,说自己已经提供了sdk,已经达到要求。。。然后就是各种艰难的调试。。。

还有个现象是一方面老板重业务,程序员又喜欢用性能做借口,我看起来很快就能实现的改动,下面的非要说影响性能所以要做几周。。。没有那种get things done的思维,一天纠结些细枝末节的东西。产品还压根没几个人用就在纠结性能~~~

我tm看着他们做得都累,何苦。

user avatar

不是因为外国公司效率高,也不是因为他们开会多。同类的app,不论是电商还是视频,国内的app远比国外的复杂,变化更快,功能更多。三天一小改,五天一大改,过个节都要出一套ui,新功能层出不穷,做活动此起彼伏。

国内程序员的工作量,就是比国外的同行多,同样多的功能,国外程序员做,照样加班。

关键是,这些功能,真的有用吗?

知乎可以提问,可以回答,因为它是个问答社区。但它还能直播,能视频,能充值,能交易,能借书,能开课,还能众裁。正中间的按钮,有时是想法,有时是会员,是创作,是发现,但没人在乎,大家只是看看首页的时间线罢了。这么多的功能,对用户来说,体验不一定有几年前的版本好。

大量的加班时间,花在了一些可有可无的需求上。

微观上看,是kpi焦虑,宏观上看,是违法成本低。有多低呢?大概像水电费那么低。

多开几小时的灯,就能出个新功能,成本近乎于零,没人用也不亏,何乐而不为?没有法律层面的支持,劳动者就像在囚徒困境中,谁都不想加班,谁都不敢先走。

随着时间的推移,加班成为新常态,向各行各业蔓延。生活越来越单调,越来越重复,人从生产者,转化为生产资料。

user avatar

打个比方,知乎把80%的工程师的时间,都用在了这个使用率不到20%的付费栏目上,还特意在了寸土寸金的底边栏上占了一个图标——


如果知乎的产品经理良心发现,不强行推动这个垃圾feature的开发上线和长期维护运营,知乎营收降低20%,但是工程师能节约80%的时间。假设原来知乎工程师人均996,但是假如把这个非常次要、非常没用、非常花里胡哨、看上去耗费大量人力物力的功能砍掉,知乎估计人均每周工作4天就足够了。

而这个功能到底赚不赚钱,到底值不值得知乎长期以来投入这么多工程师的开发和维护,能不能起到支撑知乎估值的作用,知乎的高管们自己心里非常清楚。

本来marketing团队做一周的research就能得出“浪费时间+烧钱,千万不要做”的结论,被一个高高在上的高管强行推动做出来,于是耗费了几十个团队从码农到产品经历长达两三年的开发、迭代、维护、删改、撕逼、会议、营销、资源倾斜——最后做出来到底值不值这么多钱,有没有用途,商业模式有没有成功,你们自己最清楚。

本来现代管理的模式中,各个团队各司其职,却偏偏在一些地方,CEO既是marketing director,又是sales director,又是CFO,又是COO,又是pr director,又是product management director,唯独不是CTO,不是程序员——那么结果只能是“程序员天天加班,做出一个又一个没用的、商业模式上失败的项目”

user avatar

美国程序员工作比中国程序员工作轻松、加班少总体来说是事实,但都归结到美国程序员效率更高,制度更好之类就过于片面了。我觉得主要原因在于别的一些地方,例如加班的边际效用,程序员的生活习惯。

背景:我在baidu(北京)和amazon(湾区)都干过,微软研究院(北京)和google研究院(湾区)也实习过,因为目前做云计算和开源,所以也接触过很多公司。整体来看,

  1. 不觉得美国程序员比国内程序员水平高多少,特别是在年轻人身上。2000年后计算机专业红火,学生生源好,这些人是当前程序员的主干力量。而且中国教育在工程学科上更加扎实,适合培养程序员。
  2. 美国有非常厉害的领导者,例如几家大公司创始人都很厉害。但加班文化更多是每个项目的实管人控制。我见过好的,也见过差的。虽然没有具体统计过比例,但没觉得中美差异明显。
  3. 美国这边开会确实要多一些,但这个也是美国教育重视沟通相关(3,4岁的小孩就开始练习演讲了)。开会对于大组织有用,这样可以几百人在同一个思想层面往前冲,但用这个来衡量百来人的小公司就不见得适当了。
  4. 美国公司创新度更高,一是社会认可,二是不创新难有机会生存,三是国内只盯着创新的公司看。但创新公司加班很普遍,例如Tesla老大都睡在厂房。

所以我觉得问题在于一些更本质的东西。这里是我的几点观察:

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

经济学上这个叫做边际效用。同样的技术,中国的边际效用比较高,所以大家可以全力推广。美国因为起点高,所以更加谨慎一些。

这个影响到了加班文化。通过加班可以完成更多工作。如果项目经理觉得这些工作带来丰厚回报,他们肯定会压着组员做。在中国很可能是这样,例如做出这个产品马上会有人用,升职加薪跟着就来。然而在美国,即使今天做出来,用户也是慢慢的过来,完全不需要急着那么几天。

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

于是在加班边际效用不高的情况下,大家纷纷早点下班回家做家务。并冠冕堂皇的叫work-life balance。

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

但反过来说,早9晚5真的好?计算机技术日新月异,而且随着经历增长,需要提升各项领导能力。这些都需要足够多的时间去学习。我认识的厉害的人无一不是在下班后努力挤出时间工作,丝毫不比996工作时间少。与其现在羡慕别人轻松,不如埋头努力工作十年再来看。

===19年更新===

我对答案中对996淡淡的赞同表示很惭愧。反观我自己,在身体和家庭允许的一些时间里,可能每周会工作60、70小时。但如果每周坚持是不可能的。很是不赞同企业家大肆鼓吹必须996。

user avatar

又看到一波人再扯什么企业文化,法律制度,科学管理,好像不扯这些不能体现出自己思考的深刻。好在我也工作快20年了,这些装*的东西也见过不少了。把自己在一篇回答下的评论搬过来吧,口语化的东西,没有什么深刻的道理,高大上的概念。只是觉得知乎一些人没工作几年,凭着自己短暂的几年认识,就下论断未免太片面,随性了。

=====

说句不好听的,那是因为当前美国行业状况,没有什么值得码农去拼命的了。我以前那个美国公司,2000年股票泡沫的时候,全公司的码农都拿睡袋睡在办公室。产品做出来就能IPO,IPO了就能发财,大家都明白股市这么火爆,多少年才碰到这么一次。隔壁公司的Tom已经买跑车了,你拼不拼?不拼就滚蛋,别挡着别人的财路。

国内整体行业环境还是处于拼命工作,就能让自己收入档次上一个台阶的地步。所以大家拼命加班。要是像美国2000那次一样,拼命就能发财,加班会很狠。什么企业文化,什么技术水平,什么法律保障,都是扯淡。老美的清教徒文化,不仅仅不排斥努力工作,还把这个作为优良品质。但是老美是资本主义,一切向钱看,努力加班又挣不到更合理的回报,我这么拼命干嘛?至于技术水平这些,就更是搞笑了。美国这垃圾代码的低水平码农多的是,我没见他们就加班了,反倒是高水平的程序员更能接受加班。至于法律规定,难道现在工会的大妈2000年的时候都还年轻,更富有激情?

user avatar

很大一部分原因是从业者平均年龄。美国的码农平均年龄远远高于中国。

中国的码农群体因为极速扩张,干活的人多数是刚毕业的二十多岁年轻人。而美国的码农群体比较稳定,很多40岁左右的人还在一线写码。甚至60多岁还在写码的也不少。

20多岁的人加加班也不会怎么样,尤其是被老板压榨习惯了的研究生,下班在家吃喝玩乐的时候还会有点虚度光阴的负罪感。但是40多岁的人有家庭有孩子,身体也不行了。即使想长期加班,大多数人也是做不到的。

实际上美国很多小公司也加班,尤其是startup。比如andrew ng的startup招人的时候要求愿意每周工作70个小时。还有马斯克的tesla和spacex都是著名的血汗工厂,996不是梦。

但是由于从业者平均年龄在那里,当公司员工越来越多的时候,员工平均年龄必然会越来越接近行业平均水平。而年纪大的员工真的加不动班,慢慢就大家都不加班了。

所以中国码农的未来还是乐观的,就靠诸位再熬十年,然后自己去争取了。当然还有一种可能是中国码农数量继续指数增长,十年后诸位媳妇熬成婆,继续带着年轻人加班。。。

user avatar

嗯,被经理举报了:


现在我切换到表扬模式。


是的,他们效率更高。


但是,国内程序员不可能通过提高效率减少加班和压力。因为这事的决定权不在你而在公司。


之前“开发和产品经理因为识别手机外壳颜色而打架”的传闻之所以能引起广泛共鸣,就是因为这类事实在太普遍了,太多人感同身受。


因为中高层聪明太聪明了。聪明绝顶、英明神武、别具慧眼、大巧若拙、福慧双修、绝圣弃智、兰芷蕙心、七行俱下、上智下愚、秀外慧中、足智多谋、聪明绝世、聪明睿智、聪明正直、精明能干、才清智高——人家喜欢听好话,咱得多说。尤其像这个水平的,起码值一千个关于聪明的形容词,对吧


可惜俺才疏学浅,实在凑不够数。只能列出八百个——不信您数数,足斤足两,一个不少!

啊?别看评论区。那都是不识数的。数到八百太难了,也就您这么聪明的能数清。不信您点点,八百!少一个俺再赔你一千个!


怎么样?满意了吧?

满意了我们继续。


所以,当你花大力气设计了一个精简高效的架构,把一个很难的问题干净漂亮解决掉时,绝不会有人击节赞叹——恰恰相反,他们觉得你捣鼓了个把月才产出几百行代码,反而会犯嘀咕:这人是磨洋工呢,还是不会?

你面向搜索引擎编程,乱七八糟拷一大堆东西到代码里,用到用不到都留着,KPI表现反而会特别亮眼。

一天几千行代码当然亮眼。

一群外行,怎么会知道这几千行里面就两行有效呢。


类似的,你兢兢业业,一个bug都不让出,人家就把你忘了;反之,你大大咧咧,一个功能你能写出800个bug——经理看起来就很忙很努力,因为他得不停的和你交流;你也很忙很努力,不停跑经理那里讨论问题:全公司你最忙你经理最敬业,不奖励你俩还有天理吗?!


你看,你好我好大家好,身为聪明人,你为什么不多写点bug呢。


当然了,这是极端情况。大多数公司还是没这么极端的——他们的中高层还不是那种聪明绝顶、英明神武、别具慧眼、大巧若拙、福慧双修、绝圣弃智、兰芷蕙心、七行俱下、上智下愚、秀外慧中、足智多谋、聪明绝世、聪明睿智、聪明正直、精明能干、才清智高的


即便如此,他们中的绝大多数——包括多数程序员——仍然不懂软件工程。

他们并不知道,或者说并没有想过,今天你写的每一行代码,都会是明天的新代码的地基。

即使你知道,也没办法让中高层明白。


如果你今天写的太过随意,明天就很难在这个基础上扩展它;如果你着急完成任务,今天不先把昨天的设计缺陷修改掉,而是想一个办法绕开……那么明天你就不得不绕着圈子躲开更多问题。

越往后,就越难改;越难改,就越容易出bug。


但是,如果你想改昨天的代码,你就得先解决前天的问题;想解决前天的问题,大前天乃至大半年前的设计缺陷你就得逐一解决掉。然后,这大半年里,你就完不成任何新提的需求。


反正至多做三两年我就要换工作了。随他去吧,完成眼前的工作要紧。


因此,为了急功近利的眼前效率,中国程序员的长远效率自然变得极低——越往后越低。


我曾经接过一个任务。


因为高层设计的严重问题,我们不得不在网络通信层更新用户登录状态(稍微懂点的都知道这需求有多奇葩:打个比方的话,这就好像让发动机制造商在活塞上做一个阀门以便随时泄压一样怪异。原因是我们的整车商忘了装启动机也没有离合器,所以需要减轻发动机阻力方便人家把车推起来)。


项目经理不懂。他觉得一条SQL语句也就是0.0x秒的事,我们的流程耽误1秒问题应该不大,所以就答应了。

我说每个用户都可能卡这么0.0x秒,人多了咱这模块吞吐量就没法看了。这个咱不能接。真要接也行,得改成多线程架构,得多安排时间。


经理说没事,直接加就行。做出事了他们负责就是(言外之意,一旦接了这个,将来我们自己的锅也有办法拉他们一起来背)。


既然都这么说了,我就动手做。

做完,内部测试没有任何问题;但一上线,整个系统死了。

原因是,那个库负荷特别大,一条数据库更新语句能卡几秒甚至几十秒。将来人多了还会更卡。

经理说,算了,你改多线程吧。


我思考了三天,决定不动我们这边的架构;而是设计个thread_call接口。任何传给thread_call的函数都会在另外的线程里执行——为了避免读写到调用函数的局部变量、然后在线程执行时调用函数已退出,thread_call内部会自动申请内存,把转交给工作函数的字符串等通过指针引用的参数统统复制过去;当线程执行结束,函数返回值也会保存在某地等待查询(超时或查询后自动删除),同时释放用到的资源。


为了实现这个,需要一个全局单例类负责管理线程、及时清理用到的资源;同时最好有一个线程池和一个内存池,免得频繁申请/释放。不然长时间运行下去,把内存弄的千疮百孔,程序就更容易出问题了。

内存池我已经写过一个泛型版本,直接拿来用就行。剩下的线程池、资源自动申请/释放(基于RAII和泛型,不支持原始指针因为无法确认空间大小、也无法确保复制成功,玩过泛型的都懂),加起来一百来行代码解决。最终代码量300多点,其中一大半是注释。

这个东西轻松的一次编译通过;然后挺过了各种测试,没发现任何问题。


这东西差不多相当于给C做了个简易协程框架(当时协程概念还没流行起来,不然我就把yield也实现进去了),今后遇到任何类似的“需要并行工作、但又不涉及数据竞争”的需求,直接写个处理函数然后丢给thread_call执行就好。

你看,如果程序都照这样写,是不是就会越写越快?

因为你昨天写的东西,今天可以拿来就用。写的越多,积累越多,实现新功能时需要重新实现的东西就越少,效率自然越高。



但是这个东西让项目经理作了难。

这是因为,如果算KPI的话,等于我花一周写了300行代码;然后又测了一周……两周300行代码的产出,这实在太少了。


反观别人,一个用户注册,人家一个字段一个字段一个字节一个字节的用代码检查、复制,轻轻松松搞出来500行。很水的几个功能轻松灌水上万行代码,然后部门KPI也有了,个人重要性也体现了——而且修不完的bug:你看,离了我们这个部门,公司真不能过啊!


可我傻乎乎的300行代码搞出这么复杂个东西,竟然还测不出bug……项目经理是知道这里面功能多,但上面觉得你忽悠他。300行代码你还能吹出花来不成?

而且,既然没有bug,以后人家还需要你这个部门吗?问题都解决了,我们这些人……还有继续雇佣的必要吗?


总之,他希望以后再写程序,尽量写长一些……而且,为什么要复用呢?其实每一个类似的需求,都是可以给他整个几万行代码出来的嘛。


没错。人家的预期是:这是个挺复杂挺难的任务,你应该加班加点忙上几个星期,提交几千上万行代码,到时部门KPI有了个人业绩也好看——将来每个类似任务都应照此办理。

而我呢,轻轻松松300行代码,杜绝了类似任务的出现——什么都不用管,加一行thread_call,全都妥妥贴贴了。

一个任务对应一行,这KPI还能看吗?


你看,面向目标的不同,面向KPI编码就必然使得实现臃肿、问题频发、每天996过劳死……但做起来其实轻松愉快,因为你完全可以磨上仨月洋工,然后吹嘘“多线程有多难”;然后还能让高层不断找你、解决诸如野指针、数据脏读脏写、死锁、内存碎片导致长时间运行后大块内存分配失败等等等等疑难问题——既让你显得重要,又能轻轻松松“骗”来大量的KPI,最后还不需要去学鬼画符一样、难的不要不要的泛型技术……


而面向问题编码呢,借助泛型,自动识别、复制函数参数(它们可能来自调用者的栈,随时可能失效),再加上用池来加速资源回收/分配效率、提前杜绝内存碎片问题——这完全是个简单轻松解决的小模块。而且只需解决一次,我们自己的“类协程库”都出来了,以后写程序会越来越快、越来越好:你甭管我怎么做完的、耗了多少时间,功能点我给你实现了、上线后bug free,是不是对双方都有利?


但是,后者在这个公司行不通。

代码量少没KPI你气不气?

bug写的少没人找你显得你不重要,倒霉不倒霉?

将来项目失败抓人背锅时,别人说我天天加班996007态度端正;而你呢,955一分钟班不加,这态度是不是很能说明问题?


从上到下都不懂你能怎么的?


别说这家公司的管理者了,他们的技术人员自己都不懂。我两个关系比较好的同事,还真以为我们是公司里干活最少、最不重要的几个呢。

因为别人忙忙碌碌总有干不完的活、修不完的bug,高层中层领导天天围着转,求爷爷告奶奶但任务就是做不完,重要的不得了。而我们几个公司公认的技术专家呢,每天到时间就走;座位上冷冷清清,从无领导过问;经常上班时间闲极无聊于是借“学新技术”的名义逛论坛……

时间久了,他们自己都心虚:为啥别人总是有干不完的活、见不完的领导?为什么我们经常整周整周的没有任务、闲坐着发呆?人家是不是比我们干的多、任务难啊?不对啊,每次分配任务,分给我们的,都是别人接不了、不敢接的啊?


直到有一天,午饭后散步聊天打屁谈到这事,我才觉得不对,提议回去看看工作日志/提交记录之类东西。

那天我们大概照例聊到了下午三点吧——没错,因为事少,因为要都要不来工作,一个月至多也就忙一周,955都大块大块的空闲时间。别说加班了,平常上班我们都经常偷空出去散步。

悠哉游哉回到公司之后,我们就去翻看所有同事的提交记录和bug报告数据。这才惊讶的发现,我们比其他同事完成的功能点数量高出5~10倍、难度也普遍更高,bug率却近乎为0——别人一个功能点能有密密麻麻几十个bug,而且上线几年bug都抓不完;而在我们看来,这些都是压根就不应该发生的低级错误,而且我们提交的代码的确不包含这类错误。

所以,别人一年只做三四个功能点,每个功能点都要出十几、几十个bug;而我们呢,一年起码几十个功能点,加起来不过3~5个bug(我更是一年只有1个bug,而且bug原因还是需求没写清:某个字段让返回字符串,我按照C惯例后面加了个‘’;对方用的java,不能识别这个)。


问题是,“我们接的任务最多最难”,这事我们项目经理知道,中高层领导不知道。

中高层领导知道什么呢?他们只知道,这个任务总是在别人那里卡住;他们只知道,系统出了问题,该找的人肯定不是我们几个(从不出bug自然不需要找)——所以你猜,在他们心里,谁更重要?


于是我决定辞职。

这是我第一次进这种公司,也是最后一次。

因为这种公司完全是“逆淘汰”。水平越差越吊儿郎当越吃香,水平越高越兢兢业业越被边缘化。

user avatar

恰恰相反。

国内程序员,单打独斗的能力绝对一流,不敢说远超越国外,但至少不逊色。

但问题是,为什么这些一流的程序员和在一起,同样的产出,却要比别人工作更长时间,付出更多辛劳呢?

我们不禁要问,我们多付出的时间和辛劳都去了哪里呢?

想到这,我要分享一个故事,就是最近,疫情期间,我朋友公司的故事。

朋友做Java后端开发,受疫情影响,公司业务大跌。

要说,这种情况下,大家应该无事可做才对,但和朋友聊天,情况恰恰相反,朋友的原话是:

“忙疯了!原来加班到10点,现在则是12点,活根本干不完!”

听罢,我回了句“呵呵”,然后冷冷的说:

“瞎忙,行为艺术而已!”

沉默了一会,朋友回复说:

“太对了,就是瞎忙!”

“因为没有业务,怕被裁员,大家就越拼命加班,好显得自己很忙,很重要的样子。”

“其实,公司都没业务了,做的东西不过是闭门造车,根本就是伪需求!”

“但这不重要,要的是态度,是表现!”

朋友的这段话,真真道出了程序员整日忙碌、整日辛苦的天机。而这个天机恰好在疫情期间被戏剧性的放大了,但本质和原来并没有区别。

不是我们的工作需要辛苦,而是我们需要做出辛苦的样子

因此,朋友,如果你是一名程序员,你可曾质疑过自己,我们每日开发的东西,有那些是用户真正的需求?又有那些不过是些“表演艺术”?

也许,经过思考后,你会发现,我们的忙碌根本经不起审视,它一直很“荒谬”!

荒谬的领导,荒谬的需求,荒谬的任务,荒谬的KPI,荒谬的…

最后,导致的是荒谬的忙碌!

user avatar

这个题目能出书了。两边的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是中国企业的强项。为了保持这个优势,唯一的方式就是加班了。

user avatar

因为虽然大陆科技公司崛起,利润爆表,市值超越其他公司,但是

整个亚洲文化都不是以人为本,而是以老板为本,以领导为本,以。。。为本。

这样,底层工程师自然就不是“人”了。这很好理解。公司不会show care;也不会做为底层程序员提供各种需要基础建设才能实现的福利。例如work from home,产假,股票兑现时间表,甚至是内部的透明公平无压力的讨论环境。

国家层面的话,程序员劳动法必须出台了,否则正如英国蒸汽机诞生之时,纺织工一周7天每天除了吃饭拉屎就是上班的年代,说不定真的会席卷中华大地。

文化层面的话,所有人一出生就是为了追求成功,为了成功不惜压榨他人,乃至最终压榨自己。高考的残忍和残酷,站在亚洲之外的国家来看,是让人瞠目结舌的。高考制度,和现在你去看古时候游街示众,菜市场砍头,女人裹小脚,或者甚至是20个人一起上旱厕,100个男人在公共澡堂互相搓澡一样,是对人基本尊严的践踏,基本自由的剥夺。让全省的学生一起比赛,不把他们当人,泯灭他们的个性,压制他们的思维,虽然学霸们得到了更好的资源,但99%普通人就从此沦为废物、废品,而那1%的成功学霸因此更爱惜自己的羽毛,成为精致的利己主义者,就算学术登峰造极当了院士,也会走上歪门邪道搞拉帮结派内幕交易,毫无一身正气。这一切,本身就是汉民族之殇。

这样的文化选拔制度下产生的人才,以及他们的老板,会如何看这个世界?会如何看自己的世界观?

他们的眼中就只有加班,工作,买房,赚钱和生孩子了。而在美国,很多程序员一辈子不加班不是买房不生孩子,不晋升,甚至很多社会劳动力一辈子就不写代码,去美国中部开uber,拉网线,吃米粉。

其实大家都是在valley beyond的伊甸虚拟世界里,争什么高下。这种争夺文化,是亚洲特产,泯灭人性。

而一个泯灭人性的文化,创造出一系列泯灭人性的公司,毫不意外。

user avatar

你自己随便拿出一个app看看吧

淘宝,支付宝:要喂小鸡?要建农场?

拼多多:要各种小游戏,要砍一刀,要各种抽奖抽红包(100%最大奖但就不行,你就得花几秒钟去看一个抽奖动画)

微信:直播,视频,小程序

美团:也是各种小游戏,稍不留神就点进去了

中国的KPI啊,明明是个购物app,明明是个支付app,明明是个外卖app,明明是个即时通讯app

为什么要增加那么多各种各样花里胡哨的小游戏?

亚马逊有小游戏吗?PayPal有小游戏吗?Google有小游戏吗?

说白了,不就是骗老板骗投资人的钱吗?

无法增加用户时长,咱们就小游戏走起,甚至送钱让你玩各种app内置的垃圾游戏,说白了,就是花公司的钱,花用户的时长,增加自己的绩效。

往上,骗得是投资人和老板,一看数据,全都增长

往下,坑的是用户,版本三天一小更,五天一大更,让你每天多花十来分钟挣那几分一毛钱

往内,写代码的不堪其扰,一会这需求,一会那需求,天天996,把自己的app跟摊大饼似的,约摊约大。

user avatar

1,美国科技公司是在全世界收互联网殖民税。中国大部分科技公司没这个待遇。现在美国人仇视和恐惧抖音,就是这个原因,在威胁他们的高利润。

2,都是程序员,但其实不是一个阶层,你用程序员工人去跟程序设计师甚至程序科学家比,当然会有很大差距,现在写程序的人,中国国内收入相差20倍很正常。

3,关于2,在欧美当程序设计师啥门槛显得很高,因为他们基础的数学教育和理工教育很差。

4,美国程序员都不加班是错觉,真的努力的美国人,可能比你努力十倍,只是普通人不用那么努力了。

user avatar

主要是因为在美国违反劳动法代价太大了,扯别的都没啥用……大家都必须合法经营的时候,自然是在这个基础上去比拼效率;而大家都可以一定程度违法(比如996)的时候,996的天生有优势,那么公司也都会倾向于996走起。在国内,目前无论是仲裁还是起诉,都难以对这种利用KPI逼迫程序员“自愿加班”的做法提出补偿请求,而且即使成功,也只是针对单个员工,并没有集体诉讼的手段,也没有集体诉讼的群众基础。

另一方面,中国程序员群体很年轻,买房、结婚压力很大,本身也有许多人愿意花更多的时间、甚至一定程度上牺牲健康来换更多的钱。这也导致程序员群体本身没有办法团结起来去反对996——如果严格40小时工作制,但是工资减半、年终奖减半,很多程序员也是不乐意的。

其实说到底,为什么美国对于劳动法执行这么严格?的确8小时工作制是无产阶级通过艰苦斗争甚至流血牺牲争取来的,但到了今天,坚决维护8小时工作制其实更有利于大资本家,因为如果不严格执行,大资本家有舆论监督,而小资本家偷着996,就很容易追赶上大企业,尤其是在互联网行业;反过来,严格执行8小时工作制,大企业就能在同等条件下产生体量优势。所以大企业会反过来推动更严厉的执法,保证小企业不会利用不对称的优势威胁自己的垄断地位。所以你也会看到美国不遗余力地要把劳工权益保护写进自贸协定里。中国反过来,大企业带头加班,这就比较烦人了。

user avatar

讲点别的……


一个大家都不愿意承认的事实可能是:因为他们效率更高……


效率高,所以更轻松,更少加班。




我们不妨思考一个问题:已知,西方国家的程序员普遍比中国的程序员工作时间更短,又有,西方国家开发的软件的技术含量和水准高于或者与我国水准持平。


那么你只能得到一个结论就是:西方国家的程序员效率比我国高



具体的原因下面很多答案都有分析,我写了一大堆又都删掉了,感觉这个行业的问题不是三言两语能够讲清楚的。



======================================================


评论中挑选几个比较有价值的反驳讨论一下:

目前来说最有力的反驳是说我这个是倒果为因。也就是说是因为加班导致的中国程序员(看起来)效率更低,而不是因为效率低而加班。

没错,事实上很长一段时间里面我也是这样认为的。但是这无法解释一个问题,资本总是逐利的,如果不加班的效率更好,为什么大家都普遍选择延长工作时间?

其次,即便这样来考虑,尽管加班降低了工作效率,但是因为工作时间的延长弥补了效率的损失并且整体效率要优于不加班的情况,所以资本家选择加班。这看起来非常有道理对吧,但是仍然不能解释,为什么中国的程序员没有创造更多价值出来




工会,社会保障,这些东西的确在其中起到了很大的作用,但我想谈谈另一个问题。程序员这个职业的异化。

个人以为,我们不会认为随便一个人经过几年的理论培训就能成为一个音乐家,也不会认为一个人经过几年的随便培训就能画出和梵高或是莫奈一样的传世名作。我想,同样不会认为一个人只要不断地努力就一定能在数学或是其他科研上取得瞩目的成就,尽管要获得成就努力是必不可少的。

但是我们瞄一眼知乎上的广告,似乎随随便便一个人,今天还在搬砖,经过几年的培训,马上就能上岗写程序了。


说一些真事儿吧。

某资深程序员,每次上线都要加班,因为为了客户体验,上线总是在凌晨和深夜进行。而这位仁兄每次加班的原因是什么呢?是要到服务器上执行某几条指令来调整设置什么的。

这种事情我是不明白的,如果每次上线只是需要执行这么几条指令,为什么不写个脚本让运维人员甚至是自动化部署程序自动运行一下就可以了……

这种加班有意义吗?有价值吗?


个人以为,如果一个人不明白自动化的意义,热衷于重复和稳定的工作,那他并不适合做程序员。而中国(或许也包括印度)的这种程序员占比之多甚至影响了整个行业的工作方式。

user avatar

这个问题也可以换成,为什么美国餐馆的服务员工作比中国餐馆的服务员工作轻松、加班少,钱还拿的更多?

为什么美国的建筑工人比中国建筑工人工作轻松、加班少,钱还拿的更多?

为什么美国的产业工人比中国的产业工人工作轻松、不加班,工资还拿的更多?

这不是美国人比中国人聪明,否则美帝就没理由害怕华为了,华为加班就让他多加。连无耻的招数都用上了,比如用一国之力打击华为,通过加拿大囚禁任总的女儿孟晚舟。

毕竟美国占领了科技制高点,金融制高点,垄断企业多,总体利润多,整个美国社会受益。就好比一个富二代能拿到的零花钱肯定比农民的儿子多,但是你没法说富二代因为能拿到更多的零花钱就比农民的儿子聪明,得通过考大学来比较,谁的分数高,上的学校好才算。

所以如果中国将来超越了美国,无论是科技还是GDP都超出美国很多,这个问题就会变成,为什么中国程序员工作比美国程序员轻松、加班少,中国还会有牛逼的公司如XXX,XXX,XXX。

user avatar

先问是不是,再问为什么。

难道美国的程序员就不加班吗?他们就一天八小时工作,还想来就来,想走就走?非工作时间完全找不到人?还有什么食物饮料都免费提供?

让我来告诉你真实的情况吧,还...真是这样的。


加班文化应该是中美两地最明显的不同了,形成这种差异的原因不是一两句可以讲清楚的。我在两个国家都工作过,也在不同岗位工作过,所以就尽量从不同角度来简要说一下。

国内程序员加班严重,首先问题不在程序员这个群体。


产品层面拍脑袋决策多

产品层面,拍脑袋决策多,美其名曰:互联网思维、小步快跑、试错思维,其实是没想清楚,反正我就需求一提,技术团队来做,上线后成功了我是产品天才,失败了也没啥坏处,找个借口说什么“互联网市场变化太快”也能搪塞过去,或者找个新项目,继续画大饼。

国内的产品经理实在是太多了,很多还是刚毕业的小鲜肉,没有一点经验积累,凭借天马行空的想象力,提一个需求,就能让一帮技术专家为之操劳好几个月去实现,这简直是不可思议的。即使产品经理很厉害,但人数一多,每个人都要业绩,都拼命想点子、提需求,技术团队怎么能招架得住那么多需求呢。于是就会这些现象:

  • 节假日来了,我们上一个活动,或者节日小彩蛋功能。
  • 竞品上了一个 xx 功能,看起来不错,我们也抓紧上一个。
  • 10个产品经理同时跟你说:这个需求我跟老板对过了,xx 之前必须上线。

产品经理没有想清楚某个功能的价值,或者带来的收益不痛不痒,而技术团队则需要为此付出巨大的心血,也就是加班。当然这也不一定是产品经理的错,国内公司,老板的指令太多了,不说了,你懂的。

在美国这边,产品经理大多是行业经验非常丰富的人,要么是从工程师转过来,要么是从多年的商业领域经历然后读个 MBA转过来。上线一个功能,经过严谨的理论推演、多轮前期调研、科学的 AB test,从提出 idea 到最终用户看到更新,经常耗时半年或一年。很多不成功的 idea 还没面市,就因为数据不好而“胎死腹中”。这样一方面提高了产品需求的质量,另一方面也给技术团队足够多的时间来设计和实现一个可持续发展的架构。


技术团队话语权低

管理层在做决策时,往往更重视产品更新迭代,而忽视技术的建设。

比如说技术团队有100个小时,老板可能会把90小时都投入到实现产品功能,给技术优化、修补技术债务。于是就会出现技术实现非常粗糙的情况,举个栗子,给你一周时间,实现一个 IM 功能,你还会考虑什么模块化、可维护性、性能优化之类的吗?当然是怎么快怎么来,百度一下有没有别人实现过的代码,ctrl+v / ctrl+c,一点运行,诶,跑通了,上线。

所以国内很多程序员看别人的代码,感觉都是一团 shit,完全没法维护,干脆自己重写一个。

技术老大能跑到老板面前说“我们先把产品需求停一停,让我们的技术团队好好地优化一下基础设施吧。”吗?只要他不是傻子,都不会这样说。

话语权低还体现在,对产品几乎没有决策权,甚至不能质疑产品决策,提反对意见,总会被产品经理各种理由挡回来,产品经理有一句话终结争论的尚方宝剑:这是老板要做的。

久而久之,技术债务越堆越高,bug 越来越多,程序员不加班,谁加班?

而美国公司的现象是,技术话语权非常高,一个没想清楚的产品需求,能被技术团队直接打回去。同时,技术团队可以自主地花很多时间在技术优化上面。产品不能按时上线?经理说:没关系,延后,按照最优的技术方案来推进。有时候你想赶紧上线,提交一段粗制滥造的代码,会被同事鄙视死,被老板骂死。

每个季度最后一个月,专门抽出精力,来弥补技术债务,产品需求放一边先。

在这样的环境下,短期看起来效率低,但长期是最高效的。国内是“欲速则不达”,美国是“慢工出细活”。


技术基础设施差

知乎上有一个比较热门的讨论:腾讯的技术建设是否落后?

这不但是腾讯的问题,实际上绝大部分公司的技术基础设施都非常差。

有多少个公司能养一个专门的 Infra 团队?有多少个技术团队能专门成立一个小团队,进行 Infra 优化?即使有,有多少个公司能保证 Infra 团队的成果能在全公司推行?

我相信能做到这样的公司是凤毛麟角的。

中小公司不必说,在这样高度竞争环境下,哪有财力养一个不能直接带来 KPI 提升的团队,即使有钱,也没时间搞优化。

而大公司呢,即使腾讯这样的体量,有一个 TEG 事业群做基础设施建设。但是现实情况是,依然没有全公司通用的内部工具,各个团队依然在重复造轮子。阿里算是做的很好的,前几年开始推行的大中台战略取得了显著的成果,解放了各个产品部门的生产力。

计算机程序这种东西,一个人写和一群人写,几千个用户使用和几千万用户使用,是完全不同的概念。没有强大的基础设施建设,技术团队越壮大,效率越低,用户数越多,bug 越多。出来混总是要还的,今天没有人关注基础设施,未来就会又无数个程序员为此加班。

而说回美国这边,专门的 Infra 团队几乎是每个公司的标配了。这也是工程师文化的结果,创始人、高管团队一定有很强的技术背景,走过了很多弯路,所以非常重视基础设施建设这种“重要而不紧急”的事情。


畸形的职场文化

最后再来说说文化的差异。

美国人非常注重个人和家庭,牺牲自己的时间来给公司加班,这是不可能的。一到下班时间准点走,非上班时间完全不查邮件。很多公司入职培训就专门强调了怎么平衡工作和生活,其实就是说:下班时间就是你的时间,你有权利不处理公司事务。

反观国内,不知道从什么时候起,加班就是约定俗成的。还出现了看似很有道理的人生经验,比如“年轻人就应该多拼一下”,“加班能学到更多东西,对未来也有好处”。

加班,竟然成了光荣的、可以拿来攀比的现象,比如说加班到凌晨一两点,拍个照,发个朋友圈,收到老板的点赞很开心。而管理者呢,还就吃这一套,谁加班多、会来事儿,考核的时候就更有好处。

在这种加班氛围下,甚至还出现了“伪加班”。早上十点到公司,上个厕所、看会儿新闻、刷刷朋友圈,就到十一点半了,什么工作也没做,然后准备吃午饭;饭后逛一逛、睡个觉,又到2点上班时间了,写会儿代码、刷刷知乎,一下午又过去了,很多公司有免费晚餐,吃完饭回来7点左右,再写写代码,磨到10点。哦耶,又是充实的一天呢,发个朋友圈给老板知道。

其实一天有效工作时间还不够8小时,但就是“加班”了。



综上,大概就是国内加班严重的原因。

我觉得这也是某个时代特有的现象,谁都没有错,谁也没有办法改变这种情况。在国内这样一个高度竞争的环境下,公司为了生存必须跑快点,个人为了发展必须多做事,毕竟你不做就会有千千万万的人来抢。等到中国真的发展到美国这样的发达程度,生存的压力减小了,才有可能谈更好的生活品质。


关于找工作,我拿到过 Google/Facebook 等大大小小公司的众多offer,如果你想知道怎么在北美求职,欢迎关注我的公众号“LJ说”(ID: LjNotes),回复“硅谷”查看独家秘籍~

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有