电视里正直播阅兵方阵的脚步声,那种整齐划一的震动感几乎要穿透屏幕。我关掉声音,盯着电脑上昨晚又崩溃的订单同步脚本——第17次了。成都今天天气好得过分,窗外一片祥和,但我的服务器在阿里云上抽风,微信支付回调延迟了整整8秒,客户群里已经炸出三条投诉。
34岁这年我犯了个致命错误:以为“规模”等于“成功”。年初拉了个六人小团队,接了个本地生活类的SaaS项目,流水账面确实好看,月营收冲上了二十万。但代价是,我每天醒来第一件事不再是写代码,而是算工资、对发票、调解程序员和UI因为一个按钮弧度吵到要离职的破事。上周为了赶国庆活动版本,后端小哥连续熬了三个通宵,最后在部署前一刻发现数据库事务隔离级别设错了,导致优惠券被重复核销。我们赔了客户八千多,他红着眼睛说“老大我撑不住了”。那一刻我意识到,我亲手把自己从一个写代码的人,变成了一个处理“人”这堆bug的产品经理。
阅兵式里那些装备方阵缓缓驶过,解说词里不断重复“完全自主研发”、“体系化作战”。我盯着自己那套七拼八凑的技术栈:ThinkPHP写的后台,React勉强糊成的前端,用Celery做的异步队列动不动就丢消息,监控靠的是最原始的Shell脚本轮询日志。哪有什么体系,全是补丁摞补丁的屎山。客户才不管你是微服务还是单体,他们只在乎点击“立即支付”后,那个转圈圈的动画会不会卡超过三秒。大环境的壮阔是建立在无数个螺丝钉绝对稳定的基础上,而我的创业公司,连螺丝帽都还在滑丝。
最讽刺的是,我教新人写的第一个功能永远是“异常处理”和“日志埋点”。我跟他们说,别老想着炫技搞什么算法优化,先把try-catch写全,把每个关键操作的userId、timestamp、requestId打清楚。这行干久了你就知道,线上出问题时,能救命的从来不是多高超的设计模式,而是日志文件里那行毫不起眼的“NullPointerException at line 387”。稳定不是一种特性,而是一种信仰,是你在每个if判断里多考虑一个边界条件,在每个API调用后手动加上重试机制,在数据库连接池配置里把maxWaitTime调成30000毫秒而不是默认值。
团队里的小孩昨天问我,说老板咱们要不要也搞个国庆促销,蹭蹭热点。我拒绝了。现在这套系统,日均订单才五百单,峰值时CPU就能飙到90%,我哪敢放量。真正的致敬不是搞什么华而不实的营销,而是等我彻底重构完消息队列,把同步调用全改成异步解耦,让系统能在流量翻三倍的情况下,错误率依然压住0.1%以下。那才是一个开发者对“稳定”二字最实在的朝拜。
窗外传来远处商场大屏幕隐约的欢呼声,庆典应该到高潮了。我新建了一个Git分支,名字就叫“refactor-stability-20191001”。从今天起,砍掉所有华而不实的新功能需求,技术债不还清,绝不开新坑。34岁,或许来不及成为什么宏大叙事的一部分,但至少,我可以让我的代码在深夜无人值守时,安静而可靠地跑下去。














