清晨九点,软通动力·项目七组。
领导王大拿抱着保温杯冲进来,一脚把会议室的门踹成“404 Not Found”。全组人端坐如寺庙里的木雕,眼睛里写着同一个异常:The world has stopped working()。
“昨天甲方把生产库删了备份,”王大拿吸一口枸杞,“问我们能不能把昨天之前的数据恢复到今天之后。”
众人一愣,纷纷点头表示“好像很有道理”。毕竟,全世界的计算机水平一夜之间下降了一万倍——删库跑路都成了高端操作,能把回收站打开的,已经是行业专家。
我林凡挪了挪小板凳,把笔记本掀开。屏幕上,黑底白字的 IDE 像一口古井,万物静默。我敲下两行——
public static void main(String[] args) {
System.out.println("你们先别慌,备份在这。");
}
“嘶——”会议室里齐刷刷吸气。测试小刘双手颤抖:“这,这就是传说中的 main 吗?爷青回!”
坐在角落里负责“文档到处找图”的小实习生,眼眶通红:“师父,我能拜你为师吗?我……我昨天研究了一晚上,终于理解了 ; 的含义,它居然不是表情符号。”
我点头安抚众人:“恢复数据这种事,先把服务重启一下。”
“重……”王大拿咽了口口水,“重启,这不是上古禁术吗?”
我按下回车。远在机房的服务器发出一声来自金属深处的叹息,像是被温柔拍了拍后背。五分钟后,项目群里传来甲方的消息:“神了!数据回来了!”
整个七组炸了。
——
消息像装了 @
All 的广播风暴,一路穿墙过网,直达各大技术宗门。
“Java 宗·余胜军”亲启:听闻林凡道友随手一敲 main ,可令万机臣服,特备三斤花生两袋瓜子,欲拜门下,求得“打印心经”。
“Vue 宗·尤雨溪”闭关万年,传出一纸道谕:“谁能将 div 局中,谁便为我宗圣子。”(注:在这个时代,“居中”与“登录”并列为前端双绝。)
我抬手,轻点键帽,一招“祖传 margin: 0 auto;”,又布一阵“flex 居中大阵”。浏览器页中,按钮像迷途许久的浪子,终于在中心落座。尤宗主隔着太平洋虎躯一震:“这便是传说中的——双轴对齐?”
——
午后,甲方爸爸打电话过来,语气小心翼翼:“林工,我们系统现在……登录不上去了。”
“提示什么?”
“提示……‘请输入密码’。”
我沉吟三秒,这很明显是权限管理高级问题。我让他们把密码输入框点一下,再输入密码。奇迹发生了:登录成功。
电话那头鸦雀无声。片刻,掌声通过扬声器化成电流穿过我的耳道。甲方的总监声音发颤:“林工,您这,应该是……全栈吧?”
我谦虚道:“不敢不敢,半栈半栈。剩下半栈是泡面。”
——
傍晚,集团技术评审会。
各派宗师云集:有“Git 坛”的分支长老在白板上画出“回退九重天”,却因不会合并而当场落泪;有“Docker 舶来派”抬着一只空白镜像,问我“为什么 bash 进不去”;还有“算法谷”的大仙拎着九九乘法表来求签名——据说这表已经被当作神秘的 DP 模板。
主持人清了清嗓子:“今天讨论的,是如何用尽量通俗的方式,解释一个概念——什么叫接口?”
我把白板笔一举,写下四个字:“打电话啊。”
全场恍然:“原来如此!”一位白发老前端当场破涕为笑:“我昨天被问‘接口为啥要有返回值’,我说‘因为打完电话你得说点什么’。现在林大师一锤定音,老朽有救了!”
评审尾声,余宗主( Java 宗)与尤宗主( Vue 宗)同时起身,携手向我拱手:“林道友,可愿统合诸宗,暂掌人间编程盟?”
我谦让三次,心里已经开始盘算会后小龙虾要点几斤。正当我准备应下,门忽然被推开,一个熟悉的身影冲了进来——我们组的产品小姐姐,赵果果。
“林凡!救命!登录页按钮被我改了个文案,系统……又登不上去了!”
“改了啥?”
“把‘登录’改成了‘立即成功’。感觉更有正能量。”
我笑了笑,给了她一个“全栈式温柔”:
“成功是个状态,登录是个动作。我们先把动作做了,状态自然跟上。”
我三下五除二,改回两个字。系统恢复如初。赵果果双手合十:“谢谢你,程序盟主——不,对不起,还没册封……谢谢你,临时程序盟友!”
——(未完待更)