40 职业成长(上):架构师成长的必要条件是什么?
你好,我是郭东白。
到上节课为止,我们的内容已经覆盖架构师的五个核心能力了。不过无论做什么事情,都必须先问自己这么一个问题:我做这件事情的优势是什么?也就是说,我凭什么可以成长为比别人更优秀的架构师?
其实这个问题背后隐含着两方面的诉求:一个是成长为优秀架构师的必要条件,另一个是成长为优秀架构师的充分条件。
我们今天先来讨论第一个话题。说起必要条件,让我想起了小时候背过的古文《为学》。其中有一句:“子何侍而往?” 曰:“一瓶一钵足矣。” 用白话文说就是:你凭什么可以去那么远的地方呢?有个瓶,有个碗就可以了。
其实今天我们要找的,就是做架构师的一瓶一钵。
代表架构师成长的五种角色
我们先回顾一下代表架构师成长的五种角色:程序员、兼职架构师、跨域架构师、总架构师和CTO。我们先看一下下面这张图,通过这个总结思考,我们能看到架构师这个职业背后更深刻的内涵。
如上图所示,这五个角色分别代表了架构师成长的五个阶段。在不同的阶段,架构师关注的是软件架构的不同侧面:
- 在程序员阶段,主要关注需求实现的结构化,也就是一个模块内有关业务的部分。
- 兼职架构师阶段,主要关注模块整体,以及与业务无关的横向问题。
- 跨域架构师阶段,主要关注不同模块间结构合理性的问题。
- 总架构师阶段,关注技术架构的长期正确性。
- CTO阶段,关注企业的长期生存。
可以看出,这五个阶段其实是关注点不断扩展的过程。回想上节课我提到的双重人格, 现在我要说,在架构师成长的整个生命周期内,最好培养出这五种人格。不同的人格,代表站在不同的立场,从不同维度去审视公司软件结构的合理性。
就像我现在是CTO,依然保持写代码看代码的习惯,依然要去看横向问题的投入,依然需要在团队间争吵不休时对跨域问题作出裁定。与此同时,我还要履行总架构师和CTO的职能。
我们之前也提到了,任何一个架构师,都要关注从宏观到微观的所有问题,只不过权重有所差异罢了。也就是说,对于这五种人格,并不是每个职业阶段只需要其中一种,而是需要兼具。只是随着职业的成长,你的关注点会逐渐向宏观问题迁移,更关注企业的生存。
这五种人格其实代表了五个不同维度的能力。所以哪怕不做架构师,也必须要想办法提升自己在这五个维度上的能力。比如从程序员成长为一名有影响力的自身程序员,也同样需要这些能力。
那么我们思考一下,想培养出这五个维度的能力,需要具备什么必要条件呢?
必要条件之一:思考力
如果说架构师成长的必要条件只有一个的话,我认为只能是思考力。更准确地说,是独立思考的能力。我们在模块四会专门讲怎么提升思考力,这里我先把概念解释清楚。
在我看来,思考力是在我们生活和工作中,通过独立思考带来有效结论的能力。
这里的关键词有两个,首先是独立思考。独立,并不是避免跟别人讨论,或者是不上网查资料、不参加会议。而是指得出的结论,主要来自如下三个方面:
- 有别于其他人的视角;
- 不同的证据组合;
- 不同的思维方式。
也就是说,通过你的独立思考,能得出区别于他人的结论。
其次是“有效”,也就是为公司或团队带来足够的价值。简单来说,就是你看到了别人看不到的东西,并且这些东西对于公司来说是有价值的,而不是把大家的注意力分散到了没有价值的方向上。
有很多人把思考力误认为是学习能力。其实这两个能力完全不同,后者指的是把已有的知识高效吸收和利用的能力。好的学习能力会帮助你获取更多维度的证据。而思考力是创新的源泉,是得到新的有效结论的能力。
我在开篇词就提到思考力是架构师的“渔”,为什么这么说呢?
一方面,随着网络的普及,这个世界获取知识的成本越来越低,知识扩散的延迟越来越低。作为架构师,如果所有的知识来源就是知乎、极客时间和StackOverflow,或者是某本流行书籍的映射,就没办法通过学习来持续获得额外的竞争优势。
另一方面,我们现在的互联网其实是充分竞争的状态,解决方案远远比市场需求多得多,从基础设施到云,到服务框架,到展示模型,到端上交互,有多种组合。在这种情况下,我们缺少的往往不是答案,而是甄别多个答案优劣的能力。
当我们面临一个问题时,多数人都能Google出十个答案来。获取答案不难,难在通过对场景做推演,也就是靠你的思考力,最终排除九个次优的答案。
这就是为什么我认为思考力是互联网时代软件架构师的必要能力。
必要条件之二:信息内化能力
谈到架构师成长的必要条件时,很少有人会提到信息内化的能力。但是根据我过去十多年的观察,在架构职能上做得比较好的人,一般都具备一定程度的信息优势,以及高效内化这种优势的能力。
所谓信息优势,就是你所在的环境有大量高质量的信息,或者你获取这些信息的能力比别人强,渠道比别人多。所谓内化,是指能够从这些源头中有效总结,比别人积累了更多的知识。这里我特别用信息,特指独立于客观存在的那些内容。用知识,指我们脑海中可以随时随用的那些内容。
信息内化的过程,也就是从接触信息到消化吸收成个人知识的过程。如果能更进一步把这些知识系统性地表达出来,你就是一个很了不起的知识传播者了。
信息优势的例子有很多。比如说十几年前国内架构做得好的人,往往英文很好,因为他们在读文档上就占了优势。再往后是海归,带着在国外大厂积累的互联网经验和知识,也很受欢迎。因为很多国外大厂的技术细节没有对外开放,别人学不到。再往后就是一些随着国内大厂成长起来的老兵,在PC和移动互联网高速增长的过程中积攒了大量的实战经验。
我出国很早,一直在国外大厂工作,在国内互联网爆发前积累了一定的信息优势。如果你是一个刚入行不久的程序员,怎么去寻找自己的信息优势呢?这让我想起前不久在极客时间直播,分享架构师成长这个话题时弹幕中出现了如下的问题:
- “我在一个小公司,用户量少…验证不了架构设计是否合理。”
- “公司规模小…接触不到很完整和很主流的架构模式或者实战机会。”
- “我们公司太大了,我就是一个小螺丝钉,知识面不够广。”
- “我们公司有专职的架构师,根本轮不到我来做架构,专职的架构师还抢不过来呢!”
- …
有相当多类似的问题,我梳理总结了一下,同学们基本上就是这么一个需求模式:
- “我想在大公司里求广度。”
- “我也想在小公司里求深度。”
- “我也想在大公司里快速成长。”
- “我也想在小公司有一个高度稳定的职位来钻研技术。”
我引用一个禅宗公案来回答这类问题:
- 行者问老和尚:“您得道前,做什么?”
- 老和尚说:“砍柴担水做饭。”
- 行者问:“那得道后呢?”
- 老和尚说:“砍柴担水做饭。”
- 行者又问:“那何谓得道?”
- 老和尚回答说:“得道前,砍柴时惦记着挑水,挑水时惦记着做饭;得道后砍柴即砍柴,担水即担水,做饭即做饭。”
无论是大厂还是小厂,都用不同方式提供了架构师成长的信息优势。大厂更有利于增加深度,小厂更有利于拓展宽度。如果你在大厂里,就要多解决难题,把这种信息优势转化成某个领域的深度。如果你在小厂里做事情,就要把小厂提供给你的信息优势内化成所在领域的宽度。
这个过程,会帮助你把外部的信息优势内化成内在的知识优势。当处在一个有相对信息优势的环境中,你又比别人更擅长发现、总结和抽象知识,最终就会形成知识优势。
这是一种从大量信息中提炼出知识模型的能力。这些知识最终固化到你脑海里,帮助你的一生。我在模块一介绍的六个法则,以及这个模块里举的稳定性的六个法则,就是从信息到知识的典型例子。
当然,最佳的选择是在一个小厂,然后随着小厂成长为大厂,能同时提升自己的深度和宽度。要做到这一点,就需要有足够的眼光了。关于这个话题,我们在这个模块的最后会有讨论。
总结一下,在当前高度竞争的环境下,缺少信息优势,很难在架构师的成长过程中胜出。我们需要深度理解自己所在企业和行业的特点,找到自己的特定信息优势,并最大程度地内化这些信息来获取成长,同时也能帮助到公司。
必要条件之三:适应力
通过前面几节课的分析,我想你已经看到了:从程序员到架构师再到CTO的职业成长阶段,与其他职业相比有个重大的差异,那就是能力的不连续性。
有的职业,比如书法家、工艺美术家、中医和厨师等,匠人精神就非常适用。他们在职业生涯中不断打磨同一种能力,所以越老越值钱。
但是架构师这个行业很不一样,一个人从程序员到CTO的成长过程要经历多次蜕变。比如在职业初期要沉迷于技术,而一旦成为CTO,反倒要不断思考技术之外的解决方案。 在职业初期基本上不需要什么人际关系能力,但是作为一个跨域架构师,要想解决好冲突,这个能力就是绝对必须的了。
所以架构师成长的一个必要能力就是适应能力 (Adaptivity)。在不同的成长阶段,根据环境和场景不断调整和扩大自身的能力维度,目标是最大化自己的产出,以及对企业的增值。
我们在模块导读里提到过,架构师职业成长中需要的不止是这五种能力。其他能力,比如沟通交流和人员管理等,也是不可或缺的。
为了把这个道理解释清楚,我把程序员到CTO成长过程中所要经历的能力变迁,用下表来描述一下。这个表的主要目的是展示出架构师成长过程中的变化,所以我没有追求完整性。还有很多能力,比如写文档、 做培训、跨职能协同、 规划落地等,没有在下表中描述。
我把这些能力大致分为四组:
- 第一组是伴随职责而扩大的岗位技能;
- 第二组是个人技能;
- 第三组是管理技能。
- 第四组,就是我们前面几节课提过的每个角色的工作范围、工作重点和核心能力,这里就不重复解释了。
第一组技能是靠时间、经验和机会磨练出来的,不能仅仅靠读书学习来提升。从程序员到CTO,所处理问题的不确定性越来越高。而在应对不确定性的过程中,业务理解能力也变得越来越重要。更大的领域范围,也要求更大的技术宽度和更好的沟通交流的能力。
第二组技能是可学习的,往往学校里的优等生会比较出色,但是随着架构师职责的扩大,对技术深度、项目推动交付的能力和执行细节的关注,就会越来越少。所以这组技能对于职业初期的成长来说很重要,随着时间的推移,慢慢地就没那么关键了。
第三组技能是管理宽度,一般来说,架构师这个角色没有下属,少数的首席架构师会带小团队,对管理能力的要求不高。但是CTO的管理幅宽非常大,往往会突破Dunbar Number,也就是社会学家认为的一个人能够有效管理团队的大小。
这个数字有很多版本,比较流行的是150。但是据我的观察,互联网软件行业高速变化,每个人的工作职责要宽很多。如果管理幅宽超过100人,就很难靠个人管理来有效协调所有人的工作了,而必须靠下属来协调大家的工作。
这时候一个人真正的管理能力就凸显出来了。请注意,不是社交能力,而是基于自身经验和管理科学的管理能力。这和之前程序员到架构师的个人贡献者的角色跨度非常大。也正是因为这个原因,一个优秀的个人贡献者,在成为管理者的过程中往往会栽很多跟头。
总结一下,多次角色的转移、多次的能力变迁和职业后期复杂度的迅速提升,意味着适应力对于架构师而言是一个成长的必要条件。
小结
上述这些必要条件其实并不完整,还有其他一些高收入职业成长的必要条件,比如自驱力、学习能力、影响感召力、推动力、沟通交流能力和管理能力等。不过我认为大多数都是普遍存在的能力,或者是没有高区分度的能力。
举个例子,架构师本身是个非常自驱的职业,所以自驱力也是架构师成长的一个必要条件。但是我觉得整个软件行业已经进入极度内卷的竞争环境中,无论是做程序员、产品经理,还是UED,自驱力都是标配,我就不专门提了。
当然,我选择思考力、信息内化能力和适应力作为架构师成长的三个必要条件,还有一个很重要的原因。我认为这门课就是在帮你做架构师成长的战略规划。所谓战略,就是根据长期目标做合理取舍,要主动放弃一些能力,然后才能专注在另外一些能力上。
就拿我的职业发展来举例。我的职业生涯已经走过了二十多年,但还有很多能力仍然有欠缺。这些短板之所以没有影响到我的职业发展,主要是靠一些相对强的能力来给自己遮丑。如果我建议你修习100个能力,对你来说其实根本没什么帮助。在我看来,思考力、信息优势和适应力就是一个优秀架构师成长的必要条件,已经足够了。
思考题
请你务必完成这个作业,目的是强迫自己尝试与他人不同的思考角度,最好还能给出一些具体的理由。举个例子:老师,我不认同你的观点,我认为架构师成长的三个必要条件不是思考力、信息优势和适应力,而是某某条件,原因如下。
欢迎把你的思考和想法分享在留言区,我们下节课再见!
- 罗均 👍(7) 💬(3)
尊敬的东白老师,首先学生非常认同您的观点,架构师成长的三个必要条件应包含思考力、信息优势和适应力。 学生但作思维,是什么力在背后构建或促成这三种力?学生觉得应该是心力,即稻盛和夫“一切始于心而终于心”的心力。 如果一定要学生提出反对老师观点的意见,学生觉得无论担任任何角色,都不应该过多地考虑自我。而且在职业成长中,我们需要深刻理解,老师为我们总结的这三个必要条件,但并不能执着于此。《金刚经》:“若菩萨心住于法,如人入闇,则无所见;若菩萨心不住法,如人有目,见种种色。”又如习总书记的“我将无我,不负人民”,无论身处什么职位什么角色,首先应该一心为公,例如架构师,就应该做到上不负产品需求,下不负开发执行。 正是因为一心为公,自然需要在更长远更广阔的空间思考——思考力;心无旁骛,一个保持clean的mind自然可以有效地transform information to knowledge——信息内化力;“素其位而行乎其位”更是千古儒家的“适应力”准则。只是这些大道理,三岁小孩懂得,八十岁老翁行不得。但求穷则独善其身,达则兼济天下而已。 望老师指正批评。
2022-06-04 - BIZ_UI_3 👍(4) 💬(2)
机遇算不算必要条件呢?有些有能力成为架构师的人缺乏证明自己的机会?
2022-05-31 - killer 👍(3) 💬(1)
我有什么优势?最大的是决心
2022-10-10 - 亚林 👍(2) 💬(1)
天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。人之为学有难易乎?学之,则难者亦易矣;不学,则易者亦难矣。 吾资之昏,不逮人也;吾材之庸,不逮人也。旦旦而学之,久而不怠焉,迄乎成,而亦不知其昏与庸也。吾资之聪,倍人也;吾材之敏,倍人也。屏弃而不用,其昏与庸无以异也。圣人之道,卒于鲁也传之。然则昏庸聪敏之用,岂有常哉? 蜀之鄙有二僧:其一贫,其一富。贫者语于富者曰:“吾欲之南海,何如?”富者曰:“子何恃而往?”曰:“吾一瓶一钵足矣。”富者曰:“吾数年来欲买舟而下,犹未能也。子何恃而往?”越明年,贫者自南海还,以告富者,富者有惭色。西蜀之去南海,不知几千里也,僧之富者不能至,而贫者至焉。人之立志,顾不如蜀鄙之僧哉? 是故聪与敏,可恃而不可恃也,自恃其聪与敏而不学,自败者也。昏与庸,可限而不可限也,不自限期昏与庸而力不学倦,自立者也。 《为学一首示子侄》 嗯,要好学
2022-08-31 - 徐李 👍(2) 💬(1)
我觉得架构师成长的几个必备点是: 1.学习提升自己技术广度和深度 2.突破技术思维枷锁,通过商业角度看问题的能力 3.协调沟通能力 4.管理能力 之前看过一句话,就是技术能解决很多问题,但是不能解决全部问题
2022-06-29 - spark 👍(2) 💬(1)
郭老师,take away~~~首先不能"跑题",思考力、信息优势、适应力是结论,需要和论题、论据(包括假设)相呼应,推理过程也要具备可解释性~~~ 思考力类似得到基函数的能力,用数学解决问题,例如,利用傅里叶变换解决压缩问题。需要找到领域支撑点的关键信息~~~ 信息优势关注点是决策模型,包括论据的来源,信息的来源和质量。洞察力很关键,《跟着高手学复盘》专栏中CLAP模型可以提升洞察力。C(Comparision),L(Logic),A(Acknowledge),P(Project)~~~ 适应力是人的问题,我们想做一个变色龙,还是恐龙。有人就是想做恐龙,很丑,还以为能够追上我们班班花的爱情~~~
2022-05-31 - tiny 👍(1) 💬(1)
CTO 需要关注的战略是指“业务”方向上的吗? 那么CTO 和CEO 的角色职能怎么区分呢,感觉是不是有重叠?还是说CEO为此负责的权重比较大一些?
2022-08-01 - Steven 👍(0) 💬(1)
郭老师好, 这节课收获颇多,非常感谢。 思考题是要为了扛而扛吗?哈哈~ 从另外一个维度补充一个“力”,其实也不新鲜,即:体力。 没有一个好身体,那只能是有心无力,或者壮志未酬,这样的例子太多了。很多时候拼到最后拼的就是身体,就是体力。 所以无论多忙,也要抽出时间用在身体的保养上面,包括锻炼、饮食等等。
2022-06-12 - 术子米德 👍(0) 💬(1)
🤔☕️🤔☕️🤔 * 📖:必要条件给到架构师,有助于架构师成长? * 🤔:必要,没它不行,有它不见得行。这样的条件,如果从成功案例溯因,总能找出几个原因,设定为所谓的必要性,如果从失败案例遡因,除了能找出导致失败的原因,更能够假设,如果具备额外的哪些条件,是否会有助于成功。这么说来,只要失败后,再次有机会时带入假设,把所谓的必要条件补充进去,就能够得到它是否真必要的反馈。对成功而言,溯因到成功的必要条件,大概率不会在下一轮去掉这个条件,故意去尝试失败看是否真必要。所以失败的假设,能要快判定是否真必要,成功的溯因会让真必要来得晚一些。
2022-06-09 - 剑八 👍(0) 💬(1)
业务sense在业务架构这块很重要 思考力加适应学习加业务sense
2022-06-04 - 欧阳绍聪 👍(0) 💬(3)
郭老师,不想去抖音。请问补充材料是不是可以也发这里?或者是不是有私人的博客可以让大家都能第一时间接触到?
2022-06-02 - softbaddog 👍(1) 💬(0)
其实老师提到的这三种能力是层层递进的关系,已经把IT领域所需的软技能几乎都包含进去了。思考力是根基,信息内化其实就是学习力+思考力的结果,内化后的知识,学以致用就是适应力。如果说还需要什么能力,可能就算是心力和体力了,但那在任何行业都是需要具备的。老师总结的这三点很受用,记住了。
2022-07-20 - 少年锦时 👍(0) 💬(0)
个人认为 架构师成长中不可或缺的还有自我肯定与坚持
2024-05-14 - Jervis 👍(0) 💬(0)
此处有误,应该是资深程序员吧 比如从程序员成长为一名有影响力的自身程序员,
2023-02-18 - 杜秀清 👍(0) 💬(0)
终于明白总架构师和CTO的区别了,因为公司大部分都是一肩挑。
2022-07-19