美团“背锅”的前四个月:没有安全垫,拿职业生涯陪你玩命?

聊聊情况

在大厂,有一个很经典的主义,叫绩优主义。

比如说:

  • 张三做成了一个成功的项目,李四失败了,张三绩效是A,李四绩效是C,所以张三是大牛,是架构师,李四是混子
  • 其他的都是虚的,没什么好谈的。我不爱听

为什么?

我在美团的时候,接手了一个项目,这个项目:

  • 风险极高,成功率极低
  • 做好了理所应当
  • 做不好背黑锅、扣绩效、滚蛋

美团有大概1000W行的代码。少说大概500W行。有大概几千个核心接口,几万个DTO、VO、BO。 有缓存、有队列、有redis、有数据库、有接口、防腐层、RPC。 有大概100+个微服务。

但是:在设计的时候,架构师没有考虑int只能存21亿的数据,所以选择了int类型作为业务主键。 用了几年以后,数据超过了int限制,发现:

  • 这个int类型遍缓存、队列、redis、数据库、接口、防腐层、RPC、几百个微服务,几万个接口
  • 而且,提交他的人有的已经离职了,业务逻辑完全不清晰
  • 测试文档、开发文档频繁变更,基本上找不到

领导一看直接麻爪。 这个活不就是在屎山里面打滚,被各种兼容性折磨,被各种风险鞭打。

但是问题是:该次升级基本0效益。 绩优主义的前提是什么?是给公司创造几百万几千万的效益,提高各种转化率,让公司赚更多的钱。 这个活,谁接了谁今年的绩效肯定不会是A。而且要疯狂加班。

没有测试 + 运维

最糟心的是:项目组没有专职测试 + 专职运维。 甚至兼职测试需要大领导签字才能高薪去其他测试组拉。 没有人给开发去兜底。

出了问题怎么办?走一次严重的线上事故扣光,第二次离职。

  • 如果有测试,那专业的测试团队可以大大降低线上事故的风险,开发组没有配置
  • 真出了问题,开发组和测试组 5 5 或者 64开,大大降低问题
  • 真出了问题,运维人员能够快速的嗯定位线上故障,减少损失
  • 假如非核心需求,出现小规模资损骂两句就过去了,不至于一次扣光绩效,两次滚蛋

作为大厂员工一看:那谁干?我到你公司是来赚钱的,不是来拿着职业生涯陪你玩命的。

美团一大堆绩效为A的人全不干。架构师当场切割.B端C端架构师直接切割。让一个刚入职一年的美团新手去主导这么一个高风险的项目。

然后:这个接手的负责人也拒绝了,接手了另外一个高风险、高收益的项目。

  • 我要高风险高收益
  • 高风险低收益怎么干?干不了一点

所有人都切割,都不干。领导直接无语了。 于是领导就高薪招聘外包,让外包去抗雷。

聊聊美团的绩优主义

美团这个公司,他对线上事故容忍度很低。

  • 第一次出现线上事故,你今年绩效就不可能是A
  • 第二次,不管任何原因,滚蛋
  • 假如出现了P0级的线上事故,那你在美团职业生涯可能这辈子就到头了

有人说:那没测试啊、没运维啊。 对啊:

  • 测试 + 运维那是大厂的标配,那是公司给你的资源,那没有资源你就不干了?大厂不给你配测试运维你就摆烂?
  • 遇见困难你得克服困难啊,其他同事开发的时候都没有测试运维

青碧凝霜的困境

我刚从百度离职以后,工作不好找,找了非常长的时间。一直在面试,面试了大概30家左右。

但是我不知道这个项目是抗雷岗,而且的确找工作有客观困难。于是就入职了。

领导不实际参与编程

这个事情让人比较无奈:主R他入职美团只有一年,不实际参与编程,以主观猜测表示这个风险存在/不存在。

  • 他有自己的高风险、高收益项目,他每天光干这个活就得加班了,而且美团工作年限不够
  • 而且他刚入职美团1年多,他对美团的历史逻辑和架构完全不清楚
  • 而且他自己还不参与实际编程,对困难理解度不够

不管是时间还是心力都完全不够。

那为什么不找经验更丰富的人来接手呢?他们经验丰富。 经验丰富、想在美团多混几年的,能切割的早切割了。 在美团干了好几年了,知道这个工作效益低、风险高,人家躲还来不及。

我自身表达能力也相对来说较差。根本搞不到资源。能力在美团也不算强。一点办法也没有。

  • 我能力弱、经验不够,错配到必须大量开发经验才能够hold住的岗位

为什么不用AI?

这个项目为什么不用AI呢?

  • 写提示词,编辑skills,用最顶尖的CC模型
  • token管够,测试用AI自己生成,文档用RAG,怎么就不行了??

方法总比困难多,而且现在AI这么盛行,古法编程已经out了。

领导尝试了,但是尝试的结果是:0成果。 由于是在我入职之前尝试的,所以方案和失败原因我不清楚,只知道失败了。

由于AI编程的失败,工期非常非常紧张。那就只能强行去社会上招聘外包进行古法编程。

  • 可以继续给AI投入资源,但是失败了吃不了兜着走,整个项目组都得吃瓜落

所以领导是不情不愿的招聘外包,强行给这个项目续命。

其他项目

我看了其他项目,有两个不同的方案:

  • 每个开发都独立升级自己的项目
  • 找外包去升级

我们项目组也是招聘外包。

感谢美团给了我在美团当牛做马做外包背黑锅的机会。我真是谢谢你。 项目稳定的时候想不到外包的穷兄弟,项目暴雷了想起来外包的好。

前期进展

在我刚入职的时候,前两个月小会基本不断,解决的问题非常少。

  • 主R他有自己的高风险、高收益项目
  • 然后让入职的菜鸟外包自己发现风险,他们负责解决

但是问题是:青碧凝霜和另外一个同事,刚入职两眼一抹黑,根本提不出什么解决方案

最后没办法,手把手的教:

  • 美团的各种工具如何使用
  • 流水线怎么编程
  • 项目怎么上线

而且:同事他水平不够,强行滥用各种高级的lamba,函数式编程 + try catch语法,全是bug。 写出来的代码基本上没法用。

带了大概2个半月,终于上线了一个项目。

讨论

忙了大概2个月以后,讨论了一个问题:方法该如何起名。

每天都开会,开会开了两个月,最后连第一步都没走通:我们新版本的接口该如何起名没有统一结论。

在会议上,同事A提了一嘴:在原有函数上 + V2就可以。 我记录到文档里面了。然后@同事去看 但是同事B表示:暂缓开发,我觉得这个方案不合理。 熬了接近7天,又在会议上提出了:应该以Long开头。

这导致我七天的产出清零了,所有函数都是以V2开头,改了几百个。如果一旦重写工作量直接炸。

我当然不愿意了。说:我整理到文档里了,你们没反对啊。7天以后蹦出来,你又说不合理?? 你们美团都是吃X长大的??人效那么低?

进行了非常恶心的返工。

加注释

后来项目工期不停延期,没有办法了,领导又加了一个实习生进来。

实习生他自己又开始在工作上加码:

  • 要加注释
  • 要加监控
  • 要保证性能
  • 要工具类

实现基本功能就很难了,你实习生还得加码??? 但是他说的伟光正:上线人力成本太高,一次完成杜绝返工。

  • 流水线走完,需要大概6个小时
  • 上线需要两个小时

也就是1PD的工作量,只能上线一个服务。同时并行的,也就2个。 所以:能加就加。注释文档监控性能工具类啥的,必须一次性做好。

于是在实习生的主导下,实习生又主动加了至少50%的工作量上去,让美团的项目跑的更稳定。

不能二次上线

后来上线的时候,主R表态:必须一次改对。 比如说:我有10个微服务,必须改一个对一个。作为最终版本。 开发自测要覆盖所有场景,测不到就是不负责。 然后开发下一个版本。

你不能说:这次升级漏一点,然后二次升级,成本无法接受。

比如说,你写一个NPE,那你为什么开发的时候没有发现?你的问题,你自己责任心态度有问题。

特定问题讨论

由于我上线的是核心服务,而且性能 + 并发都非常高。 在一些小问题上,动辄讨论几个小时甚至以上。

  • 项目工期都快爆炸了,人力都快炸穿了,实习生还在上面继续加码
  • 加码的同时,一些小问题 + 极端情况反复讨论,一讨论就是接近一天

最后结论大概就是:我说了不算,得架构师出面。

现在想想:这个活本来就应该架构师出面啊,现在他就解决疑难问题,效率能高嘛??

高风险认知

我遇见了一个高风险问题。

这个风险非常大。于是我就和实习生讨论,表示这个风险很高。 实习生:如果这个风险非常高,那项目整体都要延期、太难升级了,所以这个风险不存在。领导就开始push运维,问是否可以立刻上线。 我一咬牙一跺脚,表示:上。 上完直接炸了:喜提比较严重的线上事故一个。

线上事故情况

线上事故情况是这样的:吃了6个客诉,同步丢失一晚。领导要求写COE复盘。 是我升级的,我在压力下同意的,所以我应该负全责。

至于实习生?出现线上事故攀咬别人?那实在不行。 于是我就有点不情愿的提交了复盘。

领导不高兴,表示你总感觉这个线上事故不是你的责任?

然后就是风险认知为:这个线上事故完全可以避免,流程过于复杂。你这个想法多余。

申请权限

由于我升级的服务非常核心,所以我需要申请权限。

但是这个权限高级别的同事不敢给。

  • 测试环境部署 和正式环境发布是一个权限
  • 给了你测试环境部署的权限,你就能在正式环境部署,出了问题就要问是谁给的权限,我得吃瓜落

我一下子就申请了100+的权限,同事当场麻爪。不敢审批。

最后实在没有办法了,就把权限放给实习生,让实习生给外包授权。 实习生表示:他没有完整的权限,所以还得二次沟通。

这个事情又耗了接近3天。

硬扛本身

我个人认为,不是我的问题。

  • 我已经告知了风险

然后领导的意思:你知道有风险还上线?罪加一等。

然后就是没有测试团队 + 运维团队

  • 我自己开发自测,自测能力肯定不如核心测试,假如项目组有测试人力,那明显可以避免
  • 假如有运维同事,他就能快速的帮我缓解损失,降低资损——但是没有
  • 我已经告知了风险,但是在业务压力下强行进行上线,这……

美团他有一个两次线上事故滚蛋的机制。

我就停止开发,会议表示:

  • 先上线低风险项目,后上线高风险项目
  • 告知可能风险,做风险预警

主R脸黑的跟锅底一样,表示:你用的时间太长,我听不懂。 我:听不懂那可以,我重新整理一份文档,我们二次会议讨论。

最后我感觉主R找到领导去告状了。

  • 他自己不参与实际编程,所以他只能通过感觉来预判风险
  • 我自己第二次线上事故发生,失去了安全垫,所以必须告知风险
  • 主R感知就是:说话听不懂,文档太多,没担当,沟通能力不够

没办法啊:

  • 你不反馈,那就大概率第二次线上故障走人
  • 你反馈了,同事也很难办,只能假装听不懂

项目组内部

由于项目组内部压力巨大,所以当我去提交codeView的时候,codeView 表示压力巨大:

  • 必须使用我能看懂的方式进行编程
  • 必须按照我熟悉的方案进行编程
  • 否则我codeView心里没底

你开发自测?我怎么知道你开发自测测全了没有?我重新测试一遍也不现实啊。 一旦出现了严重的线上事故,整个项目组都完蛋了,我担不起责任。

那怎么办?我检查三遍五遍才能给你通过。 你但凡写的和我的想法不一样,我看起来会非常非常吃力。

我就是上线前的最后一道防线了,你不能再给我施压了。

  • 一次线上故障,整个项目组都得吃瓜落
  • 压力太大了

写文档

作为一个开发,写代码的时间只占15%,甚至更低。

其中用时最多的:

  • 开会,大概每天1个小时左右
  • 整理文档,大概每天一个小时 - 3个小时
  • 测试 + 修改测试用例 + 写测试用例, 1.5个小时
  • 等idea编译解释,构建各种环境,申请各种权限,1个小时
  • 解决疑难杂症,看日志,看依赖关系,1个小时
  • 熟悉美团各种框架,这个时间估计在0.5小时左右
  • 发布部署,1个小时每天

整个项目组,从上到下,没有不叫苦连天的。

  • 领导因为工期进展不顺,压力大
  • 开发同事codeView,组会压力大
  • 实际编程的外包天天加班,处理各种琐事

炸穿

最后的结果是:我升级的这个项目,由其他同事进行负责。

领导态度就是:不敢让你们进行开发了,太吓人。 我态度差不多也是:不敢给你们项目组开发了,太吓人了。

我们不是有正编的同事嘛,他们负责开发。每个人负责几个小模块,快速的就上线了。

拖的情况

同事他们不想干:

  • 没测试,没运维,出现P0就滚蛋
  • 做好了没奖励,做不好背黑锅

于是,他们就在周会上集体和领导唱反调。

在互联网公司,拖是个很有效的方案。 领导头脑一热,决定让开发去做一个XX功能,开发先答应,然后拖一拖,拖没了。

领导问:这个ID升级的项目怎么样了? 同事表示:忙,没投入。

所有人都忙到没有时间投入,二十多个开发都忙到脚不点地。谁信啊。

施压

最后,开发组和领导耗了一个半月,终于开始了开发。开发了接近1个月以后。开发出了一个版本。

于是,项目组就拉了运维团队,让运维团队进行联调测试。(注意,是运维团队进行联调测试,他不是专业的测试团队,没有黑箱白箱)

提交上去以后,整个测试团队直接炸了:

  • 微服务本身他就有复杂性,很难定位线上故障,互相依赖

整个项目基本上70%的基本测试用例,依赖其他服务的正常运行。现在项目直接炸了。全是bug。 测试组反馈就是:

  • 这个代码基本测试不通,我已经加班加点给你们看了
  • 我压力很大

最后结果

干了四个月,最后差点没过试用期。

领导看我天天加班,就让我勉强通过了试用期。但是项目这边也不让我负责了。 然后在其他项目上,我又天天加班,又过了4个月。

最后领导表示:我没让你加班。给裁了。

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP