极客时间:我特别好奇,从你的视角来看,CTO的职责是怎么样的?

张雪峰:不同阶段CTO的职责都不一样,这个要注意。经常也会有其他公司的技术同学来问我这问题,我说我只能和你分享我的经验,具体你的场景是怎么样的,得你判断。

几年前,InfoQ采访我,我当时说了5个点,分别是:找到合适人才、组建合理团队、稳定交付产品、极致经营产品和激发团队。现在我想了想,还是有一些认知变化吧。

CTO本身有一些共性的我先不讲了,哪怕3个人的公司也要考虑一些技术前瞻、选型、搭建团队,等等,这些都是需要的,不可能说招一个CTO,但是他不搭团队,那就不应该叫CTO了,应该叫全栈工程师。

这些前提之下呢,我认为CTO的职责主要取决于业务。业务的成长,包括业务规模,也包括它不同的边界方向,还有其他一些杂七杂八的事情,CTO都要看。

或者我从三个阶段来讲。

第一个阶段,以我自己的经历感觉,如果公司就是线性增长的话,一个成熟的CTO,他的职责应该没有大的变化。比如说我们从100万单量增长到500万、1000万,一个成熟的CTO他的职责应该没有大的变化。

什么是线性增长?我解释一下啊,有两种,一种是规模化,一种是你做的业务差不多,只是尝试性的延伸。比如抖音现在做了无数尝试,上面小业务很多,但抖音一直没变,这个我认为也不会有技术层面的大变化。商业层面他可能要去思考,比如做抖音教育和做飞书可能是不一样的,所以这还取决于你的业务。

第二个阶段,就是另外一种情况,你要做的是一个全新的、创新的,甚至大家都没做过的东西,或者说是一个你自己也吃不准的业务,这个阶段我认为CTO的职责可能会有些变化。重点就不在技术选型那些东西,而是你要为3年后考虑,考虑一个新业务的发展。

这两个阶段的区别是,前一个是有迹可循的,但第二个阶段就是无迹可寻的。到了第三阶段就是CTO变成CEO,因为CTO下一步就是CEO,很少有CTO去做其他角色(转型产品负责人也是个选项),创业不算啊,所以我只讲两个阶段,我没经历过第三阶段,不好讲。

第二阶段我以王坚博士做阿里云为例,这件事是对他产生挑战的,因为他要说服马云,同时马云也得相信他。做阿里云对他来说就是一个全新的职责,阿里到今天为止,给本地生活给的时间还稍微长一点,给了超过3年时间,剩下可能只有对阿里云是给了超过1年时间做探索。

以前我记得的,或者我知道的,基本业务1年没达标的话,要么换人,要么砍业务,砍业务可能是有时候为了面子再撑一撑,但人一定是换掉的,不管你是什么级别,到合伙人也要换掉的。所以阿里经常组织架构调整,多岗轮换什么的就是这个原因,就是换人,当然阿里有这个底气可以去试错,是试人的错,不是试业务的错。

所以对于王坚博士来说这是很罕见的,这对他的考验是:一、他自己要坚信云计算一定是未来,这时候考验CTO的眼光,绝对不是什么技术选型这种。大家说CTO还有一个词叫技术战略,我认为是跟业务相关,你是要决定公司生死的,你现在是“O”,所有的“O”都是决定公司生死存亡的,否则你就是一个执行者,我认为我在这一点上,只做到了一部分,没有完全达到我所说的这个层面。

我理解的技术战略就是技术跟业务相结合的,云计算表面是一个技术,其实内核是个业务,因为有商业价值。这个不是大家说的那种纯技术战略,比如选一个三层架构还是微服务,选一个放之各种设备都能用的一套代码,这样的技术战略还是比较窄。

纯粹的技术商业价值有限,最多它的价值是节流,节省成本,但它不会开源,我说的商业价值一定是开源(不是“开源软件”的开源),要能给公司带来商业的收益。包括像饿了么这么烧钱的公司,我们一直也对节流不敏感,如果一家公司要对节流敏感,要么就是出了问题,要么就是它已经很稳定要做一些精细化或人员裁汰。

我前面说的总结一下就是,第一阶段是大家普遍认为的CTO要做技术战略、团队组织,包括把团队热情激发出来,技术按时按质量交付、保证稳定性;第二阶段你要思考几年后,这个技术怎么快速帮业务实现商业化、突破,技术要去坚定地相信这个业务或支持这个业务做好;到了第三阶段就是CTO变成CEO。

极客时间:如果从从业视角看,比如某个人要去应聘某个公司的CTO岗位,那要往他身上安几个职责,比如3个或4个职责之类,可以这样分吗?就像刚才你其实也有说过有组织的建设,有文化的建设之类。

张雪峰:这个要看公司那时的瓶颈,不同阶段和不同公司找你去做CTO的瓶颈可能不一样。饿了么当时团队更需要一个Mentor,还有那时候老宕机,要你去解决问题。当然不是每个人都要解决那么多事情的,可能有的公司就是技术影响力不够,想找个人装个门面,或者要上市了找一个CTO,这是几种不同阶段。

假设抛开这些不同阶段的考虑,我把职责不分优先级地列一下。第一个职责是建组织,甭管3个人还是30个人,你一定要去Build,这个Build可能是Rebuild,有可能是Merge(融合),有可能是水乳交融(更大可能是水火难容),这个是建立组织层面,这里当然包括人才的吸引,因为组织涵盖人才。

我认为饿了么已经接近水乳交融,百度外卖除外啊,因为在我离开的时候和百度外卖还没有完全水乳交融,我指的是原来饿了么老的团队和我进去之后的这个团队是水乳交融的状态。

第二个职责是做所谓的技术战略,说的细一点叫技术选型,比如大到云计算这样惊天动地的抉择,小到语言,你都要做决定。其实语言也不小,但我假设是从CEO的视角出发来看技术团队的各种选择的啊,比如语言其实对CEO来说是很不敏感或很难理解的,但做异地多活这件事对CEO是敏感的,因为要花大钱,要停3个月业务,所以目前我认为可以用一个方法来看技术战略的大小、价值,就是:站在CEO角度去看CTO应该要怎么做。

建组织和做技术战略这两个职责可能最重要。

以饿了么为例,在第一阶段,我要解决当时团队头疼的组织问题,另外就是解决稳定性问题,当然这其实只是技术层面一小块任务啦。我总结要解决跟纯技术相关的主要就几件事:安全、稳定、性能、可扩展(灵活性伸缩性等)、可管理(运维运营等)。

关于可管理,说人话就是,无论代码层面还是产品层面,要让你接班人读得懂、玩得转,你这个系统是可管理的,而不是动不动就要靠某一个人、靠一个英雄去搞定,而是可以传承的。

另外大家提到CTO的职责肯定要包括稳定性,因为稳定性太突出了,尤其对规模化来说,稳定性可能超过了安全性。但我个人认为安全性是超过稳定性的,在饿了么,以前没有太多安全性方面考量,我接到这个任务是因为要解决稳定性的问题,但我进去之后,其实安全方面是花了我同等的心血。这些东西是常规的、本职的工作。我和团队经常说一句话:没有安全性,你连宕机的机会都没有。

另外,关于组织也涉及到一堆事情,我刚没展开。比如说要提升团队活力,或者叫激情(仅靠激励不持久),让他们能够喜欢自己的这个岗位,包括喜欢你的角色、喜欢你做的事业,这个事还看两个层面,你是喜欢这个过程,还是喜欢结果。我个人更倾向于喜欢过程,因为你只有热爱这个事情之后,才能大概率得到一个好结果。

极客时间:总结下,就是一个组织,一个技术战略?

张雪峰:其实就是技术的本职和组织的本职,你要做好。因为你是CTO,这三个字母拆开来看,“T”就相当于是在技术层面,不说你写代码最强,至少技术视野没问题,你要自己做过这些东西或至少探索过,这个T你一定要有。

“C”就是组织层面,你是技术组织里最重要的一号位,相当于出了事你要直接担责的,你要去更多地激发人。也不是说每个技术方面或领域都非常过硬、必须最强,但至少你自己不能不懂,不能太外行,回到本职就是“C”和“T”这两块。

“O”其实是CTO的第二阶段,公司的命运、公司的新业务是跟你休戚相关的,你并不只是执行。

但“O”比较难,“O”基本就是公司决策层(最高管理团队),我认为所有的“O”,至少在几个因素当中,它的权重要做到不能忽略不计那种。换句话说,你的团队和结果是要在公司的财务报表里体现或影响公司重大决策的。有很多团队和结果,是根本连上财务报表或影响公司重大决策的资格都没有。

极客时间:你刚刚还说到要让团队保证激情,喜欢自己做的事,那你怎么能保证大家都喜欢过程,或者结果呢?

张雪峰:我刚说更倾向让大家享受过程嘛,前提是你把他安在合适岗位。不满足的时候只能去调配,组织架构调整只是最后一招,是组织临近腐化甚至癌变的被迫手段,能不组织架构调整就不调整,当然也不可能人人都满意。

我以前跟团队说,第一你要尽可能喜欢你做的事,你不喜欢做这件事你来找我,真的是这么说。我还跟大家说,如果你感觉在饿了么做技术(包括尝试内部转组后)和在其他公司做技术没啥大差别,哪怕业务相似度高达90%以上的美团外卖,那你真要考虑换个公司(换公司的另一个说法,就是炒老板鱿鱼),当然了,也可能是我和你Leader做得不到位。

极客时间:在CTO所有的工作中,你觉得什么事情是最耗费你的时间和精力的?

张雪峰:协调。其实最耗费时间可能是开会,但是耗费精力、耗费脑力或者最让我头疼的还是协调。

极客时间:什么样的协调工作?

张雪峰:我说的协调可能包括大家发牢骚,有些是个人的原因,有些是团队之间的矛盾,包括还有技术跟业务团队之间的协调。当然和业务团队有矛盾我是可以顶在前面,但是有时候是业务团队去投诉跟他对口的那个技术团队,这种情况我就很难办。

有一次业务团队说,雪峰,我这边缺人,你看你们中间件团队都已经很稳定了,异地多活都搞了,还要那么多人干嘛?后来其实我也有点被他们“绑架”,我就强行跟兰建刚说,我没法完全照顾你们感受,你们要出人去做业务。

后来建刚被我逼着去调人,建刚也是比较强势,但是他不会不征求意见,尤其是涉及到调人。征求意见的时候大家都不愿意去做业务。后来勉勉强强有个团队去做业务了。最后证明这次试验不成功,业务部门也不满意,被征调同学更不满意,他说我这辈子绝对不再做业务了,不管离不离职。

因为他们有技术洁癖嘛,但业务那边催得急,他想做得好很难的,就觉得都是些什么狗屁需求、追求代码洁癖有错吗、质量不过关宁可推迟上线等,反正就是各种不爽。

极客时间:这种抱怨如果有失偏颇了你会怎么处理?

张雪峰:我更倾向于相信他。

极客时间:他说的这句话,如果让做业务的同学听到,别人可能会觉得很不舒服。

张雪峰:站在业务的角度这样想是对的,但是我很难去强扭、强迫他接受做业务更有价值。当然业务有同等价值,做业务很有意思,只是每个人想法不同。

中间件团队建立了最扎实的地基,但是他们最讨厌装修。尤其讨厌什么呢?装修也就算了,你让我做中国式装修,每家都要推翻前面的房东,这个他绝对受不了。如果让他统一样式,精装像美国那种房子他也能装,因为一行代码就可以搞定了,但让他天天搞这种又不是完全重复,但是思想又是重复的东西,他就觉得很无聊,就感觉这是对他技术的侮辱。

我面对的是这种情景,所以我也不强扭,我也不能因为他做这个不成功就惩罚他,因为他毕竟也是勉勉强强来做支援,他也没有说不负责任,还是把这事情干了的,只是说这辈子再也不做业务了。

除非面临的问题是公司业务技术团队全部离职,必须你中间件团队冲上去了,那没什么悬念,你不做就走人,但没到这个程度,因为组织大了还是有一定弹性。我还是尽可能尊重个人选择。

极客时间:在技术跟业务中间,你其实是一个缓冲区?因为一般的业务它总是要求快,对吧?

张雪峰:对,但我也不是缓冲区,我就是顶包,这可能是我自认稍微帮兄弟们担起来的点,包括出大的故障我自己扛,或者技术跟业务有矛盾的时候。

当然我自己团队内部不存在顶不顶包的问题,我肯定要协调他们,不可能所有的事都我来担,也没必要,总是老大自己担责也是有问题的,你不能走到另一个极端,什么都老大担,那小弟就会感觉反正犯错没有成本,就更不注意了。

饿了么早年这样是OK的,那时候大家比较单纯,而且大家责任心非常强。但是当你团队扩大规模之后,一个是平均素质下降,二是责任心也会下降,这是正常的,这是人的本性。因为地盘就这么多,1800人做这么多模块,肯定是利益分配不均的。

其实程序员就关心我做的东西能不能跟同学去吹牛。今天你做了一个不成功的东西,和一个天天可以跟同学或老婆吹牛,说这功能是我开发的,这两个事情,对于人的成就感肯定不一样,我不可能让所有人都去做那种天天可以跟同学或老婆吹牛的事情,总要有人去地里面浇水的,去收割的毕竟少。

评论