代码人生:一个成都测试转开发的三年实战血泪史

UI还原大师
2025-12-19 07:24
阅读 901

作者注:本文写于2024年6月,坐标成都高新区某共享办公区,窗外是熟悉的天府大道,楼下奶茶店排队的人比代码提交记录还长。房租3500,工资不高但够活——前提是别想买房。


开篇:凌晨三点,我在改第17版接口文档

去年十月的一个深夜,我坐在公司会议室里,面前三台显示器亮得像KTV包厢的霓虹灯。左边是Postman的请求日志,中间是Swagger文档,右边是产品经理发来的第N条微信:“哥,这个字段能不能再加个枚举?就一个字段,应该不难吧?”

我盯着屏幕,手指悬在键盘上,脑子里却在算账:老婆刚怀孕三个月,产检费用还没报销;房贷每月4200,公积金只覆盖一半;而我的月薪——从测试岗转开发后,终于从15k涨到了22k。

那一刻,我突然意识到:我写的不是代码,是奶粉钱。

我是谁?一个在成都摸爬滚打三年的“半路出家”程序员。三年前,我还是个每天点点按钮、写写Test Case的测试工程师,如今却扛着Spring Boot和MySQL在需求海洋里狗刨。没人教我怎么做架构,没人告诉我如何优雅地拒绝需求变更——我只能在实战中摔打,在bug里成长。

今天这篇文章,不讲高大上的微服务治理,也不吹什么“技术改变世界”。我就聊聊这三年,怎么从一个只会用JMeter压测的“点工”,变成能独立负责模块、敢跟产品对线的开发。关键词就俩:实战经验 + 代码人生


转岗那年:从“点点点”到“写写写”的魔幻现实

2021年夏天,公司搞“人才转型计划”。HR找我谈话时说:“你逻辑不错,又懂业务,不如试试转开发?薪资可以谈。”

我当时心里咯噔一下。说实话,我早就受够了测试岗的“背锅侠”命运——上线出问题,第一句永远是“测试没测出来?”;需求改了十遍,测试用例重写十遍;最离谱的是,有次因为前端UI颜色不对,PM居然让我写缺陷报告。

“转开发至少能掌控自己的命运。”我老婆当时正啃着兔头(成都人懂的都懂),含糊不清地说,“反正你现在工资也就12k,再低也低不到哪去。”

于是,我签了转岗协议,base不变,但绩效考核全换成开发指标。第一天坐到开发组,组长老王递给我一杯冰美式:“欢迎来到地狱模式。”

他没骗我。

前两个月,我连Maven依赖都配不明白。有一次为了调通一个Feign调用,我在公司通宵到早上七点,结果发现是对方服务没注册到Nacos。回出租屋的路上,共享单车坐垫都被我坐塌了。

更惨的是心理落差。以前测试时,我只要保证“功能符合预期”就行;现在开发,我要考虑并发、幂等、缓存穿透、数据库死锁……有一次因为没加@Transactional,导致订单重复创建,被CTO当众点名:“这是拿用户的钱在练手?”

那段时间,我天天失眠。半夜惊醒,脑子里全是SQL执行计划和Redis缓存策略。焦虑不是抽象的,它是银行卡余额、是妻子担忧的眼神、是不敢点外卖的克制。


实战转折点:那个让我“开窍”的支付模块

转机出现在2022年3月。公司要做一个聚合支付系统,老王突然对我说:“你来主R这个模块吧。”

我当场懵了:“我?我才转岗半年啊!”

“正因为你是新人,才不会被旧思维束缚。”他说完就去抽烟了,留我在原地凌乱。

硬着头皮接下。我做了三件事:

  1. 画架构图到吐:用draw.io画了整整三天,从商户接入、渠道路由到对账补偿,每一根箭头都代表一个潜在故障点。
  2. 写单元测试比写业务代码还认真:Mockito、PowerMock轮着上,覆盖率干到85%以上。老王看到后说:“行啊小子,学会用测试保护自己了。”
  3. 主动暴露风险:在评审会上直接说:“如果第三方支付回调超时,我们目前没做重试,可能丢单。” PM想砍掉这个方案,但我死磕到底,最后加了异步补偿队列。

上线那天,我守在监控大屏前,心跳比QPS还快。结果——零故障。第二天晨会,CTO居然点了我名字:“小李这次做得不错。”

那是我第一次感受到:代码不只是逻辑,更是责任。

更重要的是,这次实战让我明白了什么叫“以终为始”。以前写代码,只想着“跑通就行”;现在,我会先问:这个接口会被多少人调?失败了怎么办?数据丢了能恢复吗?


成都程序员的生存悖论:低成本≠低压力

很多人羡慕成都:“生活成本低,还能吃火锅打麻将,多舒服!”

扯淡。

是,我房租3500能租到地铁口一居室;是,一碗担担面15块管饱;但技术人的焦虑,从来跟城市无关,只跟能力有关

上周五晚上,我和几个同行在九眼桥喝啤酒。一个在字节的朋友说:“你们成都工资太低了,我这边应届生都25k起。” 我苦笑:“但我们房价也低啊。” 他摇头:“可技术视野呢?项目复杂度呢?你做的还是CRUD吧?”

这话扎心。确实,我们公司业务偏传统,技术栈三年没大更新。Spring Boot 2.3还在用,K8s只在测试环境跑了跑。我一度怀疑自己是不是在“温水煮青蛙”。

但后来我想通了:平台限制不了个人成长,除非你甘愿躺平。

于是我开始:

  • 每周抽10小时学云原生,哪怕公司用不上;
  • 在GitHub上复刻电商秒杀系统,逼自己处理高并发;
  • 参加本地GDG活动,认识真正搞技术的人。

上个月,我把自研的分布式ID生成器贡献给了公司中间件组。虽然没奖金,但技术总监拍我肩膀说:“下次晋升答辩,记得提这个。”

在成都,你可以选择安逸,也可以选择在安逸中突围。


代码人生的三个顿悟

这三年,踩过坑、熬过夜、吵过架,也拿过奖。总结下来,有三点特别想分享:

1. 测试背景是我最大的隐藏优势

很多人觉得测试转开发是“降级”,其实恰恰相反。
因为我懂测试,所以写代码时天然带着“可测性”思维:

  • 方法拆分粒度适中,方便Mock;
  • 日志埋点全覆盖,排查问题快如闪电;
  • 边界条件想得比QA还细。

上个月线上有个诡异bug,日志显示某个字段为null,但数据库明明有值。我直接翻出当时的测试用例,发现是序列化时忽略了@JsonInclude注解——这种细节,纯开发出身的人很容易忽略。

测试教会我的不是怎么点按钮,而是怎么思考“坏情况”。

2. 别怕暴露无知,但要快速闭环

刚转开发时,我总装懂。别人说“用RocketMQ削峰”,我点头;说“上Sentinel限流”,我也点头。结果自己实现时一脸懵。

后来我改了策略:不懂就问,但必须当天搞懂
比如昨天同事提到“Seata的AT模式有脏读风险”,我立刻记下来,下班前查完文档、跑完demo、写了总结笔记。

技术圈有个潜规则:你可以菜,但不能停滞。持续交付认知,比一次性秀肌肉更重要。

3. 代码之外,沟通才是硬通货

在成都,很多技术人沉迷“闭门造轮子”,觉得“只要代码牛,说话大声点”。错。

我见过太多优秀开发者,因为不会表达,方案被否、功劳被抢。我自己吃过亏:有次重构用户中心,性能提升3倍,但汇报时只甩了一堆JMeter图表,老板根本看不懂。

现在我学会了“翻译”:

  • 把TPS提升说成“每年省下XX万服务器成本”;
  • 把技术债清理包装成“降低未来30%故障率”;
  • 甚至用PPT画流程图,配上火锅emoji(成都特色,你懂的)。

技术是基础,但影响力决定你能走多远。


写在最后:我的代码人生,才刚刚热身

回到开头那个凌晨三点的场景。我最终没加那个“就一个字段”的枚举,而是拉着产品、前端开了个15分钟短会,用白板画出数据流向,证明改动会引发连锁反应。产品经理叹了口气:“行吧,下个版本再说。”

走出公司大楼,天已微亮。街边早餐铺飘来锅盔香,我深吸一口气,突然笑了。

三年前,我害怕改一行代码;现在,我能为一行代码据理力争。
工资从15k到22k,看起来不多,但每一分都是我用实战经验换来的底气。
在成都这座“巴适”之城,我选择不安逸地活着。

代码人生,从来不是写出来的,是打出来的。

如果你也在转型路上挣扎,请记住:

  • 别嫌弃小项目,小战场也能练兵;
  • 别怕犯错,但要让每次错误成为你的“技术资产”;
  • 最重要的是,别让城市定义你的上限

成都的茶馆很多,但敲代码的手,不该停。

(全文完)

后记:写完这篇文,我老婆发来消息:“产检报告出来了,一切正常。” 我回了个笑脸,顺手把刚优化完的订单查询接口merge到develop分支。
生活和代码一样,bug总会修好,日子总会向前。

评论 0

最热最新
暂无评论
UI还原大师Lv.1
0
影响力
0
文章
0
粉丝