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 年以上技术管理经验。

参考资料

https://learn.lianglianglee.com/%e4%b8%93%e6%a0%8f/%e6%8a%80%e6%9c%af%e9%a2%86%e5%af%bc%e5%8a%9b%e5%ae%9e%e6%88%98%e7%ac%94%e8%ae%b0/117%20%e7%a8%8b%e5%86%9b%ef%bc%9a%e6%8a%80%e6%9c%af%e4%ba%ba%e7%9a%84%e3%80%8c%e7%9f%a5%e8%a1%8c%e5%90%88%e4%b8%80%e3%80%8d%ef%bc%88%e4%b8%89%ef%bc%89.md