你好,我是郭东白。到这里,我们就完成了模块一的学习。那么这节课,我就以一个更宏观的视角来总结一下整个模块的思路,帮助你更好地理解与吸收。
你有没有想过,我们为什么要定义这些生存法则呢?在我看来,我们架构师要尤其信奉原则(Work by principles)。所谓信奉原则,就是采用相信过程正义的工作方式,用一组原则来指导行为和决策,而不是随心所欲地工作。
过程正义,这个词源自法律领域。如果放在架构活动的情境中,就表示你作出决策的每一步都是公平(Fair)、正义(Justified)和可解释的(Explainable),而不是靠一两个人的强势来达成的。
架构师这个角色从定义上来说,本身并不具备决策权和取舍权,他仅仅可以靠寻找更优路径和目标来推动架构活动。如果多数参与者都不认同你的“更优”,那么架构活动成功的概率就会大幅缩小。所以过程正义的价值就在于,架构师可以和架构活动参与者一起找到那个更优的路径。
要做到过程正义,意味着架构活动参与者都要在事先约定的某几个原则之下,来进行决策和行动。这些指导原则,可以是参与者为这个架构活动临时约定的,也可以是我们讲的这六条生存法则。法则可以变,但相信法则这个宗旨不能变。这么做,有两个最显而易见的好处。
一方面,法则具有对称性。你是法则的发现者和传播者,但同时你也受法则的约束,这是一组行为信条,引导你与周围人共同去做正确的决策。对称性,从某种程度上来说,暗示了某种形式的包容。对于架构师而言,不论你出具什么规则,都没办法全面证明法则是万能的,适用于各种情形用。
那么在无法证明的情况下,对称性就要求我们敢于包容不认同法则的人,而不是打压他们。所以我一直认为那些举起道德大旗想一下子把对立者置于死地的人,是不讲公平正义的。
另一方面,我们共同坚信的做事的法则就是“道”。之所以将我所相信的法则讲出来,是期望可以有更多的人学习并应用。如果你认为这些“道”不够合理,那么我们可以共同探索更好的“道”。而如果我的“道”为人所知,那么就会有更多的追随者。同样的,你作为架构师,也可以总结你组织架构活动的法则,从而吸引更多有相同“道”的人。我认为这就是所谓的“得道者多助”。
在六条生存法则背后有一个大假设,就是“道可道”。意思是架构活动的成功规律都是可以被发现、表达和反复使用的。
不过这里还有个大的命题:什么才算是成功呢?这个问题与企业的核心价值观有着强关联。其实答案有很多,我们这六条生存法则选择了一个答案:达尔文主义价值观,即企业生存是第一优先级。
你会发现,这个价值观渗透在了每条法则中。拿外部适应性这条法则来说。架构师通过提升架构方案的结构性,来防止架构随着时间熵增而逐渐发散、失速。那么架构师就需要为企业注入灵活性(Agility)。这就是达尔文认定的物种生存之必须。其他的法则,你也可以试着推演一下。
请注意,我这里强调的达尔文主义限定在企业范围内,并非你生活中必须信仰的价值观。此外,价值观因人因场景而异,无所谓对与错,更无所谓高与低。除了达尔文主义,企业也可以选择其他的价值观。只不过在商业竞争这个大环境下,如果企业不将自己的生存放在第一优先级,那么作为架构师,我认为你也很有必要重新审视一下企业的价值观究竟是否合理。
我尽自己所能总结了适用于当下互联网环境的六个架构法则。我认为这些是一个架构师应该聚焦的思考和行动的关键点。不过也有人问我,法则为什么是六条呢?六条就足够用了吗?
答案是:肯定不够。准确来说,这些法则只满足了以下三个条件:
也就是说,我把我过去二十多年的个人观察总结成了六个法则,可以帮助我解除一些失败的根因。也意味着,除了这些根因之外,肯定还有其他根因存在。所以这六条法则具有一定的普适性,可以帮你躲开大多数的失败,但不一定能完全帮助你成功。因为这些法则是基于我过去多年的观察和学习,主要是PC、互联网和移动互联网环境下的观察。要知道,技术和社会环境一直在变,所以这些法则肯定不是一成不变的。也就是说,它们“非常道”,你应该能找到更好的一组法则。
那么为什么就是六条呢?我二十年就总结了六条法则吗?肯定不是的。我总结了不止六条,但是使用这些法则也是有成本的。我认为你不应该关注太多的法则。
这与我日常的管理和做事习惯有关。在我的团队中,几乎所有的架构评审,我对长度和条数都有所限制。实质上,我期望他们能在日常中练就取舍的能力。
一方面,我们的注意力和精力是极其有限的。不论是大的架构活动还是日常工作,都有很多事情要做,所以要保证注意力和思考尽量集中、不分散。
另一方面,从一线研发人员到CTO,真正要取舍的只有几个最核心、最基础、最具决定性的点。其他的都不重要,甚至你也不应该关心。
比如我一年下来,做的真正有价值的决策也就两三个。而大多数时间,都在思考不同的优化路径。因而在这几个核心点之外的事情,我都不会放太多的精力。
这些年来,我虽然洋洋洒洒总结了很多东西,但真正值得绝大多数架构师关注的,我认为这六个方面已经足够了。它们覆盖了架构活动的目标、环境、输入输出、优化方向和文化环境。这些生存法则试图把你的注意力引导到这些问题上去,同时也意味着最终也要转化为行动。
对架构师来说,针对每一个问题,你都需要有一个行动点。我现在再把这些法则放在一起。不过这次我建议你细细品味这些法则,从你的注意力、价值创造点和行动点来重新审视这些法则。
第一,审视整个架构活动的方向是否正确。对应的法则是要有一个正确的目标。而你的行动点就是确保目标与公司的战略意图相匹配。
第二,审视参与者动机和用户的需求是否合理。对应的法则是不要搭没有人性的架构。而你的行动点就是在方案设计和架构活动组织中充分考虑研发和用户的人性。
第三,审视你的技术是否能够创造商业价值。对应的法则是要有自己的商业模式。而你的行动点就是在一个有限资源下最大化商业价值。
第四,从技术和商业视角审视架构方案是否合理。对应的法则是注重商业和技术的生命周期。而你的行动点就是选择已经有规模优势或者是即将有规模优势的技术。
第五,在变化的环境中审视你的行动。对应的法则是追求外部适应性。 而你的行动点就是干预架构活动和设计方案来不断地注入外部适应性。
第六,审视你是否拥有安全的架构探索的环境。对应的法则是构建或寻找一个友善的环境。而你的行动点就是在思想上要包容和求真,在行为上要有良知和勇气,最终达到知行合一的形态。
这六个法则是乐观的。相信事在人为,相信通过你的行为可以改变一家企业的生存概率,哪怕是微弱的百万分之一。而改变概率的机会点,对于每个角色来说都不一样。从架构师的角度来说,我认为最大的机会点就是以上这六个。
如果你认为我的判断不对,我很期望你能在留言区提出建议或思考,帮助所有在学习这个课程的人。不过你提出的时候,我建议给出一些上下文解释来帮助大家理解。
另外,这六条法则的顺序并不是完全正交的。事实上,只有法则一必须要排在第一位,其他法则的优先级排序和使用都需要根据实际情况来调整。我看到留言区经常有同学问“人性是不是必须要被最大化”这样的问题。我们不可能仅以一个法则为根据来做所有的决策,而是要在最大化目标成功率的前提下对法则做取舍。虽说这几个法则都是为了帮助你避免失败的,但是就像我们在课程中不断提起的:有时候环境没有那么尽如人意,你可能要被迫违反一个或多个法则,这个时候你就只能两害相较取其轻了。
至此,我们第一个模块就圆满结束了。接下来,我简单对留言区里的一些共性问题做个简单的回复,是为“番外篇”。
第一,多从失败中看机会。
在模块一里我分享了很多失败案例,目的是想让你规避我走过的弯路。然而现实是,我们要走的弯路一个都不会少。你如果从来没经历过任何我在课程里提到的任何事情,我讲的这些法则你看看也就忘了,也不会有共鸣。不过一旦你在实际工作中犯了与我类似的错误时,我期望这六条法则可以帮助你快速认识到问题,在每条弯路上走的时间短一点,痛苦少一点。毕竟失败是常态,一个真正意义上的成功要等一两年甚至是几年。
这些年来,我有个非常清晰的认知,就是从失败中学习。有些人试图忘记过去的痛苦和失败,我认为这是个不够明智的选择。回想起来,我人生每一步都在不停地犯错,这可能跟我喜欢冒险的性格有关。冒险,不可避免会遭遇一些失败和错误。我所能做的,就是尽量把犯错的经历转化成认知,看清楚错在了哪里、为什么会犯错,然后再从中看到机会。
第二,有勇气相信你身边的人。
架构就是人的活动。讲失败,不可避免会提到某个人或某个团队犯过的错误。我看到了极个别同学评论中,似乎从这些案例分享中得到了“防人之心不可无”的结论。
这不是我的真实意图,更不是我想传达的人生态度。从我个人的经历来看,我觉得要用勇气去相信对你而言还比较陌生的人。
很多资深架构师,尤其是在一家企业工作了多年的架构师,更愿意和“熟悉的人”合作一个大项目,认为这样的合作者是靠谱的。事实上,对一个相对陌生的人形成正确判断,并通过你们的合作将架构活动推向成功,在我看来这种能力是一个你内在的、更容易迁移到新环境的一个生存技能。
在这一点,你甚至可以给那些曾经让你失望过的队友一个机会。如果你这么做了,我相信最终取得的成功,无论是对于你个人还是对于企业,收益将是不可估量的。
第三,关于讨论区和思考题。
我的内容写得没那么快,比如这篇文章是在发布前两周才写好的,又经过了好几轮打磨。所以你写在留言区的精彩内容,给了我非常大的写作动力。
在回复留言的同时,我也发现了大家的一些学习习惯。比如有些同学喜欢追更,发布当天就学完了;有些同学喜欢只听音频,不看文稿;还有些同学则喜欢晚别人一两周,等有留言了再来学习。
无论你是哪一种学习习惯,我都强烈建议你再花点时间看看留言区的内容。这些内容不但澄清了一些疑问点,有些甚至是正文的拓展与再创作,让我也获益匪浅。我相信这些内容,也会帮助你加深对课程内容的理解。
此外,我发现留言区的评论大都围绕着思考题来作答。事实上,我也很建议你能对正文的内容提出问题,甚至是反驳的意见。这不但会帮助你提升,也会帮助我提升。
最后,如果你的学习速度比较快,或者觉得有些内容太抽象,你很难产生共鸣, 那么我建议你可以再做三件事情:
学习有时候是虚幻的、麻痹的,因为它会营造出一种“我努力了”的假象。我们的课程内容仅仅是学习的开始,而在日常工作中的不断运用和实践,才会真正对你产生帮助。所以我很想请你分享一下,学了课程后,你在工作中是否有所践行呢?有什么反馈吗?如果不方便分享,你也可以“Mark+${timestamp}”一下。timestamp就是你标记在日历里的某年某月的某一天。或许有一天,你将回来说一句:“Done”!
最后,非常感谢你认真学习了模块一。也期望你和我一起,在下一个模块继续探索架构!