02书屋 > 一城千面:我的无限穿越录 > 江城穿越之代码里的成长

江城穿越之代码里的成长


一、创业园的工位与带茧的指尖

星途科技所在的创业园总飘着咖啡的香气,我攥着咖啡店传单蹲在园区休息区的长椅上,看陆阳穿着印着代码图案的灰色卫衣忙碌。他的卫衣袖口沾着深褐色咖啡渍,是凌晨改  bug  时不小心洒的;左手握着机械键盘,键帽磨损得厉害,常用的  “Ctrl”“C”“V”  键泛着浅白,右手正快速敲击鼠标  ——  指尖贴着片创可贴,上周被键盘边缘划伤的伤口还没好,指腹因长期敲代码磨出层薄茧。

他的显示器旁堆着三样东西:喝了一半的冰美式,杯壁凝着水珠,是他的  “续命水”,每天至少要喝  3  杯;写满注释的《Python  进阶手册》,折角停在  “分布式部署”  章节,书页边缘画满红色波浪线,是没理解的知识点;还有本蓝色封面的笔记本,某页画着混乱的流程图,箭头交错,旁边用红笔标着  “周一前必须搞定,不然影响内测”。工位抽屉里藏着副备用眼镜,镜腿缠着透明胶带,是长期盯屏幕近视加深后备用的;午休时,他会趴在键盘上打盹,电脑屏幕还亮着未写完的代码,桌面壁纸是行手写字体:“入职  3  个月实现独立开发,不让爸妈失望”。

上周深夜,我送晚班咖啡到创业园,撞见他对着电脑抓头发。凌晨  2  点的办公区只剩他一个人,屏幕上满是红色报错代码,右上角弹着产品经理的紧急消息:“明天上线的功能出了兼容  bug,安卓端用户登录会闪退,必须今晚修复,不然内测要延期”。他的手机放在键盘旁,屏幕亮着导师发来的消息:“之前教你的微服务架构,你还没熟练,别着急接复杂需求,先把基础打牢”。

这时  CEO  穿着西装走过,拍着他的肩膀说:“陆阳,这个  bug  就靠你了,明天要跟投资人聊融资,功能上线是关键,公司能不能撑过这个月,就看这次了”。陆阳赶紧关掉聊天窗口,灌了口冰美式,咖啡的苦味让他皱了皱眉,却还是重新盯着屏幕,手指在键盘上飞快敲击  ——  直到凌晨  4  点,终于修复  bug,他瘫在椅子上,才发现自己连晚饭都没吃,胃里泛着酸,只能从抽屉里摸出块饼干,慢慢嚼着。

帮咖啡店送早班外卖时,我见过他在茶水间偷偷查资料。电脑屏幕显示着  “Redis  缓存穿透解决方案”,页面上画满红色批注,他手里攥着个冷掉的三明治  ——  是公司下午茶剩下的,包装纸都没拆。有个穿格子衬衫的资深程序员路过,扔给他个压缩包:“这个是之前项目的复用代码,你看看能不能参考,别傻琢磨,浪费时间”。

陆阳赶紧道谢,抱着电脑跑回工位,却发现代码风格和公司框架不兼容  ——  函数命名、参数传递方式全不一样,根本没法直接用。他不敢告诉前辈,怕被说  “连基础适配都不会”,只能咬咬牙,熬夜重写。后来我才知道,他大学主修的是  Java,入职后公司因项目需求,要求他转  Python,每天下班都要自学  2  小时,周末还泡在技术论坛补短板,笔记本上记满了  Python  和  Java  的语法差异。

扫街时捡过他扔掉的咖啡杯,杯身用马克笔写着  “今晚必须搞定支付接口,不然要背锅”,字迹被汗水浸得有些模糊。那天傍晚,我看见他对着笔记本上的  “待学清单”  发呆,上面写着  “本周学会  Docker  部署”“下周理解公司核心业务逻辑”“月底前掌握微服务架构”,每完成一项,就用红笔打个勾,目前只打了两个勾。这种  “对自己严苛到极致,对需求不敢说‘不’”  的拼劲,曾让我蹲在长椅上鼻尖发酸:原来有人把  “新人程序员”  当成战场,每行代码都是证明自己的武器,每次熬夜都是不想被淘汰的倔强。

后颈的麻意袭来时,我正靠在创业园的玻璃墙上打盹,梦里全是键盘的敲击声与代码的报错提示。月光透过玻璃照进来,在地上投下细碎的影子,像极了他笔记本上的代码行。

二、代码旁的荆棘与掌心的温度

再次醒来时,太阳穴传来阵胀痛。我猛地坐起来,发现自己趴在陆阳的工位上,面前的笔记本电脑还亮着,屏幕停在未写完的支付模块代码页,旁边弹着产品经理的消息:“昨晚测试发现登录接口有漏洞,用户会重复跳转,上班前必须修复,不然影响内测,我已经催你半小时了!”

窗外天刚亮,早上  7  点的创业园格外安静,只有清洁工人推着扫地车走过的声音。我这才惊觉,自己变成了陆阳。

摸向太阳穴,熬夜改  bug  的胀痛还在  ——  昨晚为了推进支付模块,只睡了  4  小时,现在头还昏昏的。工位的键盘旁,摆着三份  “生存难题”:CEO  的  “项目排期表”,红色标注  “本周内完成支付模块开发,下周内测,不能延期”;自己的  “学习计划”,“今天必须掌握  Redis  缓存配置,不然支付模块会卡顿,影响用户体验”;还有条租房中介的催租短信:“再不交房租,就默认解约,押金不退”。

我摸向显示器旁的  “入职目标”  壁纸,想起面试时跟  CEO  承诺  “3  个月能独立负责模块”,而我的银行卡余额,只剩下  1200  元,够交半个月房租的钱  ——  今天必须修复登录漏洞、推进支付模块,不然试用期都可能过不了,更别说实现目标了。

早上  9  点,我准时到公司。刚坐下,产品经理就踩着高跟鞋跑过来,手里拿着测试报告:“登录漏洞怎么样了?内测用户已经在催了,再修复不好,我要被运营部骂死了”,语气里满是催促。我赶紧打开代码编辑器,却发现漏洞涉及的  “Session  共享”  问题,正是我没学过的知识点  ——  之前只在书上见过概念,根本没实际操作过。

我不敢说  “不会”,只能假装镇定:“快了,正在调试,马上就能好”,偷偷打开浏览器,搜索  “Session  共享解决方法”,页面弹出来一堆方案:用  Redis  存储  Session、基于数据库的  Session  共享、使用分布式  Session  框架……  我看得眼花缭乱,手心全是汗  ——  怕被同事发现自己在  “临时抱佛脚”,更怕修复不好,影响内测。

11  点半,终于在一篇技术博客的指导下,修复了漏洞。我长舒一口气,靠在椅背上,才发现错过公司早餐时间,只能从抽屉里摸出昨天剩下的面包,就着冰美式咽。面包太干,刮得嗓子发疼,冰美式的苦味更是直冲头顶,却还是得往下咽  ——  省点时间,能多推进点支付模块的进度。

中午午休时,我趴在键盘上打盹,刚闭眼没几分钟,就被  CEO  拍醒:“陆阳,支付模块的进度怎么样?下午  2  点要跟投资人演示核心功能,你得保证支付流程能跑通,这是咱们公司融资的关键,不能出岔子”。

我赶紧点头,心里却发慌  ——  支付模块的退款逻辑还没写,只完成了支付成功的流程,异常场景根本没考虑。只能利用午休时间赶工,打开代码,发现之前写的支付接口有逻辑错误:金额校验没做、订单状态更新不及时,只能删掉重写。手指在键盘上飞快敲击,敲到一半,键盘突然卡住,原来是昨晚不小心把饼干渣掉进去了,我赶紧拆开键盘清理,耽误了  10  分钟,心里更急了。

直到下午  1  点  50  分,终于勉强跑通支付流程,却知道还有  3  个潜在  bug  没修复:支付超时没处理、退款接口没写、异常日志没打印,只能祈祷演示时别触发这些场景。

下午演示时,投资人坐在会议室中央,手里拿着平板电脑,CEO  站在旁边介绍产品。轮到支付模块演示,我握着鼠标的手微微发抖,一步步操作:选择商品、点击支付、输入金额、确认支付  ——  流程很顺利,支付成功的页面弹了出来,我心里松了口气。

可就在这时,投资人突然提出:“想测试支付失败的异常场景,比如余额不足时,系统会怎么处理?”  我心里一紧,退款逻辑还没完善,余额不足的异常提示也没做,却只能硬着头皮操作  ——  点击  “模拟余额不足支付”  后,系统报错,页面卡住,屏幕上弹出一行刺眼的红色字体:“NullPointerException”。

CEO  的脸色瞬间变了,演示结束后,他把我叫到会议室,语气严肃:“陆阳,我以为你能搞定,怎么连异常场景都没考虑?投资人刚才都皱眉头了,你知道这对公司融资影响多大吗?”  我攥着衣角,指甲掐进掌心,不敢说  “自己还没学完相关知识点”,只能低着头道歉:“对不起,我今晚一定修复,保证不影响明天内测,不会再出问题了”。

走出会议室,资深程序员老周递给我瓶可乐,拉环已经拉开:“别慌,刚才演示我看了,问题出在异常处理逻辑上,我给你份之前项目的异常处理模板,你参考着改,有不懂的就问我,别硬扛,新人都会犯错”。我接过可乐,冰凉的瓶身贴着掌心,眼泪差点掉下来  ——  原来不是所有人都只看结果,还有人愿意帮你。

晚上加班改退款逻辑,老周留下来帮我梳理思路:“你得先预判用户可能的操作场景,比如支付超时、余额不足、网络中断,每种场景都要写对应的异常处理,不能只满足‘支付成功’这一种情况”。他还打开自己的代码库,给我讲  “如何设计健壮的接口”,从参数校验到日志打印,每个细节都讲得很清楚。

11  点,终于完成修复,不仅补了退款逻辑,还加了支付超时重试、异常日志监控功能。老周拍着我的肩膀:“代码要写得有‘预见性’,别只满足当前需求,多想想用户可能遇到的问题,这才是合格的程序员”。我看着老周离开的背影,突然明白:创业公司的程序员,不只是写代码,还要学会  “主动思考”,不然永远只能被动应对需求,永远成长不起来。

凌晨  1  点,我收拾东西准备回家,却听见两个同事在走廊议论:“陆阳是不是能力不行?一个登录漏洞改了一上午,下午演示还出问题,真不知道老板为啥招他”“听说他大学学的  Java,转  Python  还没熟练,连  Redis  缓存都不会,试用期怕是过不了”。

那些话像针一样扎在心上,我攥着电脑包,手指发白  ——  我已经连续一周每天只睡  4  小时,周末都在自学,笔记本上记满了知识点,却还是跟不上节奏,还是被人质疑。打开手机,看到导师发来的消息:“别着急,新人都有适应期,把每次  bug  都当成学习机会,比纠结别人的评价更重要,我相信你能做好”。

回到出租屋,我打开《Python  进阶手册》,接着看  “分布式部署”  章节,虽然很累,眼睛都快睁不开了,却还是坚持记笔记。手机突然弹出公司群消息,CEO  发了条:“今天演示的问题不怪陆阳,新人需要时间成长,大家多帮衬下,一起把项目做好”,后面跟着老周的回复:“陆阳学得很快,今天的  bug  已经修复,明天内测没问题”。

我看着消息,笑着点点头,眼泪却掉了下来  ——  原来我的努力,有人看在眼里,再难也值得。后颈的麻意袭来时,我正把  “待学清单”  上的  “掌握异常处理逻辑”  打了个红勾,旁边写着  “谢谢老周”。电脑屏幕亮着修复好的代码,像黑夜里的星星,照亮了我前行的路。我突然明白,自己敲的不只是代码,是职场立足的底气,是实现目标的阶梯,是不让爸妈失望的承诺  ——  哪怕有技术短板、被人质疑,只要不放弃学习,总有一天能独立负责模块,成为合格的程序员。

三、代码外的暖阳

再次醒来时,身上还带着淡淡的咖啡味。我摸向太阳穴,没有熬夜的胀痛,只有传单边缘割出的细小伤口。手机在裤兜里震动,是咖啡店老板发来的消息:“陆阳火了!有人拍了他熬夜改  bug、老周帮他梳理代码的视频,现在网上都在夸‘这才是职场该有的互助’,公司拿到了融资,CEO  还给他涨了工资,说要重点培养他!”

跑到星途科技的工位区,看见陆阳正对着电脑写代码,老周站在旁边指导他:“这里的缓存策略可以优化下,用本地缓存加  Redis  二级缓存,能减少数据库压力”。CEO  走过来,拍着陆阳的肩膀:“陆阳,好好干,公司准备让你独立负责新模块,加油”。陆阳笑着点头,显示器旁的  “待学清单”  上,已经打了很多红勾,桌面壁纸换成了  “入职  2  个月提前独立负责模块,继续加油”。

之前质疑他的同事也走过来,递给他杯冰美式:“陆阳,之前是我不对,不该随便评价你,你很努力,值得我们学习”。陆阳接过咖啡,笑着说  “没事,大家都是为了项目好”。

“小伙子,发传单呢?”  陆阳看见我,笑着挥挥手。他的灰色卫衣换了件新的,没有咖啡渍,键盘也换成了新的机械键盘,指尖的创可贴已经揭掉了,露出愈合的伤口。“我终于学会  Docker  部署了,”  他指着电脑屏幕,“下周就要开始负责新模块,再也不用怕拖项目后腿了”。

风卷着传单的边角,哗啦啦地响,像在应和办公区的键盘敲击声。我咬了口热乎的包子,突然明白陆阳代码里的秘密  ——  那些报错的代码、熬夜写下的注释,不是  “能力不足的证明”,是他把对成长的渴望,融进了每行代码里,把对职场的敬畏,藏在了每次学习中。就像老周递来的可乐,看似普通,却给了他坚持下去的勇气;就像  CEO  的理解,看似微小,却让他感受到了职场的温暖。

明天我还要来给陆阳送些新的传单,他昨天说  “想利用业余时间,做个技术博客,分享自己从  Java  转  Python  的经验,帮更多新人少走弯路”。顺便问问他,有没有把涨工资的消息告诉爸妈,我也想听听,那些盼着他成才的父母,接到电话时的笑声到底有多甜。


  (https://www.02shu.com/5031_5031337/50436361.html)


1秒记住02书屋:www.02shu.com。手机版阅读网址:m.02shu.com