第117讲|程军:技术人的「知行合一」(三)
文章目录
你好,我是贝壳技术总监程军。每次抽烟到烟头快熄灭的时候,心里总会抱怨怎么这么快,然而过不了多久,又会点起新的一支烟。众所周知,这个世界是复杂且多变的,我们唯一能做的,就是在大部分时候都保持乐观、积极的态度面对生活赋予我们的一切。
曾国潘曾说过,“担当大事,全在‘明’‘强’二字”,上一篇文章中,我主要分享了我对“明”的理解,今天,我想聊聊我对其中“强”的感悟。
一、天行健,君子以自强不息
“强”就是指刚强、倔强、自强和坚持,所强调的是意志力、毅力、定力和决心的力量。
他曾说过:“势利之天下,强凌弱之天下,此岂自今日始哉?盖从古已然矣。从古帝王将相,无人不由自强自立做出。”
意思是说,从古到今的帝王将相,没有一个不是由自强中走出来的,更何况我们这样的凡夫俗子。
这里想分享一个我的例子:
今年 5 月底,我加入现在的公司,成为本部门的 1 号员工。入职第 2 天,领导就把需求方、HR 负责人等从北京带来了,我们开了大概 2 个小时的新产品讨论会,依稀记得老大的套路就是:
1. 强调这个产品线公司高层很重视,并当场把产品相关的行业分析、竞对分析以及怎么构建新的壁垒说了一遍,还介绍了第一期产品需要做什么内容;
2. 提出期望这个产品能在 1 个月内上线;
3. 表明协助招人的 HR 也在现场,可以给予最大的支持。
接着问题来了,他问我你现在怎么打算?
当时我几乎是窒息的,心里不停盘算目前团队除了我,什么人都没有,但产品上线日期却已经被确定,该怎么办。内心思考再三之后,我选择回答 OK。对于我的回答,感觉当时在坐的各位都很开心,只有我还一直不能释怀,以至于会议结束之后,领导请我吃了上海最有名的红烧肉,我也感觉没滋没味的。
后面的故事按大家想的那样,产品如期上线,数据表现还不错,上线一个月后已经达到每日 3000 单的交易量。
以下是我当时的解决方案,供大家参考:
- 和产品同学一起商量这一期 MVP 版本的产品功能,先定义目标和细化目标;
- 深入了解产品需求,整理出业务架构、表结构模型并搭起系统架构,同时识别出其中需要外部依赖的部分,提前沟通让对方排期;
- 和兄弟部门的老大不要脸的借来 1 位开发,由于我入职之前兄弟部门已经发出了一个 offer,所以这位同学在我入职后第二周就入职了;
- 前端和测试的两位同学分别在 2 周后入职(别问我怎么做到的,加入一个新团队前也应该提前做一些准备,毕竟兵马未动粮草先行);
- 自己也参与代码编写,跟兄弟们一起战斗,(当时还发朋友圈笑说我是一个已经 4 年没有写代码的人)如亮剑电视剧中李云龙所说的那样,战号一旦吹响,炊事班也得拿着菜刀和大锅冲上去。
后来才知道领导用了一个“以终为始”的方法,就是先确定目标,剩下是你要去考虑的,这也许就是网上鸡汤中所说的,领导要做正确的事,而作为下属的我们要把事正确的完成吧。
话说回来,我当时心里也是比较犯嘀咕的,要是刚入职第一个产品就不能按时交付,这后面可如何是好。好在我一直以来是一个不服输的人,性格倔强、行动果断,很多时候还非常有毅力和坚持。当然,在我的理解里,这些都不是最重要的,最重要的是决心,那是一种超乎寻常力量的东西。如今,我做事更多是价值驱动,如果我认可这件事对公司的价值、对公司的重要性,那么我要做的就是坚持去执行直到拿到结果。
用一句清华的校训收尾本段,自强不息,厚德载物,共勉之。
二、打落牙齿和血吞
曾国潘在回顾自己一生时曾说过,我平生有四大堑,第一堑是“学台悬牌,责其文理之浅”,也就是在秀才考试时被主考官公开批评文章文理太浅。第二堑是“画一图甚陋,九卿中无人不冷笑而薄之”,也就是在向皇帝上疏时,画了一幅图辅助说明,但因为曾国藩本身并不擅长画画,这张图比较难看,遭到了满朝大臣的鄙夷嘲笑。
第三堑是“岳州、靖港败后栖于高峰寺,为通省官绅所鄙夷”,也就是在岳州兵败太平军后遭到江西全省官绅的鄙夷和耻笑。第四堑是“九江败后赧颜走入江西,又参抚臬。丙辰被困南昌,官绅人人目笑存之”,也就是在九江兵败后逃到江西,又因为被刁难而弹劾了江西的巡抚、按察使,结果第二年曾国藩被围困南昌时,江西的官绅人人都幸灾乐祸。
而面对这些难关,曾国藩最大的不同就是从不怨天尤人,遇到苦难总是反求诸己,不断总结经验教训,以此完善自己。这就是关键所在,每个人的人生都会经历一些“生死攸关”的大事,一旦坚持了、迈过了,就是最好的成长。
这里再分享一个我的例子:
当时我还在 1 号店负责公司 TMS 系统,也就是物流运输管理系统的研发,我们系统的上游是 WMS 系统,也就是仓库管理系统,这两个系统是电商供应链系统的关键所在。在具体执行中,仓库打好包裹后,数据交接给 WMS 系统运营人员的同时也要传到我们 TMS 系统上。
当时的故障是,订单数据(WMS 调用 WMS 订单接收接口)过来得特别慢,基本上是每秒 1-2 个订单,一看就出了问题。问题出现后,我一个外号叫“包子”的同事(技术高手,目前是阿里高 P)已经在公司排查了大半天,我想着反正闲着也是闲着,就跟领导说去公司一起帮忙排查问题。
包子是我们部门的技术好手,人也有点傲,见我来了,告诉我他已经各种日志分析、数据库慢 SQL 分析都做了,线上也加了调试代码,就差直接 debug 线上代码了,言下之意就是你还有什么更好的办法。
中间不知道抽了多少支烟,故障发生在周六上午 10 点,眼看时间已经到第二天凌晨 2 点左右了,如果到早上还没有修复就可能会影响我们的订单配送情况。情况很紧张,最后没办法了,只能选择再在可能出现问题的地方加入调试代码,主要是加了一些耗时监控代码(包子加的调用方的代码,我加的是我本地实现逻辑的部分),然后立马紧急上线。
最终问题定位在一个核心配送单分配逻辑上,其中有基于内存的分词索引解析和一个用了 Oracle10 函数的复杂 SQL 查询,继续加入调试代码后发现是因为这个 SQL 的运行时间很慢,运行一次大概要 600ms 左右。
但这处代码正好是我写的,并且一直运行良好,只好打电话问 DBA 为什么 SQL 这么慢,他排查一会说组合索引失效了。问题最终被定位了,然后 DBA 稍作处理后,系统就恢复正常了,真的是一行业务代码也没有改。为什么我用了同样的办法却可以找到问题的本质原因?这里其实也蛮值得思考的。
后来我们复盘的时候才知道,Oracle 有一个收集每个表数据的定时任务停了,执行计划从走联合索引变成了全表扫描,悲剧就这样发生了。这个时候已经是周日早上 7 点了,整整 13 个小时,再加上我同事之前花的时间,这个 bug 用了大概 24 个小时才解决。我们会去追问为什么 DBA 没有异常告警,这个锅其实也可以甩给他们,但是想了一下有意义么,我们才是系统的 owner。
可能有的读者会说,你又不是当时发生故障系统的 owner,一开始问题也没定位你的代码上,你操什么心啊。但我觉得我责无旁贷,因为我是部门的一份子,系统有我的参与,我希望它能解决故障顺畅运行,更关键的是,我们为什么要给自己的思维设限呢?不久之后老大还私下问我需要什么奖励,我拒绝了,因为我觉得奖励不是关键,关键是我从中学习到什么,领悟到什么。
在这之后不久,因为我的技术不错,有自己的思考和判断力,更有很强的好奇心,并且做事也负责,就转岗到了公司的核心部门任架构师。不过我依然非常感谢当时领导对我的培养和照顾,至今都不曾忘记,他是我职业生涯中,对我影响非常深的人之一。目前他在京东直接汇报给刘强东。
三、永不放弃
卓越的领导者一定要有一颗无比强大的内心。丘吉尔的最后一次演讲是在剑桥大学的毕业典礼上,整个演讲过程中他只说了一句话,那就是:“永不放弃、绝不、绝不、绝不。”稻盛和夫也曾经说过:“成功和失败的不同点就是坚忍与毅力。”任正非也说过:“经历九死一生还能好好活着,这才是真正的成功。”
既然这么多领袖都如此以身作则,身为平凡的我们还有什么可说的呢?一个字,就是“干”。
总结
本人从“天行健,君子以自强不息”开始,聊了我们经历困难时需要“打落牙齿和血吞”,但关键还是要有坚强的决心和意志力,也就是“永不放弃、绝不、绝不、绝不”。
在我看来,每个人的一生都是苦行僧,不论你承认或不承认,相信或不相信。而作为技术人,不论我们是在做技术管理亦或是架构师亦或是产品负责人亦或是 CTO,我们的前路上都有非常多的拦路虎,并且一只比一只猛、快、狠。而面对这复杂多变的世界和诸多凶猛的拦路虎,我们唯有“男儿”当自强,迎面而上不退缩。
因为紧急家事,写于 G265 北京回黄山老家的高铁上,一路忐忑但永不放弃。
作者简介
程军,现任贝壳技术总监,曾任饿了么技术总监、1 号店架构师,10 年以上互联网开发经验,8 年以上技术管理经验。
文章作者 anonymous
上次更新 2024-03-26