架构师的人文情怀
2018-02-13李泉
李泉
在北美从事软件架构师的工作近20年,一直以为这样的工作远离普通大众的生活。普通人即便不懂钢琴或者绘画,也能够从艺术大师的表演和作品中获得享受。然而,软件架构师的工作过程及其结果无论多么完美,总是“其牙机巧制,皆隐在尊中”,“不足为外人道也”。我最近出版了一本关于如何成为软件架构师的(技术)书后、邀我从人文角度写一篇让普通大众了解架构师的文章时,我惶恐了几周的时间,出版这本书的准备工作花了一年的时间,但所针对的读者群,一直是很“小众”的架构师和程序员群体。如何向普通大众展现这其中深层次上的思考,对我来说还真是一个不小的挑战。
回顾过去的20年,软件应用的确是越来越贴近普通人的生活了。无论是城市还是偏远的山村,越来越多的人在日常生活里越来越离不开各种软件应用,比如网购、社交、出行、就业等的软件平台和应用。就像有一百个人吃了鸡蛋,总会有几个人好奇想去看看那下蛋的母鸡 ——大家可能会想:能设计出这些越来越复杂的软件应用的到底是些什么样的人呢?
在英文里,软件架构师和建筑师使用的是同一个词 ——Architect。其实,软件架构的理论,尤其是早期的理论中也经常将建筑学中的术语和方法论借鉴过来。“蓝图”一词即是个例子。
20年前的软件系统大多比较简单,很多时候程序员直接进行编程、而跳过了架构设计这个环节。然而,近20年来,软件系统本身越来越复杂,不仅需要提供的功能越来越庞杂、牵涉到的其他的现有系统也越来越多。另外,软件项目外包、第三方实施等的现实,也要求有人来对整个项目的规划和设计负责。由此,软件架构师这个角色就变得举足轻重了,在大多数大型软件系统和应用的项目里直接决定着项目的成败。如果将软件系统和应用的项目团队比作一只部队,那么架构师的作用就是总参谋长加上一部分总司令的作用。
我先来分享一下亲身经历过的几个架构设計的项目。
某跨国石油公司的能源交易部门于2002年希望建立一个全球范围内能源产品( 包括石油、天然气、电力、污染排放指标等)的交易结算和风险评估平台,能源产品可在全世界各地进行交易、交易实时地与交易对方进行结算、本部门所持有能源产品组合的细节及其系统风险同时被实时地更新。如果交易的一方或双方隶属于某个母公司时,母公司本身所持有能源产品组合的细节及其系统风险也被实时地更新、任何过度风险的情形都会被及时预警。
美国某著名的航空快递公司在2005年时寻找一个高效、耐用的消息交换平台,能够每天交换8亿6千万个在邮件递送过程中由每一个处理中心的进出扫描而产生的消息。而这些消息在全天中的任何时间、在世界上的任何地方不断地产生着。在此平台上需要进一步构建供广大消费者使用的邮件跟踪服务。到2010年,这个平台的消息总处理能力达到了每天50亿。并且同一个母公司下以不同注册名称独立运营的所有分公司所使用快递服务的总量,及其使用模式可以被按母公司累加起来、为下一年针对不同母公司的大客户进行更好的服务定价提供可靠的依据。
美国某知名零售连锁店有800多家店面,销售包括服饰、家电、日用品等在内的上万种商品。每个星期,总店都会在不同的商品上推出各种不同的促销折扣以及减价券。有些时候这些促销折扣和减价券的有效期只有某一天中的几个小时。促销折扣及减价券的推出上线必须经过特定权限的批准。在整个过程中完全不允许出现停机现象。
美国某玩具公司拥有多个世界上最著名的玩具品牌。在2012年引入的产品生命周期管理软件系统成为玩具产品设计、制造、市场开发、销售、服务等几乎所有的企业职能部门共同需要的平台。然而,由于历史的原因,这些职能部门目前使用的外购和自己开发的应用系统超过了50个。加之这些职能部门扩散在北美、欧洲、中国、东南亚等多个地区,实际上根本不可能让这些职能部门全面放弃已经使用了十几年,甚至几十年他们熟知的系统。然而,所有围绕玩具产品的各类职能的数据已经全部转移到新的产品平台上。如何保证这些职能部门将继续使用的现有系统能够从新的产品平台上及时有效地获得不断被更新的相关数据?
既然架构师的角色这么重要,具备什么样知识和素质的人才能成为架构师呢?
首先,一个好的架构师不但要是IT技术上的专家、还必须是所解决的业务问题方面的杂家。对需要解决的问题都不了解,怎么能保证设计出来的架构方案能够完美地解决被指定的业务问题呢?IT技术和每个行业都在日新月异地发展和变化。有能力持续不断地、努力地并有效地进行学习,是成为一名优秀架构师的必备条件。
谈到学习,人们往往认为只是对知识和事实的记忆和掌握。其实,任何学习的过程应该有三个境界:知识、洞察及影响。
在“知识”阶段,主要活动是搜集有关的基本信息、进行整理,并根据现有的知识和理论体系推导出比较直接的结论。
在“洞察”阶段,主要活动是在第一阶段中得到的事实和基本信息的基础上进行梳理、挖掘和思考,力图找出更深层次上的关系、得出更进一步的结论。
而在“影响”阶段,主要活动是围绕着如何根据前面二个阶段中得到的知识和洞察来确定行动方案,以达到预定的目标或效果。“影响”,即能够对人或者事产生积极的、根本性的变化,是前面两个阶段中积累的真正目的。如果没有“影响”,前面两个阶段的努力除了“自娱自乐”外毫无意义。而对“影响”的定义,为团队的共同努力确立了共同的目标。
其次,完美地完成架构师的工作需要技术、人员和流程三足鼎立,缺一不可。而技术只是其中的三足之一,除了扎实的专业技能,架构师还必须在另外两个方面表现出超强的领导力,并在必要时说服项目的利益相关人,保证项目的顺利完成。这些“软实力”,其实和架构师专业技能的“硬实力”同样地重要。这些“软实力”可能包括诸如区别手段和目的、处处讲究形式逻辑、利用抽象思维的能力、因对象的不同进行表述和交流、坚持原则但也知道妥协、知之为知之,等等。