兄弟们,今天咱不聊什么高大上的技术,就来扯扯我前两年踩的一个坑,那真叫一个“咱也不敢问”的故事。现在回想起来,还觉得后背发凉,但是,吃了亏就得长记性不是?
那会儿我刚来现在这家公司没多久,手头接了个活儿,要给咱们那电商网站的会员中心加个新功能,就是那种个人资料管理、收货地址编辑之类的。这活儿看着不大,但是涉及到用户数据,搞不好是要出大事的。项目经理老王,人挺好的,把需求文档给我一拍,说:“小李,这个你来搞,照着文档走就行,不难。”我把文档一接,心里盘算着,这周努努力,应该能出个初版。
我二话不说,撸起袖子就开干。先是把数据库结构重新捋了一遍,改了一些老旧的字段名,又加了几个新字段来存新的用户偏好设置。然后就开始写后端接口,老规矩,先搭框架,写个骨架,接着就是处理各种增删改查的逻辑。那几天我基本就是茶饭不思,一头扎代码里,感觉手感特别进度也挺快,眼瞅着就要把核心逻辑跑通了。
结果?就当我差不多把后端接口都测了个七七八八的时候,突然有一天,公司开了个碰头会。项目经理老王、产品经理小张都在,还有老大也出席了。本来以为是聊聊项目进展,谁知道小张一开口,直接给我整懵了。他拍了拍PPT,说:“大家注意,咱们用户登录这块,要加一个新东西。之前邮件注册那个,太老了,现在流行第三方认证,所以咱们紧急决定,要引入一个新的认证服务。”
我的心当时就咯噔一下。我赶紧看了一眼PPT上那个新服务的名字,心里立马就感觉不对劲。这玩意儿我之前偶尔听过,好像是个国外比较小众的服务,资料特别少,而且跟咱们国内的登录习惯根本对不上。我第一反应就是,这玩意儿能行吗?咱们现有的用户体系怎么兼容?这中间改造量得有多大?时间够吗?一连串的问题在我脑子里炸开了锅。
可是,我看了看会议室里其他人,老王在旁边点头,老大也没说话,小张更是激情澎湃地讲着这个新认证服务的“革命性意义”。所有人看起来都对这个新方案充满了信心。我张了张嘴,想问问具体怎么落地,想提提我心里的顾虑,但是话到嘴边,又给咽下去了。那时候我刚来没多久,总觉得新人嘛还是少说话多干活,别给领导添乱,也别让同事觉得你事儿多。再说,大家都没吭声,可能是我自己想多了,他们肯定有更全面的考虑。
我选择了沉默,乖乖地听着,心里却越来越没底。会后,小张乐呵呵地跑过来,说:“小李,这块儿就交给你了,你负责把这个新认证服务接入进来,跟你的会员功能一起上线。”我只好硬着头皮答应下来。接过小张发来的文档链接,我一看,果然,文档少得可怜,而且都是英文的,写得还特别抽象。我硬着头皮啃了好几天,发现这玩意儿的API设计得特别反人类,跟咱们现有的技术栈融合起来特别麻烦。什么token过期机制、回调地址认证,各种坑层出不穷。
我尝试了各种办法,在网上找资料,翻Github上的开源项目,结果发现几乎没人用这套东西。我甚至发邮件给那个服务商的技术支持,结果回邮件的速度比蜗牛还慢,而且回复的内容驴头不对马嘴。那几天我真是焦头烂额,每天加班到深夜,头发都薅掉了一大把,就是为了能让这个认证流程跑起来。我把之前写好的会员功能都暂停了,所有精力都扑在了这个“紧急任务”上。
我去找过老王几次,我说这个东西太难搞了,可能要比预期多花好多时间。老王听了,眉头一皱,说:“没办法,这是老大定的方向,肯定是要上线的。你再想想办法,攻克一下,咱们时间很紧。”去找小张,小张就更离谱了,他说:“别,这技术难道你搞不定吗?不就一个认证服务吗?多看看文档,多研究研究!”言外之意就是我能力不行。这下我更不敢多说了,怕真被贴上“能力不行”的标签。
时间一天天过去,项目上线日期越来越近,我的压力也越来越大。为了赶进度,我不得不做了一些妥协。比如,有些地方为了能让服务先跑起来,我暂时省略了一些安全校验的逻辑,想着等上线后稳定了再补上。有些地方我实在没搞懂,就直接硬编码了一些配置,也完全没做可配置化处理。说白了,我就是把代码写得乱七八糟,能跑就行,完全牺牲了可维护性和健壮性。
最终,到了上线那天,我的会员功能勉强能用了,那个新认证服务也算是勉强跑起来了。但是,果然不出我所料,上线之后问题就开始暴露。先是用户反馈说,好不容易登录上了,结果没过多久就自动退出了。然后就是各种认证失败,有些用户根本就没法注册。客服电话被打爆了,公司的日报上,几乎每天都是关于这个新认证服务的各种故障。
老大非常生气,专门把我们团队叫过去开会。他问老王:“这是怎么回事?不是说这个新认证很好吗?为什么出了这么多问题?”老王又问小张,小张支支吾吾,然后老大看向了我。我当时心里那个难受,想把我之前所有的顾虑都说出来,想把那些坑都倒出来,但是面对着老大的目光,我突然又觉得,现在说这些还有什么用?项目都砸了,说再多也成了找借口。
那次会议的结果就是,我们不得不紧急回滚,把那个新认证服务下线了,重新启用了之前那个“老旧”的邮件注册。所有人都松了一口气,但付出的代价是巨大的。整个项目延期了一个月,公司损失了一笔不小的用户信任,我们团队也因为这件事,背负了很大的压力。
事后,老王找我单独聊了聊,他说:“小李,你当时如果觉得有问题,为什么不早说出来?或者说,为什么不坚持你的看法?”我听了这话,心里五味杂陈。我当时不就是“咱也不敢问”吗?我怕领导觉得我刺头,怕同事觉得我矫情,怕耽误进度。可结果?更大的进度被耽误了,更大的麻烦也爆发了。
从那以后,我算是彻底明白了。在工作中,尤其是在技术领域,遇到问题,发现风险,就得第一时间指出来,清清楚楚地提出来。哪怕是跟领导意见不一致,哪怕可能被人误解,也得把真实情况摆到桌面上。作为工程师,对技术负责,也是对产品、对用户负责。那种“咱也不敢问”的心理,表面上是“乖”,实际上却可能酿成大祸。现在我再遇到类似的情况,哪怕是拍桌子,也得把我觉得不对劲的地方说出来。因为,一个项目最大的风险,往往不是技术本身有多难,而是那些被大家心照不宣地压下去的疑问和顾虑。
