互联网寒冬下的自我提升:一个网易老咸鱼的自救指南
上周五晚上十一点半,我还在工位上盯着 Vim 里一行又一行的日志输出。办公室空调已经停了,只剩服务器机柜嗡嗡作响,像在替我们这些“留守派”叹气。产品经理下午刚发来一封“紧急需求”,说是要在双11前加个新活动——可我们的项目组上个月刚裁掉三分之一的人。我一边改着代码,一边刷着脉脉,看到又一家大厂宣布冻结 HC,心里五味杂陈。
我是网易某在线游戏的服务端开发,三年工龄,经历过两款产品从立项到上线再到稳定运营的全过程。曾经以为“大厂=铁饭碗”,结果现在连食堂阿姨打菜都手抖得更厉害了——她说最近吃食堂的人少了三成。
冬天来了,简历却还没准备好
大概两个月前,我意识到不能坐以待毙了。不是因为被优化(虽然每天早上进公司都提心吊胆),而是发现自己的技术栈有点“锈”了。每天写业务逻辑、修 Bug、对策划的需求点头哈腰,底层原理?早忘得差不多了。Redis 的 zset 底层结构是什么?Goroutine 调度模型怎么工作的?一问三不知。
那天我打开自己的简历,差点没认出来——“熟练使用 Go/Python”、“熟悉分布式系统”、“参与高并发游戏后端开发”……听起来挺光鲜,但真要深挖,我自己都心虚。简历不是写出来的,是做出来的。可现在做的活儿,全是 CRUD 套娃,拿出去面试根本撑不住一轮。
于是,我给自己定了个目标:边工作,边刷题,边补原理,争取年底前跳出去。
爬虫?不,是“爬出舒适区”
第一个行动,就是重拾“造轮子”的乐趣。我知道很多同事觉得爬虫是“玩具项目”,但对我而言,它是个完美的综合练兵场——HTTP 协议、并发控制、反爬策略、数据清洗、存储设计,甚至一点点 AI(比如验证码识别)。更重要的是,它完全由我掌控,没有 PM 在耳边喊“这个需求很简单”。
我选了个小目标:抓取某招聘网站的岗位信息,分析当前市场到底需要什么技能。当然,过程远没那么顺利。
第一次跑脚本,IP 直接被封了。
第二次加了代理池,结果解析 HTML 时遇到动态渲染,document.querySelectorAll 在服务端根本跑不动。
第三次引入 Puppeteer,内存炸了,公司测试机直接 OOM。
第四次……算了,不说了,反正那周运维小哥看我的眼神像在看定时炸弹。
最后我用 Go 写了个轻量级异步爬虫,配合 Redis 做去重和限速,再用 SQLite 存原始数据。过程中重温了 TCP 连接复用、DNS 缓存、TLS 握手优化——这些都是平时调第三方 SDK 时完全不用关心的东西。但当你自己实现一遍,才真正理解“为什么”。
// 一个简化的请求控制器
type RateLimiter struct {
tokens chan struct{}
ticker *time.Ticker
}
func NewRateLimiter(rps int) *RateLimiter {
limiter := &RateLimiter{
tokens: make(chan struct{}, rps),
ticker: time.NewTicker(time.Second / time.Duration(rps)),
}
go func() {
for range limiter.ticker.C {
select {
case limiter.tokens <- struct{}{}:
default:
}
}
}()
return limiter
}
这段代码跑起来后,我突然想起去年双11期间线上那个诡异的 503 错误——原来是我们没做客户端限流,上游疯狂重试把网关打崩了。当时还以为是 Nginx 配置问题,折腾了一整晚。现在回头看,真是又气又笑。
刷题不是背答案,是重建思维肌肉
白天写业务代码,晚上刷 LeetCode,成了我的新常态。一开始特别痛苦——离开校园后,算法题几乎没碰过。第一周,Medium 题平均要花两小时,还经常 WA。最崩溃的是某天做到一道“LRU Cache”,我居然想不起双向链表怎么写了。
但慢慢地,手感回来了。我发现面试题其实是在考你“拆解问题”的能力。比如“设计一个短链系统”,表面看是数据库设计,实际上涉及哈希冲突、分布式 ID、缓存穿透、HTTPS 重定向性能……这不就是我们游戏里“邀请码系统”的升级版吗?
我把工作中遇到的真实场景改编成面试题:
- 如何在不锁表的情况下,实时统计百万玩家的在线时长?
- 战斗日志每秒 10 万条,如何高效写入并支持分钟级查询?
- 玩家 A 给 B 发礼物,B 正好在删号,事务怎么保证一致性?
这些问题没有标准答案,但讨论过程能暴露你的工程思维。我甚至开始在团队内部搞“模拟面试”——每周抽半小时,互相出题互怼。测试同学听说后也来凑热闹,结果她问了个“如果 Redis 宕机,你的排行榜怎么降级?”直接把我问懵了。那一刻,我真心感谢她。
综合能力:比你会不会写红黑树更重要
最近一次模拟面试,一位准备跳槽的同事被问:“你项目里用了 Kafka,如果消息积压了怎么办?”他滔滔不绝讲了一堆消费者扩容、分区调整,结果面试官只回了一句:“那你有没有想过,是不是生产者发得太快了?或者下游 DB 慢了?”
这就是综合视角的差距。在网易,我们常说“全链路思考”,但实际工作中,很多人(包括我)容易陷入自己的模块里。服务端只关心 API 响应时间,不管客户端怎么解析;后端不管 CDN 缓存策略,觉得那是运维的事。
于是我开始主动“跨界”:
- 跟客户端同学一起看 Protobuf 序列化性能
- 和运维讨论 Docker 内存限制对 GC 的影响
- 甚至帮策划写了个 Excel 自动校验工具(用 Python + openpyxl)
这些事看起来“不务正业”,但面试时聊起来,反而成了亮点。HR 不在乎你背了多少八股文,他们在乎你能不能快速理解业务、定位根因、推动落地。
下面是我整理的“寒冬期能力自检表”,供大家参考:
| 能力维度 | 我的现状(三个月前) | 目标状态 |
|---|---|---|
| 算法与数据结构 | 只记得快排和二分 | 能手写 LFU、跳表 |
| 系统设计 | 知道 CAP,但没实战 | 能设计简易版微博/电商 |
| 底层原理 | 听说过 epoll,没看过源码 | 能解释 Go scheduler 工作流程 |
| 工具链 | 会用 Git/Vim,但配置靠抄 | 能定制自己的开发环境 |
| 行业认知 | 只关注游戏后端 | 了解 SaaS、AI Infra 等趋势 |
现在回头看,填这张表的过程本身,就是一次清醒的自我诊断。
冬天不是终点,是沉淀的季节
有人说,互联网寒冬是资本的周期,但对我们个体来说,其实是一次强制性的技术复盘。当增长神话破灭,泡沫退去,真正值钱的,是你脑子里那些别人拿不走的东西。
我不再焦虑“什么时候能跳槽成功”,而是享受每天晚上敲代码的那两小时。Vim 里的光标跳动,终端里的编译成功提示,甚至一个 Segmentation fault 的报错,都让我感到踏实——因为我在真实地进步。
昨天,我把爬虫项目整理成 GitHub 仓库,README 里写道:“这不是一个爬虫,这是一个程序员在寒冬里,为自己点的一盏灯。”
如果你也在经历类似的迷茫,不妨试试:
- 找一个小而完整的问题,从零实现
- 把工作中的痛点变成学习课题
- 和同行多交流,别闭门造车
最后,分享一句我在工位贴的便签:“代码不会背叛你,只要你还愿意写。”
共勉。

评论 0