技术探索与实践的一些思考:一个35岁老码农的深夜独白
上周五晚上十一点,我坐在浦东张江某小区出租屋的书桌前,窗外是熟悉的霓虹和偶尔驶过的滴滴快车。女朋友已经睡了,房间里只有机械键盘咔嗒咔嗒的声音——不是在改bug,而是在刷一道LeetCode Hard题。题目叫“合并K个升序链表”,我写了三遍,还是超时。
那一刻,我盯着屏幕上红色的“Time Limit Exceeded”,突然有点恍惚:我都35了,怎么还在跟这些面试题死磕?
代码人生的岔路口
说起来你可能不信,我其实是个“半路出家”的程序员。大学学的是土木工程,毕业后干了两年工地监理,月薪6k,风吹日晒。2016年,看着身边朋友一个个转行做开发,我咬咬牙报了个培训班,白天上班,晚上啃《Head First Java》,周末泡图书馆。一年后,终于拿到第一份开发offer,月薪12k,比工地翻了一倍。
从那以后,我的人生就和代码绑在了一起。八年来,我经历过创业公司的996,也待过大厂的“养老部门”;写过电商后台,也搞过IoT设备通信;用过Spring全家桶,也折腾过Rust写嵌入式。现在在一家中型SaaS公司做后端架构,月薪22k,和女朋友合租在浦东,房租3500,生活不算富裕,但也算安稳。
但安稳之下,焦虑从未停止。
去年十月,公司裁员潮波及我们组,虽然我侥幸留下,但明显感觉“高龄程序员”的标签越来越重。HR找我谈职业规划,委婉地说:“你经验丰富,要不要考虑往管理岗转?”我嘴上笑着说“再看看”,心里却清楚:他们怕我学不动新技术了。
面试题挑战:不只是为了跳槽
很多人以为刷题只是为了跳槽,但对我这种“老油条”来说,刷题更像是一种自我验证。
今年年初,我决定系统性地重新梳理数据结构和算法。不是因为要面试(虽然简历确实更新了),而是因为在实际工作中,我发现自己对底层逻辑的理解越来越模糊。比如上周优化一个API响应时间,我本能地加缓存、调索引,但当DBA问我“为什么不用跳表替代B+树做范围查询”时,我愣住了。
那一刻,我意识到:经验可以掩盖无知,但掩盖不了技术深度的缺失。
于是,我给自己定了个“30天算法挑战”计划。每天下班后两小时,雷打不动。题目从Easy到Hard,语言从Java切到Go,甚至尝试用Rust重写一些经典算法。过程中踩了不少坑:
- 写快排时忘了处理重复元素,导致极端情况O(n²);
- 用递归解N皇后,结果栈溢出;
- 试图手写红黑树,三天后放弃,承认自己不是Tarjan。
但也有高光时刻。比如用双指针解决“盛最多水的容器”,跑出最优解那一刻,我激动得差点把咖啡洒在键盘上——那种纯粹的逻辑之美,是业务代码给不了的。
女朋友看我天天熬夜刷题,有天忍不住问:“你都这年纪了,还折腾这些干啥?不如早点休息。”
我苦笑:“我不怕被淘汰,我怕自己变成‘只会调API的老兵’。”
技术分享:从输出倒逼输入
真正让我突破瓶颈的,其实是开始做技术分享。
今年三月,我在公司内部组织了一个“每周一技”小课堂,主题就是“用生产环境问题反推算法原理”。第一次分享讲的是“如何用布隆过滤器解决缓存穿透”,本来以为没人来,结果会议室坐满了人,连隔壁组的产品经理都来听。
更意外的是,有个实习生课后加我微信,说:“哥,你讲的跟网上教程不一样,全是实战细节,太有用了!”
那一刻我突然明白:教,是最好的学。
于是我开始在知乎和掘金写文章,不追热点,就写自己踩过的坑。比如《一次Full GC引发的血案:从JVM调优到分布式锁设计》《为什么我们的微服务总在凌晨三点崩?》。没想到几篇下来,粉丝涨了几千,还有猎头私信问我有没有兴趣看新机会。
最讽刺的是,当我放下“必须跳槽涨薪”的执念,反而迎来了更多机会。 上个月,一家做边缘计算的初创公司CTO找我聊,说看了我写的“MQTT协议在弱网下的重连策略”,想挖我去搭基础架构,开价35k。我犹豫了,不是因为钱不够(其实挺香),而是担心又要从零开始。
回家和女朋友商量,她一句话点醒我:“你不是一直说想深入IoT吗?现在机会来了,怕什么从头开始?”
代码人生,不止于代码
回头想想,这几年我最大的误区,就是把“技术探索”等同于“学新框架”。
Vue3出来了,赶紧学;Rust火了,马上试;Serverless成了趋势,立刻研究……结果呢?学了一堆皮毛,项目里根本用不上,反而忽略了最根本的东西:问题抽象能力、系统设计思维、以及把复杂事情简单化的能力。
真正的技术探索,不是追逐潮流,而是用已知的工具,解决未知的问题。
比如我现在带新人,不会一上来就教他们用Spring Cloud Alibaba,而是先让他们用最原始的HTTP+JSON实现一个简单的服务注册发现。等他们理解了本质,再引入Nacos,他们会恍然大悟:“哦,原来它就是在做这件事!”
这种“返璞归真”的过程,才是技术成长的核心。
给同样在路上的你
如果你也和我一样,30+,还在一线写代码,偶尔焦虑,经常自疑,我想说:
别被“年龄焦虑”绑架。企业要的是解决问题的人,不是“年轻的身体”。你的经验,在复杂系统设计、线上事故排查、跨团队协作上,远比应届生值钱。
刷题不是目的,理解才是。哪怕你再也不面试,搞懂快排和归并的区别,对你优化SQL执行计划都有帮助。
坚持输出。写博客、做分享、甚至只是认真写PR描述,都是在锤炼你的表达能力和逻辑思维——这恰恰是高级工程师和普通码农的分水岭。
允许自己慢下来。我不再追求每天学三个新技术,而是每周吃透一个概念。慢,但稳。
最后说个真实的小故事:前几天我修一个线上bug,定位到是线程池配置不合理导致任务堆积。我花了一下午画流程图、压测、调参,最终解决了。提交代码时,我在注释里写了一句:“Thread pool size: 20 → 50 (based on real traffic, not guesswork)”。
那一刻,我突然觉得,所谓代码人生,不就是一次次在混乱中建立秩序,在不确定中寻找确定吗?
窗外的夜更深了,我关掉LeetCode,保存好今天的笔记。明天还要早起开会,讨论新项目的架构方案。但我知道,无论用什么技术栈,只要保持对问题的好奇心,对代码的敬畏心,我就还是那个热爱编程的自己。
35岁又怎样?我的代码人生,才刚刚进入“稳定迭代”阶段。
后记:写完这篇文章,我删掉了收藏夹里十几个“35岁程序员该何去何从”的焦虑视频。与其看别人定义我的未来,不如亲手写下一行行能跑的代码。毕竟,在这个世界上,能真正救赎程序员的,从来不是鸡汤,而是commit。

评论 0