郭东白的架构课_02_01模块导学是什么在影响架构活动的成败
你好,我是郭东白。
这节课是我们的第一个模块生存法则的导入部分。
我会先来介绍这个模块的主要内容,以及我为什么要讲这个话题。
一名架构师要为相对复杂的业务制定,并且引导实施一个结构化的软件方案。
这个发现架构方案和推动实施的过程就是架构活动。
那么我们从分析架构活动开始,看看这些生存法则到底是怎么保障架构活动的成功的。
我们先来看影响架构活动的成败的要素到底有哪些。
在整个软件架构的活动过程中,我们先要确定一个架构方案。
这个方案要和企业目标一致,跟商业环境和软件环境相互匹配,并且还需要满足各种资源约束条件。
而你作为一个架构师,要在这些方案中找到那个能够最小化成本、最大化商业价值,以及最大化目标用户满意度的方案。
最后你还要组织技术团队交付这个方案。
这里我需要和你澄清一点。
在一个企业里面,多数研发任务的交付,其实跟架构师是没关系的。
多数时间呢研发团队开发的软件解决方案和软件产品是用来服务用户,而你需要架构师的参与。
而当面对多个团队或者大面积的技术改造的时候,就需要架构师参与到其中来完成软件研发任务的交付。
我在文稿里给你放了一张图,展示了架构师的全部活动。
按照颜色划分,主要包括三个部分。
我来给你解释一下这张图的内容。
中间的白色部分呢就是架构师的决策领域,包括架构、方案和架构活动。
需要强调的是,架构师对右边的研发活动没有完全的决策权。
也就是说,架构师没法决定研发项目的选择,部分呢排期和代码实现方式等等。
同样的,其他影响架构活动的因素,也就是图中白色区域以外的部分,架构师也不具备决策权。
这些部分包括目标、商业环境、架构、活动、消耗的资源,以及产出的商业价值。
同构师仅仅可以关注、影响和干预这些因素。
黄色部分呢指的是架构书的输入和输出部分。
右边的输入不仅指架构活动消耗的资源和成本架,如说商业成本、研发资源等等,还有时间成本、机会成本,以及不受架构师所控制的部分研发活动,这些都会影响架构活动的最中结果。
而左边的输出呢,不仅包括架构活动可能带来的短期和长期的商业价值,还包括架构活动为目标用户所提供的直接价值。
这就意味着我们架构师必须时刻关注自己的输入和输出,他们是保障架构活动成功的前提。
外面的蓝色部分是架构师的工作环境,主要包括企业所处的商业环境。
比如说竞争市场监管的企业内部的技术环境,比如说交互设备、sensor网络、主要环境、外部的商业源等,以及企业和团队的文化环境。
环境很大程度上会影响架构方案的选择和实施。
同时也是大部分架构师最容易忽略的因素。
当我们把架构师的活动归纳总结之后,就很容易看清楚到底是什么在影响架构活动的前提,我们把它总结归纳这六个要素分别是目标、资源、行为、天时地利以及人和。
那么先来看前三个要素,目标、资源和行为。
第一个要素是目标,事实上确定目标应该是架构活动的起点。
所以,深入理解目标对你的架构活动非常重要。
但这一步往往会被架构师所忽略。
因此,我们生存法则的第一条就是教你怎么去理解和干预目标,确保最终的架构活动能够为你所在的团队或者企业带来价值。
否则目标错了,你的项目永远也无法价值。
然后是资源,我们所有的活动都要消耗资源,最终也要创造价值。
其实也就是创造新的资源,架构,活动当然也不例外。
在多数企业里,甚至包括非营利性组织,都需要关注有限资源的利用率以及架构活动,最终可以带来的回报。
所以我们这条生存法则是关于你怎么通过架构活动来最大化你所贡献的商业价值的。
否则资源不足或者消耗太快,你的项目也无法成功。
有了目标,有了足够资源,如果你还有正确的行为,也就是正确的做事方式,那你就能逐渐逼近正确的架构方案,并且指导团队完成它。
然而,不确定性是互联网的常态。
那么身为架构师,你应该在周边环境发生变化时做出什么样的响应呢?这正是我下一条生存法则要回答的问题。
接下来我们看后三个要素,天时地利和人和做成一件事情,如果周围条件成熟环境好,那么事情就会进行的很顺和。
反过来,如果条件不成熟或者你逆势而为,那么就会很难架构活动也一样影响它成败的要素。
也有天时地利和人和先说天使,这里指的是商业环境和技术环境的变化趋势,环境复杂多变。
然么看清楚变化趋势的本质,就可以让我们架构活动顺势而为,建筑环境的变化来成就我们的团队和企业。
这正是我们这条生存法则要覆盖的内容。
再讲地理,这是你作为一个架构师待的地方,也就是你所处的企业文化环境。
这是我们作为架构师无法改变的部分。
虽然无法改变,但是良禽择木而栖,那么这条法则就会帮你选择有最有利于架构师职业发展的文化环境最大化你的成长。
最后讲人和架构活动中,涉及到的人主要是研发人员和目标用户在输入端架构师需要跟多个研发团队合作。
所以呢理解研发方的核心诉求就很关键。
在输出端架构师产出方案的最终评判标准是目标用户的长期满意度。
那么深度洞察用户的人性,就是保障架构活动的成功关键所在。
这正是都是我们这条生存法则要覆盖的内容。
理解影响架构活动的这些要素,我们就很容易知道系什么样的视角来关注和干预这些架构活动了。
我根据这些,提炼出了你作为架构师所需的六大生存法则。
接下来我们看看该怎么利用生存法则最大化架构师的成长。
简单来说,生存法则指的是我们作为架构师在设计架构、方案和组织架构活动中必须要遵守的原则。
我果违背这些原则,那么作为架构师的生存就会受到威胁。
之所以总结提炼这些原则,是因为我在二十多年的职业生涯中一次又一次的看到我周围的架构师,包括我自己在违反这些规则后,付出了惨重的代价。
所以我会把自己的经历过的,我看到过的大量失办案例呈现出来。
我先简单承述一下这六个法则的核心内容,然后再讲你应该怎么学习和应用这些法则。
第一条架构师必须保障整个架构活动中义务,且仅有一个正确目标,这是架构活动的起点,也是甄别架构方案的主要输入。
所以,架构师有义务理解和干预这个目标,以确保目标本身的正确性。
第二,架构活动需要符合和尊重人性。
架构活动,既要服务用户,也要组织研发人员协同工作。
这就意味着,架构师必须洞察研发人员和目标用户的人性,从人性的角度来做决策,才能保障最终面向用户的方案具有长期正确性,以及面向研发同学的实施过程具有可行性。
第三,架构师永远需要在有限资源下最大化商业价值。
对于任何一个架构活动而言,架构师的可用资源包括商业成本、研发成本、时间成本、迁移成本等都是极其有限的。
所以,架构活动必须在这些限制条件下最大化商业价值。
第四,架构选型必须要考虑到所依赖的商业和技术模块的生命周期。
在架构设计的过程中,架构师会有一个相对确定的商业和技术选择空间。
那么在这个选择空间内,理解和利用好商业和技术周期就至关重要。
也就是说,架构师要看准技术趋势,一般情况下,要选择已经有规模优势或者是即将有规模优势的技术,而不是选择那些接近衰老期的技术。
第五,架构师需要在架构活动中不断干预活动的目标和内容,以同时保证整个架构活动可以为企业注入外部适应性。
这是架构师个人能在架构活动中创造的核心价值,而且也是架构师职业成长的必须,甚至是架构师的荣耀所在。
最终架构方案会因为有很强的外部设适应性而长期存在。
第六,架构师需要在一个相对安全的文化环境中探索未知,只有这样才能希望找到正确的架构方案。
文化环境是架构师最难影响的,因此,架构师需要有足够的判断力,认清自己在所在文化环境中是否有利于探索正确的架构方案,不要在一个错误的环境中浪费自己的宝贵生命。
可以看到,这六个法则的顺序和前面的六个要素的顺序不完全一致,原因在于我是依照法则本身的重要性进行排序的,而不是要素的结构。
不过看完这些,你也许会问法则这东西听起来很虚,也很简单啊。
这些法则听起来平淡,原因很简单,软件架构是人类活动中很小的一个细节。
而先则们早就总结了人类活动中各种规律,比如说经济学、社会学、心理学、系统科学等等。
软件架构这个活动自然也跳不出这些规律。
而我想强调的是在互联网时代,我们获取一个规律并不难,难的是怎么把这个规律准确的应用到软件架构活动中去。
更难的是能够通过这些规律看到问题,理解问题的本质,不终找到解决问题的方法。
比如说你常听大家讲,我们要创造商业价值,但是你很少听说过创造商业价值的具体建议。
是啊,架构师是应该创造商业价值,但怎么创造呢?因为信息法了正在让我们面临一个颇为严峻的问题,那就是通过朋友圈、短视频网课等获得的内容往往是泛泛而谈。
虽然你听过一个规律,但是你碰到可适用的场景时,不但很难识别出来,而且也不知道该怎么用。
所以我们并不是缺少生存法则,而是不知道什么场景下该用哪条法则,也不知道怎么用它去解决问题的架构问题。
比如说我们常用的摩尔定理,康威定理到底和架构活动的哪个节点有关呢?你做架构活动时该怎么考虑他们呢?所以呢我会花大量的篇幅去说明法则的上下文,从而试图达到这么一个目标。
你能够去识别一个法则的适用法则,而道可能出现的问题知及出现问题或者干预办法。
我期望你用一种完全不同的方式来学习这个模块,请你不要简单的相信或者背诵这些生存法则,而是跟我一起理解到底是什么原因,让我把某个规律当成架构式的生存法则。
也就是说,在你学习整个模块的时候,你需要试图理解我是如何被我所经历的事件所教育的。
并且由此推断出这些生存法则的适用环境。
打个比方,假设你相信上帝存在,从么?你可以认为我被上帝安排了一连串的经历,从而得出了我自己坚信的一套生存法则。
但假设某天你给别人讲这门课,你的经历跟我不同,甚至就是因为你相信了这些生存法则,从而让你避免了我的痛。
而你自己痛彻心扉的经历,就会让你总结成另一套不同的生存法则了。
就样一来,你理解了我的经历,也认同了其中的推导逻辑。
那么某天你恰巧遇到了类似的场景,你可能迅速的思考这个法则是否适用。
或许时过境迁,我讲的法则已经不再适用,或者法则的核心逻辑依然适用。
无论是哪种情况,只有你理解它的背景和推导逻辑,你才能决定是不是要冒一次有备之行,take a calculate risk.这就是我期望你学习这个模块后,最终能达到的理解程度,就是学到你可以选择忽视一个法则的境界。
好了,我们这节课的内容就是这么多。
欢迎把你的思考和想法分享到留言区,我也和你交流。
同时我也会把其中不错的答案置顶供大家学习讨论。