【模块三:职业成长】39|能力维度四:如何从做技术到为企业创造生存优势?

news2024/10/7 9:24:27

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 理解整个决策的背景。

  • 理解决策的制约因素。

  • 在你所精通的领域提供尽可能多的依据,在最大程度上降低小决策的不确定性。

  • 从你所精通的领域出发,为最终决策做出建议(也就是拍个板)。

  • 尽可能多的参与到决策讨论中,了解其他领域的不确定性和收敛方法。

  • 无论最终决策是否与你的建议一致,都要尽可能地理解最终决策背后的逻辑。

  • 之后的数月甚至是数年,持续关注决策的后续进展,反思自己提供的决策建议中那些缺失和误判的部分。

  • 之后的数月甚至是数年,关注其他领域后续的变化,思考最终决策的正确性。注意,不仅要看最终效果,还要看判断决策逻辑和过程的对错。哪怕决策是对的,那么其中有多少成分是靠运气呢?有多少成分来自对当前环境和未来趋势正确的判读?如果判断错了,那么其中有多少是假设错了,有多少是方法错了。

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

CTO 到底是做什么的?

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

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

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

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

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

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

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

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

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

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

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

  • 做迁移会增加技术投入,降低业务迭代速度。

  • 云原生迁移带来的回报,是个长期且相对缓慢的释放过程。在迁移前期,由于周边技术的不成熟、投入大,资本回报反倒比较小。

  • 最重要的一点,迁移到云原生并不能给企业带来当下的生存优势。而长期的生存优势,跟云原生并不是能简单证明的关系。

所以从 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 或者总架构师的器重,对于你的架构师成长来说很关键。不仅要提升自己决策建议的质量和思考力,还要从自己的视角出发,为他们提供最高质量的输入。同时,还要最大程度地参与整个决策过程,从而提升自己的判断力。当然,通过不断的反思来进一步提升判断力,也是必不可少的一环。

思考题

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/632712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅尝 xen 虚拟化

前言 之前分享过使用 oVirt 部署私有虚拟化环境, oVirt 是基于 KVM 虚拟化开发了一系列的管理工具, 以 Web Console /CLI 的方式交付使用. 今天记录和分享的是在 VMware Workstation 中使用 Alpine 作为基础操作系统部署 xen 虚拟化环境的简单测试. xen 基本概念 xen 可以理…

chatgpt赋能python:Python的发音

Python的发音 Python是一种广泛使用的编程语言,用于web开发、数据分析、科学计算等众多领域。然而,Python这个词汇的发音在不同的地方却存在差异。在本文中,我们将介绍Python的发音,解决大家的困惑。 发音方式 Python在英语中常…

【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现

文章目录 TOPSIS简介方法和原理数学定义数学语言描述现实案例 正负理想解定义实例 量纲 TOPSIS法的算法步骤1.用向量规范化的方法求得规范决策矩阵2.构成加权规范阵C(c~ij~)~m*n~3.确定正负理想解的距离4.计算各方案到正理想解与负理想解的距离5.计算各方案的综合评价指数6.排列…

STM32源码阅读记录之HAL库(SystemTick)

问题 HAL_Delay是怎么做到可以延迟控制的? 分析记录 步骤01:看函数本身 void HAL_Delay(uint32_t Delay); /*** brief 此函数根据变量递增提供最小延迟(以毫秒为单位)。* note 在默认的实现中,SysTick计时器是时基的来源。它用…

【Leetcode -225.用队列实现栈 -232.用栈实现队列】

Leetcode Leetcode -225.用队列实现栈Leetcode -232.用栈实现队列 Leetcode -225.用队列实现栈 题目:仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 …

chatgpt赋能python:Python实践:如何升级pip

Python实践:如何升级pip Python作为一门高效的脚本语言,被广泛应用于数据分析、人工智能、Web开发等领域。而pip则是Python的包管理工具,是开发Python应用的必备工具。但是pip在使用过程中,有时候会出现版本不兼容或者出现漏洞等…

chatgpt赋能python:Python取两位小数的方法

Python取两位小数的方法 介绍 Python是一种高级编程语言,因其简洁易懂、跨平台等特点,被广泛应用于科学计算、数据分析、网站开发、人工智能等领域。在编写Python程序时,我们经常需要将浮点数精确到小数点后几位,比如精确到两位…

【0基础教程】Javascript 里的分组正则Capturing Groups使用方法及原理

一、从最简单开始 现有一个字符串: “1-apple” 需要提取出 1 和 apple 来,对应的正则表达式很简单: ^(\d)-(.)$ 对应的代码也比较简单: const str "1-apple"const regexp /^(\d)-(.)$/let match regexp.exec(str)c…

chatgpt赋能python:Python如何升序输出?从入门到实践!

Python如何升序输出?从入门到实践! 作为一门高级编程语言,Python是目前应用广泛且最为流行的一门语言之一。它逐渐成为开发者的首选语言,因为它易学易用,可读性强,支持多种编程范式,提供了强大…

chatgpt赋能python:如何升级Python的pip版本

如何升级Python的pip版本 如果你使用Python来进行程序开发,那么你一定需要用到pip,它是Python的包管理器,用于安装和管理各种Python库。 不过,一旦你开始使用pip,你可能会遇到一个问题:你的pip版本可能会…

软考A计划-系统架构师-学习笔记-第二弹

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

前端vue基于原生check增强单选多选插件

前端vue基于原生check增强单选多选插件, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id12979 效果图如下: #### 使用方法 使用方法 <!-- 多选组件 checkData&#xff1a;多选数据 change&#xff1a;多选事件 --> <ccCheckView…

FreeRTOS:软件定时器

目录 前言什么是硬件定时器什么是软件定时器 一、回调函数二、定时器的配置2.1软件定时器分类2.2定时器相关API函数2.2.1创建软件定时器2.2.2开启软件定时器2.2.3停止软件定时器2.2.4复位软件定时器 三、软件定时器实验3.1实验要求3.2实验代码 前言 什么是硬件定时器 CPU内部…

Limma | 三个组的差异分析怎么分析做呢!?~

1写在前面 高考结束了&#xff0c;不知道各位考生考的怎么样&#xff0c;这种时候总是几家欢喜几家忧&#xff0c;但这也是实现阶级流动的最佳机会。&#x1f914; 回想自己高考过去10几年了&#xff0c;不能说学了医后悔吧&#xff0c;只能说后悔至极&#xff0c;苦不堪言啊&a…

Linux -- 用户和组

目录 一、root用户&#xff08;超级管理员&#xff09; 1.1 切换用户命令&#xff1a;su 和 exit 命令 1.2 sudo命令 二、用户、用户组 2.1 用户组管理 2.1.1 创建用户组 2.1.2 删除用户组 2.2 用户管理 2.2.1 创建用户 2.2.2 删除用户 2.2.3 查看用户所属组 2.2.…

Linux系统防火墙iptables

目录 一、iptables防火墙概述 1.简介 2.netfilter/iptables关系 3.iptables的四表五链 &#xff08;1&#xff09;四表 &#xff08;2&#xff09;五链 4.数据包过滤的匹配流程 &#xff08;1&#xff09;入站 &#xff08;2&#xff09;转发 &#xff08;3&#xff…

前端vue简单好用的上拉加载下拉刷新组件,支持列表分页 本地分页

前端vue简单好用的上拉加载下拉刷新组件,支持列表分页 本地分页, 下载完整代码请访问uni-app插件市场地址: https://ext.dcloud.net.cn/plugin?id12942 效果图如下: #### 使用方法 使用方法 <!-- pullDown:下拉刷新 back-top: 回到顶部 --> <ccPullScroll class…

OMG--IDL(Interface Definition Language)

OMG--IDL&#xff08;Interface Definition Language&#xff09; 1 概述2 内容缩写IDL 语法和语义概述词法约定ISO Latin-1的字母字符如下表十进制数字字符图形字符格式化字符Tokens注释标识符冲突规则转义标识符关键字IDL识别的其他字符字面量 预处理IDL 语法构建块核心数据类…

dubbo流量录制异常(dubbo2.7.3)的问题解决排查

背景 我们自己基于jvm-sandbox-repeater做的流量录制出现了如下的问题, 从这个问题的堆栈信息来看&#xff0c;是在针对dubbo的调用的时候判断这个dubbo的返回是否有异常的时候&#xff0c;报了空指针异常了。 分析 我们看下具体出错的代码地方是怎么样的吧。 Overridepro…

chatgpt赋能python:Python怎么判断素数:一篇完整指南

Python怎么判断素数&#xff1a;一篇完整指南 Python是一种广泛应用于编程领域的语言&#xff0c;它非常适合初学者。在许多编程任务中&#xff0c;一个常见问题是需要判断一个数字是否是素数。本篇文章将介绍Python是如何判断素数的&#xff0c;并带领读者详细了解其中的细节…