从菜鸟到团队Leader的成长之路:一个成都后端的五年自白

甜美之太阳
2025-12-15 18:28
阅读 513

凌晨两点,窗外的成都夜色静得只剩键盘敲击声。刚处理完一个线上告警——又是那个老掉牙的 OutOfMemoryError,不过这次是在我们新上线的爬虫服务里。喝了一口已经凉透的冰美式,突然想起五年前自己还是个连 Spring Boot 的 @Autowired 都搞不清的小菜鸟。今天想借这篇文章,聊聊我是怎么从一个“人肉日志 grep 机”成长为能带十来号人的后端 Team Leader 的。

初入京东:从“Hello World”到双11流量洪峰

2019年夏天,我以应届生身份加入京东成都研发中心。第一天入职,mentor 丢给我一个任务:“把这个商品信息同步服务重构一下,用 Spring Boot 重写。”
我当时内心 OS:Spring Boot 是啥?MVC 不是 Model-View-Controller 吗?跟这个有啥关系?

但没办法,新人就得干脏活累活。那两周我白天看文档、晚上啃《Spring 实战》,咖啡当水喝,硬是把一个老旧的 XML 配置项目迁移到了 Spring Boot 2.x。最崩溃的是,上线前一晚发现定时任务没触发,查了八百遍代码,最后发现是 @EnableScheduling 忘记加了……那一刻真的想砸电脑。

真正让我“成人礼”的,是入职半年后第一次参加双11备战。我们负责的商品详情页服务,QPS 预估要冲到 50万+。我被安排做缓存降级方案,结果压测时 Redis 连接池爆了,报错 Cannot get Jedis connection,线上直接雪崩。那天凌晨四点,我和运维、测试、产品经理挤在会议室,一边改配置一边互相甩锅(当然,最后锅还是我们开发背了)。

但正是这些“事故”,让我明白了一个道理:技术不是炫技,稳定才是王道。从此以后,我对任何“花里胡哨”的新技术都保持警惕——喜欢折腾是一回事,生产环境用不用,那是另一回事。

第一次带项目:爬虫?不,是“数据搬运工”

时间快进到2022年。公司要建一个竞品价格监控系统,需要从多个电商平台抓取商品价格。领导拍板:“你来牵头,做个爬虫服务。”

我第一反应是拒绝的——爬虫?不是 Python 的地盘吗?我们 Java 程序员搞这个是不是有点“跨界”?但转念一想,这不正是成长的机会吗?

于是,我搭了个基于 Spring Boot + HttpClient + Jsoup 的简易爬虫框架。本地跑得飞起,结果一上测试环境就被反爬机制锤爆:IP 封了、验证码弹了、请求频率限制了……更惨的是,某次半夜自动抓取时,对方服务器返回了 302 跳转到登录页,我们的服务直接解析出一堆 <script> 标签,数据库塞满了垃圾数据。

那周我天天和产品经理对需求:“你们到底要多实时?”
他:“越快越好!”
我:“那预算给够买代理 IP 池了吗?”
他沉默了。

最后我们妥协:核心商品每10分钟抓一次,非核心每小时一次,并引入了代理 IP 轮换 + 请求头随机化 + 异常重试 + 数据清洗管道。最关键的是,我把整个爬虫服务拆成了两个模块:

  • 采集层:轻量、无状态,只负责抓原始 HTML
  • 解析层:独立部署,可横向扩展,失败可重放

用 Spring Boot 的 @Async 和 RabbitMQ 解耦,终于让系统稳住了。上线那天,我特意请团队吃了顿火锅——毕竟,能活着上线就是胜利。

下面是我们优化前后的性能对比(模拟 1000 个商品/小时):

指标 初版 优化后
成功率 68% 98.5%
平均延迟 3.2s 0.8s
内存占用 2.1GB 800MB
日均异常数 420+ <10

从写代码到带人:Leader 不是“超级码农”

2023年,我被提拔为小组 Leader。本以为可以少写点代码、多画点架构图,结果发现:Leader 最难的不是技术,是人

第一个月就踩了大坑。有个 junior 同学提交的 PR 里,@Transactional 注解用在了 private 方法上,事务完全失效。我直接在群里@他:“这都不懂?大学没学过 AOP 吗?”

结果人家当天就申请调岗了。后来 mentor 找我谈话:“你技术强,但带人不能只靠‘骂’。你要教会他为什么错,而不是让他觉得‘我不配’。”

这句话点醒了我。从此我开始调整方式:

  • 每周组织一次“Code Review 小课堂”,不点名批评,只讲典型问题
  • 给新人分配“渐进式任务”:先改配置,再写单元测试,最后碰核心逻辑
  • 自己带头写文档——虽然我也讨厌写,但Leader必须忍

最有成就感的一次,是去年618。我们组负责的优惠券核销服务扛住了峰值 120万 QPS。庆功会上,那个曾经被我“骂哭”的同学举杯说:“谢谢哥当初没放弃我。”那一刻,比搞定一个 GC 调优还爽。

技术之外:成都节奏与深夜代码

很多人问我:成都节奏这么慢,你怎么还能卷成这样?

其实我不觉得这是“卷”。我喜欢深夜写代码,因为那时候没有会议、没有钉钉轰炸、没有“紧急需求”。窗外锦江静静流,脑子特别清醒。上周五晚上,我就在改一个 Spring Boot 的启动加载逻辑,为了把初始化时间从 8s 降到 3s,硬是把 CommandLineRunner 拆成了懒加载 + 缓存预热。

但我也学会了“偷懒”——不是真懒,而是用工具解放人力。比如:

  • 用 Swagger 自动生成 API 文档,省得和前端扯皮
  • 用 Arthas 在线诊断,再也不用求运维 dump 内存
  • 用 GitLab CI 自动跑 SonarQube,代码质量不过关直接拒合

生活上,我坚持周末不碰电脑(除非 P0 事故)。成都的茶馆、火锅、爬山,都是我的“精神充电桩”。毕竟,程序员不是机器,持续输出的前提是持续充电

给正在路上的你:几点真心话

如果你也处在从执行者到领导者的转型期,分享几点血泪经验:

  1. 别迷信“高大上”技术栈
    我们现在主力还是 Spring Boot 2.7 + MyBatis + MySQL。虽然 Kafka、Flink 很香,但业务场景不匹配就是浪费。稳定 > 新潮。

  2. 爬虫不是“黑产”,但得守规矩
    我们所有爬虫都遵守 robots.txt,控制频率,不碰用户隐私。技术无罪,滥用才危险。

  3. 学会说“不”
    产品经理又提“明天上线”?先问清楚优先级、资源、后果。Leader 的价值不是满足所有需求,而是帮团队守住底线。

  4. 保持编码手感
    即使我当了 Leader,每周至少写 200 行代码。不然开会时说“这个很简单”,会被 junior 在心里翻白眼。

  5. 允许自己犯错
    去年双11,我误删了一个 Kafka topic,导致数据断流半小时。但团队没人指责我,反而一起复盘流程漏洞。信任,是在一起扛过事故后建立的


写完这篇,天快亮了。成都的清晨总是温柔,就像这五年走过的路——有 bug 的焦躁,有上线的狂喜,有被质疑的委屈,也有带出优秀下属的骄傲。

技术这条路,没有捷径。但只要你愿意沉下心、扛住压、持续学,菜鸟也能长出翅膀

共勉。
—— 一个还在成都写 Spring Boot 的普通后端

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝