程序员生态圈 2012-09-11
软件架构设计需要以长远的眼光以宏观视角从整体出发,深入分析外部环境、竞争对手与内部资源,明晰各方面的关注点,并平衡他们之间的利益,使大家可以明确目标,达成共识,解决主要矛盾。这些要求和做法同创建、治理一个国家是十分相似的,下面我将从架构的角度去分析三国中蜀汉的历史,并总结由此带来的架构思考与启发。
求架构“三顾茅庐”, “隆中对”定架构方略
东汉末年,国企衰败,各地涌现了大量新建企业。其中一个,就是刘备。刘备旗下拥有技术大牛关羽、张飞、赵云,一直活跃在后汉时期,也顺利完成了剿灭黄巾军项目中的子任务。但由于缺少整体经营思路,一直在平原县、徐州等地以手工作坊式的工作模式做着临时项目,后来因为政府关系恶化(鞭笞督邮)、无法与强大的竞争对手(曹操、吕布)抗衡而不能稳固市场,先后投奔公孙瓒、曹操、袁绍、刘表,过着颠沛流离、寄人篱下的生活。经理刘备迷失了,我到底应该做怎样的定位,要制定怎样的战略方针,又如何去实现它呢?对,他现在急需的是一名架构师,在徐庶、司马徽的推荐下,刘备三顾茅庐欲聘诸葛亮为架构师。
孔明那份特殊的简历在刘备登门之前就已经准备好了,在面试过程中,他向刘备展示了他为其量身定制的架构概览。
他首先分析了当前大环境:
自董卓已来,豪杰并起,跨州连郡者不可胜数。
然后又分析了主要竞争对手:
曹操比于袁绍,则名微而众寡。然操遂能克绍,以弱为强者,非惟天时,抑亦人谋也。今操已拥百万之众,挟天子而令诸侯,此诚不可与争锋。孙权据有江东,已历三世,国险而民附,贤能为之用,此可以为援而不可图也。
那么机会有哪些:
荆州北据汉、沔,利尽南海,东连吴会,西通巴、蜀,此用武之国,而其主不能守,此殆天所以资将军,将军岂有意乎?益州险塞,沃野千里,天府之土,高祖因之以成帝业。刘璋暗弱,张鲁在北,民殷国富而不知存恤,智能之士思得明君。
我们的优势在哪里:
将军既帝室之胄,信义著于四海,总揽英雄,思贤如渴。
架构决策:
如果能占据荆、益两州,守住险要的地方,和西边的各个民族和好,又安抚南边的少数民族,对外联合孙权,对内革新政治;
愿景:
霸业可成,汉室可兴!
这番分析深深打动了刘备,他即刻成立蜀汉项目组,项目近期目标为取得荆州、益州,外交策略为结好孙权,远期目标是垄断全国,并正式聘请诸葛孔明为架构师。
实施战略架构一:孔明巧析关注点,说孙权共同抗曹
“外结好孙权”是刘备集团战略架构中重要的外交策略。时下正值曹操挥师南下取了荆州,扬言要顺流而下,席卷江东,诸葛亮认为此时正是联合孙权的时机。对于是否抗曹孙权集团内分为两种意见,一方是以张昭为首的迎曹派,建议投降曹操,而另一方是以周瑜、鲁肃为首的抗曹派,坚决主张抗曹。孙权是战是降拿不定主意。要说服孙权集团联盟,首先得找出集团真正的决策者。“内事不决问张昭,外事不决问周瑜”反映了孙权集团的顶层组织关系,张昭、周瑜只是被“问” 的,而真正“决”的,还是孙权。于是孔明深入分析这位主要干系人,摸清他的主要关注点:
1、孙权继承父兄基业,是要成就一番霸业的,肯定不甘屈服于曹操。
2、曹操来势汹汹,兵多将广,孙权担心战败。
针对第一点,孔明巧用激将计,声称曹操势大,如果孙权犹豫不决,还不如早早投降了好,至于我家主公刘备是皇氏宗亲,是有气节的,宁肯失败也是不会投降的。在这样的刺激下,激发出孙权内心不愿投降的想法,当即表示一定要抗曹。
但是,刘备能出多少力?我们胜算如何呢?孔明接下来分析了双方战力,刘备虽然新败于新野,但还有兵士万人,侄子刘琦也有万人,曹操虽然兵多,但远来疲惫,又不善于水战,而且军队中还有很多荆州兵其实是被逼上前线的老百姓,军心不稳,如果您能派几万精兵,与刘备共同抗曹,肯定可以打败他。如此打消了孙权的顾虑,坚定了只要孙刘联合,就可以打败曹操的信心。
孔明通过深入分析主要干系人的关注点,并利用优秀的沟通技巧使对方认同了解决方案,成功建立了孙刘联盟,最终取得了赤壁之战的胜利,为刘备赢得了宝贵的喘息之机,并争取到了反攻荆州的机会。
实施架构战略二:得荆州、夺益州
赤壁之战打败曹操之后,刘备迅速将矛头指向了架构中的第一军事目标:荆州。虽然环境与架构决策时已经发生了变化,荆州已经被曹操攻占,但由于曹操新得荆州民主不稳,并且赤壁新败士气低落,另外主要兵力还被东吴牵制,所以刘备很顺利地攻下了荆州四郡:长沙、零陵、桂阳、武陵。后来又向盟友孙权“借”得南郡,从而占得荆州七郡中的五郡,实现了架构目标:荆州。
随后,又以荆州为根据地,由诸葛亮、关羽镇守,刘备以协助刘璋抗击张鲁为名协军师庞统发兵西川。刘备以张松、法正为内应,驻扎当地收服人心,后与刘璋决裂,夺下了益州。并且果然如“隆中对”中“智能之士思得明君”的判断,攻蜀期间先后有大量蜀将投降,使刘备整体实力大增。至此,刘备又实现了另一个架构目标:益州。
荆州、益州是刘备集团整体发展架构的两个军事要点,集团上下在架构实施过程中目标明确,时机得当,由庞统、法正、诸葛亮三位著名架构师直接参与,并坚持“外结好孙权”的战略方针,于是顺利地实现了架构方案,实现了夺取荆州、益州的架构目标,形成了三足鼎立的局面。
忽略架构战略,关羽、刘备先后殒命
刘备集团夺取荆州、益州之后,成功搭建起了“隆中对”中的物理架构,为统一中原、匡复汉室的终极目标奠定了基础,但同时,又带来了新的危机。刘备的强大,引起东吴老板孙权的密切关注,如果刘备背信弃义,掉转枪头向我开火怎么办?此时,主要干系人的利益发生了变化,刘备变强,等于孙权变相地变弱了,原来把荆州借给刘备是要当防守曹操的盾,现在却要小心变成刘备进攻自己的矛。于是在关羽攻打樊城时孙权下了一着棋来试应手,他想与关羽联姻,娶关羽的女儿当儿媳妇,但关羽不但不答应,还辱骂了使者,这使孙权大怒,派吕蒙趁虚夜袭荆州,杀了关羽。丢了荆州和关羽的刘备大怒。不顾蜀汉诸大臣的劝告,兴全国之兵进攻东吴,结果被陆逊火烧连营,命丧白帝城。
“外结好孙权”是蜀汉战略架构的重要方针,违反这一架构方针是荆州、夷陵两战失败的主要原因。当外敌强侵之时,两股弱小的势力结为联盟是互惠互利的做法,但当一方变强时,这种平衡即被打破,原来的架构就会受到冲击,这就需要架构师去平衡各方面的利益,使大家重新达成共识,使大家能够维持稳定的架构格局。从事后来看,这两战没有胜者,由于盟友反目,大战又使双方国力受损,最终蜀汉和东吴被先后灭国,这恐怕是孙刘联盟所有干系人都不愿意看到的结果。遗憾的是,此两战诸葛亮都没有直接参与,甚至也没有拿出关键意见去平衡各干系人的利益,保证架构方案的贯彻实施,使实现偏离了架构设计,打了两场大败仗,蜀汉实力大损。
不稳定的架构,诸葛亮“死而后已”
蜀汉发展到后主时期,经过荆州、夷陵两战,战略架构已经遭到了严重破坏。首先,丢失了重要组件荆州。荆州本是蜀汉重要的战略要地,是战略架构中的重要组件。因为荆州四通八达,与益州成犄角之势,在进攻时可以同益州一齐做并发处理,在防守时互为援助起到负载均衡的效果。丢失了它,进攻就只能从益州单进程发起,路途崎岖遥远,不利于供给,同时防守又少了牵制点,使益州直接面对对方的压力。再者,荆州之战、夷陵之战瓦解了孙刘联盟。东吴作为蜀汉架构中的合作伙伴外部系统,是重要的外部IT资源,它可以分担蜀汉在攻防两端的性能压力,没有它,蜀汉就只能独立地完成攻防任务。除此之外,蜀汉还面临着人才青黄不接、人口稀少、土地面积较小等问题,如果按正常发展,魏蜀之间差距将越来越大,亡国将成定局。是维持现状运行?还是打破原架构思想寻找突破?诸葛亮作出了主动北伐的架构调整,希望能够找到新的机会,但很遗憾,实力强大的北魏坚持司马懿稳固防守的架构策略,最终把诸葛亮慢慢拖死了,蜀汉也最终走向了灭亡。
架构的调整,需要付出巨大的成本和代价,所以需要在初期充分论证,设计稳固、易扩展的架构体系,并且需要在架构实施阶段积极跟进,保证架构方案被正确理解、正确实现,否则,千里之堤毁于蚁穴,任何违反架构思想的做法都是一颗颗定时炸弹,等到它们爆炸时,无论继续持续现状还是重新调整都很难再得到理想的效果。
架构思考
从蜀汉的历史我们可以看出架构对国家发展的重要意义,前期优秀的架构设计+充分有效地执行让流浪的刘备有了根据地,有了雄据一方三足鼎立的实力,但中期违背架构方针使蜀汉付出了惨痛的代价,损失了君主、名将和精兵、损失了战略要地,后期已经很难再对已被破坏的架构做出调整,勉力支撑一段时间后,最终亡国。
通过以上的思考与分析,我认为架构师在架构工作中,有以下几个方面是需要特别注意的:
1、在初期,应站在全局出发,了解客户的愿景和目标,深入分析客户所处的大环境、分析其主要竞争对手、分析现有资源、分析合作伙伴,明确实现目标的关键成功因素有哪些,这样才能够作出适合客户的架构解决方案。
2、善于分析组织,找出真正的决策者,站在他的立场去了解、理解、分析他的关注点,他的目标和顾虑,通过优秀的沟通能力使他理解你的设想,对目标达成共识,接受你的解决方案。
3、架构是一种平衡的艺术,干系人之间的利益有可能是有冲突、有矛盾的,这就需要架构师多换几种思维角度,从长远出发?从全局出发?从他实质的内心需求出发?……找出平衡点,使干系人达成共识是架构师的目标,是架构是否稳定、能够准确执行的基础。