
智者千虑,必有一失。这前一句,是多少人听过,又真正体会过里面的苦涩?咱们做事的,总觉得把所有能想到的都想到了,把所有能堵的窟窿都堵上了,结果,冷不丁还是会冒出个什么幺蛾...
智者千虑,必有一失。这前一句,是多少人听过,又真正体会过里面的苦涩?咱们做事的,总觉得把所有能想到的都想到了,把所有能堵的窟窿都堵上了,结果,冷不丁还是会冒出个什么幺蛾子,让你捶胸顿足,感慨一句“怎么就忘了这茬!”。
我为啥对这句古话感受这么深?因为我自己就实实在在地栽过跟头。那时候,我们公司有个特别重要的项目,说白了,就是把一套老掉牙的核心业务系统,彻底搬到新架构上去。这活儿,听着简单,做起来那是真要命。稍微一个地方没考虑到,可能就是整个公司业务停摆的大事故。
我们组接到任务,那真是上上下下都绷紧了弦。项目经理天天带着我们开会,把整个迁移流程拆分成几十个小模块,每个模块负责人得把自己的方案写得清清楚楚,不能有半点含糊。就拿数据迁移这一块来说,我们光是模拟演练就做了不下十次。
反正,那几个月,我们每个人基本都是连轴转。文档堆得跟小山似的,各种评审会开了一轮又一轮,测试环境各种折腾,就怕出一丁点儿岔子。我们自己都说,这回要是还能出问题,那真是撞邪了。

结果,正式上线那天,是挺顺利。大家熬了一个大夜,早上看着系统平稳运行,心里那块大石头总算是落了地。项目经理也拍着我们肩膀说,辛苦了,这仗打得漂亮!我们也各自回家补觉去了。
没过几天,一个平时不怎么起眼,但没了它又真不行的数据报表出问题了。这报表是给财务那边看的,每月初固定生成一次,统计一些很细碎的费用开支。突然有同事跑来说,报表生成不了,或者生成出来的数据是错的。一查,懵了。
那个报表依赖的,是一个特别老的、用批处理脚本写的统计程序。这脚本平时就挂在一个快被淘汰的服务器上,每个月跑那么一次,完了自己清理临时文件。因为这个脚本不是用我们新架构的技术栈写的,也没有任何对外接口,我们所有人在规划新系统的时候,都完美地把它从脑子里剔除了,因为它看起来太“不重要”了,完全没有被纳入新系统的“迁移清单”。
我们当时规划的重点是核心业务数据、主流应用模块,谁会去想一个在角落里默默无闻,一个月才露一次脸的批处理脚本?但它就是那么关键,它挂了,财务报表就出不来,公司资金流就受到影响。那一刻,大家面面相觑,真是哭笑不得。我们花了几百号人力,几个月时间,搞定了一个庞大的新系统,结果栽在一个被遗忘的“小角落”里。

我为啥对这事儿记忆这么深?那年正好是我家里出了点事儿,孩子突然生了病,需要一大笔钱。我那时候就想着,这个项目一定要万无一失,因为公司的年终奖和我的升职都绑在上面,我需要那笔钱。我比任何时候都更小心,更投入。每天恨不得把所有文档都背下来,所有代码都检查一遍。结果,人算不如天算,还是出了这么个小岔子。虽然补救过来了,我们通宵达旦地赶紧重写了个临时脚本,把那个功能给顶上了,但那份焦灼和自我怀疑,真的刻到了骨子里。它告诉我,你以为你已经做到最好了,你以为你已经考虑周全了,但生活的“盲区”随时都可能给你来一下子。
从那以后,我再看任何计划,都会习惯性地多问一句,是不是还有什么我们“觉得不重要”或者“习以为常”的东西,被忽略了。因为真正的智慧,不光是能思虑周全,还得能警惕那些被思虑遗漏的边角。