郭东白的架构课41

你好,我是郭东白。今天这节课是架构师能力维度的第四部分,我们来继续探索架构师成长过程的能力跃迁。不过今天我们会连续讲两个跃迁:从跨域架构师到总架构师(首席架构师)的跃迁;从总架构师再到CTO的跃迁。

我们之前简单提过了,要是能为CTO和总架构师解决他们所面临的问题,你必然能获得他们的信任和器重,从而加速职业上的成长。所以学习今天这节课,核心就是理解一个CTO或总架构师是怎么思考和决策的,以及怎么才能帮助到他们。

为什么要将总架构师和CTO这两个角色放在一起讲呢?在大多数企业中,这两个角色是合二为一的,由CTO一个人肩负。因此在接下来的讨论中,我们也会分析一下为什么会是这样一种情况。通过研究这个问题,能帮你更清楚地认识这两个角色的内涵,并从不同的角度帮助到他们。

总架构师的核心能力:做正确的技术决策

其实我们之前已经提到了,总架构师也是一个跨域架构师。为什么我们要把总架构师这个角色独立出来呢?从跨域架构师到总架构师,要跨越什么障碍呢?总架构师到底要具备什么特殊能力呢?

我们先研究一下总架构师作为跨域架构师的特殊性。在公司架构决策这个职能上,跨域架构师之间会形成上下级关系。但是总架构师不一样,他在软件架构决策这个职能上没有上级。也就是说,总架构师要为整个公司软件架构的正确性负责。

你可能要挑战我了。每个跨域架构师不也是为自己领域内软件架构的正确性负责吗?为什么总架构师就特殊了?

你这次的挑战是正确的。总架构师也是一个跨域架构师,所以像上节课我们提到的一样,在处理整体和局部冲突这件事情上,总架构师就是在执行跨域架构师的角色,从公司层面解决技术架构上整体和局部的冲突问题。

不过这两个角色还有一个很大的区别。请回想一下上节课中我们对跨域架构师下的定义,他的主要作用是克服局部不优,找到全局最优解。

但从公司层面来看,软件架构存在全局最优解吗?我们在模块一法则五关于外部适应性的讨论中提到过,软件架构的正确性,其实是面向未来的技术不确定性下的外部适应性。

这种正确性与还技术债和去除局部次优的架构缺陷不同。还债和去除缺陷都有明确的目标,但是对于一个企业而言,面向未来的架构正确性几乎永远没有明确的答案。我们之前在模块一最大化商业价值中提到过,技术发展、技术人才供给、商业竞争都有非常大的不连续性和不确定性。

举个例子,本来公司里很稳定的研发人员,可能由于某个技术热词而被其他公司挖得一干二净。互联网、移动端、全栈工程师、增长黑客、机器学习、云原生等,这些简历大词背后是汹涌的离职潮。公司的营收也不是永远稳定的,原本很稳定的业务,因为疫情可能就彻底崩盘了。

也就是说,从跨域架构师成长到总架构师,必须要跨越不确定性的障碍。

也就是说,技术架构是否正确,有诸多考虑因素。既有对技术未来的判断,也有对人才供给的判断,还有对公司内外部环境的判断。这里没有对错,只有对长期趋势、风险和收益的估计,是个需要拍板的过程。

通过上面这些分析,总架构师的角色定义也就呼之欲出了:在软件架构这个上下文里, 总架构师指的是当面对技术发展的不确定性时,能对未来有个清晰且正确判断的软件架构师。

顺便提一下,这个持续做出正确判断的能力,在亚马逊被叫作 Are right a lot。不过这个能力不是专指给架构师的,而是亚马逊 Leadership Principle 中间的一条,是每个人都要具备的领导力原则之一。

其实哪家公司不想要这样的人才呢?我相信在买彩票的时候,你肯定什么都能力不想要,就要这一个!

总架构师这种正确决策的能力,常常被叫作技术嗅觉。那么如何跨越不确定性的障碍,来提升技术嗅觉呢?

成长到总架构师需要跨越的障碍

我认为这里有个简单的答案,就是不断寻找高风险决策的机会。如果说我职业生涯中只有一个职业选择原则的话,那就是这句话。

其实说白了,就是要主动去冒险。我认为对大公司的架构师来说,这一点尤其重要。在大公司环境下成长起来的兼职或全职架构师,往往以解决实际问题为主,很少有做决策的机会。在重大的技术不确定性场景下,多数时候都是他的上级在做风险和利益的权衡,然后给出架构决策。

我在大公司里见到过很多优秀的跨域架构师,也为他们长期蜷缩在大公司里而感到惋惜。他们没有获得与自身思考力相匹配的决策机会。时间长了,不但决策能力退化,连勇气这个宝贵的品质也逐渐消失了。

正确决策的能力不是凭空出现的,与其他能力一样,都需要在不断的试错过程中反复打磨。既需要时间,也需要机会,更需要我们在模块一法则六中提到的相对友善的文化环境。

所以现在的问题,就是怎么才能提升高度不确定性场景下的正确决策的能力呢?归根结底就是思考力的提升。关于这个话题,我们将有整个模块四的内容来覆盖。这里先不展开了。

不过,如果你因为各种考虑无法离开一个舒适的环境去冒险,我还是要给一些具体的建议,来增加你参与类似决策的机会。也就是说,怎么帮助总架构师做一些决策,让他每次做重要决策的时候都能想到你。

首先有一个必要条件:你在某个特定领域拥有明显的优势,能在公司层面胜出。如果你是公司里的稳定性大拿,对业界流行的方案有深刻的认知。那么总架构师做稳定性相关的决策时,肯定会叫上你。

你在帮助他人做高风险决策时,要做的事情就是:

  1. 理解整个决策的背景。
  2. 理解决策的制约因素。
  3. 在你所精通的领域提供尽可能多的依据,在最大程度上降低小决策的不确定性。
  4. 从你所精通的领域出发,为最终决策做出建议(也就是拍个板)。
  5. 尽可能多的参与到决策讨论中,了解其他领域的不确定性和收敛方法。
  6. 无论最终决策是否与你的建议一致,都要尽可能地理解最终决策背后的逻辑。
  7. 之后的数月甚至是数年,持续关注决策的后续进展,反思自己提供的决策建议中那些缺失和误判的部分。
  8. 之后的数月甚至是数年,关注其他领域后续的变化,思考最终决策的正确性。注意,不仅要看最终效果,还要看判断决策逻辑和过程的对错。哪怕决策是对的,那么其中有多少成分是靠运气呢?有多少成分来自对当前环境和未来趋势正确的判读?如果判断错了,那么其中有多少是假设错了,有多少是方法错了。

如果是在一个相对开放和包容的文化环境中,如果你真的有实力,肯定会被注意到,那么就会有机会通过上述方法来提升你的影响力。

CTO到底是做什么的?

我做了六年的CTO,在这个岗位中收获了不少成长。不过对这个问题的思考也一直在调整,审视自己的定位和看法。

我先说我当下的结论:CTO就是一个从技术视角出发,为公司做正确决策的CEO。

怎么理解这句话呢?作为一个CTO,你的长期目标和决策优先级和CEO是完全一致的,只不过你是从技术视角来思考公司的生存和发展,而非CEO所考虑的商业视角。

我在CTO的岗位上会时常问自己:CEO现在要什么?长期要什么?我怎么做才能帮到他?在技术视角上,我看到了什么机会和风险?他看到了吗?

在CTO这个岗位上,要关注整个市场的走向、竞争对手的增长,也要关注整个公司的经营状况、财务报表、技术团队的人力成本,等等。

因此,CTO的大多数时间,都是从技术视角出发与CEO思考同一个问题:如何为企业带来生存优势?以扩大企业生存优势来制定技术战略,是一个CTO的主要思考方式。通过技术创造生存空间,其实就是CTO最大的增值,也是他换取更多决策机会的最重要的资本。

这个视角有非常大的特殊性。除了CTO这个位置之外,所有的技术职能,包括总架构师,都是以企业技术实力的增长为第一优先级的。但CTO不是,企业的长期生存才是他决策的第一优先级。

通过上面的分析,我们很自然地也能给出CTO的角色定义:在软件架构这个上下文里, CTO是以扩大企业生存优势为技术决策唯一目标的架构师。

我有必要再进一步做个解释,先看一个简单的案例。假设你所在的行业竞争激烈,所在企业还没有积累足够的资本和领先优势。有一天,技术团队在讨论是否应该采用云原生的架构来替代现有的方案。

从长期的技术发展角度看,云原生会带来更好的计算伸缩性、更大的技术生态、更先进和更快速迭代的技术栈。 那么公司应该把线下的机器迁移到云原生上,才能加速在云原生技术栈上的积累。而且要立即规划和行动,才能尽早培养人才和积累技术优势。

但是从一个CEO的视角来看:

  1. 做迁移会增加技术投入,降低业务迭代速度。
  2. 云原生迁移带来的回报,是个长期且相对缓慢的释放过程。在迁移前期,由于周边技术的不成熟、投入大,资本回报反倒比较小。
  3. 最重要的一点,迁移到云原生并不能给企业带来当下的生存优势。而长期的生存优势,跟云原生并不是能简单证明的关系。

所以从CEO视角来看,对比其他更实用且有明确回报的技术投入,云原生还不是最高优先级。

这个案例说明了一件事情,作为CTO,需要站在CEO的角度上思考技术问题。技术先进性并不是首要目标,必须从竞争视角出发,以公司的生存和长期成长为目标来做技术取舍。在这个视角下,投入技术创新、加速技术壁垒的建设、放弃某项先进技术和某个团队,甚至寻找技术之外的选项,断臂求生,都是非常合理的选择。

这就是我对技术战略的理解。

CTO这个能力其实就是人们常说的商业嗅觉。只有商业嗅觉足够好,才能知道如何做技术战略,把最重要的技术投入放在最关键的位置上。如果回顾一下我们关于技术战略的加餐,你会发现我做的技术战略都是为公司的业务增长服务的。

现在,让我们回到这个模块的话题,需要跨越什么障碍才能在CTO这个位置上成功呢?

成长到CTO要跨越的障碍

其实我们前面的分析已经提到了,在软件架构这个话题上,CTO视角的独特性在于技术不是第一优先级,也不是唯一的选项。这种以商业视角而不是技术视角思考的方式,就是你必须跨越的障碍。

你可能会问我,你是CTO,如果技术不是第一选项,那你面临的肯定不是技术问题吧?我给一个重大技术问题,但技术不是第一也不是唯一选项的例子你就明白了。

某个CTO管理一个跨国业务。有一天,他的团队同学告诉他:“我们收到法务部门通知,某某国家发布了数据合规法令。依照合规要求,我们需要在这个国家建数据中心。投入是500人日,外加450万美金的建设成本,以及其他为数不详的维护成本。这个项目非常复杂,需要马上启动。”

CTO听到汇报后,没有批准任何技术预研,而是请政府关系(GR)部门联系了当地的监管机构和律师事务所,寻找不建设机房之外的其他选择。GR各种操作之后,机房不用建设了。不但省下了各种成本,也避免了系统复杂度的大幅提升。

这种在技术之外寻找解决办法的思维,是一个CTO所必需的。

但是,这种思维不是你我生来就具备的。我相信你和我一样,从摸到计算机的第一天起就爱上了它。我们相信软件是无所不能的,所以才选择了程序员这份职业。我们被它吸引,为它着迷,为学习新技术或者调试代码而废寝忘食,最后成长到CTO。

但正是这份对技术的着迷,现在却成了你在CTO角色上的最大障碍。在技术决策上,必须学会放弃团队利益,放弃技术痴迷,甚至放弃技术好奇心,然后才能为公司做出最大化生存优势的决策。

那么怎么才能帮助到CTO的思考呢?其实和前面讲的方法一样,要从自己的视角出发,为CTO提供最大的输入。同时还要最大程度地参与决策,提升自己判断力。

不过你可能又要问我了,你是建议我放弃技术思维吗?

错了错了,千万不能放弃。我做了6年CTO了,直到现在依然没有放弃技术思维。这是怎么回事呢?

总架构师和CTO,我的双重人格

在大多数企业中,CTO和总架构师这两个角色是合二为一的,由CTO一个人肩负。为什么呢?

首先,总架构师非常难找,公司对这个岗位的能力要求非常高。总架构师在软件架构正确性的判断能力上,在整个公司无出其右,包括CTO在内。

其次,这个岗位上的人才也很难从内部培养出来。因为这个角色的判断能力需要通过许多高风险的决策机会才能提升,很花时间,这也是大多数中小企业最稀缺的。

然后是成本问题。总架构师的职级和薪酬很高,从CEO视角来看,要招聘的人非常多,为这个岗位付出高薪,往往不是很多中小企业的第一优先级。

还有,这两个角色是汇报关系,但决策的出发点却完全不同,所以经常会发生冲突。发生冲突多了,渐渐就失去了信任,长此以往,难免分道扬镳。

最后是总架构师个人成长的诉求。很多总架构师期望自己做CTO,在更多维度上决策思考,一旦有机会,也会主动选择离开。

很难招聘,很难培养,又容易离开,所以在多数公司,这两个角色就必须由CTO一个人来承担了。

但是这两个角色对于一个企业来说都是必不可少的,我们一起看看下面这张图:

在这张图里,假设你是CTO,是最终的决策者。你有两个分裂的人格,一个是总架构师人格,一个是CTO人格,分别持有不同的视角和决策优先级。

  • 对待任何一个问题,CTO的人格都要和CEO保持高度一致,以企业的生存为第一优先级,并兼顾到商业竞争、业务、财务和产品的视角。
  • 而总架构师的人格,必须以技术实力的增长为第一优先级。

这两个人格要不断交锋:

  • 总架构师人格要把CTO这个决策者的视角,更多地拉到技术思维中去,以技术先进性和技术团队的利益为先;
  • 而CTO人格又要把CTO这个决策者拉到商业思维上去,以企业的长期生存优势为先。

这种冲突势必存在于每个日常的决策中,不断交锋。但是交锋的最终目标只有一个,就是为企业的长期利益做出最优的架构决策。

总架构师人格的价值,在于为CTO决策者提供不同的视角,并在合理的时候帮他顶住来自CEO的压力,坚持正确决策。而CTO人格的价值,就在于抵抗住内心对技术的痴迷,以及保护自己团队同学的本能,从公司全局出发作出最优决策。必要的时候,技术先进性、团队利益和架构合理性都是可以牺牲的选项。

所以说,做好总架构师其实有一个必要条件,就是具备和CTO建立深度信任的基础,以及能化解日常冲突的能力。

在频繁的冲突和信息不对称的情况下,做到这一点非常难,所以我最终选择自己同时保持两个分裂人格。

当然,我没办法长期在各个领域保持高度的注意力,所以也在不断寻找和培养具备总架构师能力和CTO能力的人才,通过他们的判断力来补充我的不足。

说到这里,也要提一下我依然在提升的一个能力,就是在各种压力下,找到尽可能多的兼具优秀商业嗅觉和技术嗅觉,并以企业利益优先的人才,然后把尽可能多的决策机会交给他。

如果你是管理者,我相信你会同意这一点的:对人才的判断力是任何一个管理者最重要的能力。能够相信、尊重、容忍与你不一致的判断,而且能够在他判断失误的情况下,帮助他提升,给他再次决策的机会。这才是一个了不起的管理者!也是我长期努力的方向。

不过这是个管理话题,不属于架构师成长的一部分,我们这里就不展开了。

小结

今天我们研究了总架构师和CTO这两个角色上在决策角度的差异性。总架构师的技术嗅觉非常重要,他要为整个公司软件架构的合理性负责,要面向未来的技术不确定性作出正确的判断。

但是CTO不一样,CTO的商业嗅觉更重要。技术不是CTO决策的第一优先级,企业的长期生存才是。总架构师的存在,会对CTO的视角形成补偿,把决策更多地拉到技术先进性和软件架构的长期合理性上去,所以想做好总架构师,就必须和CTO建立深度信任,要很好地化解日常冲突。

在当前职业发展阶段下,获取CTO或者总架构师的器重,对于你的架构师成长来说很关键。不仅要提升自己决策建议的质量和思考力,还要从自己的视角出发,为他们提供最高质量的输入。同时,还要最大程度地参与整个决策过程,从而提升自己的判断力。当然,通过不断的反思来进一步提升判断力,也是必不可少的一环。

思考题

到这里,我们已经介绍完了架构师的所有能力维度,我想请你思考一下:你是怎么看待这五个能力维度的?你认同这个划分角度吗?为什么?有什么建议吗?

欢迎把你的思考和想法分享在留言区,我会和你交流。也欢迎把课程分享给你的朋友或同时,我们一起进步。同时也邀请你关注我的抖音号“郭东白”。下节课再见!

posted @ 2022-12-29 16:05  易先讯  阅读(71)  评论(0编辑  收藏  举报