概要
此文章基于车好多集团CTO-郭东白在”2021年5月28日Qcon软件大会第一天-如何成为一名优秀的架构师”的演讲后做的个人总结。
一、分享内容的大概内容
如何成为一名优秀的架构师,首先要把这件事可以以上帝的视角做好,对这件事情做完之后成为更好的自己。引用英国皇家学会的会训:任何一个人都不是更相信权威的结论,而是更多思考这些话背后的意义,事实是什么,数据是什么,真正正确的逻辑是什么。
二、题外话
基于此次软件大会,可以发现一个很突出的特点,优秀的技术人员会把细节把控的很棒,并且很实用,及时总结,及时反思,及时落地,从不拖拉,严于利己,心胸阔达,热爱分享(一定要学好知识,为什么呢?一是自己要学好,二是要传播知识,传播文化,自己学好了才能不误人子弟。)。
三、演讲逻辑
首先说业务,然后说现阶段模式,接着说出现的问题/痛点与改进方式,达到一种什么效果,再接着说出现的问题/痛点(前面的流程线:循环渐进的说),最后做总结。
细致入微,把某个点说透,让别人知道架构怎么演进,而不是只是让别人觉得自己公司的架构很牛,而不能实现落地。
在这次大会中各个演讲者的差距很明显(不仅仅是技术),真正脚踏实地做技术的大牛仅占比20%左右。
对架构师的价值创造分析
成为架构师,首先要思考怎么创造价值?
全球范围内都有架构师,为什么会有架构师?
软件架构师热
Software architect is 2020’s best job. So says job search engine indeed in its recent survey. The
worldwide platform with a database of over 250 million resumes compiled its top-25 list
considering salary, growth potential, and employer demand.
软件架构师是2020年最好的工作。求职搜索引擎在最近的调查中确实是这么说的。
worldwide这个全球平台拥有超过2.5亿份简历的数据库,列出了前25份简历
考虑工资、发展潜力和雇主需求。
什么是架构师
架构师:
1)a person engaged in the design of certain large constructions.
设计人员从事某些大型建筑物设计的人
dictionary.com
2)a person who designs and guides a plan or undertaking”
设计和指导计划或事业的人。
Merriam-Webster
软件架构:
Software application architecture is the process of defining astructured solution that meets all of the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability.
It involves a series of decisions based on a wide range of factors and each of these decisions can have considerable impact on the quality, performance,maintainability, and overall success of the application.
软件应用程序体系结构是定义一个满足所有技术和运营需求的结构化解决方案,同时优化公共质量属性,如性能、安全性和可管理性。
它涉及一系列基于各种因素的决定这些决策中的每一个都会对质量、性能、可维护性和应用程序的整体成功。
一种是全职的架构师,具备架构能力的人。
另一种是兼职的架构师,以架构能力谋生的人。
从软件上来讲,二者是不同的。需求上也是不同的。
什么是全职架构师
全职架构师,对这些角色,几乎都是1对多的角色
1对多的角色其实造就了本质上,这个全职软件架构师的一个价值的不同点。
架构师的两种职业路径
左边图的人物是圣家族大教堂的西班牙19世纪著名建筑师安东尼奥·高迪,去过巴塞罗那的应该知道。高迪没有亲手建造教堂,生前也没有见到教堂完工,但在他逝世后的100多年间,教堂仍按照他的设计持续建造,延续了最初的设计风格,审美也超越了时代。
从架构师来讲,设计了将要做的事情,而自己没有真正的去建筑它。真实的架构师必须把事情推出去的,但高迪并没有,这是个比较差异化的事情。
全职架构师因为是异构组织中发生的,所以必须站在多个组织之外,必须提供单个组织所不提供的视角,有一个大的组织,也有一个小的组织,那么每个小的个体的目标跟整体的目标是不同的,并且个体的关注点也不同,个体的关注点偏短暂,而整体的关注点偏长期,
全职架构师必须面对"康威定律"(Conway‘s law)的冲突,解决这个冲突是核心架构师必须提供的核心价值。
而兼职架构师可以参拜右边图中的达尔文,出了事情,达尔文都是自己动手解决的,自己发现问题,自己解决,兼职架构师都在还内部技术债,内部技术债往往也是自己欠下来的,对优先级的了解往往也是比较清楚的,面对的是自己内部积累的复杂性,而全职架构师是顺着"康威定律"(Conway‘s law)工作的,要满足自己解决问题的目标是自己组织内已经发生的问题,这是非常大的差异性。
架构师总是必要吗
很多时候是需要架构这个能力,而不是架构师这个专业职能。
全职架构师只有在场景比较复杂的时候才需要。
钱多,这是企业的巨大成本。而创造比较大的企业价值,并且能够克服现有企业出现的问题,把问题解决掉,其实并不是简单的事情,所以全职架构师都是比较痛苦。
架构师的生存
必要条件一 :目标正确
架构能力,千变万化。
最主要的能力:目标正确
可以管这个能力为方向感能力。
技术人喜欢专研技术,专研的过程中就容易把目标忘了。
限制条件:时间最做业务最宝贵的东西,时间约束成本保证不了,一点用都没有。
要在有限时间内跑赢对手,因为融资总有烧光的时候。
紧接着就是人力成本,不可能无限制的招人,有质量成本要求,组织结构的限制总是存在的。
一家公司有时最大化某种价值,甚至有时不是显性的,大多数公司是最大化商业价值,真的最大化价值是什么,是大多数人没有搞清楚的,有时连创始人和CEO都没讲清楚,很正常,但价值到底是什么,架构师至少要跟上面所有的领导达成一致。
必要条件二:能力满足
上图黄色部分是兼职架构师需要具备的能力。更大的绿色的框是全职架构师需要具备的能力,也代表着能力的进化。
架构师一般从研发做起,最开始解决组织内问题(黄色的部分),发现并保障团队内的高质量交付,然后就会从条件过渡到更广泛的内容,为组织带来更好的外部适应性,就是跳出团队,怎么去思考整个公司未来的时候,比如技术是怎么衔接的,怎么再跨两个团队,前后端的分工应该分在哪里,BFS到底谁来写,是否再来一个团队来实现。
同样的,业务和数据,到底谁来负责整个在整个公司的最终数据模型未来,即CDM模型谁说了算,是数据仓库的还是业务团队说的算还是由多个业务团队合成的community说的算。
调研开源软件、花钱购买的软件等,哪个公司的好,当时要解决的问题、时间的问题、钱的问题、未来要面对的公司发展问题,这就是对长期思考的考虑。
每家公司都要面对很大的交付压力,大家都要看每个季度、每年要交付的什么东西,要在短的空间做的决策,跟要为一个企业长期要做的决策肯定会有利益冲突的,肯定要排优先级的,是否有要排在所有优先级前而必须做的事情是什么,为什么这些做了这些零存整取的工作而最终能拿到价值,哪些东西是今天做了而未来会建立技术壁垒到最后会转换为业务价值的,这些都是应该越往前想的,后来最深的一点就是技术视野,怎样的前瞻布局、更好的为组织带来更好的外部适应性。
从架构师到优秀架构师
两个必要条件:
方向感
合适的架构能力
成为一个优秀架构师的充分条件
回到领域之外,看看别的优秀架构师做了什么事情。
高迪是非常优秀的架构师,对比一下上图,高迪在另外一个行业、另外一个时代做的事情。
有时候就一个灵感,哇,就应该这么设计。
生命中有这么几次。哇,很兴奋。
真正的发现了好的设计。
一些问题是有缺陷的,一个好的架构是需要发现的,真的是需要创新的,比如只用一个servicemesh,放进去了,仅仅能用,而没有创新,这是想法和途径就是错误的。
安东尼奥·高迪没真正的盖这个教堂,而是找到了途径能被以他的期望来交付,就是当年想要的设计。
技术实现的外部适应性
外部适应性,对互联网是极度需要的,”内卷”这个概念,比如商业事件也是极度内卷,十几种共享单车,那么好的商业模式,被卷的不见了,社区团购大会,100多家企业,还没那五大企业,任何一个好的行业模式,一出手就是好几百家,大家拼命内卷,在大家拼命内卷的情况下,机会是非常短暂的,环境是不停在变化的。
因为以一个业务角度来看,外部机会出现,就要有极快的方式形成解决方案,不在乎怎么做的,期望的就是明天上线,极快的解决掉,把这个机会捞到,先赚到这笔钱,再说未来的。
从产品来讲,从产品视角,从上往下,往深了去变成产品实现,再到解决方案。
在技术方面,希望再做一层抽象的,从产品抽象到架构,再回去做映射。
这个映射从模型关系来说,有N个外部机会卖不成一个产品,从N个产品会卖不出一个架构抽象。
如果架构抽象做的好的话,那么会返回去会放在N个架构实现里,并且能再乘以一个N,以N的square的解决方案去做,并且是成功的这才对。
比如说一开始做物流,
1)第三方接一家物流公司,接一个对应商,头两个的API就随意接入了;
2)过段时间物流做大了,就应该有物流产品,紧接着有物流产品;
3)再做大了,物流只是作为子系统的时候,所有的物流交付、履约、其他的平台服务型的公司都会有一个供应商角色;
4)供应商自己又会抽象成一个平台,这个平台会满足几乎所有供应商从开始到招募、报名,不停的做in valuation,后面再做评分机制、诚信机制之后,这个过程就变成从一个非常现实的解决方案到一个供应商管理平台;
5)这个供应商管理平台变成一个全公司的基础设施,这个基础实施跳出了业务之外,然后会有跨供应商的优化能力,这个供应商路有优化能力,谁骗我少一点,选择谁;
6)在多个供应商里,把能力计算出来,每个人都要提供一个能力,把提供能力的质量提供出来,提供能力的实效计算出来,提供能力的成本计算出来,才考虑实效体现成本的时候怎么做路由;
7)这个路由的算法变成一个journalral算法,可以覆盖在多个供应商之上,并且覆盖到多个应用场景上,物流、履约、做交付都可以用;
8)不同产品能跨的平台,这就是一个成功的架构抽象。
架构师的成长之术
先要宽度还是先要深度
上述左图,架构师在宽度上创造价值/宽度上的职业,不是在Y轴都解决了,而是做的X轴的事情。
任何领域没有任何深度的时候,没人愿意让自己做宽度,所以在单个领域的深度是拓宽度的前提条件。
先做了研发能力、交付等,慢慢的对公司的全局视角有想法了,团队里的纷争,是否让他做一个相对中立的人发表一下意见?相对中立的人发表的意见足够多,那么他就有可能被拉出来做一个全局架构师,因为过去判断很公证,所以现在炒各种分工边界不清晰的时候,他就说的算,因为他过去判断是准确的,并为公司做了正确的决策,那么就有了从兼职架构师到全局架构师的一个过渡。
上述右图,大致总是从上往下的一个顺序。
当然,做架构师也必须要写代码。
深度思考和复盘
业务理解到底是什么?什么是业务理解不够?
讲一个技术人做业务理解,是在技术视角往上看到业务,从技术视角理解业务叫业务理解。
并不是一个做业务的,把业务怎么做说的很详细,没用,要从技术视角看到对业务的理解,同样,技术洞察,从业务视角翻过来看技术,找到洞察,这才是要的洞察。
技术做技术的洞察,业务做业务的思考,这两个完全是割裂的。
做技术很牛的人很多,发表文章的人很多,拿一篇文章并不定能赚到钱,期望思考最终业务产生价值,很多人没理解很多事情,做了很多年架构,讲不清楚,也就是,技术洞察和业务理解全部反了。
看这个V型图,最开始是有业务场景的,做架构抽象,使用这个架构抽象,变成技术现实,完成规划,最后实现了,那实现之后,做技术架构的必须要复盘,而且是真正发自内心的复盘,这个设计到解决方案N:N:1(N抽象到1)又到1:N:N(1扩大到N),设计的缺陷到底在哪里,如果没想清楚,那么这个思考就是没有价值的,从设计到推广实施,不完成这个复盘的话,其实是没有真正思考的,架构的创造,真正需要发现过程,这个发现过程没有真正创建一个真正价值的时候,到最后这个过程(业务-架构-业务)实现的这个过程是创造不了足够大的价值的,那么这个推广就失败了,可能最后研发团队不愿意用,因为这件事情,思考的深度不够,看下图左一。
求真的过程是一个普遍怀疑的过程,你认定别人的架构做的不够好,你能比他抽象的更好、更全面、更高阶的抽象,基于自己的洞察和推理,基于事实和规律,挑战了常规,最后有创建了,所以有一个很牛的架构,这是一个发现真理的过程。这个跟HR不同的,HR是要先问清楚前程的,永远要基于一个假设,做验证、做分析,得结论,不停的修正的过程。而架构师呢,看下面这个绿色框中的字。
上图可以发现加了领域和业务的概念。
架构师到底在哪里创造价值,最初始是做项目攻关的,是很常见的架构方式,什么都能解决,这里强烈反对,因为做架构师还是要在做架构师的域来创造价值。
什么是架构师呢,第一,要跨多个模块做整体设计,第二,在多个领域内做规范标准,使得大家做事情的效率更高,如果架构师还在自己一块一块的垒砖,那是不可能发生的,因为要靠别人来做这件事情,要别人做什么呢,要有很好的思考的规范标准,更多的思考变成现实,怎么为未来布局。
全职架构师的成长过程
看上图第三点。
架构师的存在要做的事情:帮助组织做出艰难但是正确的选择。
系统级到组织级的过渡就是兼职架构师到全职架构师的过渡,哪怕不是全职,但是要为组织作出简单但是正确的决策。
中国人有个弱点”看破不说破”,其实不太好,架构师要有良知。
去大公司还是小公司
中国是一个结果正义的国家。事实。
最左边的一列,非常不现实。
这些要求是在环境中不具备的,其实大多是想扭着环境去做事情。
架构师,思考的深度和实战经验远远比学历和经验更重要。
或者在博士里有高的深度,或者研究机构或大公司里做了几个场景很不错,然后去小公司里去”搏命”,去小公司风险本来就高,但小公司给了广度,给了在其他广度不具备的,让自己拿融来的钱做实验,还给更高的工资,为什么花在自己身上,至少要跟小公司的利益绑定,要期望小公司的商业利益为自己带来成功,而不是为了挖自己还要花很多很多的钱,这不现实。
如果真心想做架构师,且做到一个很深的深度,想过渡到拓展广度的地方,那就找一个小的公司,去找到更多的机会。
什么样的土壤适合架构师成长
信任、授权、时间和资源。这四样首先都要满足。
做人要求对照上图中间的文字描述。
企业文化还是要相对来说包容的,很多时候,架构师需要对企业过去长时间积累的弊病、问题要暴露出来。自己新人讲的是架构问题,老员工讲的是经历/资历问题,这是没法讲的。
最右边的话:你上一次做了对一个公司或者团队的命运有影响的决策是什么时候?
如果近几年都没做过类似决策,那么真的应该认认真真考虑。
一个做架构的人,从来没有认真思考去影响到一家公司,根本就没试验过,没出过手,以至于就没信心出手,这是很恐怖的,几年不出手,还是个架构师吗?
架构师成长之道
前面讲的都是树/竖。
个人观点
在这个高度内卷的社会,每个层级都是在内卷的,高度内卷意思是,具有高度才能的人有的是,比如招聘个总监一两个月很快就招到了,发现打交道的人也多了,但能把德这方面做好的人在现实生活中没那么多,是否有足够的良知,真正做到有良知其实很难,尤其是全职架构师,这是生存的道,因为不把企业作为自己的优先,那么怎么相信我的判断,怎么信任,架构师的判断肯定会错的,但知道出发点肯定是为了这家企业,为公司做了最好的判断,那还可以给再一次试错的勇气,否则都不知道自己是否是基于良知的,怎么用你,但很多人都这样。
很多中国人,”君子不挡人财路”、”看破不说破”、”不要让别人为难,为什么”、所以,很多情况下,可以发现做架构的人,最终没有扣扳机,没有说话,缺乏的东西就是”勇气”!勇气从哪儿来,是在源头用良知做的事情,即刚才没有为公司未来做过有良知/影响未来的事情,那应该来说,那还没有尝试过,那就不会产生勇气,当发现过去的一天天没有做过对公司未来做过有决策价值的时候,那其实根本没出过手,哪儿来的勇气,出过手,即使失败了,也比没出过手,能获得勇气,其实大多数人,没出过手,是否出过手,自己的底气就不一样。
优秀架构师的正确打开方式
正确判断是个不容易的事情,老板、CEO都能理解自己不一定永远能做出正确判断,但是有良知是做事情的前提。
架构师嘴不一定灵,但看上面第四点。他出手别人信,自己也信,所以才有勇气。
--此文章对接了好多层次同事,因为希望不要离别人太远,比如初阶、中阶、高阶的,跟大家的场景更适配,手段可能更相关,才能产生更好的共鸣。
标题:基于"如何成为一名优秀的架构师"的分享总结
作者:yazong
地址:https://blog.llyweb.com/articles/2021/07/15/1626346284718.html