凌晨3点不回家不心酸:程序员几个真实通宵时刻
从事IT行业,有时候凌晨三点不回家真不是效率不效率的,今天和大家分享几个真实加班的时刻:
01 初入职场,连续睡办公室
刚毕业,在一家国企当开发,做的项目名称高大上,国家某局的一次改版升级,上本地新闻那种。
实际做的事非常Low:在一个运行近10年的系统修修补补,毕竟使用的人只是前台,任务内容是文书格式更改。
100多个JSP一个个手动调整!
我们改疯了,测试看瞎了,打印机罢工了!
上线那天还是出大问题:某机关的打印机跟我们公司的不一样,打出来的文书……一言难尽。
办事的人抱怨,前台抱怨,我们被领导骂的狗血淋头。从项目经理到测试整队娘子军全被骂哭了,除了经理其他我们全是应届生,第一次合作做个项目摔大跟头。
压力非常大,前台排满办事的人,我们一边改一边打印文书给前台人盖章办事。改错一点就耽误大家干活。
关键的几个文书很快修好,剩下的我和小伙伴在总局睡了两天修bug,效果不理想。组长请我们吃饭后说下午给你们放半天假,都回去睡一觉,明天再来改吧。
当时心里十分愧疚,觉得自己将事情搞砸了,应该早点开发完,早一个星期来客户现场部署测试的……
后来在客户现场加了一周班,亲眼看客户正常运行两周后才撤离。在公交看到新闻播放某局系统升级更便民的报道,心里亦带有荣光。
这项目结束后,曾在上班地铁晕倒的开发妹子离职了,她说经过这次我知道自己不大适合干这一行。
做程序员说到底比的还是身体素质。
02 上线十个系统,将临组系统搞挂
我们几个应届生在第一家公司呆了一年纷纷跳槽。我亦从开发转为测试,正式进入互联网公司。
体会到互联网公司与传统公司的不同:一人放三个人用,每个项目严格遵守发布时间,不允许delay。
那时我自己负责app组,对接app和server,一个人上线十个后端系统,过程有些酸爽。
项目虽大但风险不大,稳妥考虑仍写了checklist和回滚步骤。
下午两三点开始发布,每个系统上线后先观察下,五点多已全部上线完。
正准备发app包时,隔壁组到了六点的业务高峰期,整个系统挂了!
这段时间只有我线上发布,可涉及他们组的代码我们只改动几行,并不涉及主要功能。
但是故障群一个接一个投诉扑面而来。大伙迅速决定,先回滚!
幸亏checklist的回滚步骤救了命!我一个个系统回滚,执行完十个系统已过去半个小时。我紧张得手发抖,心里很着急,回滚页面打开一排排,有些忙不过来了。
果然是我们的锅,回滚两个系统便能打开。
负责那系统开发的女生愧疚得没敢去吃晚饭,逐行代码排查。
晚上九点终于排查出,原来是将前天脏代码merge进来,再次发生慢查询。同样的错误犯了两次,开发懊恼得很。
大伙准备十点多再次上线。
小心翼翼地将十个系统上线完,已是十二点多。
上线后开始跑数据,跑完数据检查接口数据不对!
此时仅剩我和一个开发,他让我先睡会。自己哼哧吭哧排查问题,是缓存的锅。跑完缓存再重新刷数据。
我眯了会,凌晨四点多起来看接口正常,我开始验证功能,等发完发布成功的邮件是早上六点。
开发发朋友圈:通宵达旦…
回家睡了几个小时,因为我没有backup,怕线上出问题又滚回去上班。
在这个公司我从初入职场的吊儿郎当学会7×24随时oncall,使命必达,也曾见过开发在婚礼现场还改bug。
流程规范化,不接受delay,这样大伙能为项目的顺利上线拧成一条线。
03 数据分库,平稳度过
如今部门业务量上来,业务数据只存一个库,为了打破“每逢佳节必要挂”的魔咒,大家将分库提上日程,一库变八库,从此开心过节不是梦。
上线当天晚上十点,吃完开发买来烤串和全家桶后,小睡两个小时,凌晨两点准时向用户挂起免战金牌。
联系DBA进行数据分库,随后大家检查数据没问题后,开始上线业务代码。
过程出人意料的顺利。
三点多上完线,大伙观察会,系统很稳定!
DBA将上线过程的数据最后同步下,我撤掉免战金牌,留下一个开发值班,大伙就撤了。
发完顺利上线邮件还不到四点,本以为要折腾到天亮的…
分库后的效果非常好,节假日大家不用再紧盯线上。
04 新人首次发布上线,煎熬
一年最难熬是什么时候?
跳槽季过后的四五月。
这是青黄不接时期,老人走光,新人到处碰瓷。老员工多帮忙盯盯,刚开始的几次上线由为重要。
正巧有个小项目,前端后端测试均是新人。说是车祸现场不为过,bug反反复复出现,开发效率慢,等bug改完已是晚上十点。
排期放在那,今晚总得上线的。
上线前需要改个配置文件,开发磨蹭半个小时还改错别的系统,测试不知所以,我在旁边指出该怎么改。
这个项目磕磕碰碰上线完已是凌晨两点。我没有如释负重的轻松,反而觉得不值得,不应该。
凌晨三点不回家,不能是因为效率低。
这次加班我满心的挫败:新人已入职一个多月,可一个项目结束时开发和测试仍没理清几个系统间的关系;日常工作仍是不熟练。
我想如何能完善新人培训,让新人快速的成长。
05 品牌合并,又是一场大战
月末的品牌合并项目是跨组跨部门的合作,相互之间强关联,涉及域名更改,账号数据整合,几个系统整合在一块。
确定时间后,我立即列一下上线步骤,谁谁跟着发布,谁是第二天的backup。同时要求上游业务组也列出发布方案,并提前预留时间,大伙一起“演练”下。
那天将会通宵达旦,愿大伙合上电脑,走出公司时,伴着晨光熹微,带着武士收刀入鞘的骄傲与荣光回家。
用户用上新功能,系统运行稳定,那就好。