那阵子真是魔怔了,项目组里就没一个睡足五小时的。这个“的狂潮”不是啥浪漫的事,是我们公司那款老破小游戏要强行推的大版本。老板心血来潮,非要在春节前上线,说要冲一波流水。时间掐得死死的,根本没法好好做,就是硬上。
我们接手这个任务的时候,系统已经是千疮百孔了。底层架构是十年前的老代码,屎山中的战斗机。这回更新涉及到三个大块:新的社交系统、PVP排位重构,还有最重要的,那个所谓的“史诗级”副本内容,数值策划拍脑袋出来的东西,根本没法实现。我当时一看需求文档,就知道这绝对是要出大问题的。
我们是怎么顶上去的
我拉着架构组的几个老油条,连续开了三天会。不是开会讨论技术,是开会骂娘,骂完娘再看怎么拆分任务。骂归骂,活还得干。我们决定用“打补丁”的方式,把核心功能先剥离出来,不然老系统一碰就碎。
- 定框架: 我们决定用微服务那一套把社交系统先从老代码里剥离出来。老代码那是Java写的,维护起来太慢,临时救火根本指望不上。我们当时临时起意,直接用Go快速堆了一个API网关,至少保证登录和聊天功能不会因为老系统的卡顿而崩溃。那段时间我把Go语言的并发机制用到冒烟,就是为了应付突然暴增的实时连接,硬生生撑起了新系统的骨架。
- 死磕PVP: 排位重构是最要命的。之前那个匹配算法烂透了,这回必须推倒重来。算法的底层逻辑是策划给的,但实现起来简直是灾难。我带着两个实习生,日夜对着那一堆线性代数公式抠。白天写代码,晚上就拉着服务器跑模拟测试,用压力工具把一堆假数据猛砸下去,不崩溃就算成功。我们熬了两个礼拜,才把那个该死的排位机制跑顺。
- 强推内容: 副本内容全是美术资源和数值配置,我们后端就是个工具人,但谁叫数值老是改,改一次就得重新发包。我们只能不停地同步数据库配置,不停地打包,不停地部署。每天半夜三点,我都要在生产环境上敲下那串熟悉的部署命令,手都是抖的。我们必须保证新老接口兼容,不然用户一进来就得炸。我甚至写了一个自动化脚本,专门用来检查新旧接口的兼容性,确保“的狂潮”能平稳过渡。
那段时间,我的人生只有显示器的蓝光和泡面的味道。每完成一个小模块,我就在心里给自己打个勾,但抬头一看,任务列表还长得像裹脚布。
为什么我对这个更新记得这么清楚?
这个项目,我是用命换来的。当时我家里出了点事。我妈生病住院,需要人照顾,我跟项目组请了假,说得去陪床。但你知道,搞研发的,假条就是废纸。
我人虽然在医院,但电脑一直开着。白天看着输液瓶,晚上就抱着笔记本连着公司的加速器。有一次,凌晨四点,一个核心服务崩了,电话追过来,我直接在医院的走廊上,对着黑乎乎的屏幕敲了半小时代码,手冻得僵硬。我甚至记得当时旁边病房的阿姨被我噼里啪的键盘声吵醒了,还骂了我几句。
我妈看着我那个样子,直接跟我说:“儿子,别干了,命要紧。”
更新终于顺利上线了。流水确实冲上去了,公司赚得盆满钵满。但就在更新上线的第二天,我接到了HR的电话。不是升职加薪,是通知我:“你最近请假太多,影响了团队协作,我们决定优化你的岗位。” 说的那个冠冕堂皇,好像我不在医院陪着生病的老妈,就应该住在公司。
那瞬间,我放下了电话,看着面前的电脑,突然觉得这几个月的拼命,就像个笑话。我为了这个所谓的“的狂潮”倾尽所有,差点把命搭进去,换来的却是一脚踢开。那个晚上,我删除了所有工作软件,注销了公司账号,发誓再也不为这种只看钱不看命的公司卖力气。
那个狗屁公司后来打电话来,说让我回去救火,说系统又出问题了,求爷爷告奶奶。我直接回了一句:“系统是你们的,命是我自己的。” 电话就挂了。
正是这回经历,我才彻底转行了。现在我在一家国企做数据运维,朝九晚五,周末双休。虽然收入没以前搞游戏那么爆炸,但至少活得像个人。我现在分享的这些实践记录,就是想告诉大家,技术是为人服务的,别被技术绑架了人生。
这篇日志,记录的就是我跳出那个火坑,走向新生活的一个标志。如果说有什么秘诀,那就是:学会放弃不值得的坚持。