超级访谈:对话毕玄_02_成事技术人最大的问题就是情怀化
你好,我是叶间。
从今天开始呢,高手锦囊板块的五场专题研讨即将展开。
我们会从必选的具体工作经历出发,在个人城市方向选择、团队代理、做事、文化和架构修炼这五个方面,希望能够总结出可供借鉴的分析思路和实操方法。
毕竟对于一位技术敏感度如此之高的大佬来说啊,他仿佛总是能够提前站在下一个技术风口上,他是如何分析技术方向的,又是如何在一次一次的技术浪潮中求得自己和团队发展的。
如果能够总结出这样方法论,相信对你一定会有很大的帮助。
今天呢我们先来对HSF做复盘,毕竟第一次总是印象深刻。
对于第一个真正自己从零做的访问量最大,而且核心的系统它又出了重大的故障。
那么它总结了哪些程市方法呢?我们开始今天的对谈,我们复盘一下你当时做HSF的过程啊,你得得最大的成长什么?就是说说为当时量级是从两百万万了,一个亿亿,那到底区别是哪是吗?嗯,这一次之后我就懂了,其实量级不重要,重要的是要求啊,一个要求非常高的系统跟其他的系统的差别是什么?要求非常高的系统啊,核心是对整个系统的所有的环节你都要非常的清楚。
因为这是概率问题,你以前可能说认为十万分之一的概呃问题不会出现,对吧?嗯,但在一个代码的系统里,它是必然会出现的啊,所以就是说你之前写小系统,那现在去写这种超大系统的差别是很大的那小的系统它容易写那一个超大的系统。
因为所有的概率问题都会爆发,对工程师的要求啊就变得非常非常高。
那你必须非常的清楚,你负责的那个部分,从头到尾所有的代码细节。
那后来阿里对基础工程类的人呢都有这个要求,不能说我用了一个三方开源的系统,它出了故障。
所以问题是它的那当然不是啊,那对我们来讲都是你的故障。
那在这个阶段呢,对工程师的要求已经完全不一样了。
不是说你写完一个功能就拉倒,而是说你要能够把代码给维持着啊,这个挑战就非常大的啊,就是说维持的成本其实也是在你们当统开发者出,就要考虑清楚的对对。
一个要在生产环境去跑很多年的系统,未来怎么去可持续的发展,在设计的阶段是非常重要的。
如果你做一个系统,面对一个用户和面对一千万个用户啊,只跑一个星期和可能要跑十年啊,都是有很大的差别的。
这就是我最后要交付的成本啊,那硬件也是一样,软硬件其实最终的体现就是价格嘛。
那我们看硬件有的保修期很短啊,有些很长,有些寿命很长,有些寿命很短,那决定了它背后的选择的差别也是很大的。
当然说呃软件可能还做不到像硬件这样直接的映射,但是差不多也是这个概念啊。
所以说为了保障这个掌握程度,大厂一般都是自己去写。
对,如果过多的去用别人的东西,你是很难去清楚掌握的。
所以最好全部是自己写在出任何的关键问题的时候呢,你就可以去迅速的去做反应。
但是你多少都会用到开源,哎,当然就是不可能说一切都自己写啊,所以说我们会有要求,就是你如果任何何开源源东西西,对这个东西的所有代码也必须是非常的清楚。
否则的的话就是在大规模的系统里,你一定会栽跟头。
所以说对大规模系统来讲,技术的选型呢是很不一样的,包括对团队要求也是。
那比如说很多开源的东西,大家觉得哦外面很火,阿里为什么不引入啊啊,其实很简单,就是引入进来呢。
阿里又没有一个专业的团队来维护的话,那就最好是不要引入你,还不如自己去写写算了啊,这这的代价肯定也是有,但是对公司来说是可以接受的啊,这个就是认知。
嗯,那如果说一个系统它的量级不是核心重要的那为什么淘宝对自己的系统会有这么高的要求呢?其实本质是业务,就是你看现在几个网站业务的要求差别是非常大,也就奠定了它背后的技术难题的差别非常大。
啊,我后来是接接触了一些求求高高公司,那那这一点的的感受呢就更加强烈了。
淘宝你说以前要求高,当然也高啊,那但是说实话还没那么高。
因为淘宝出完一个故障,如果几分钟后就能恢复的话,那交易量是能够恢复的,会冲高,然后恢复。
嗯,那所以淘宝说实话就出一次故障,也就也就这样啊,能发生什么呢?所以说出了在处理是可以的。
如果还能快速处理啊,大家就觉得你很牛了。
嗯,对,呃,但饿饿了这这种外卖公司很的挑时战,是他系系统在十一点十二点的时候能出出故障,关键就是不能压,压根就不能啊,这就不一样了。
那跟我们之后出了再去弥补,就差很多嗯,是因为外卖业务的那个竞争太激烈吗?对啊,很简单,你想嗯我饿了么?跟美团打的这么辛苦,那可能因为你们技术团队十一点出一次故障业务的份额啊,瞬间就变了。
那怎么玩?所以因为这个用户是一定要点外卖的那饿了么不能点,就是去美团点。
嗯,那包括当年滴滴跟快递的战争啊,快递的背后是我们啊,当时我去快递待了一段时间,去处理各种问问题,那也是说能够为了让它更加的稳定啊,腾讯也派大量的工程师去滴滴。
嗯,啊这个时候技术真的是很关键,因为谁稳定就决定用户会倾向谁。
当然钱的补贴很重要,但是技术也很重要啊,所以这个阶段的稳定性已经是这些公司的核心能力了,本身就已经成为业务了。
对,所以这种对工程师的挑战是非常非常大的对因为一个不能出故障的这个系统是很难做的。
但是如果说能够接受出故障,给我一到五分钟的恢复的时间啊,这两个系统的设计会有很大的差别。
因为出故障以后,我可以想各种的办法啊,但是那个不能啊,我也很难回答。
所以我们做其他的系统就会越来越明白。
其实有些系统根本就不像大家想那么简单。
当时呢还有一个段子说,呃,因为淘宝做的比较好,幺三零六总是出问题了,大大就就说淘淘宝双十一都没事,那把它交给淘宝不就行了吗?啊,但你如果仔细的去了解一下,会发现这些系统其实是不一样的是什么?不一样。
是这些系统就是它不同的那个点是什么?幺二三零六这种是涉及民生类型的啊,像饿了么也可以认为是涉及民生,包括共享单车都是那银行金融这些就更不用说了,到民生这种挑战是挺复杂的。
幺二三零六交给淘宝啊也不好解决,因为它和淘宝最大的区别就是库存。
淘宝的库存呢是静态的啊,买一个商品有多少库存减一就好了。
比方说我的卖一千件,那我减就行。
虽然是高并发,它也没什么排队就好了。
但是你看幺二三零六啊,最复杂的就是库存。
因为买一张火车票,从a站到b站啊,中间有很多种的可能性,是一个动态算库存的过程。
但是库存这个东西啊,压力是最大的,还要去动态的去算啊,淘宝都没想过这个问题该怎么解决。
因为淘宝在库存上啊也很痛苦,它哪也只是一个单品啊,所以是跟大家一般想的不一样。
就是说像民生相关的系统啊,看着业务比较简单,但是背后呢是不能出问题。
对,包括就是以前我们觉得啊金融行业落后,像银行,还有你看你们就做个变更,简测怎么这么这么难啊。
后来我们懂了,就如果我们是你们估计也会变得那么严格,因为影响的面是不一样的。
银行只要哪一天钱取不出来,可能立刻就会引发社会动荡。
嗯,啊你说你是技术故障,别人肯能不信。
嗯,那淘宝说实话没有影响名声啊,而且淘宝的商业竞争应该还没有说,就是出了问题,用户就去另外一个人的这个程度。
对,像外卖呀打车就太明显了。
嗯,某天你的份额就异常飙升,你基本上就是因为你的竞争对手挂了,嗯,啊根本就不是你的业务做的多好。
现在呢就是软件的核心系统对工程师的要求在直线上升。
说实话新一代的互联网工程师是比我们更难的,因为我没有时间去成长,但是他们其实没有上来啊,就是必须做到这样,我们是出了无数次的故障,然后慢慢学会的知道每个地方是什么原因,但是他们真的就太难,因为没有机会啊。
那现在的工程师这么难的原因是什么?嗯,因为现在的软件的要求跟以前的软件有很多的差别。
以前AWS是取了个名字,我们觉得很土啊,后来觉得这个名字也不错。
那AWS给现在的软件是取了一个新的定义,叫做modern software.那所以如果大家去看以前的软件,一呢是相对来讲功能比较单一化啊,不会太复杂。
嗯,现在大家要做的软件上来就是复杂度就比较高了啊,软件要连接东西就更多了。
以前呢是我只实现一个功能,现在你看到的可能只是一个功能,但是背后实际上是n多个功能去叠加起来的,都是一个很复杂的公式,所以软件的复杂度就很高。
嗯,比如说外卖,那背后涉及的链条非常长啊,软件写起来很复杂的,不像我们以前很简单,这就是时代的发展嘛。
第二呢就是以前的软件都是有成长期的,因为成长期很长,那它对稳定性可以用性的这个要求就不会那么高啊。
以前大家不能用也能接受啊,不能用就不能用嘛,我会换人工。
但是现在就不一样啊,现在的软件的成长周期啊太短了。
在中国,你从零做到一千万用户,以前要很多年啊,现在可能说是几个月就已经可以了。
哎,这就完蛋了嘛,就淘宝当时能花一年的时间来搞架构眼镜。
现在公司哪有这个时间啊,没当它搞完,它就倒闭了。
而且这种倒闭你想太冤了啊,我们本来发展的很好,因为我发展的太好,用户量太大,系统撑不住,所以挂了。
这简直那发展的不好,挂的也就算了。
但是现在的技术侧就是会面临这个问题,就是你的成长的时间非常短,商业进展非常激烈。
当年不是这样的,淘宝起来的时候有进队吗?啊,自从把易贝踢出去,至少在那几年来看是没有竞争对手的,所以稳定性啊等等都不重要,把业务功能各种做好就行了。
当年淘宝如果有竞对的话,是不是会不太一样?我觉得很多都会不一样。
但是现在中国不是这样的,像你做的a只要能够起来一点点,你可能就发现中国是瞬间就诞生了这一百家做a的公司。
一、你要求的技术门槛就直接是拔高了。
嗯,啊说白了就是利润空间的问题。
一个行业啊,只要开始赚钱,在中国绝对会卷到死啊,在海外这点会好很多。
因为海外看你已经赚了那么多钱,那我还是不要做这个行业了。
他会觉得我的机会很少。
但是中国不会这么看啊,中国会觉得哇他这么赚钱,那我也可以做啊。
就是说不同时代的软件,以前的话大家就看业务,现在还要要求技术门槛。
对以前技术真的不是核心,对业务来讲,说实话一点都不重要。
淘宝最早啊就根本就不认为技术有什么重要的,反正能用钱解决的,我全部用钱解决。
技术最好不要干啊,最好全部是写业务代码做需求了。
不要说我有一个团队是不做业务的啊,全部在研究什么基础技术,那完蛋了。
因为这就是养人。
而且这种人通常又比较贵啊,养这样一帮人呢都是这种人都是成本啊,但现在不行。
嗯,现在很多的公司上来,如果技术没有达到一定的分数线,可能业务都没有机会做,就已经挂了。
因为中国的用户被训练出来了,对体验的要求非常高。
中国用户恨不得点一下,立刻下一页啊,如果还要多转几下,他就放弃了,太绝了啊,但但海外不会啊,这背后全部都是技大投入,不管是人员呢还是IT成本啊,这一点还是挺明显的对,这就是现代嘛。
所以后来我们很认可AWS说呃要跟原来去区分开啊,当然他也是告诉你为什么现在很多的公司,尤其是初创还没有那么稳定的公司,应该是用于啊其实就是分数线嘛。
因为你用至少是一开始就一定是达到了分数线,然后你可以更加专注的在业务上啊,但是以前不存在这个问题,那你觉得就是之前跟现在的这个界限是什么时候?中国我觉得就是移动起来。
在PC的时代,你看竞争其实不是很激烈。
嗯,啊那个时候互联网还没有爆发,没让大家觉得呃做这行有多赚钱啊,当然有更赚钱的,当然也不能做啊。
然后呢啊大家突然间就发现互联网是最赚钱的啊,中国肯定卷死啊,这是中国最痛苦的地方啊。
对,因为当时移动互联网起来的时候,大家都觉得怎么着也得做个五年十年。
但是其实都没有想到会这么快,因为PC就很多年嘛。
那我们为什么会这么快呢?我觉得跟中国手机发展的比较好有关系,然后是网络条件比较好啊,国外是因为网络太差,你想在印度点一下这么慢啊,那还是不要用了,手机也差。
但是中国这些基础的设施太好了啊,基础设施真的是很关键的,基础设施越好,它上面就会越会爆发无数的可能。
啊,我们前面复盘了这么多,主要是讲的那个超大系统对开发能力上的要求。
然后在技术的选型上,因为我记得之前你在微博上写也会写,就是呃自己去选ACI做是一个非常错误的决定。
对,那就是你现在如果再去做HSF的技术选型的话,你会有不同的选择吗?不会,我觉得还是错的。
这是我后来总结的嗯,技术人的最大问题就是太情怀化。
啊,我以前选OSGI最大出发点是什么?就是情怀啊,因为所有的人都知道我出名是因为LSGI.嗯,啊很多人在我后来来淘宝之后都问我啊,淘宝用LSGI吗?我说没用啊,这个对我这种技术人还是有点伤害,因为支付宝也有LSGGI,我跟阿喜他们都很熟啊,他们用我不用啊,他们也经常来找我问问题啊,后来我就觉得那不行,淘宝也得用啊,这就是情怀,纯粹是情怀。
很多技术人做一个决定,其实他的出发点就是不对的。
他出发点就是情怀。
虽然大家可能会举一像linux的例子,比如说很多做了最伟大技术的那波人,他可能就是出于情怀去做的哦。
但我觉得在公司的层面肯定是不能这么干的。
所有的公司都是一家商业公司。
那商业公司里做的所有的事情,确实应该要对这家公司意味着什么?所以关键是反思选择吧。
把原来的东西改造成基于OSGI的。
当时对这家公司来讲啊,对客户啊用户来讲是意味着什么?到底有没有帮助啊,是不是一个很好的长期的发展的选择啊?如果他的问题你其实没有任何解决作用,那还不如以前嘛。
因为新的方案一定会带来很多新的问题。
很多技术人呢做决定最大的问题啊就是情怀太美啊。
比如说很多的架构师leader,他为什么做这件事情呢?可能就是技术上觉得这个东西看着不爽啊,想把它改的更完美一点。
对技术人确实有这样的癖好,因为技术这玩意儿确实是可以很完美的话。
比如说我觉得这个架构看起来不好看啊,这个代码可以写的更好。
嗯,啊然后但是在商业上看的话,这些全部都是成本,对商业呢是一个妥协的问题。
事实上一个平台要做好啊,架构师最大的挑战就是做平衡。
所有阿里我们面试很多p八升p九的架构师,问的核心的话题,都是你在这一轮的架构设计里面做过什么选择和平衡,这才是最难的。
而不是说你做了一个什么很完美的玩意,一个看起来很完美的架构啊,最后可能对公司是一个极大的伤害,这个是在业务上的一个考虑。
那是不是也有团队上,因为后来就是后来听说你要去做别的业务嘛,但是把想把这个团队拖出去的时候维护非常难,对这个肯定有影响。
因为你对整个团队的要求变高了啊,这是很痛苦的。
未来团队的招人等等都是一个大问题。
包括团队的人出去以后啊,他们其实也会各种担心。
嗯,啊后来又跟很多人聊,包括有技术情怀呢,他就觉得有个语言特别好用。
这个呢可以写一个更好的性能更高的东西啊,对这家公司会有很大的帮助。
这个出发点呢是看起来没错,因为出发点是对工作业务有帮助。
但是这里没有考虑到一个问题,就是如果你离开了那个团队,这玩意儿谁能搞定啊?如果没有你在就没有人能够接。
那就相当于是你给公司挖了一个坑,然后公司还不能把你怎么样啊,这就不就是坑公司了。
啊,所以很多时候讨论语言的选择呢是一个最无聊的话题。
因为语言的选择,事实上他不是单一爱好的问题,是我站在公司的整个的层面上,包括人才的储备上啊做的一个综合的判断。
比如说我觉得这个门语言有多牛啊,这不重要,每门语言都有自己很适合的地方,否则他为什么活着呢?嗯,呃你这么重视对公司,对团队这些方面的考虑跟权衡是你后面慢慢体会的吗?这一点其实是后面我一个老板对我的影响啊。
七工就现在淘特的负责人,然啊那一年我是被提名p八p九的晋升啊,写完PPT呢,他帮我看了一下。
然后他说你这个PPT最大的问题啊,就是没有讲清楚。
你做这个事情的意义是什么?这就是技术的出发点。
他说我做技术层面当然是没有问题,都讲的很好,但是越高级别的人越需要去回答的问题啊,就是你为什么要干这件事情,而不是你怎么干这件事情,以及怎么解决里面的各种各样的技术难题。
因为这些是偏执行层面的啊,当然也需要。
因为一家公司肯定有很多技术上非常难的事情,需要人去解决。
但是更需要的是有人去思考这家公司到底要做什么,为什么要做这件事儿啊,这是一个最大的挑战。
他那次跟我聊之后呢呢就一定程度上上窍窍后后呢,我所有的技术上规划都是以这为出发点啊,很多技术术人人能很难接受这个,但你就是这就是你走向成熟化的必然。
因为我们也能够看到有些技术很神的,可能有纯粹的技术立项啊,这种确实很好。
但关键就是在中国的生存环境啊是比较困难。
好,到这里呢,我们今天的讨论就暂时结束了。
理解的必权,做选择的出发点。
我们再回看他之前的所有转岗决定背后的理由是清晰而且一致的。
在一个要求非常高的系统里呢,开发者需要具备更高的代码掌握程度。
而且现代系统因为业务复杂度和商业竞争度在不断的提升,对开发者的要求呢也在越来越高。
但是对于技术人来说啊,最致命的障碍常常并不因为外界,而是因为自己在技术选型上呢想清楚你的出发点是最重要的。
一名成熟的技术人需要从对公司、对客户、用户以及对团队的各个角度想清楚你自己做事的意义是什么。
这个是必悬做事,而且能够成事的底层逻辑。
不知道你对今天讨论的哪个部分更感兴趣我,还是列了几个讨论的话题。
第一点是AWS说的modern software.那作为身处其中的开发者,你有哪些感受呢?回顾自己做过的系统,你的要求是什么呢?你觉得挑战是什么呢?预贤做事,他认为最重要的呢是想清楚对公司客户用户来讲到底有没有帮助,是不是一个很好的长期发展选择。
那你做事的出发点是什么呢?关于技术人的情怀问题,你见过哪些坑吗?你有给团队或者公司挖过坑吗?那欢迎留言交流,聊一聊自己当年或者现在炫技的那些事情。
下一讲呢,我们会聊一聊该怎么去思考技术演进方向。
下一讲再见,拜拜。