你好!

本周作客大咖对话的是同程艺龙副总裁、研发中心负责人余沛,其在2012年加入艺龙旅行网后,先后担任技术总监、首席架构师、CTO,除了直接负责过一线的基础架构相关系统、分布式计算、OTA垂直搜索引擎等工作外,同时推动了公司在技术方向上的全面转型、技术委员会体系的建立、技管分离等管理类工作。在加入艺龙之前,曾就职于百度,负责自动化运维相关系统建设。今天,我们和他聊了聊CTO的素质与能力,以及如何提升等话题。

极客时间:您好,能先简单介绍下您和您目前负责的工作方向吗?

余沛:我于2012年加入艺龙任技术总监,当时,首要任务是建立一支基础架构相关的研发团队,并解决困扰公司技术发展的两个问题。一是公司的技术栈需要从沿用超过10年以上的Windows体系全面转向Linux生态体系,在技术、架构、以及人员的转型问题;二是帮助公司搭建起支撑转型的一系列基础平台问题。

上述两个任务在达到一定的里程碑之后,又任艺龙的首席架构师,工作逐渐从平台类技术开始转向帮助公司直接业务提升的诸多业务类系统。2014年底升任艺龙网CTO,全面负责艺龙的技术团队管理工作。

去年年底,同程与艺龙合并后,我有幸担任新公司研发中心负责人,继续负责公共研发团队,以支持各业务线的基础及公共类研发任务。

极客时间:从技术总监成长为CTO,您觉得哪些能力与素质的提升最重要?

余沛:在我看来,素质与能力可以从两个不同的维度来谈。

素质维度

作为技术Leader,肯定是要先具备比较扎实的技术功底、以及相当广阔的技术视野。技术领域还是要先有内功,再谈管理;我们很难看到一个人在专业方向上不见长、却还能够把技术团队管理得漂亮的。

虽然技术到了一定深度之后能够更好的触类旁通,但先决条件是:你首先要在某个领域有过较深投入与研究,具备扎实的技术功底,才能更好的对宏观领域、多个技术方向有比较靠谱的辨识及判断能力。这有点类似于武侠小说中,只有自身先拥有一定功力,成为某个领域的高手,才能对其他门派的武功有速成,或者对好坏轻重的判断能力。

当然,技术领域的更新、变化总是很快,对于一些新领域、新工程的具体细节的掌握,可能不见得多于新进的年轻人。但如果你曾在某个领域有过相当的投入与研究,那么,做为一名技术管理者,至少能够在大的格局与方向上仍然有相当的把握能力。

能力维度

我认为,成为一名合格的技术领导者,至少应当具备四种能力。

1.对业务的理解能力

首先,在任何的商业公司中,技术的本质也是要为生产服务,帮助业务及产品完成的对应的价值实现。事实上,也不存在纯粹为技术而技术的商业公司。

其次,在互联网这个开放的环境及氛围下,大多数的应用类技术,其普及的周期越来越短、高端技术的平民化越来越快,能够形成技术垄断的领域越来越少。抛开商业规模形成的规模效应壁垒外,已经很少存在某个通用领域的技术只有你会,而别人没有解决方案(其实现不一定一致)的情况。

在这种前提下,互联网公司面临的技术难点往往衍生于其自身的业务独特性。以前经常讲的高可用、高并发、自动化运维、分布式,等等,这些曾经高大上的话题,在通用解决方案上已经没有什么新鲜的难以解决的困扰。许多方案都已经公开化,相应的人才也因流动性分布在许多公司。我还记得很多年前,NOSQL、DB读写分离、hadoop应用等应用技术都能在各种技术大会上引起聚焦,现在,它们早已是很多公司的入门标配了。

真正的难点在于,你的业务场景中存在的那些独特场景,以及为了解决这些特性需要的技术方案。如果一名技术Leader对自身的业务特性了解不够深入,则很难触达真正的痛点,帮助业务解决技术方面的难题。你可能是一名搜索专家,能够很轻易地构建一套传统的分布式搜索引擎,但是面对机票、酒店或电商等领域时,他们对于搜索的要求、难点在哪?传统的经验能够起到什么样的作用?还需要构建哪些额外的体系才能解决这些困难?这都需要与业务一起、有耐心的深入下去,才能够真正理解。

2.资源分配及收益的判断能力

在我看来,无论何种规模大小的技术管理者,都要不断做资源分配和收益判断。对于技术投入本身(无论人力的投入,还是设备的投入),也应该从成本与收益的角度判断。当然,不同的公司其资源规模不同,不仅仅是互联网行业,再扩大来看,其实所有行业及领域都是这样,对外看是收益,对内看成本。

当你是一名一线的研发人员时,总是对于技术实现怀有很大的热情,期望技术架构趋近完美,在技术规模上求大求广,追求技术指标极致完美。但当你站在技术Leader的位置时,这种差异就像是战场上,从一名武功高强、骑着千里马冲在第一线的战士,变成在战场后方的指挥所里,指挥战术、调度兵种打仗的将军。你要学会去思考,如何合理的调动人员与技术资源,一千个需求摆在面前,怎么分配技术人员?一千个应用要上线,要买多少服务器才够支撑?每年那么多技术热点出现,每一个都号称要改变世界、改变未来,而你只有100个每天都加班赶工的研发,这些热点跟还是不跟?这些人员还招不招?

拥有海量资源做小量产出不算本事,如何把资源的配置发挥到极致,帮助业务以尽可能小的成本获得尽可能大的收益?当一些热点技术出现时,思考一下以公司现状适不适合投入这一波新技术热潮?该投入多大的精力去研究它?或者在不同的阶段,掷以多大的资源投入?

以技术及业务项目的投入为例,花费了半年时间做重构,确实解决了许多技术问题,也有更好的扩展性和高性能,但这对于一个预期生命周期只有一年半载的业务而言,收益有多大?一个业务项目,预期生命周期很长、收益较高,初期为了快速上线做了很多技术上的妥协,后期在什么时候来还前期欠下的技术债务?决策在什么时间点、额外花费多少时间或人力成本来解决这些问题,才能在业务发展和技术支撑方面获得较好的平衡?

再以新技术的投入为例,历史已经给出了许多案例,有些公司对新技术操之过急,耗费巨大人力、财力,导致消耗过度而死。结果,等新技术在渡过最初的高成本孵化期后,其他公司可能只需要较少的投入就能追上来。也有对新技术的反应迟钝的公司,等别人应用落地后才进入,又发现为时已晚。

当然,有时候慢一下无伤大雅,“慢”并不是0和1的差别,即并非投入和不投入的差别,而是分阶段合理计算投入产出比的问题。

3.对团队的建设能力

众所周知,团队与人才是一个公司的灵魂,合理的人才梯队建设对公司未来的发展影响极大。作为技术Leader,如何在技术领域内吸纳人才、培养人才以及构建适合公司业务结构的梯队,是一个需要长期思考、复盘的重要命题。

在规模较大的公司,由于品牌、文化、待遇等方面的影响,对于中高端研发人员的吸引会比中小规模的公司更有优势。让我印象深刻的是,在上家公司时,能够源源不断的收到优势简历。来到艺龙时,在招聘方面确实感受到相当的落差和压力,也只能客观的去面对事实。相对于金字塔尖的公司,越往下它的影响力越有所减弱,吸纳人才的难度也会随之增加。

在品牌影响力存在弱势,薪酬待遇也需要遵循市场普遍认可的成本管控的情况下,如何解决团队的建设问题,确实经常困扰着我们。我认为,先做好两件事肯定是有价值的,一是对内和工程师们一起,创建良好的技术文化及氛围;二是对外打造良好的公司技术品牌影响力。

尤其在许多以业务为重导向的公司,如果规模没有达到一定体量,对内、对外,技术的发声和影响都相对弱势。做为技术Leader,如何既在公司内建立起良好的工程师文化,又能让业务、产品认同技术的价值,尤其是认同技术人员的价值,而不仅是把技术人员当成实现需求的工具(比如老牛、长工),让技术团队既能在工程项目中获得成就感,也能跟随公司在业务提升中获得荣誉感。同时,也能将自己公司沉淀下来的优秀技术理念、技术经验与技术氛围向外展示,吸纳更多的优秀人才,让外面的人也知道并认可这是一个很适合一起奋斗、一起成长的平台。

4.协调与沟通能力

至少在国内,绝大部分的互联网公司中,纯技术驱动的公司是不存在的,技术一定与产品和业务紧密结合。我套改一句《三体》中的法则:在公司发展过程中,各个部门对资源的需求是不断增加的,而公司的资源总量在一定的阶段是有限的。这种广义上的资源包括了一切,如对某件事情的决策权限、薪酬福利及晋升、公开的荣誉、时间的分配等等。因此,技术在与公司其它职能共同合作时,一但牵扯到资源的重新组织时,如何有效的沟通,或者为有效的沟通创建良好的条件与规则,也非常考验技术Leader。

毕竟从数量上讲,确实多数研发出身的人员都是简单、直接、专业性很强的“红脖子”。两个技术人员之间沟通还能相杀相爱,一但跨职能沟通时,就很可能你说你的,我说我的,牛头不对马嘴,仅剩鄙视相杀了。缺乏有效沟通环境的结果,往往就是看哪个部门的声音大或权力大。并不能对公司产生正向价值。

举个例子,在某些电商场景的业务风控中,熟悉产品运营、有多年风控经验的业务人员,在系统中依赖规则平台配置了很多风控规则。一直将业务风险控制在一个比较好的区间。直到有一天,技术人员通过机器学习的方法将这一过程自动化,在初期阶段可能效果未必比人工配置的结果好。如果这个业务有强烈的业务指标管控,且主导权最开始并不在研发职能内,那么在初期如何有效沟通,影响、说服业务部门愿意尝试和接受这样的技术项目引入?(毕竟出错了砸人家饭碗、成功了也是砸人家饭碗啊。)

诸如此类涉及到职能、部门之间的协调,如果技术Leader不能帮助公司建立起良好的沟通环境、不能帮助工程师们争取到良好的协同氛围,整天只是带着研发人员追求技术万岁的话,很难帮助技术在业务发展中进步,也很难帮助技术人员在公司内得到相应应的地位和成长空间。

极客时间:对于从技术管理者向CTO进阶的人,该如何提升这四方面的能力?

余沛:我有两点建议。第一点,一定要更加深入,也更加广泛的参与并了解公司的核心业务,跟随公司的核心业务一起成长。从横向维度思考业务,从纵向维度思考用何种合理的技术解决方案,这样才能对公司的整体技术方向作出完善的规划。

最好亲身到一线核心业务里走一趟,站在外面看跟亲身体验一遍是完全不同的感受。假如你是空降过来的,也务必说服老板创造条件,把自己先放进核心业务里去看看,哪怕这个核心业务原来并不由技术主导。在此过程中,再用自己的技术专业眼光,帮助公司重新审视业务。

比如某个工作一直由运营负责,他们会遵循一贯的做事方法,由于专业能力、惯性思维,可能想不到可以利用某项技术改进来更好的完成工作,而你尝试了解之后,很有可能发现技术可以在某个点帮助到他们,让他们事半功倍。

第二点,尽快将自己的目标从较为单一的技术类目标,或者项目进度完成指标,转变为公司的业务目标,力争把技术与业务这两条线聚合到一起。这非常重要,因为,只有将两条线聚合到一起,你才会更多地以公司、业务的视角,从资源分配和收益等角度去思考问题、判断现状。否则,若长期只关注技术,就会忽略背后需要的投入与产出,成本与收益等问题,无法顾全公司大局。

最后,我相信,技术团队中单项能力的最强者未必是CTO,相反,如果CTO是公司中技术最牛的人,离开他运维也不行、安全也不行、架构也不行了,那才是最危险的。

CTO的职能,一是把控好技术方向,清楚认知公司业务在哪些方向需要用到什么样的技术;二是帮助公司培养具体领域的技术强者;如果还有第三项,那就是在年会抽奖时还能review一下抽奖程序的代码。(开玩笑)

因此,技术管理者要成长为CTO的关键点首先在于观念的转变,打造好一个素质的骨骼与四个能力的肌肉。不仅能够帮助公司利用最优的成本解决问题,也能够让研发工程师们过得很happy。还得让外面的优秀人才源源不断地跳入。