我摸向显示器旁的“入职目标”壁纸,想起面试时跟bsp;承诺“3个月能独立负责模块”,而我的银行卡余额,只剩下1200元,够交半个月房租的钱——今天必须修复登录漏洞、推进支付模块,不然试用期都可能过不了,更别说实现目标了。
早上9点,我准时到公司。刚坐下,产品经理就踩着高跟鞋跑过来,手里拿着测试报告:“登录漏洞怎么样了?内测用户已经在催了,再修复不好,我要被运营部骂死了”,语气里满是催促。我赶紧打开代码编辑器,却发现漏洞涉及的“Session共享”问题,正是我没学过的知识点——之前只在书上见过概念,根本没实际操作过。
我不敢说“不会”,只能假装镇定:“快了,正在调试,马上就能好”,偷偷打开浏览器,搜索“Session共享解决方法”,页面弹出来一堆方案:用Redis存储Session、基于数据库的Session共享、使用分布式Session框架……我看得眼花缭乱,手心全是汗——怕被同事发现自己在“临时抱佛脚”,更怕修复不好,影响内测。
11点半,终于在一篇技术博客的指导下,修复了漏洞。我长舒一口气,靠在椅背上,才发现错过公司早餐时间,只能从抽屉里摸出昨天剩下的面包,就着冰美式咽。面包太干,刮得嗓子发疼,冰美式的苦味更是直冲头顶,却还是得往下咽——省点时间,能多推进点支付模块的进度。
中午午休时,我趴在键盘上打盹,刚闭眼没几分钟,就被bsp;拍醒:“陆阳,支付模块的进度怎么样?下午2点要跟投资人演示核心功能,你得保证支付流程能跑通,这是咱们公司融资的关键,不能出岔子”。
我赶紧点头,心里却发慌——支付模块的退款逻辑还没写,只完成了支付成功的流程,异常场景根本没考虑。只能利用午休时间赶工,打开代码,发现之前写的支付接口有逻辑错误:金额校验没做、订单状态更新不及时,只能删掉重写。手指在键盘上飞快敲击,敲到一半,键盘突然卡住,原来是昨晚不小心把饼干渣掉进去了,我赶紧拆开键盘清理,耽误了10分钟,心里更急了。
直到下午1点50分,终于勉强跑通支付流程,却知道还有3个潜在bug没修复:支付超时没处理、退款接口没写、异常日志没打印,只能祈祷演示时别触发这些场景。
下午演示时,投资人坐在会议室中央,手里拿着平板电脑,bsp;站在旁边介绍产品。轮到支付模块演示,我握着鼠标的手微微发抖,一步步操作:选择商品、点击支付、输入金额、确认支付——流程很顺利,支付成功的页面弹了出来,我心里松了口气。
可就在这时,投资人突然提出:“想测试支付失败的异常场景,比如余额不足时,系统会怎么处理?”我心里一紧,退款逻辑还没完善,余额不足的异常提示也没做,却只能硬着头皮操作——点击“模拟余额不足支付”后,系统报错,页面卡住,屏幕上弹出一行刺眼的红色字体:“NullPointerException”。
bsp;的脸色瞬间变了,演示结束后,他把我叫到会议室,语气严肃:“陆阳,我以为你能搞定,怎么连异常场景都没考虑?投资人刚才都皱眉头了,你知道这对公司融资影响多大吗?”我攥着衣角,指甲掐进掌心,不敢说“自己还没学完相关知识点”,只能低着头道歉:“对不起,我今晚一定修复,保证不影响明天内测,不会再出问题了”。
走出会议室,资深程序员老周递给我瓶可乐,拉环已经拉开:“别慌,刚才演示我看了,问题出在异常处理逻辑上,我给你份之前项目的异常处理模板,你参考着改,有不懂的就问我,别硬扛,新人都会犯错”。我接过可乐,冰凉的瓶身贴着掌心,眼泪差点掉下来——原来不是所有人都只看结果,还有人愿意帮你。
晚上加班改退款逻辑,老周留下来帮我梳理思路:“你得先预判用户可能的操作场景,比如支付超时、余额不足、网络中断,每种场景都要写对应的异常处理,不能只满足‘支付成功’这一种情况”。他还打开自己的代码库,给我讲“如何设计健壮的接口”,从参数校验到日志打印,每个细节都讲得很清楚。
11点,终于完成修复,不仅补了退款逻辑,还加了支付超时重试、异常日志监控功能。老周拍着我的肩膀:“代码要写得有‘预见性’,别只满足当前需求,多想想用户可能遇到的问题,这才是合格的程序员”。我看着老周离开的背影,突然明白:创业公司的程序员,不只是写代码,还要学会“主动思考”,不然永远只能被动应对需求,永远成长不起来。
内容未完,下一页继续阅读