从老家书桌到大厂工位:一个应届生的 Springboot 踩坑与归乡之问

专业旅行者
2025-12-18 20:42
阅读 284

上周五晚上十一点,我关掉最后一行代码的 IDE,揉了揉发酸的眼睛。窗外北京的夜色早已沉寂,只剩我出租屋楼下的便利店还亮着灯。手机震动了一下,是妈妈发来的微信:“崽啊,你表哥在市里开了个新公司,说缺个搞技术的,工资给八千,包吃住,要不要考虑回来?”

我盯着那条消息看了很久,手指悬在键盘上,却不知道怎么回。八千,在我们那个小县城,已经算高薪了。而我现在手握某一线大厂的 offer,月薪 22k,五险一金顶格交,还有股票。按理说,这该是每个计算机应届生梦寐以求的终点线。

可为什么,心里还是空落落的?


事情得从去年十月说起。

那时我还是个即将毕业的“准码农”,学校在西南一座三线城市,专业是软件工程。秋招季像一场没有硝烟的战争,宿舍里每天都是键盘敲到冒烟、简历投到手软。我和室友小张天天泡图书馆,一边刷 LeetCode,一边啃《Spring Boot 实战》——那本封面都快被我翻烂了的书。

记得有天晚上,我们在图书馆角落调试一个 Springboot 项目,死活启动不起来。控制台疯狂报错:“Failed to configure a DataSource: 'url' attribute is not specified...” 我俩面面相觑,明明 application.yml 里写得清清楚楚啊!

“是不是缩进问题?”小张眯着眼凑过来。

“不可能!我都用空格对齐了!”我嘴硬,但手已经开始颤抖——再调不好,明天模拟面试就要挂了。

折腾到凌晨一点,才发现是 yml 文件编码格式不对,IDE 默认用了 UTF-8 with BOM,Springboot 直接读懵了。那一刻,我差点把电脑砸了。但更崩溃的是,第二天面试官问:“你用过 Spring Data JPA 吗?”我支支吾吾答不上来,只敢说“看过教程”。

那次面试挂了。回到宿舍,我躺在床上盯着天花板,心想:会不会我真的不适合干这行?


转折发生在一个雨天。

那天我躲在学校后街的旧书店避雨,无意间翻到一本二手《Spring Microservices in Action》。书页泛黄,边角卷起,扉页上写着一行字:“致未来的架构师——愿你代码无 bug,人生有光。”署名是 2019 届学长。

我鬼使神差地买了下来,花了 15 块钱。那天晚上,我没刷题,而是一页一页地读。不是为了面试,就是单纯想搞懂微服务到底是个啥。书里讲 Eureka、Ribbon、Feign,虽然有些概念现在看有点过时,但那种“原来如此”的顿悟感,让我第一次觉得编程不是机械搬砖,而是一种创造。

从那以后,我不再盲目刷题,而是开始做小项目。用 Springboot 搭了个简易的校园二手交易平台,集成 Redis 做缓存,用 RabbitMQ 处理异步通知。过程中踩了无数坑:

  • 配置文件放错目录,启动时报 ClassNotFound;
  • 忘记加 @EnableAsync,异步方法根本没生效;
  • 本地测试好好的,部署到服务器上时区乱了,用户看到的“昨天”其实是“前天”……

最离谱的一次,是我把数据库密码明文写在 GitHub 的 public repo 里,结果半夜收到阿里云安全警告:“检测到您的 RDS 密码已泄露!”吓得我立刻删库改密,心跳飙到 120。

但奇怪的是,每解决一个问题,我就多一分底气。那些深夜 debug 的焦灼、查 Stack Overflow 的抓狂、终于跑通时的狂喜,拼成了我作为程序员的第一块肌肉记忆。


春招时,我带着这个“简陋但完整”的项目去面试。不再是背八股文,而是能讲清楚:“我为什么选 Springboot 而不是 Flask?因为生态成熟、起步快、和公司技术栈匹配。”“缓存穿透怎么防?我用了布隆过滤器+空值缓存双保险。”

最后拿到三个 offer,其中一家是总部在北京的头部互联网公司。HR 打电话来谈薪时,我手都在抖。她说:“我们给应届生开 22k,base 北京,房补 1500,签字费 3w。”

挂掉电话,我第一时间打给我爸。他沉默了几秒,然后笑着说:“好啊,咱家祖坟冒青烟了。”可我能听出他声音里的不舍。

来北京前,我妈塞给我一个红布包,里面是她去庙里求的平安符。“大城市车多,别熬夜太晚,记得按时吃饭。”她反复叮嘱。我知道,她真正想说的是:“能不能别走那么远?”


现在,我在中关村的一栋写字楼里上班,工位靠窗,能看到西山。同事们都很厉害,有人开源过 star 过万的项目,有人拿过 ACM 金牌。我常常觉得自己像误入巨人国的小人,生怕露怯。

但我也在成长。最近参与了一个内部中间件的开发,用 Springboot 写了个配置中心客户端。过程中又踩了新坑:@ConfigurationProperties 不生效,后来发现是忘了加 @Component;Profile 切换失效,原来是启动参数写错了……

好在这次我不慌了。我知道,所有看似复杂的系统,拆开来看,不过是一行行代码、一个个配置、一次次试错堆起来的。

可每当加班到深夜,打车回家路上经过那些灯火通明的写字楼,我会突然想起老家的小城:清晨六点的米粉店,傍晚河边散步的老人,还有我家阳台上那盆我爸养了十年的茉莉花。

北京很好,机会多,薪资高,技术氛围浓。但房租 3500 只能租个十平米的隔断间,地铁早高峰挤得像沙丁鱼罐头,生病了也不敢请假——毕竟新人,怕留下“扛不住压”的印象。

而老家呢?八千的工资,够我买辆车,周末还能陪爸妈吃顿饭。但技术圈子小,可能三年都碰不到一个懂 Kubernetes 的人。我怕自己会停滞,会变成“小镇做题家”的另一个版本:逃离了内卷,却陷入了平庸。


前几天和大学导师视频,聊起这事。他说:“你现在站在人生的十字路口,但别把‘留下’和‘回去’想成非此即彼。技术人的核心竞争力,从来不是你在哪座城市,而是你解决问题的能力。”

他这句话点醒了我。

其实,无论在哪,Springboot 的坑都一样多,书籍和教程也不会因地域而变质。 真正的区别在于:你是否还在保持探索的热情?

我翻出那本《Spring Boot 实战》,在扉页写下新的笔记:“2024年6月,于北京。今日修复了 Nacos 配置刷新不生效的问题,原理是 ContextRefresher 的 refreshScope bean 未正确注入。”

这行字,既是对技术的记录,也是对自己的承诺。


所以,如果你也和我一样,站在“大厂高薪”和“家乡安稳”之间犹豫不决,我想说:

先问问自己:你害怕的,到底是离开舒适区,还是失去可能性?

技术这条路,从来不是靠地理位置决定的。我在小城图书馆啃书的日子,和现在在大厂会议室讨论架构的时刻,本质上是一样的——都是在和未知较劲,和 bug 死磕,和更好的自己相遇。

或许未来某天,我会回到老家。但不是因为退缩,而是因为我已经足够强大,可以在任何地方扎根生长。就像 Springboot 的自动装配机制:不管环境如何变化,只要核心条件满足,它就能优雅地运行起来。

而我们要做的,就是不断夯实自己的“核心条件”。


最后,分享几点我踩坑后总结的经验,给同样在摸索 Springboot 的朋友:

  1. 别迷信教程:很多视频教程为了演示流畅,会跳过真实世界的复杂性。比如事务回滚,本地测得好好的,一上生产就失效——因为没考虑异常类型(checked vs unchecked)。一定要动手改、动手测。
  2. 书籍比碎片知识更可靠:B站、知乎上的技巧很香,但体系化理解还得靠书。《Spring Boot 编程思想》《Spring 实战》这些经典,值得反复读。
  3. 日志是你最好的朋友:别只会 sout,学会用 Slf4j + Logback,分级打印。90% 的线上问题,靠日志就能定位。
  4. 不要怕问“蠢问题”:我曾经因为不敢问“@Autowired 和 @Resource 有啥区别”,在项目里混用导致循环依赖,浪费三天。现在我的原则是:卡住超过 30 分钟,立刻问。

写完这篇文字,窗外天已经亮了。北京的夏天来得早,阳光透过百叶窗照在键盘上,暖洋洋的。

我打开微信,给妈妈回了条消息:“妈,再给我两年时间。我想看看,自己到底能走到多远。”

然后,我新建了一个 Springboot 项目,包名 com.homecoming.future。

也许有一天,我会用它写一个连接城乡的系统——让老家的手艺人能在线卖货,让留守的孩子能远程上课。那时候,技术就不再是冷冰冰的代码,而是有温度的桥梁。

而现在,我得先搞定眼前这个 OOM 问题。

(完)

评论 0

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