美团18K:流程长、测试缺、问责严,填不了坑啊
项目本身
之前已经分享过遇见的困难:
- 美团是没有测试和运维的,开发自测以后就开发自己上线
- 而美团对于线上事故容忍度非常低,一旦出现资损整个职业生涯就结束了
遇见了一些困难,其中一个困难就是:
- 在工期非常紧张的情况下,实习生给我的工作加码
聊聊情况
首先:我上线的时候,光完整上线时间就非常非常紧张了。基本上加班还得延期。, 这时候公司为了保证项目按期交付,给我安排了一个刚入职一年的正式员工。
他接手项目以后,第一操作是:
- 要求每个方法上面必须添加注释
- 对每个方法进行埋点、
- 由于自己难以codeView,要求推翻重来
- 对方法名提出自己的建议
给我至少增加了50%的工作量。
是代码更好维护了,但是项目延期了。
领导挎着一张脸问:项目为什么迟迟没有进展? 打回重做了。为了后期维护又添加了工作量。延期了。
差点把我给裁了。
情况描述
假如满分是100分,按照工期我只能拿出70分的答卷。
- 这个成绩绝对绝对是及格的,而且比及格线高10分
然后实习生对于70分的答卷不满意,要求必须达到90分的水平。
那怎么办?我只能提高标准,最后导致连卷子都答不完。
你高标准严要求可以啊,但是不能因为你高标准严要求,让我能把工作丢了吧。 他不行。
项目情况
我升级的是C端的项目,然后干了4个月以后,工期直接炸了,而且遇见了一些风险。导致了线上事故。 为了防止第二个线上事故,对线上风险进行了汇报。
于是我就没法负责这个项目:因为在我手里,他必然延期。接手B端的业务。
但是:B端业务他和C端是割裂的。两套业务逻辑。
- 在美团,B端的人只懂B端的业务,C端的人只懂C端的业务
- 假如一个业务同时需要BC端协作,至少两个人。
严格要求
这时候,我就在B端架构师手下干活。他表示:你的代码有问题
什么问题?需要优化。
- 你的DDD分层逻辑不对,编排层只是用来编排的,方法应该写在领域层
- 你的代码没有上缓存,又性能风险
- 你的函数命名有问题
- 你应该用复杂的方式来实现极致的性能
后来我被裁的时候,我说:我只能做到70分,但是架构师要求做到95分甚至更高。 领导: 80分。
- 你得有架构师思维,得有后期维护的考量,得让同事能够接手你的代码
- 得用缓存提升每一丝丝性能
- 得使用复杂架构方式来实现简单功能
但是我只是一个外包,在完全不熟悉业务的情况下,强行要求做到95分,于是就被裁了。
聊聊美团的核心业务组
我入职的是美团的核心业务团队,他每秒的并发是百万级别,资金流动每天几个亿。 你写的每一行代码,下面都是几千万资金的流动;出了事情谁都担不起。我不要求你95分?
你以为是维护几百几千用户的小破网站?我们美团就这个要求。而且以此工作了十几年。
然后:我们项目组还有业绩指标,他没有测试团队 + 运维团队。(美团有,但是我们项目组专门招聘只负责运维的是没有的) 压力直接压给开发团队。我们不得更努力。 还有一件事,那就是我们项目组是一个100多个微服务的大集群,业务逻辑复杂。你得在复杂的业务逻辑里面,达到95分的性能要求。
最后,经过考验,你的水平不能够承担这些要求,那我只能说很抱歉。
我一看:18K的外包工资。 你搞笑呢?
压力本身
在压力 + 本身实力的情况下,我只能返工。
我和之前给我加码的同事去聊,同事表示:我算是非常非常宽松了,B端负责人他要求就是高。 那没办法,人家不满意你就改呗。
于是,一改二改三改四改五改。 一个简单需求改了至少8遍,而且平均8遍以上。项目工期直接炸穿。
领导都蒙了:我没有给你安排那么多活啊,你怎么天天加班? 这样,把你裁了,你也解脱我也解脱。
会议本身
一个需求大概是7天左右,其中能编码的时间只占20%左右。
- 首先得参加产品会议
- 然后设计方案,设计完方案以后,提交给产品(需求方)审核,B端负责人也需要审核
一个会议基本上就是:
- 产品提出方案
- B端负责人不同意,提出方案
- 然后领导不同意
推动非常非常吃力,一个简单需求至少开10个小时以上的会。 否则:开发出来了,上线了,产品不同意上不了线;codeViewer不同意上不了线,打回去重做。
然后底层技术细节,也得开会。 出个方案以后,codeViewer就要问了:你这个需求有没有更好的方案? 函数名是不是合理? 有没有改进的地方?
这也要开会。算内部会议。
然后就是同步信息的会议。
比如说:B端提供一个接口,这个接口:
- 限流多少
- 参数多少
- 授权多少
然后我提供接口,也需要提供一个会议。
由于我们项目组没有测试,其他项目组的同事还要参加测试,告诉测试团队如何测试。 上线的时候,同步上线时间,这个不需要开会,在群里@一声。但是延期这种事情最好需要开会。
我最多的一次,拉了16次会议。
业务梳理
写代码不是你想写就写啊,你得梳理现有的业务逻辑。 对于一个小微项目来说,上去就是干。但是对于美团这种体量的公司,梳理成本比编码都高。业务链路超长。
我提供一个接口,然后你得至少找4个微服务,大概20层堆栈,才能找到对应的业务逻辑点。 光找到需要修改的地方,就得至少4个小时。 java的啰嗦程度 + DDD的频繁跳转,导致新手完全无法处理。
就为了写一行if else,就得找四个小时。
然后:美团大量使用策略模式,而且策略模式嵌套策略模式。导致学习成本极高。
写文档
为了会议和留档,需要写:
- 需求PRD,这个产品提供
- 开发的开发文档
- 开发的自测文档
- 上线文档
- 链接的git链接
你光拿嘴去说,这不现实。
编程环节
跳过。大家都会写。
部署测试环境。
然后,你写的代码每个参数都需要整理到文档上。 代码每个方法要有注释。
但是有几个:
- 测试用例覆盖65%(很多公司似乎是85%甚至更高)
- 走测试用例
审核环节
然后,你提交代码以后,找到CodeViewer,他会审核你的代码。
然后提出了一大堆改进意见,通常来说,500行代码12处。
- 没有bug,全是各种优化,还有分层问题
- 函数名没有见名知意
- 缓存命名不规范
能跑是绝对能跑的,功能是没问题的,但是性能问题你没有考虑,分层不合理,方案设计没经过考虑。 达不到要求,重做。
那就回滚。
走流水线上线
然后就是找时间走流水线上线。 上线的时候,需要监控报错信息。至少一个半小时。
假如上线失败,需要写复盘。
如果是老环境,需要解决maven依赖。还有线上线下不一致等各种问题
产品验收并上线
然后,当上线完成以后,告知产品,产品验收。 我们项目组没有测试组 + 运维组。所以让完全不懂行的产品点点点。假如没有问题就可以验收。
但是由于我不清楚业务,所以上线以后发现了大量问题。 返工率非常高。
困难点
我这个架构师,他只考虑性能 + 架构的完美性。 对于代码细节,他也不完全清楚。
我在写代码的时候,经常需要调用美团自研包 + 同事写好的代码 + 其他人的接口。这些都是坑点。 没有文档。
我在没有手把手文档教学、自己研究的时候,发现我自己经常性忽略内容。 就是:没人给我兜底。
- 架构师他只提要求,对于各种细节还是得自己把握
- 测试团队完全没有,导致我上线的时候基本上处于裸奔状态
我问了一下AI,他的说法是:你作为一个资深的开发来说,你必须考虑到。 我资深嘛?我上架70分的代码都很困难了好不好?
总结
美团开发压力很大, 兜底没有,测试缺位,项目基本裸奔。 流程非常长,业务中写代码的时间非常短,会议很多。 问责机制很严,线上上线压力极大。 工期比较合理,但是架不住菜鸟返工。
需要至少5年经验甚至以上,踩过各种坑的老鸟,才能去美团当18K的外包。
