架构活动中做可行性探索前的准备工作
可行性探索的目的,就是让决策者和赞助者对架构目标是否可达,形成一个相对清晰的认知。
确认目标的可达(Achievable),也就是在企业的现有条件和时间约束下,目标最终可以被实现。任何架构活动都需要承受一定程度的风险,当某个风险确实发生的时候,这个目标实现的成本(时间、人力、计算成本等)虽然可能会增加,但目标依然可以在新的环境下被实现,而不是完全不可达。
总的来说,在可行性探索的过程中,架构师需要在最短时间内发现最重大的风险,并对风险发生时的响应预案做出判断。与此同时,架构师也需要把重大风险披露出来,向赞助方确认是否能接受风险和预案。
在进入可行性探索之前,我们的准备工作就是在企业风险决策环境方面做调研。包括调查企业对风险的态度,赞助者对风险的承受度,锁定可以提供决策帮助的领域专家,等等。
第一,调查企业对风险的承受度。不同企业对风险承受的差异非常大。有的企业鼓励冒险,有的企业则对失败的容忍度几乎为零,甚至会惩罚那些冒险的人。因而你的最终决策,必须与企业或者部门对待风险的态度相一致。
假设你在一个对风险几乎零容忍的部门里选择冒险,那就是在胁迫队友了。反之,如果你在一个对风险有高容忍度的部门里,却选择不冒险,那就是在拖公司的后腿了。需要注意的是,企业对风险承受的尺度大小没有对与错,仅仅是企业的选择。而你的选择,只需要控制在企业或部门的风险承受度以内即可,这是你选择冒险的上限。
第二,调查赞助者对风险的承受度。赞助者的风险承受度往往比企业或部门的承受度要小得多,因此这是你选择冒险的下限。
一般会尽量说服赞助者去冒更大的险,但我也会尊重他的否决建议。这是我们作为架构师的道德底线。归根到底,用筹码下注的人是我们,但是买筹码的则是赞助者。如果不顾赞助者的反对,将他的钱财置于险地,那很可能会失去他对我们的信任。
第三,锁定领域专家。领域专家指那些可以预见单个领域风险,并提供应对方案的人。你期望通过他的经验来帮助自己迅速锁定重大风险,找到最佳的风险预案,并准确评估预案实施的代价。
第四,锁定风险决策的建议者。风险决策建议者这个角色,其实有点像法官。这个角色需要有全局的视角、有判断力、做事公正。你需要依靠他们的判断力,来提升自己的判断质量和决策质量。
与领域专家不同,这些建议者最好与部门利益绑定得比较深,但与架构活动的成败关系不大。我的经验是最好找四到五个决策建议者。人数太多,意义可能不大;人数太少,则可能导致视角不完整。
在准备工作的进行中,肯定还会面临一系列的挑战,比较常见的几种情况有:
-
领域内部的视角非常狭窄,往往不能看到全局性的风险。哪怕是每个独立领域都没有风险,也不代表整个架构活动是可行的。 对可行性的估计没有任何全局标准。量化风险非常艰难,在“什么样的风险才算大”这个问题上,没有任何标准。 没有人愿意说“不”。大多数互联网公司都是勇大于谋,过于相信速度和规模效应。在路径选择上不够丰富,在拒绝诱惑上也不够果断。
要充分利用公司里所有能帮助我们提升决策质量的资源,来确定整个架构活动的目标是可达的。这么做,不是让你变得保守,因为冒险不是一件坏事。反过来,冒险可能是一件会带来巨大回报的事情。因此,我们做的不是耗时数月的可行性分析,而是在冒险精神的支持下做好重大风险的挖掘。