01|模块导学:是什么在影响架构活动的成败?

讲述:郭东白

时长13:59大小12.82M

你好,我是郭东白。这节课是我们模块一的导入部分,我会先来介绍模块的主要内容,以及为什么我要讲生存法则这个话题。
一名软件架构师要为相对复杂的业务制定,并且引导实施一个结构化的软件方案。这个发现最终方案和推动实施的过程,就是架构活动。架构活动是你作为架构师必须要认识清楚的,但同样也是很多架构师所忽略的。
那么我们就从分析架构活动开始,看看我笃信的生存法则,到底可以怎样保障你架构活动的成功。

影响架构活动成败的要素有哪些?

架构活动就是制定并且交付架构方案的过程。在整个软件架构的活动过程中,我们作为一个架构师,首先要做的就是确定架构设计方案。
这个方案需要和企业目标一致,与商业、软件环境相匹配,并且还需要满足各种资源的约束条件。而你作为一个架构师,要在这些方案中找到那个能够最小化资源和成本,最大化商业价值,以及最大化目标用户满意度的方案。最终,你还要组织技术团队交付这个架构设计方案
这里我们需要明确一点,在一个企业内,大多数研发任务的交付都与架构师无关。多数时间,研发团队开发的软件解决方案和软件产品是用来服务用户的,不需要架构师的参与。但当面对跨多个团队,或者是大面积的技术改造时,就需要架构师参与到其中,来完成软件研发任务的交付。
如图所示,展示了架构师的全部活动,按照颜色分类,主要包括三个部分。
中间白色部分是架构师的决策领域,包括架构方案和架构活动。
需要强调的是,架构师对研发活动没有完全的决策权。也就是说,架构师无法决定研发项目的选择、优先级、排期、代码实现方式等等。
同样的,其他影响架构活动的因素,也就是图中白色区域以外的部分,架构师也不具备决策权。这些部分包括目标、商业环境、架构活动消耗的资源,以及产出的商业价值。架构师仅仅可以关注、影响和干预这些因素。
黄色部分指架构师的输入和输出部分。
输入不仅指架构活动消耗的资源(商业资源、研发资源等)和成本(时间成本、机会成本等),还指不受架构师所控制的部分研发活动。两者会综合影响架构活动的最终结果。
而输出呢,不仅指架构活动可能带来的短期和长期的商业价值(公司的规模、效率和体验等),还指架构活动为目标用户群体所提供的直接价值。这就意味着我们架构师必须时刻关注自己的输入和输出,它们是保证架构活动成功的前提。
蓝色部分指架构师的工作环境,主要包括企业所处的商业环境,如竞争、市场、监管等;企业内部的技术环境,如交互设备、sensor 网络、计算环境、外部的数据源等;以及企业和团队的文化环境。环境在很大程度上会影响架构方案的选择和实施路径,但同时也是大部分架构师最容易忽略的考量因素。
当我们把架构师的活动归纳总结后,很容易就能清楚到底是什么在影响整个架构活动的成败。我将它们总结归纳为六个要素,分别是:目标、资源、行为、天时、地利以及人和(要素的排列顺序与法则的顺序并不是一一对应的,在这节课的最后我会进行解释)。
第一个要素是目标。事实上,确定目标应该是架构规划的起点,所以深入理解目标对你的架构活动至关重要,但这一步往往会被架构师所忽略。
因此我们生存法则的第一条,就是教你如何去理解和干预这个目标,确保最终的架构活动能够为你所在的团队或企业带来价值。否则目标错了,你的项目永远也没办法成功。
然后是资源。我们所有的活动都要消耗资源且最终要创造价值,就是图中标记为 3 的部分,架构活动当然也不例外。在大多数企业里,甚至包括非盈利型组织,都需要关注有限资源的利用率,以及架构活动最终可以带来的商业回报。
所以我们生存法则的第三条,是关于你应该如何通过架构活动来最大化你所贡献的商业价值的。否则资源不足或者是消耗太快,你的项目也同样无法成功。
有了目标,有了足够资源,如果你还有正确的行为,也就是正确的做事方式,那你就能逐步逼近正确的架构方案,并且指导团队完成它。然而不确定性是互联网大环境的常态,那么身为架构师,你应该在周遭环境发生变化时做出什么样的响应呢?这正是我在第五条生存法则要回答的问题。
做成一件事情,如果周边条件成熟,环境好,那么事情就会进行得很顺利。反过来,如果条件不成熟,或者你逆势而为,那就会很艰难。架构活动也一样,影响它成败的要素也有天时、地利和人和。
先说天时,这里指的是商业环境和技术环境的变化趋势。环境复杂多变,那么看清楚变化趋势的本质,就可以让我们的架构决策顺势而为,借助于环境的变化来成就我们的团队、企业。这正是我们第四个生存法则要覆盖的内容。
再讲地利,就是你作为一个架构师待的地方,你所在企业的文化环境,这是我们作为架构师无法改变的部分。虽然没法改变,但“良禽择木而栖”。那么第六条法则就会帮助你选择最有利于架构师职业发展的文化环境,最大化你的成长。
最后讲人和,在上图中标注为 2,架构活动中涉及的人主要是研发人员和目标用户。在输入端,架构师需要与多个研发团队协作,因而理解研发方的核心诉求就尤为关键。在输出端,架构师产出方案的最终评判即目标用户的长期满意度。因此深度洞察用户的人性就是保证架构活动成功的关键所在。这是我们第二个生存法则要覆盖的内容。
理解了影响架构活动的这些要素,我们很容易就知道应该以什么样的视角来关注和干预这些架构活动。而我根据这些,提炼出了你作为架构师必备的六大生存法则。

如何利用生存法则,最大化架构师的成长?

简单来说,生存法则指的是我们作为架构师在设计架构方案和组织架构活动时必须要尊重的一些原则。如果违背这些原则,那么作为一个架构师的生存就会受到威胁。
之所以总结提炼这些原则,是因为在我二十多年的职业生涯中,一次又一次地看到我周遭的架构师,包括我自己,在违反这些规则后付出了惨重的代价。所以我会将自己经历的、看到的大量失败案例呈现出来。
我先简单陈述一下这六个法则的核心内容,然后再讲你应该怎么学习和应用这些法则。
第一条,架构师必须保障整个架构活动有且仅有一个正确的目标。这是架构活动的起点,也是甄别架构方案的主要输入,所以架构师有义务影响和干预这个目标,以确保目标本身的正确性。
第二条,架构活动需要尊重和顺应人性。架构活动既要服务用户,也要组织研发人员协同工作。这就意味着架构师必须洞察研发人员和目标用户的人性。从人性角度出发来做决策,才能保障最终面向用户的方案具有长期正确性,以及面向研发同学的实施过程具有可行性。
第三,架构师永远需要在有限资源下最大化商业价值。对于任何一个架构活动来说,架构师的可用资源,包括商业成本、研发成本、时间成本、迁移成本等,都是极其有限的,所以架构活动必须在这些限制条件下,最大化商业价值。
第四,架构选型必须要考虑到所依赖的商业和技术模块的生命周期。在架构设计的过程中,架构师会有一个相对确定的商业和技术选择空间。那么在这个选择空间内,理解、顺应且利用好商业和技术周期就至关重要。也就是说,架构师要看准技术趋势,一般情况下,要选择已经有规模优势或者是即将有规模优势的技术,而不是选择那些接近衰老期的技术。
第五,架构师需要在架构活动中不断干预活动的目标和内容,以同时保证整个架构活动可以为企业注入外部适应性。这是架构师个人能在架构活动中创造的核心价值,而且也是架构师职业成长的必须,甚至也是架构师的荣耀所依赖。最终正确的架构选型会因为有很强的外部适应性而长期存在。
第六,架构师需要在一个相对安全的文化环境中探索未知, 只有这样,才有希望找到正确的架构方案。文化环境是架构师最难影响的,因而架构师要有足够的判断力,认清自己所在的文化环境是否有利于探索正确的架构方案,不要在一个错误的环境中浪费自己的宝贵生命。
可以看到,这六个法则的顺序跟我们刚才提到的影响架构活动成败的六个要素的顺序不完全一致,原因在于我是依照法则本身的重要性进行排序的,而不是要素的结构。
不过看完这些你可能会问,法则这东西听起来感觉很虚、也很简单啊,难道你讲的法则有什么精妙之处吗?
这些法则确实平淡无奇,原因也很简单。软件架构是人类活动中很小的一个细节,而先哲们老早就总结了人类活动的各种规律,譬如经济学、社会学、心理学、系统科学等等,软件架构这个活动自然也跳不出这些规律。
而我要强调的是,在信息化时代,我们获取这些规律并不难,难的是怎么将这些规律准确地应用到软件架构活动中去
因为信息泛滥正让我们面临着一个颇为严峻的问题:通过朋友圈、短视频、网课等获取的规律教育,往往是泛泛而谈,甚至和软件架构领域扯不上关系。所以当我们在软件架构领域碰到某个规律可以适用的场景时,不仅很难识别出来,而且也不知道该如何应用。所以我们并不是缺少生存法则,而是不知道什么场景下该应用哪一条规律,也不知道哪一条规律是跟软件架构领域有关的。
比如说我们常说的摩尔定律、康威定律,到底和架构活动的哪个部分有关呢?你做架构的时候该怎么考虑它们呢?
因此,我会花大量的篇幅去说明法则的上下文,从而达到这样一个目标:不是要你记忆法则,而是知道怎么识别某个法则的适用场景,以及出现问题后的干预办法。
所以我期望你用一种完全不同的方式来学习这个模块:请你不要简单地相信或者背诵这些生存法则,而是跟我一起解释到底是什么原因让我把某个规律当成架构师的生存法则。也就是说,当你学习整个模块的时候,你需要试图理解我是如何被我所经历的事件教育的,并由此推断出这些生存法则的适用环境。
打个比方,假设你相信上帝存在,那么你可以认为我被上帝安排了一连串的经历,从而得出了自己坚信的一套生存法则。但是假设某一天你给别人讲这门课,你的经历与我不同;或者是因为你相信了这些生存法则,让你避免经历我的痛,而你自己的痛彻心扉的经历,又会让你总结出另外一套生存法则来。
这样一来,你理解了我的经历,也认同其中的推导逻辑。那么当某一天,你恰巧遭遇了一个类似的场景,可能会迅速思考这个法则是否适用。或许事过境迁,我讲的法则已经不再完全适用,但法则的核心逻辑依旧适用。不论是哪一种情况,只有理解它的背景和推导逻辑,你才能决定是否冒一次有备之险(take a calculated risk)。
这就是我期望你学习这个模块后,最终能达到的理解程度。那,接下来的一讲,我们就开始学习第一个生存法则吧。
欢迎把你的思考和想法分享至留言区,我会和你交流。同时,我也会把其中不错的回答在留言区置顶,供大家学习讨论。
分享给需要的人,Ta订阅后你可得20现金奖励
生成海报并分享

赞 9

提建议

上一篇
开篇词|没有战略意图,就成不了一个顶尖的架构师
 写留言

精选留言(29)

  • GAC·DU
    置顶
    2021-11-29
    法则有时代局限性,也有文化环境局限性。也许法则背后的法则和底层推倒逻辑,可以应用到各自的工作活动。相信是一种力量,这个力量能让我们站在前人的肩上加速前行。
    共 2 条评论
    8
  • 术子米德
    2021-11-30
    🤔☕️🤔☕️🤔
    * 📖:架构活动:发现一个结构化软件方案,并推动实施这个软件方案的过程。而且这个软件方案得满足:最大化目标用户满意度、最大化商业价值、最小化资源和成本,并且跟企业本身目标一致。
        * 🤔:架构师桥接了问题域和技术域,表明上看架构师是能深入分析问题,发现问题本质的人,架构师具有机器猫的思维口袋,任何分析清楚的问题,都能从口袋里掏出技术方案。更进一步看,架构师心里还得是个商人,要知道怎么能赚大钱,架构师的行为得要像个守财奴,要知道怎么能省小钱。
    * 📖:架构活动成败六要素:
        * 目标:一定要有,方向要对,时刻校准
            * 原则:架构师必须保障有且仅有一个正确的目标
            * 🤔:有目标,得是正确的目标,只需要一个,而且要得到利益相关方认可
        * 资源:这是家里有多少矿供你发力,能供你发力多久的问题
            * 原则:有限的资源下最大化商业价值
        * 行为:姿势一定要对,发力一定要准,假动作一定要少
            * 原则:架构活动为企业注入外部适应性
            * 🤔:观察—干预—想象,这个方法能用起来嘛
        * 天时:起早了是先烈,来晚了没汤喝,更不能起早赶晚集,得刚刚好,有运气成分,更是视野和认知的体现
            * 原则:必须考虑商业和技术模块的生命周期
            * 🤔:有颗大树🌳,即使把这颗树砍了,我们也无法再种出相同的一颗大树
        * 地利:窝里才是保温的地方,窝里的协作必须得比外面的协作更高效
            * 原则:在一个相对安全的文化环境中探索未知
            * 🤔:给我犯错的机会,我必须在反思中成长,就像何帆老师所言,犯错要趁早,但是不能犯致命的错误
        * 人和:人是人,首先得承认人,才能接受人做的事
            * 原则:尊重和顺应人性
            * 🤔:做事情,做着做着只剩下事情,基本上已经把事情做歪了。自己拿面镜子,时刻照一下自己挂满胡须的脸,别忘记事情围绕人,而不是人围绕事情。
    展开
    共 1 条评论
    17
  • 刘磊
    2021-11-29
    近乎道了,这套法则除架构师之外也可以借鉴
    展开
    共 1 条评论
    4
  • ZTE-黄朝兵
    2021-12-01
    更新建议快点,谢谢
    展开
    3
  • Jxin
    2021-11-30
    用自己的话尝试描述下文中内容:
    1.盘点架构活动中的关键要素和要素间的连线,构建一个全局视角的系统图。
    2.基于这个系统图展开深度思考,抓住关键的六个要素。
    3.围绕要素及要素周边连线开始套场景,识别出关键的连线。
    4.借助历史经验,提炼出增强关键连线的生存法则。


    知道趋势很重要,但知道如何洞察趋势更重要。学到确定性的知识只是基础。知道场景变,确定性的知识就不一定适用(演绎有前提)。做到随场景变化灵活变通提炼新的确定性知识才算苦心孤诣。
    展开
    3
  • Helios
    2021-11-30
    还是感觉这些事情要经历过了才能理解,就像中学学数学,知道了一个定理没有做题,三天后从茫茫题海中出现了这个定理的题目,大概率搞不出
    展开
    共 1 条评论
    3
  • Geek_fd0943
    2021-11-30
    很棒。这讲的是大道。不是一般的软硬件架构师的视角。更多地还有权衡过的,老到的CTO的视角,👍🏻 👍🏻
    展开
    2
  • Helios
    2021-11-30
    感觉站的有点高了,不仅适用于架构设计可能还适用于企业管理,需要有精准的判断力。
    有些看似简单的东西,比如一个正确的目标,有两个关键词“一个”和“正确”,有的时候走着走着功能越来越臃肿,正确则更难。
    展开
    2
  • 牛牛肥
    2021-12-01
    上下文! 这段直接打动了我,真正有生命力的东西就是应该在鲜活的真实世界中长出来,活下去的。
    1
  • wenjianping
    2021-12-01
    我模糊的知道并应用了一些法则,比如目标、团队、环境。但这几年做的不行,典型的是过去4.5年了,薪资和18年还是持平。一个是工作环境的变动,不同企业对架构师的要求不一样,另一个可能是理解和应用得不够透彻。
    因此看到架构师工作环境的图的第一时间就订购了^_^
    展开
    1
  • 聪明的傻孩子
    2021-12-01
    读完发现这不仅仅是架构师的生存法则,任何行业,任何岗位都能适用到其中的大部分原则。
    1
  • 何剑°
    2021-12-01
    “良禽择木而栖”,这个其实比较令人矛盾。因为有时候自己无法改变现状,所以想换个环境。但是又想想,自己是否真的尽最大努力改变,尽力了有可能会改观。但是,尽力了又有可能没有任何改变。真的是很矛盾。
    展开
    1
  • bright21
    2021-12-01
    高维度的指导,让架构师更好的在低纬度空间灵活应对
    1
  • lecury
    2021-11-30
    方法或者法则不是最重要的,重要的大佬背后的推导逻辑,也就是方法论。期待后续~
    1
  • 申林
    2021-11-30
    架构师的职责不是研发交付,而是跨团队、跨领域的组织技术团队交付。
    1
  • 在路上
    2021-11-30
    一方面需要结合实际情况,另外,又需要具备一定的技术前瞻性,制定出架构目标,从目标出发,天时地利人和,经过一系列折腾后,才能顺利完成系统的发布上线。
    个人觉得,架构师没有适当的组织调动能力的话,是很难完成复杂的架构活动。
    展开
    1
  • Alex
    2021-11-30
    有限的资源下让事做成。目标、资源、行为、天时、地利以及人和则是必要条件。
    1
  • 公众号:业余草
    2021-11-30
    架构师每天的工作职责是什么?如何成为架构师?如何知道自己已经可以胜任架构师了?
    共 2 条评论
    1
  • 常华
    2021-11-29
    法则的应用,重点是场景,即上下文。比这句话更重要的,是如果能够理解和重现了这条法则形成推导的过程,就真正得到了这条法则,所谓忘了招式,得了精神。
    1
  • zangchao
    2021-12-05
    很多架构师都说,架构的本质是平衡和取舍,但是我们需要去探索为什么是这样,这样说的本质是什么?东白老师说,“跟我一起解释到底是什么原因让我把某个规律当成架构师的生存法则”,期待开启一场架构本质、生存法则的探索之旅
    展开
×
拖拽到此处
图片将完成下载