15 兴趣与个人认知 极客时间:听说你特别喜欢数学。

张雪峰:我最爱的除了家人,就是数学、历史这两块,数学是我从小的兴趣,所以花的时间多一点,我主要在B站上数学系的专业网课。

也有人问我是不是现在闲了才看,我说不是的,我一直在看。以前只是周末有时间,要系统学习数学还是有点挑战,因为周末后再上5天班,基本就接不上了,所以那时候看科普的多一些、专业体系化的少一些,坚持了很多年。虽然很多人也不相信,但这个确实是我从小的爱好。

还有一个催化剂就是,我刚上高一就拿了当年全国高中数学联赛省一(上海),但离那年(上海)省队有点距离,遗憾没能进冬令营。当时还自我安慰,如果在其他奥数一般的省,大概率可以进冬令营(笑)。但即使这样,也是我们学校那年重磅新闻(张雪峰高中是当年浦东唯一市重点,但不以数学见长)。当然了,我师兄更强,他高一省一、高二冬令营、高三国家队且是那年 IMO (国际数学奥林匹克竞赛)满分金牌。师兄是我当年最好榜样,也激励我对数学的持续热爱,直至今天。

极客时间:数学能给你带来什么?

张雪峰:数学带给我精神上持久享受,自然美感觉很棒。很多同学都有能带给他持续精神快乐的事物,对我来说,主要就是数学。或者更精确一点,是基础数学(纯数学)。

极客时间:是享受而不是那些枯燥的运算。

张雪峰:对,而且数学是自洽的,只要在这条路上,跑出来就是对的。数学和物理不一样,物理很多是人想出来的理论。杨振宁那套理论,已经是目前为止理论物理的天花板,几十年都看不到激动人心的突破,你看今年诺贝尔物理学奖,能知道个大概。物理更多是一个没法自洽的学科,它需要靠实验、工艺,靠现有的工业技术去证明,但数学几乎是完全自洽的。

极客时间:在工作之后还能持续钻研数学的人,好像很少,你会考虑到数学在工作中能不能用得着这样的问题吗?

张雪峰:我就是Enjoy这个学习过程而已,其实我刚从阿里离开的时候,很多投资人找我,问我有没有兴趣创业或投资,我说我的兴趣主要在数学、历史。但对企业来说,企业更Enjoy结果,数学尤其基础数学,这个东西不太能直接产生商业价值。

极客时间:在平时的工作中,你会用数学的思维跟大家去讲道理吗?

张雪峰:会,而且经常用,或者更多是用逻辑的思维。大家不要被一些所谓的计算机原则(典型如:低耦合、单一原则等)迷惑,数学原则才是宇宙终极原则。

就像我前面讲过的,什么时候该内聚、什么时候该解耦,你不要被表面迷惑。举个例子:当大于等于两个调用方(消费者),都会去调用一段逻辑的时候,就需要考虑抽象为 Function/Service/API,就这么简单。我经常会跟大家这样类比,不要把简单的业务问题人为地引向技术复杂化。如果是创新或试错业务,更要 Speed 第一,活下来后,才有时间谈 Architecture,最后才有机会上 Scale。之前提过的物流团队极致异步架构、部分团队微服务过度等,都是教训。还有,以上观点可能并不适用真正技术驱动业务的公司或业务,比如:Google、IaaS/PaaS、无人车等。

数学是解释抽象最好的方式(物理也高度依赖抽象,但还需实验与观察),有人说为什么要学数学?买菜只要学小学数学不就行了?那不叫数学,那叫算术。开始有未知数这个概念才算摸到数学一点边。解方程有未知数,这就是一个抽象,然后再往上还有更高级的抽象,比如大学的抽象代数,可以把很多物理现象抽象出来。

我还想说一点,跟抽象对应的还有一个词叫“想象”,但想象这个东西很多时候是天赋,不是说你想要想象就能有,想象是可遇不可求的,抽象是你需要去锻炼的能力,这是可以锻炼出来的,不是靠天赋。举个例子,你可以感觉一下:线性代数教会了我们如何抽象看待所有线性方程组,多次螺旋上升的抽象过程后,天下再无不可解线性方程组;但同样是数学,初等(平面/立体)几何中各种精巧的辅助线(有些可以靠刷题或训练,但大部分难题还是靠想象或天赋),却是很多同学数学学习过程中的绝对梦魇。要么一分钟解出,要么只能看答案后叹为观止。

极客时间:你刚刚说了两个思维,数学思维和逻辑思维,它们有什么区别吗?

张雪峰:都属于“形式科学”,另两类是大家更熟悉的自然科学、社会科学。要说数学思维比逻辑思维更深一层的,除了抽象、缜密,还要有广阔想象、大胆创新。创新指创立全新数学工具甚至数学分支,用于解决当前体系无法解决的难题(详见“哥德尔不完备定理”)。如果只让我推荐一本关于数学想象的科普书,那一定是《思考的乐趣》。

极客时间:之前我们有聊到产研团队按领域划分的事情,饿了么之前的团队划分比较粗糙嘛,就是分C端和B端,C端就是APP和网站,B端就包括商户服务还有物流,你进去之后第一件事是做拆分,这里面其实就要用到逻辑思维。

张雪峰:饿了么原来就是个单体,所有的业务逻辑就是一个东西、一个源代码库,C端、B端、D端(Delivery,物流)全在一起,牵一发动全身,也就是说你在部署的时候,每个服务器都要布一坨这个东西,一是影响性能,二是发布很麻烦。只要有同学发布,即使跟你无关,你也要发布一遍,所有的机器都要扫一遍。我们做技术的就要拆解,肯定要至少再分一级。

拆分与否,我们当时就遵循一个原则:只要一个人有变化,一堆人要随着你动,或者叫“牵一发动大部分”的时候,这一定是有问题的。其实这也是逻辑原则或数学原则。所以我跟他们说,不要扯什么领域驱动、微服务了,就用这个原则。这个原则确实最容易讲清楚,但实践的时候要多次试、反复试。

单体是一个极端,微服务或单一原则是另一个极端。饿了么从来没有真正提过微服务,从来没有过,我不去用这个概念。我们就是从业务的合理性去拆分。对领域驱动呢,我当时也是持观望态度,不能说保留态度,我觉得领域驱动是一个模棱两可的东西(顶尖DDD牛人或在大规模超复杂体系下成功实践过的同仁勿喷,毕竟让绝大部分技术同学吃透DDD,无论ROI还是效率都很低),就跟架构一样,所以我希望回归朴素,就是从逻辑的角度,或者数学角度,给大家解释。所以当时我们也不做领域,我把以前的经验带过来,开始有一些中台的萌芽,比如说把交易系统、营销系统拆出来,把用户系统拆出来等等。

从逻辑上讲,当你十次里面有八次“牵一发要动大部分”的时候,你就没必要去拆,你就让它耦合(内聚)在那,哪怕最后合出来一个巨大的东西,那证明这个业务就是这样的,没办法。你要么抱怨很倒霉进入这个业务领域,要么你就自己想办法克服。当然还有一个办法就是你通过技术去改革这个业务,那意味着这个业务甚至整个行业的游戏规则都要变,在短时间内几乎不可能。之前也讲过,对绝大部分公司的技术团队来说,妄图通过技术驱动业务,还是省省吧。

极客时间:刚说到中台的萌芽,饿了么建立中台大概是一个什么样节奏呢?

张雪峰:最早是整合交易系统,后来整合营销系统,搞营销系统就附带着把会员系统也搞在一起。其实说到底,也不叫营销,叫权益。所谓的发券、会员体系,其实归结为一点就叫权益。这一点国内有两家做得非常好,一个是携程,一个是淘宝的 88 VIP。

我们搞中台不是从0到1,应该说是从1到10,因为我们本来就有这部分(交易系统等),只是散在各个团队,后来就是交给石佳宁他们团队去整合,整合的过程当然也比较痛苦。

架构调整的时候,我们把C端、B端各个跟交易有关的团队交给中台去整合,这就涉及人员调配,有些Leader就不愿意交人嘛,就是“你动我的模块我可以忍受,你动我人坚决不干,我转模块不转人”。这种情况在阿里是严禁的,阿里一定是转模块必须转人,阿里做得比较到位,这就是成熟组织的表现。

我们以前这个团队,即使我强压也不行,大家就拒不交人,他说这个员工你让他过去,他要离职的。到后来磨了几次之后,大家也慢慢立下规矩:如果交出一个完整模块,必须人跟着模块走,去另一个团队,如果不愿意就离职。

所以一开始石佳宁其实拿到的是全部模块和光杆团队,相当于活儿给他,但要他自己找人,虽然我给了他很多权限。所以,石佳宁是很不容易的,他几乎只靠自己原来的班底,然后还要去熟悉C端、B端、D端(Delivery,物流)业务,把代码拿过来之后再拼起来。

他们从最难的交易系统开始做,搞定了之后,发现交易系统还不是最难的,最难的是营销系统。营销是千变万化的,运营介入最多的就是营销,因为营销有很多玩法,搞各种优惠活动。营销不好抽象,非常考验程序员对业务的抽象能力。

运营他们不管的,提了一堆需求,说给我实现这个、实现那个,技术人员就要去抽象。最后我们的营销系统变态到什么程度?那个界面刚开始做出来,只有运营看得懂,一堆Check Box,而且还不能点错(有些可以点错,后台有告警,但太多告警,人也会麻痹)。我们曾经因为运营点错按钮出过事故,最后责任归到运营,但人家也很委屈,吐槽技术做得太烂,说你们这个产品简直不能忍受,搞这么复杂,勾错就出问题。但技术人员就是一根筋,他说我已经全给你抽象出来了,所有的功能你只要点勾就能实现。所以营销系统是很难做的。

极客时间:可以谈谈你对中台的理解吗?

张雪峰:中台就是业务(商业)驱动的。我以大家更能理解的阿里来说,阿里后来做中台,其实真正的核心动力还是商业驱动。比如我在优酷注册了一个会员有一个优惠券,为什么不能在双十一的时候去淘宝买货?我在淘宝有积分,为什么不能在阿里其他平台用?所以淘宝得到一个终极结果就是 88 VIP,就是会员体系,这才是中台的原动力,还是要从商业价值来看。把这些权益放在一起之后,用户就有更大几率留在你的平台。

饿了么后来也搞会员系统,我们早期就是发营销券(外卖券),做营销券打通,开始还没有把它抽象成权益打通,后来有了会员之后,才想到要做权益,因为围绕会员的、跟消费有关的都叫权益,这个就更有价值了,包括把混合券这些东西都包容进去。

所以中台不是个业务,但它有业务的味道。

极客时间:接下来我们聊几个大的话题,你的人生理想或者说人生追求是什么?

张雪峰:除了家人,我还真没想过这个问题,如果抽象来说就是人和事两方面。

我先从人这个层面说,我希望我把一些不同的人,培养到超越我期望至少超越我的一个程度。就像我之前说,做CTO的最大成就感来自团队的成长。超出期望就意味着,他不是我原来可以掌控的,我会在这过程中和同学一起成长,对底下的同学来说,他感觉是我把他培养出来,但同时我也学习到很多。所谓相辅相成、相互成就,大概就是这个意思。

我有这样的理想,后来跟很多人也说过,我非常不想做CTO,我就想去挖掘高潜的人,我感觉我可能更擅长做这个角色。当然我现在在做这种“冒牌中介”,也是希望去把一个合适的人匹配到合适的岗位,其实做这种红娘是很有成就感的,不亚于去介绍两个同学或两个陌生人,最后成为夫妻这种成就感。

从事这个层面,我只能说是追求美,是精神上的一种美,不是视觉或感官上的美。什么叫精神上的美,或者精神上的成就感呢?对我来说排第一位的就是数学,可能直到离开这个世界,我也会一直追求下去,既是兴趣,也是挑战。

极客时间:你有比较喜欢的行业吗?

张雪峰:我对一个行业很有热情,我过去大概20多年的经历,有一半时间是在这个行业里,就是教育。

育人是一件很有意思也很有意义的事,有时候我自己看一些科普文章,很多很深的数学问题,有人就能把它用很简单的方式讲出来,让别人豁然开朗,我觉得很厉害。可能我对这样的事比较有热情,而技术只是我第二或第三兴趣,有时也是没办法,或者说你得先有饭吃,必须养家糊口。

极客时间:你有偶像吗?

张雪峰:历史上我有特别佩服的两个人,一个是商鞅,一个是李靖。但他们算不上偶像,我好像过了需要偶像的年纪,如果非说一个,应该是我第一家公司的老板。他20多年前的理念,甚至到今天依然前沿、足够前瞻,20多年前,他就已经在做标准化的事,是通过公司的产品尝试标准化,不止是停留在标准化理论上。

我的感受相当于什么呢?当时进这家公司,从编程来说,我算是小学毕业了,但是突然间一个中科院院士在那边给我辅导,就是这种感觉,而且他又非常平易近人,可以让我有学习的机会。一般的中科院院士即使再虚怀若谷,他也不可能跟一个小学毕业生去谈科学的。我至今还是一直认为,他对我的技术或技术观方面影响最大,但商业方面没有,因为他商业做得不太成功。

极客时间:你有没有自己坚持的人生信条或者是座右铭?

张雪峰:我总结六个字:活到老,学到老,再加上对精神美的追求吧。我希望一直到我生命结束,我都尝试去影响其他人对“活到老,学到老”的追求。从我的家人开始,这一年我已经引起我太太对历史的兴趣,开始买书看,还有我女儿,她以前也从来不看,现在算是有一些起步。

当然我能影响更多人更好,但是影响更多人也比较难,我也不想去做博客、去B站开个号,甚至写书等等,我不太想做这样的事。可能我觉得也很难影响到别人,一本书里面的内容,很难放之四海皆准,就像我们今天的访谈,即使把这些观点尽可能的普适化,让别人真正理解也是很难的。

我更想个性化地去做一些力所能及的事,去挖掘出一些不同的东西。“活到老,学到老”的另一个说法就是,持续去学一些不同的东西(Difference)。

参考资料

https://learn.lianglianglee.com/%e4%b8%93%e6%a0%8f/%e8%b6%85%e7%ba%a7%e8%ae%bf%e8%b0%88%ef%bc%9a%e5%af%b9%e8%af%9d%e5%bc%a0%e9%9b%aa%e5%b3%b0/15%20%e5%85%b4%e8%b6%a3%e4%b8%8e%e4%b8%aa%e4%ba%ba%e8%ae%a4%e7%9f%a5.md