我在杭州工作了七年,2022年3月末辞职回到沈阳,在一个外包 15k 和自研 12k 的 offer 里选了自研的。
公司主要业务是一个外卖柜,投放到写字楼下面,能把新鲜的食材烹饪直接交付.研发部门分为三个部门,硬件研发,物联网和互联网,我所在的部门为互联网部门,工作内容为开发app和小程序,用来点餐.小程序和app已经开发了一个版本,因为老板有了融资,开始招人,重构为微服务版本.
我入职的算是比较早,人员还比较少,领导+两个产品+前端主管+架构大佬+ui+一个全栈小伙,架构大佬负责和物联网部门交互,全栈小伙主要写外卖柜的大屏,前端主管和领导天天改1.0版本小程序的bug.
此时的人员架构
新的微服务架构用的 ruoyi-cloud,代码放在 gitee 上,老的版本还在 svn 上,因为前端主管和领导还不会 git.
我的第一个任务是做支付系统,一个支付中台项目,一个微信项目和一个支付宝项目,因为做过支付系统,一个礼拜就做完了,领导又分配给我一个消息系统,然后和我讲了一下企业规划,说公司融资进来了,发展很快,技术部可能马上发展到100人左右,要马上规范起来,还要招一个有丰富经验的电商架构师,本来消息系统这种应该找个经验丰富的架构师做,因为还没招到就先让我来做.
入职第九天来了个后端小伙g,声称自己有一年半工作经验,只会crud,坐我旁边.来的第一天我把公司项目地址给他,没拉下来看,第二天领导给他分配了一个食品管理后台的活,前端主管是他的直属领导.然后建表不会,sql不会写,页面上该写几个接口一个一个问,一看就是没有工作经验刚培训完包装的.干了半个月没写出来能让前端调的接口,前端主管急了,问怎么还没提测,这个时候还没有人看他写的代码.过了两天前端主管问我这个人怎么样,我说不会写代码,前端主管和领导p才开始看他写的代码.
此时又入职了一个后端r,因为后端人员开始多了起来,领导开始让我写规范文档,领导先是让我写了单测规范和接口文档规范,他自己写了数据库规范和字段命名规范,放在飞书的知识库里.这个时期因为没有前端和我联调,也没有deadline,我的工作还没有什么压力.架构x负责iot项目的编码,运维,面试,每天忙不过来,我问有没有什么我能做的交给我,大佬交给了我一项优先级很低的任务,写一个日志工具类,以后要根据日志进行业务监控.
这种业务我也没做过,和大佬讨论几天后把这个工具类写出来了,开始替换我消息服务项目原有的打印日志代码.领导知道后让我写个日志规范文档,开始都使用这个工具类打印日志.
我的消息服务写了有半个月,期间入职了一个产品c,一个后端大佬w,产品c负责小程序的产品设计,后端大佬w负责监控系统开发,领导又分给我一个用户服务,又得到一个消息,老板想要在11月上线(当时是8月).领导又找我谈话,说我入职以后工作能力的表现高于面试的表现(面试的时候我会的基本都没问,问了些运维方面的东西,后面我才知道微服务中间件这些东西他不会,所以没问),当时挺高兴,干劲更足了.
之后的一个礼拜入职了很多人,有四个后端实习生,两个前端实习生,两个成手前端,一个架构小蒋,一个测试主管,一个后端供应链主管,一个运维大哥.实习生基本都是前端主管面试的,我知道招实习生的时候问了前端主管一句我们为啥要招实习生啊,前端主管说招进来做简单的业务,我说咱们没有简单的业务啊,前端主管说慢慢培养吗.
小蒋来自京东,测试主管来自华为,供应链主管不知道来自哪,后来得知以前和领导是同事,两个前端实习生都是女生,全栈b这个时候离职,架构x被借调到了物联网部门写go,到此人员架构第一次稳定.在给所有人开会之前领导先找我们先入职的开了个会,说一下将来工作打算怎么分配,在架构图上标注了每个点的负责人.除了我之前写的几个服务,又给我身上分配了营销服务和所有的基础服务(网关,工具基础服务等),这个营销服务当时我以为是单纯的营销服务.架构x看了一眼架构图,说了一句我的工作量有点多,领导当没听见.
此时的人员架构,写不出代码的后端g和后端r划分给了京东小蒋直接管理.
工作分配完之后领导找到我,让我带个实习生gy,让我分点工作给他然后教教他,当时我正在做用户服务,都是c端接口,交给他做不合适,就找前端主管要了个管理后台的活给他.
随后我们开了个会,领导p要去专注于产品设计,技术部交给京东小蒋来管理,大家做个自我介绍.会上领导还特意告诉实习生gy哪个是我.领导p又安排我和京东小蒋协助运维大哥搭建测试环境和开发环境(之前的开发环境和测试环境用的一套服务).
之前做用户服务没着急,搭建环境的优先级又最高,没有环境大家都干不了活,小蒋每天写文章,没事写个什么<公司的未来在哪里>发给老板,搭建环境的事一点没管,我一边写用户服务一边和运维搭建环境,开始忙不过来.产品给的原型图和ui图里包含了app的登录逻辑,关于用户的接口写了100多个.
实习生gy给我发微信,说代码写不出来,我给他写了个新增接口,把应该写的几个crud接口框架都给写好,标好注释,新增接口有个文件io操作,不会,我说看看培训时候的笔记,培训时候的代码也没有了,我教了两个小时以后继续回去干活,想着写文件教会了,读文件怎么也能自己写了吧.
第二天又找我,代码又是一点没动,还是昨天我写的那些.我又教怎么读取文件返回,又是两个小时,一共五个接口,基本都是我一行一行教出来的,也可以说是我写的.我问前端主管怎么水平这么差的也要啊,前端主管说面试的时候本来没想要,领导p说先招进来试试,不行的话还有3个月试用期,试用期过了就不要了.
领导p问我这个实习生怎么样,我说水平有点差,在培训机构基本就是没怎么学,领导又问我你觉得怎么样,不行的话就不留,我说观察几天再看吧.过了几天实习生gy微信找我,说代码运行不起来了,我到他座位以后发现我之前给配置好的项目配置全没了,都变成默认配置了,我问你做了什么操作,我之前把idea都给你配好了,怎么都没了.他说把项目删了,重新下载下来之后就这样了,我问你删项目干嘛,他说拉代码.我说拉代码不至于把项目删了啊,你操作一遍我看看,这大哥把项目删除,然后去gitee仓库复制地址,重新git clone一份代码下来.我说你会git吗,他说会,我说拉代码不是这么拉的,用git pull,给演示了一下之后,我在他电脑上打开菜鸟教程的git教程,告诉他好好看看.
当天晚上我把公司的代码从gitee迁移到云效,基于云效的最佳实践写了一份我们公司的git最佳实践.
第二天早上我拉了个会,讲了一下如何基于云效开发,把我写的文档发到群里.开完会以后大家都要重新从云效拉代码,实习生gy又在微信找我,问我为什么下载下来的代码没有.git文件夹,我说不能啊,我过去一看真没有,我说你是按我写的文档操作的吗,他说是,我说你演示一下我看看,这大哥点击了一下下载zip,下载下来一个压缩包,当时我血压一下就上去了,我问他你看我的文档怎么写的了吗,他又说看了,我把文档打开,让他重新拉代码.我又问他昨天让看的git教程看了吗,他又说他看了.
领导找我让我写个工作说明,写一下入职以后都做了什么工作,下个月开始就涨工资,从12k涨到15k,让我别和别人说.我写了个文档交上去,然后去人事那签字,职称由高级开发升到了架构师,因为不让说,没人知道我是架构.
过了一个礼拜,实习生gy又微我,他的新增接口,数据进不到数据库了,我当时正在忙着和运维搭建开发环境,说你先自己看看,我一会有时间了再帮你看.过了一个小时我一过去看见这大哥打游戏呢,血压一下子就上来了,我说你不找找问题吗,这大哥说百度了,没查到原因.我调了一下接口数据果然没进数据库,开始一行一行看他的代码,最后找到mybatis的xml,发现里面的表名让前端主管改了,我给改回来然后问他,问题没解决都不看看代码吗,遇到问题就给我发个微信然后摆烂.回到座位我给领导p发微信说这个事,告诉领导这个人可以开了,领导回了我一个嗯.
搭建开发环境的时候我和后端大佬w一起搞elk,我和他说了这个事,后端大佬w说这个人本来是让他带的,他给拒了,然后才给我带的.我想着这种选手应该开了吧,第二天上班开了个会,实习生gy不给我带了,给后端供应链主管z带.
小蒋找我了解公司的情况,跟我说后端r现在手上的工作全停了,开展不下去,让我画个代码架构图,我和小蒋说了下公司的情况和目前存在的问题,其中有一个问题,后端r的数据权限是用mybatis拦截器做的,分页和排序也放到了里面,性能和扩展性都不好,小蒋看了下代码说你和我找领导吧(小蒋入职以后没少装逼,后端r不服他),我俩找了领导说了这个问题,领导嗯啊答应.记住这个mybatis拦截器,后面还有戏
环境搭建的事小蒋没干,领导又给小蒋个活,写订单系统,小蒋还是没着急干,开始搞面子工程.推敏捷开发,弄个视频,全英文的,把大伙拉到会议室看.推apifox,要求前端写接口文档,和后端确认后再开发,我知道他们肯定弄不明白,当时还有swagger,找领导说有apifox有bug,领导说肯定修复了,还让我写教程文档,我写了个教程文档发到群里,和之前的文档一样,没人看.我在前台后台的登录接口设置了后续操作,把token放到全局参数里,打开apifox之后调用一次登录接口,后面的接口调用header里就都有一个token了,如下图.同时还在登陆接口下面写了几个测试用例,对应不同的账号,方便测试权限.但是在后面的工作中,除了测试人员使用这个方法,我的几个后端牛逼同事基本都是手动设置header并且写死,导致我修改网关代码想测试一下权限是否生效,所有接口一路绿灯,部署到测试环境就报错,原因就是这个写死的token并不是我想测试的账户,这个问题我在群里说了两次,直到弃用apifox也没改.记住这个apifox,后面还有戏
因为要开始写接口文档,后端r不干了,后端r之前的代码一个接口文档都没有,因为不想写接口文档,半个月没干活,找领导说不想干了,想去物联网部门,在小蒋手底下太烦了.9.1晚上小蒋拉会,要过后端r当时做的项目进度,后端r说不知道,.小蒋就要重新做,我说别重做了吧,做了一个月了,马上就要做完了,我问后端r不知道项目进度吗,后端r说不知道,因为他没有接口文档,项目进度和接口文档写没写能有什么关系,我一看他这个嘴脸也没继续问.小蒋说要做完了就是没做完,那谁能告诉我进度.当时情况是后端接口早就写完了,前端在对接口,前端是个刚入职的小姑娘实习生w,也不明白小蒋在问啥.我说把页面打开看看不就知道了吗,小蒋不干,就要重做,还把门打开了,说不想参与的可以走.我说把领导p叫过来吧,问问能接受重构不,我听说11月就要上线,重构时间来不及了.小蒋说老板授权他重构了,然后去找了领导p,领导p来了以后让实习生w把电脑拿过来,看看对接到哪里了,一看就剩一个页面没对了.
随后后端r直接开摆,手上排着的需求半个月一点没往下写,在9.8-9.16号一个礼拜更是一行业务代码没写,bug也没改,下面两张图是后端r当时负责的两个服务git记录
9.6这天发生一件大事,一大早原有的开发环境挂了,新的开发环境还没搭建完,前端w找我,正在和后端r调接口,环境挂了调不了了,我看了一下挂掉的老开发环境,没定位到问题,我和前端主管商量了一下,直接把正在对接的代码放到新的测试环境联调,先保证前端能工作,再去找老环境的问题.部署代码的过程中代码有冲突,我去找后端r让他解决冲突.
上图的 35 环境就是测试环境,因为测试环境的 内网ip 是 35.一到后端 r 的座位,后端 r摆个臭脸,贼不情愿,问我合代码干嘛,我说老的环境挂了,发到测试环境,前端着急联调,这货问我以后都在测试环境联调啊,我说不,以后在新的开发环境联调,新的开发环境还没搭出来,然后又问我那测试环境联调我怎么看日志啊,我说现在看不了,中间件没搭出来(byd 菜,不知道 elk 和 skywalking 这些中间件直接能在浏览器看日志,以为必须到服务器用 tail 命令呢),然后又问我以后都不能在本地联调了呗(把自己电脑上的服务连到服务器上的 nacos,然后把服务器上的服务下线了,这样服务器上的网关就调用他电脑上的服务了,前端跟他联调的时候遇到问题直接 debug), 我说规划是以后都在开发环境联调,短期你还可以在本地联调,现在后端开发还是以你为主。然后又一脸不情愿让实习生 x 改。随后开始跟我倒垃圾:我抱怨抱怨啊,你们这你定个规范,他(领导 p)定个规范,小蒋有定个规范,最后全到我这了,你们干活吗?我说我干活啊,出的规范我都遵守了。这个 byd 来句你那才多少代码啊(我写五个服务,他写两个,给我来个你写多少代码啊)。我没搭理他直接走了。
过了能有半小时,小蒋给我发微信,让我去会议室。小蒋和领导 p坐门口面对面的两个位置,后端 r 坐里面,胳膊往桌子上一杵支着脑袋,脸歪过去玩手机。小蒋说刚才后端 r 说以后都不能在开发环境联调了,都要上测试环境联调,怎么回事。我说老的开发环境挂了,新的开发环境还没搭出来,前端着急联调,先上测试环境调。小蒋开始整没用的,说这是两回事啊,跟领导 p 说要不先把开发进度停一停吧,领导 p 皱 个眉头没搭理他,然后跟我说把运维找来。这时后端 r 把脸转过来了,气呼呼的说你刚才又说一遍以后不能在本地联调了,我说我啥时候说不让你本地联调了,领导不耐烦加急了的口气对我说行了。同时后端 r 冲着我说要不把我旁边人都叫过来问问不,你说的都听见了。我转身去叫运维。
回到座位上我突然明白,这货有气不敢冲领导撒,拿我撒气呢,越想越气,给后端r 发微信,说没事少抱怨,啥叫我不干活啊。后端 r 回个哎那不是话赶话说到那了吗。我回了他个什么 b 人,炸毛了,过来跟我对喷。
过了两天开发环境搭建完成,项目部署上去跑了几天稳定以后我拉了个会,确定一下提测流程和上线流程,同时我想把权限都交出去,因为和运维一起搭建的环境,我有所有的权限,我想把测试环境的权限交给测试,开发环境的权限我只留基本开发的权限。会上小蒋围绕 git 分支开始装逼,最终没讨论出结果。
开完会领导 p 问我开的是什么会,我说定一下流程规范。领导回复我不要再讨论,产品做不出来讨论这些没意义,流程规范就我自己订,按照我写的文档来。
下班以后领导给我发语音,问我小蒋在做什么工作,我说不知道,我看代码提交记录他没写订单 的代码,领导急了,说这活都不干都等实习生干呢啊,一天天净整这没用的,现在好了,后端 r 不想干 了,实在不行就都别干了。当时这段语音我以为说小蒋呢,后来 我品出来其实是说我呢。
第二天有人往群里发了个当前项目进度,20 多个需求延期(具体谁发的记不清了),没想到小蒋往群里发了个 word 文档,文档里说到现在已经不是延期 了,是大规模延期(大规模延期,小蒋至少负一半责任,心里是一点 b tree 没有)。文档里还让我们跟他干,想跟他干的在群里发 i join,当然,没人搭理他。
快下班领导拉了个会,叫上了老板,让老板和我们说一下公司的规划,老板主要表达了一个观点,不能重构,没有时间和财力再支持重新做一遍了,也告诉我们文档不能一点没有(这个应该是因为小蒋,小蒋一直找借口不写代码,其中一个理由就是我们没有开发文档)。老板走了以后领导开始讲话,主要还是老板传达的意思,然后说了一句要尊重点别人的开发习惯。说完以后开始问开发进度,后端大佬 w 说环境还有些问题,今天一直在解决,小蒋突然急了,说看吧,环境 还不稳定呢,领导 也急了,说你一天总激恼啥啊,这不有人解决吗,你天天都在干啥呢啊,小蒋说是啊干啥呢。领导说是啊干啥呢,说说,小蒋说说呗,然后开始复读机模式,一直重复说呗。领导又问一遍你天天活一点不干,干啥呢,小蒋说交易服务的流水线是他搭的。我一听好家伙,我干的活成他干的了。领导又问你代码写多少了,小蒋说没写,写不了。领导说你咋写不了呢,小蒋说现在的条件写不了。后端大佬w 和我都说我们都能写,该有的前置条件都有了。小蒋说不知道怎么对接,我一下 也急了,我吼了他一句那不是你自己的问题 吗。
会后我去看云校的流水线,想把小蒋刚才虚报工作的证据给领导,点开流水线发现小蒋真建了一条流水线,把我之前的流水线的默认分支给改了。我截图给领导,告诉领导小蒋把我之前建完 的流水线重新建了一遍,改个默认分支,这就是他说他昨天干的活。领导回了我一句别纠结这没用的了,该干的一点不干。至此我明白了,昨天说我呢。
从这天开始,我只写代码,不再提任何建议,也不指出问题。然后我看了一眼云效上任务分配,到小蒋入职没分出去的活,全分给我了。
当天晚上下班领导又给我发语音,说小蒋提离职了,让我和他交接,我说有啥交接的啊,他也没干活。领导说小蒋非要交接,有几篇文章要交接一下。第二天小蒋也没找我交接,中午背包走了,结果下午又回来了,不但回来了,还拉着两个产品开个会。快下班的时候领导拉我和后端 r 开会,说小蒋要走了,任务重新分一下(就写个订单业务,当时我也没弄明白要分啥,下单,退单几个接口分给不同的人写?)我说小蒋没走啊,刚才还拉着开会 呢。领导说都和人事签完字走了 啊,我说下午又回来了。领导说这给我整不会了啊,我问问咋回事再说吧。
过了半小时又找我们几个,说小蒋找老板承认错误了,老板也说再给一次机会,以后也都当没发生过。小蒋不搞事了,因为没人搭理他,之前找过我几次让我响应他,最后一次找我说 master 分支上不应该有代码,项目没上线master 分支应该是空 的,我说那怎么办,小蒋说要把 master 的代码都清空,我说那这活谁干,我是没有时间。小蒋说找我来商量不是让我干活, 找我支持他。第二天小蒋把用于管理依赖的父工程master 分支删了,当时有 16 个服务,小蒋只删了一个就不删了,也幸亏他懒后面不删 了,后来上线的时候,因为分支被删,我们无法合并代码。这次以后小蒋不找我了,要不然每次找我一个小时打底,活干不过来,还 来耽误我时间。小蒋虽然不搞事情了,但是活还是一点不干,让后端 g 写点 controller,然后提 merge request,然后他通过,每天重复这点工作,就这样小蒋又混了一个月。
十月中旬,领导拉个会,说看代码了,小蒋约等于没写, 问小蒋,小蒋说写不了,我们的服务都是不可用的,以后订单服务领导写(这里说是订单服务,其实只是订单业务,并不是与订单相关的服务,比如购物车就是后端 r 写,管理后台代码还交给实习生 x 写)。又过了一个礼拜,公司大规模裁人,小蒋和后端 g 被开了。
领导 p 开始写代码,整个架构里只会 spring 和 mybatis,剩下的都不会,idea 不会用,git 不会,刚开始 10 分钟叫我一次,后来 20 分支叫我一次。又过了几天,架构 x 也回归了。
又过了几天,领导给我发微信,问我运维的工作我和架构 x 一起做行不,运维大哥的转正申请老板没批。我说应该能应付,后来我发现我天真了,说是一起负责,干活的时候他只找我。
自此互联网技术部进入 0 规范时代,之前让我写在飞书知识库里里的规范文档,除了日志规范执行一部分,剩下全不执行。我入职以后就让我写单元测试规范,说是以后都要写单元测试,还让我写例子,直到 我离职,后端 r 和领导 p 没写过一行单元测试。单元测试没有,也不用 apifox 测试,写完代码把前端叫到身边,直接让前端调,然后把开发环境的服务下线,把自己本地的接上去。 每次下线服务,前端就会找我说我的接口 404 了,前端就得等他俩的接口联调完再调我的。他俩的接口要是有点什么问题,直接打断点,这个时候整个开发环境就是阻塞的(后来合并了 服务,电商项目组只有两个服务,一个打断点,另一个服务的 rpc 接口就全部超时),这时候不仅联调不了了,我自测也测不了。之前领导开会说尊重开发习惯,我还纳闷规范和尊重开发习惯不冲突吗,我才明白不冲突,尊重他俩开发习惯,其他人执行规范。
因为他俩一直在本地 debug,关键的业务节点也没有日志,每次测试提 bug,先补打日志的代码,发布到测试环境,再调接口,看日志定位问题,每次解决 bug 至少部署两次,严重耽误测试进度。后端 r 还能做到自己复现,领导 p 每次都让测试给他复现,测试每次提 bug 把问题截图复现步骤写完以后,先等他加日志部署一次,部署完了还得 去小程序上再给他重新填表单,点一次按钮。这个事情我和测试主管在上线之后吐槽过,没啥用。
这个时候天气冷了,因为穿秋裤,我大腿根上长了不少湿疹,每个礼拜请了一天假去看病,一共三次,第三次的 时候领导说你早点去,尽量来。我十点二十到公司,进公司看见领导十点给我发微信,把我请假申请驳回了,让我请病假,发病例照片,开病假条。我在职的这段时间,光不干活 的就不下五个,我请假跟我急了。
随后两天领导没跟我说话, 也没找我给他解决问题,那两天他代码咋写的我现在还纳闷。我不想干了,当时是十月末,决定年后换工作,每天八点起床,八点半洗漱完在家坐 40 分钟再去上班。
随后两个成手前端相继离职,人员架构基本稳定了。
领导又给我们开个会,说了一下老板要人员精简,问了一下后端大佬 w(监控系统),东大的这个实习生 n 留不留,后端大佬说了一下最近的飞书机器人是他一个人写的,能帮上忙。然后又说之前问了供应链主管 z,实习生 gy 得留,至此所有实习生全部提前转正。几个人里实习生x和实习生w还算靠谱,剩下三个全是混子,其中两个还上班干游戏.
领导每天除了写写订单代码,其余一概不管,我开始我的极致牛马生涯。因为之前权限没交出去,运维还交给我做了,我干脆取消了云效上的卡点审核(部署流水线时需要有人放开卡点,流水线才会进入构建阶段,因为构建阶段是消耗免费时长的),测试库放开权限,否则按照我们测试环境部署 的频率,我不用想着写代码了。整个技术部水平低到令人发指,除了监控系统主管,几个主管的技术水平也就是初级开发,全是 crud 选手,遇到一点技术问题就解决不了,供应链主管不知道 springboot 全局异常处理怎么做,前端主管小程序代码里访问环境错了不知道抓包,整个公司会 git 的就三个人,我负责给整个电商项目组合并代码。
微服务项目难免使用 redis 分布式锁,后端 r 和领导都不会写,set 命令存的值放个常量,finally 代码块里又比较 value,直接释放,在线程竞争锁的时候,完全起不到作用。两个人都找我解决过这个 问题,后端 r 的代码更离谱,获取不到锁 的时候还抛异常,然后问我他这段代码怎么报错呢。
公司的管理后台归前端主管负责,供应链那边有个 app 登录的需求,走的是管理后台的用户体系,他问我用户服务的登录我是不是写完了,我说是,跟我说你把代码复制过来呗,他这也要用,我复制过去以后,前端直接找我联调了,这活成我的了。开发过程中前端写了新页面就需要添加菜单,需要操作数据库的时候直接找我,让我操作。
一天晚上下班以后,领导在那和前端主管大声说发票相关也是我做的啊,这真是核心 啊,应该是说给我听的吧。核心和冤种我还是分得清 的,干活多有话语权 的是核心,干活多还受气的叫冤种.再说在云效项目管理上他也给我建任务了,不知道在这表演啥,以为夸我两句我就能认了吧.
上线日期最后定在了12月1号,支付换成了使用三方支付,直到上线前两天才给我开通测试权限.12月1号这天,支付流程还没有测试完,就草草上线了.其实不只是测试流程,整个业务流程都没有经过完整的测试流程,直接上线.
上线这天是我的一个噩梦,代码流水线发布以后,存在很多问题,比如nginx缺少配置导致小程序登录不上,有的是配置文件没改对,一下排着好多问题等着定位.产品g找我说生产环境食品服务访问不了,我放下手头的事开始定位问题,刚打开ssh软件准备看docker日志,成手测试l来找我,说测试主管发两条流水线,让我帮忙看看发布了没.我说哪两条流水线,她说不知道,你一条一条看吧,一下给我干懵了,不知道目标,怎么知道结果对不对呢.这时候产品g又来催我,问我食品服务弄好没,我一下破防了,说我忙不过来了能不能找找别人,领导在后面尬笑,跟产品g说问题他来看.
过了一会领导微信我,说我的支付接口有问题,让我过去,跟我说什么问题,我也没听,脑子里全是傻逼两个字,轻重缓急不知道,生产环境一堆问题呢,在这说测试环境的事,还跟我说句你先知道就行了,我就是知道等我忙完生产环境的事也得忘了.回到座位我跟产品c说咱们能不能别管测试环境的事了,一直找我解决测试环境的问题.我这句话说的声音挺大,领导听到了叹了个气.
中午吃饭的时候,领导又找我,还是支付的事,又跟我说有问题,我也没听,等他说完我回座位上吃饭,然后给我发个微信,说不是我的问题.我一句傻逼脱口而出,没忍住.午休时间我也没敢闲着,终于在午休刚结束把问题都解决了,同时架构x也说食品服务解决好了,领导过去问是什么原因,架构x说是我把数据库的链接地址配错了(这段的意思是领导把这事甩出去了)
上线后几天领导发给我一个文档,标题是当前系统存在的问题,让我补充.我一条没写,只把我当时最不能忍受的跟他说了一下,就是当前联调总是把开发环境的服务下线,只能一个人调.他把这个问题写上去了,当然,这个文档上的问题,一部分都不是问题,比如controller的版本号写在了类上,这样版本更新的时候只能新增controller类,领导觉得不行,不如都在一个controller里写.据我所知,api版本升级的时候,基本都是一个controller里所有的接口都要改,所以基本都是重新写controller,这样也更优雅.还有个问题是代码里java bean过多,这里指的是vo,接口入参对象过多,参数封装成javabean能满足兼容性,打日志的时候也更方便,对象直接序列化成json,定位问题的时候直接把日志里的json复制到apifox或者postman,调用一下接口就复现问题了,当然他不通过日志定位问题,即使看日志也是让测试给复现.
这个问题文档还开个会宣讲了一下,当然直到我离职这些问题也一个都没改.领导说完这些问题又心血来潮问现在接口文档怎么写,之前让我弄apifox教程的时候我就告诉他接口文档可以从swagger导入,也写在文档里了.也让我把几个服务的导入都做了,也不知道那天怎么就提这茬.然后问是不是手写好一点,转过头去问后端r,是不是也手写,后端r点点头.然后领导用一种挑衅的语气和延伸看着我说为啥要导入呢.当时我虽面无表情,心里差点没笑死,后端r就不写接口文档,虽然小蒋走以后他往apifox上写接口文档了,都是糊弄的,代码里16个字段,写上3个然后就不写了,半个公司都知道后端r不写接口文档,问他一句然后对着我说为啥要导入呢,那能为啥,因为懒呗,心里没点逼数,自己是那勤快人吗.平时干活啥都整不明白,啥都得问我,现在整这出.其实我在职的这段时间,领导让后端r干点啥都挺费劲,要么不听,要么糊弄,但是领导是真怕后端r不高兴啊,我估计后端r是他亲爹吧.
过了一个礼拜又开会,领导说知道为啥不能手写了,这接口文档和代码差太多了.又问我该怎么办,我说应该写接口story,story文档上写上swagger地址或者apifox地址,同时附上ui图对应的按钮,这样前端才能直接找到对应的接口.领导当时皱个眉头,边皱眉头边嗯啊的,这事当然也没下文,应该是没听明白,问我一句也只是走个过场.要是听明白了更不能按照我说的做了,这得多打不少字呢,还得截图,多干点活不是要命呢吗.
当时apifox是干啥的领导都没整明白,apifox顾名思义是暴露api的,之前小蒋给各个项目建了apifox的团队项目.领导让把小蒋建的都弃用了,弄了个服务接口的项目,apifox用成swagger了,前端调接口的时候根本不知道上哪找,咱也不知道十多年的工作经验怎么来的.
上线以后因为bug太多,每天都要部署好几次生产环境,我微信问领导现在上线了,开始执行上线流程规范呗,要不容易出生产事故.领导说好,你来定下.我把之前写的流程规范修改一下,根据飞书提供的上线申请模板进行简化,做了一个我们自己的上线流程,由产品经理整理上线文档,上线时在群里发下要上线什么需求和bugfix,对应的开发提供相应的仓库地址和分支,变更的sql,然后发送邮件.规范文档发到群里,还是老样子,没人看.
线上环境bug属领导最多,写完代码就找我直接部署,就两个字:上线.我规范文档里写的修改bug要从master分支上拉bugfix分支,人家也不拉.他的代码调用的rpc接口改了,需要一起上线,也不管,就找我部署他的代码.一天晚上我给部署完以后后端r找我,问我是不是上线了,我说是.后端r说他的代码还没上线呢,我说你也没和我说啊,他说他也不知道啊,我又赶紧给他部署代码,能干一次的活,非得让我干两遍,发版的时候我还得看着流水线的运行状态,不能去干别的.我在群里说咱能不能上线发邮件,漏发代码了.然后当天晚上领导没搭理我,我到家以后又找我上线了3次,你没看错,一天发四次生产环境.晚上10点的时候给我发微信说有个问题解决不了,mybatis里一段sql查询数据一个字段是空的,放到数据库里还查出来数据了,他说怀疑是后端r写的那个mybatis拦截器的原因(首尾呼应上了).我查了一下mybatis的字段映射规则,发现mybatis默认是不做驼峰转换的,mybatisplus默认驼峰转换,这个问题就是mybatisplus造成的,我跟他说了问题原因以后告诉他mybatisplus后患无穷,应该剔除,没搭理我.在我刚入职的时候讨论过应该用mybatis还是mybatis plus,我就说过mybatis plus要有严格的code review,否则到时候代码质量会非常差,当时领导也是说按我说的来,当然,说是说,做是做.
第二天下午后端r在领导座位那叫我,问我领导这个问题是不是因为拦截器的原因,我说不是,应该是mybatisplus的原因.看那个样子应该是领导让把拦截器删了,后端r不想删找我问是不是拦截器的原因.过了一个小时领导又找我,问我这个问题找没找到解决办法,我说你就换成mybatis的查询方式呗,我用标签映射是没遇到这个问题.然后领导给改了,这个问题终于解决了.
我本以为到此应该就是极限了,后来我发现改bug都不经过测试了,运营提bug给产品,产品直接找开发,开发改完bug测试人员一点不知道,领导更是改完代码直接往生产环境上怼,怼完了发现bug没修复,再改代码继续怼.有一天上线几个bug修复,我在这部署呢,改bug的开发回家了.前端找我上线代码,我问你过测试环境了吗,前端说运营着急.等我部署完前端问我你部署了吗,我说部署了.前端说bug还在啊,我说你仔细看看你提的代码对不对,过了一会告诉我代码没push.招一堆刚从培训机构毕业的学生,连基本的软件开发流程都不教,招进来的时候说慢慢培养,咱也不知道培养啥呢,反正也是,领导都瞎jb干呢.
年前公司的技术负责人h老师拉个批斗会,领导去叫我们参加,起因我不知道是什么,似乎在拉这个会之前他们已经开过一个会了.h老师说生产环境有很多bug没人改,测试流程都走不下去,能进到我们公司能力肯定是没问题的,能力够还这么多问题,就是没有责任心.然后又说不能什么都找领导p,领导p一个人也没法做整个技术部的工作啊,我绷住没笑,责任心确实没有,能力也没有啊.还有这个不能什么都找领导p,估计是领导说的实习生的代码他都得重写一遍的事,这个事,周瑜打黄盖,另外领导干点活得众星拱月,我给提供技术支持,前端帮自测,测试给复现,实习生给写单元测试,不能算找他一个人,应该联合署名.
线上的bug改了一个多月,还没改完的时候新需求来了,限时折扣,基本都是我的工作,开需求评审的时候还要把算价格的逻辑挪到我这边做.开完评审以后我开始写,发现只能写写外面的框架,里面有哪些rpc,基础数据怎么来还不知道,一边写还得一边给他们上线bug修复,领导和后端r那几天都在改bug,根本没管这需求.临近元旦又发生一个大事,东大毕业的后端实习生n做的业务延期两个月了,一看他代码全是瞎写的.每天晚上下班前我都会花五分钟看云效代码仓库的动态,了解一下大家都在干什么.在11月以后我发现一个事, 这个人两个月没提交过代码,我当时以为没给分活养闲人呢.这小伙直接开始请假,过完年第一天自己提的离职,白嫖个年假.除了小蒋两人是开除的,其余混子都是自己离职,那两人在知道不干活的情况下也是先养两个月.
过了元旦领导想起来还有个需求没做呢了,拉了个会商量一下怎么做.开完会我说原定的上线日期太紧了,还剩10天了我做不完.领导急了,说这个需求不能再延期了.估时20天的需求,给我压缩到10天.回到座位我直接把idea关了,过年之前这个需求我一行没写(1月22号过年),最后这需求3月上线的.
年前一天领导又找我教他合并代码,我说要不培训一下吧,都不会,领导说整个培训吧.排在我身上的需求也没写,年前这段挺清闲,我参考接git教程好好写了篇教程文档,结合了我们公司的应用场景,还新建了一个项目,用于做git操作训练.写完了以后发到群里,果不其然,没人看.直到一个礼拜后,领导又问我说今天下午培训git行不,我说先把文档看了吧,名词都不知道啥意思,培训也白培训.这时候我打开飞书文档,看阅读记录,一共五个人,两个还是产品和ui,一个是会的大佬,不会git的基本都没看,包括领导.我把文档又发一遍,说后面会培训,都看看熟悉一下,还是没人看.领导又发一遍,说我一个小时后培训,这次都看了,然后前端主管在最后一分钟才有了访问记录.
培训开始,前端主管在我旁边玩手机.两个前端代码冲突找他,他就说解决不了,然后在我旁边玩手机.培训完以后我说了下用于练习的仓库地址,没事都练练怎么解决冲突.等到过年回来,飞书的访问记录里除了前端w又看了这个文档,其余人都没看,用于练习的项目,一个提交都没有.
这次培训实习生gy没有参加,因为他请了一个多月的假,过完年才回来.
过完年我开始投简历,准备找到下家离职,我在导出那些我写的文档的时候,发现领导新增了一个文档,标题是工作安排.我一点开,第一条写着swagger培训,负责人是我.我尼玛火一下就上来了,swagger一共五个注解,百度找个博客半小时用不了就学完的东西,让我整个培训,惯的一身臭毛病.我给领导发微信,说这东西就没有一家公司培训的,领导说是想让我定个规范,我说swagger注解用对了就是规范的,飞书上的规范也没一条执行的,领导说评审几次就好了,咱也不知道执行规范跟评审有啥关系,那单元测试规范写飞书上半年了,不做需求评审和设计评审写不了单元测试?没事让你写个规范,写完了不执行,代码都写不完,还tm 没事花半天时间做面子工程.
针对这个文档又拉了个会,给后面的需求大概排了个日期.会上领导又说第一次上线的时间太紧了,我差点没笑出来,从小蒋入职算,到上线将近三个半月,在小蒋来之前还做了不少工作,来个时间太紧了.至于订单那块,领导总共不到20个接口,写一个半月.上线以后还改一个月bug,纯改bug那种,元旦过后才稳定下来能运营.就这个开发速度,不知道的以为是多大的系统呢,对了,我们还是单休.
会议结束时领导问有没有要补充的,我说我写的文档希望大家看看,领导说实在不行做个验收.验收是查看有没有吸收,飞书文档上连个浏览记录都没有,还验收个屁啊.我本该问一句验收不过怎么办,但是我没问,首先验收这个事就执行不下去,其次如果验收不通过,那也就是不通过了,互联网技术部包容一切混子.我一看领导还是不想管,决定第二天提离职,不等offer了.
开完会我在qq群里问群友,我说为什么一家公司能有这么多混子,钱没少花招不少人,结果产出还没有10个人的小公司高,产出质量还奇差无比,群友一语点醒我,因为领导在混.以前我以为他是蠢,现在明白,还是混的因素多一点.
第二天下午我和领导提离职,领导说一会去会议室谈谈.到会议室没等我说话,领导就说我身上的工作可以往出分分,规范可以建立起来.我说想离职了再搞这些就没啥意思了.领导说工资可以微调一下,多了操作不了,又说当初营销服务给我是因为没人能写.然后又挺不好意思的说再考虑考虑,我说不考虑了.领导又问我怎么打算,我说想去北京看看,不打算在沈阳工作了,感觉我们公司应该在沈阳还算不错的.领导说其他公司更low,我说再low不能有人上班干游戏吧,领导尬笑说打游戏这事老板也说了很多次.我接着说存在这么多问题,没有一个说几遍就重视起来能改的,本地联调没事下线我服务的这个事,群里说了好几遍,就是不搭理你,我身上的工作量最重,我都能在开发环境上联调,我不知道你们为啥不能,就是懒.领导说是懒了.我说每次前端找我来跟我说我接口访问不到了,我这心里啊,想骂人,之前因为这事还跟后端r吵一架.领导说真不想干了啊,我说不想了.领导说那他找几个后端商量商量我身上的活怎么分吧,太多了,问我着急走不,我说不着急,领导说那交接半个月吧,混着呗,我说行.
第二天告诉我消息服务交接给架构x,剩下的都交接给领导.交接过程中叫我过去更频繁了,我看面试题也看不消停.
我家里亲人去世,我请了两天假,回来上班第一天,领导微信我,说这个需求你有时间做一下.我第一次见到提完离职了还得做个需求的,别人提离职都是当天走,就我得交接,光交接还不行,还得干点活.然后前端主管又来找我,说供应链那边有个发消息的需求,我说消息服务我交接出去了,还有七天就离职了还给我分需求啊,前端主管尬笑一下.
架构x接到需求过来问我应该改什么,我翻了代码说了一下.架构x说你哪天走,我说我今天就想走,刚又分给我个需求,提完离职了还得干点活.架构x大声说不能这么干,写一半怎么整.领导叹个气.
我去人事那领离职交接单,找领导签字,领导正在那"点一下",然后前端主管去微信开发者工具里点一下按钮,请求进领导断点了.签完字领导改代码重启"再点一下".无敌.
我离职以后一个月,领导天天干到后半夜,勤快起来了.我离职没几天,供应链主管离职,项目做的一团shit,实习生gy由领导亲自带,每天给领导的接口写写单元测试,没有单元测试可写的时候把我的代码里代码生成器生成的mybatis基本crud方法改成mybatisplus.之前讨论是该用mybatis还是mybatisplus以后,我把mybatiscodehelperpro插件如何使用,如何破解放到飞书文档里,能根据ddl直接生成java validation注解和swagger注解,当然你懂的,要是有人看,特别是领导,就不会让我定个swagger规范了.
4月以后公司开始欠薪,大家陆陆续续开始离职,直至今日,后端仅剩后端r和领导,离职的后端工作全都交接给了领导.可见领导体恤员工.
写这篇文章,一是泄愤,二是给其他想从一线城市回来的it人员一个参考.最后给我的两个犟种同事留一句话,菜不是问题,菜还懒,懒还犟就是问题了.还有如果老板有幸看到,您需要考虑一下实习生gy是不是您的亲戚,如果不是的话,是不是有人拿着公司的钱养闲人.