首页English
  • 时政
  • 国际
  • 时评
  • 理论
  • 文化
  • 科技
  • 教育
  • 经济
  • 生活
  • 法治
  • 军事
  • 卫生
  • 健康
  • 女人
  • 文娱
  • 电视
  • 图片
  • 科普
  • 光明报系
  • 更多>>
    •   随笔札记
    报 纸
    杂 志
    博览群书 2018年11月01日 星期四

    架构师的人文情怀

    李泉 《 博览群书 》( 2018年11月01日)

        在北美从事软件架构师的工作近20年,一直以为这样的工作远离普通大众的生活。普通人即便不懂钢琴或者绘画,也能够从艺术大师的表演和作品中获得享受。然而,软件架构师的工作过程及其结果无论多么完美,总是“其牙机巧制,皆隐在尊中”,“不足为外人道也”。我最近出版了一本关于如何成为软件架构师的(技术)书后、邀我从人文角度写一篇让普通大众了解架构师的文章时,我惶恐了几周的时间,出版这本书的准备工作花了一年的时间,但所针对的读者群,一直是很“小众”的架构师和程序员群体。如何向普通大众展现这其中深层次上的思考,对我来说还真是一个不小的挑战。

        回顾过去的20年,软件应用的确是越来越贴近普通人的生活了。无论是城市还是偏远的山村,越来越多的人在日常生活里越来越离不开各种软件应用,比如网购、社交、出行、就业等的软件平台和应用。就像有一百个人吃了鸡蛋,总会有几个人好奇想去看看那下蛋的母鸡 ——大家可能会想:能设计出这些越来越复杂的软件应用的到底是些什么样的人呢?

        在英文里,软件架构师和建筑师使用的是同一个词 —— Architect。其实,软件架构的理论,尤其是早期的理论中也经常将建筑学中的术语和方法论借鉴过来。“蓝图”一词即是个例子。

        20年前的软件系统大多比较简单,很多时候程序员直接进行编程、而跳过了架构设计这个环节。然而,近20年来,软件系统本身越来越复杂,不仅需要提供的功能越来越庞杂、牵涉到的其他的现有系统也越来越多。另外,软件项目外包、第三方实施等的现实,也要求有人来对整个项目的规划和设计负责。由此,软件架构师这个角色就变得举足轻重了,在大多数大型软件系统和应用的项目里直接决定着项目的成败。如果将软件系统和应用的项目团队比作一只部队,那么架构师的作用就是总参谋长加上一部分总司令的作用。

        我先来分享一下亲身经历过的几个架构设计的项目。

        某跨国石油公司的能源交易部门于2002年希望建立一个全球范围内能源产品(包括石油、天然气、电力、污染排放指标等)的交易结算和风险评估平台,能源产品可在全世界各地进行交易、交易实时地与交易对方进行结算、本部门所持有能源产品组合的细节及其系统风险同时被实时地更新。如果交易的一方或双方隶属于某个母公司时,母公司本身所持有能源产品组合的细节及其系统风险也被实时地更新、任何过度风险的情形都会被及时预警。

        美国某著名的航空快递公司在2005年时寻找一个高效、耐用的消息交换平台,能够每天交换8亿6千万个在邮件递送过程中由每一个处理中心的进出扫描而产生的消息。而这些消息在全天中的任何时间、在世界上的任何地方不断地产生着。在此平台上需要进一步构建供广大消费者使用的邮件跟踪服务。到2010年,这个平台的消息总处理能力达到了每天50亿。并且同一个母公司下以不同注册名称独立运营的所有分公司所使用快递服务的总量,及其使用模式可以被按母公司累加起来、为下一年针对不同母公司的大客户进行更好的服务定价提供可靠的依据。

        美国某知名零售连锁店有800多家店面,销售包括服饰、家电、日用品等在内的上万种商品。每个星期,总店都会在不同的商品上推出各种不同的促销折扣以及减价券。有些时候这些促销折扣和减价券的有效期只有某一天中的几个小时。促销折扣及减价券的推出上线必须经过特定权限的批准。在整个过程中完全不允许出现停机现象。

        美国某玩具公司拥有多个世界上最著名的玩具品牌。在2012年引入的产品生命周期管理软件系统成为玩具产品设计、制造、市场开发、销售、服务等几乎所有的企业职能部门共同需要的平台。然而,由于历史的原因,这些职能部门目前使用的外购和自己开发的应用系统超过了50个。加之这些职能部门扩散在北美、欧洲、中国、东南亚等多个地区,实际上根本不可能让这些职能部门全面放弃已经使用了十几年,甚至几十年他们熟知的系统。然而,所有围绕玩具产品的各类职能的数据已经全部转移到新的产品平台上。如何保证这些职能部门将继续使用的现有系统能够从新的产品平台上及时有效地获得不断被更新的相关数据?

        既然架构师的角色这么重要,具备什么样知识和素质的人才能成为架构师呢?

        首先,一个好的架构师不但要是IT技术上的专家、还必须是所解决的业务问题方面的杂家。对需要解决的问题都不了解,怎么能保证设计出来的架构方案能够完美地解决被指定的业务问题呢?IT技术和每个行业都在日新月异地发展和变化。有能力持续不断地、努力地并有效地进行学习,是成为一名优秀架构师的必备条件。

        谈到学习,人们往往认为只是对知识和事实的记忆和掌握。其实,任何学习的过程应该有三个境界:知识、洞察及影响。

        在“知识”阶段,主要活动是搜集有关的基本信息、进行整理,并根据现有的知识和理论体系推导出比较直接的结论。

        在“洞察”阶段,主要活动是在第一阶段中得到的事实和基本信息的基础上进行梳理、挖掘和思考,力图找出更深层次上的关系、得出更进一步的结论。

        而在“影响”阶段,主要活动是围绕着如何根据前面二个阶段中得到的知识和洞察来确定行动方案,以达到预定的目标或效果。“影响”,即能够对人或者事产生积极的、根本性的变化,是前面两个阶段中积累的真正目的。如果没有“影响”,前面两个阶段的努力除了“自娱自乐”外毫无意义。而对“影响”的定义,为团队的共同努力确立了共同的目标。

        其次,完美地完成架构师的工作需要技术、人员和流程三足鼎立,缺一不可。而技术只是其中的三足之一,除了扎实的专业技能,架构师还必须在另外两个方面表现出超强的领导力,并在必要时说服项目的利益相关人,保证项目的顺利完成。这些“软实力”,其实和架构师专业技能的“硬实力”同样地重要。这些“软实力”可能包括诸如区别手段和目的、处处讲究形式逻辑、利用抽象思维的能力、因对象的不同进行表述和交流、坚持原则但也知道妥协、知之为知之,等等。

        还有,优秀的架构师应该对自己所在的以及相关的技术领域的发展现状和未来走向,具备清晰的把握,并就这些技术的发展对经济、社会,及人们日常生活可能产生的影响不断地进行思考且有所洞察。否则,一个架构师充其量不过只是一个工匠,而无法成为完成高质量的、对企业业务具有深远影响的IT项目的领军人物。

        当然,如何成长为一名优秀的架构师绝不仅仅是架构师本人的事。除了自身的积累和历练外,架构师所处的大环境也起着重要的作用。国家政策、高等教育、企业文化、社会科普等等都会对架构师的培养和成长产生影响。由于软件架构师的整体素质在很大程度上决定了一个国家各个行业里企业级应用系统和软件的水平,有关部门应该给予足够的重视和政策上适当的安排。

        1.架构师的职业规划

        年龄歧视在国内的各个行业里普遍存在。很多行业、公司的招聘条件里明确地写着“35岁以下”。信息技术、软件行业里的技术岗位更被认为是“一碗青春饭”。于是,我们看到程序员们不到30岁就对自己的职业前途忧心忡忡。其实在北美,最优秀的架构师大多在45-55岁。他们已经积累了丰富的理论和实战经验;开始对人文方面有了比年轻人更多更深的思考,而且体力尚佳。一个行业里如果没有这些高端的技术人才,这个行业的整体水平就无法提高。这是软件行业整体战略的大问题。我呼吁企业及有关部门给那些希望走技术路线的技术人员一条职业规划的康庄大道,并在薪酬、福利、培训等方面的政策上进行倾斜。

        2.软件工程问题与业务问题的分离

        在为企业的IT项目提供解决方案时,有两种做法。一种是利用最基本的计算机语言和工具,尽量一切自己开发;另一种是利用已有的平台、框架、工具,尽量只专注于解决具体的业务问题。这就是常提到的“造还是买”的问题。

        随着企业业务问题越来越复杂,以第一种方式在要求的时间和预算内,以要求的质量完IT项目的可能性越来越小。企业应对市场竞争和数字化转型所必须具备的敏捷性,要求业务IT项目的技术平台必须要有一个很高的起点;业务项目只专注于解决各自独特的业务问题,而将平台和工具的问题交给IT软件公司来解决。IT软件公司不仅具备解决这些技术问题的能力,它们的产品也有着更广大的客户群、有机会得到更多的验证、丰富和提高。想一想SAP、Oracle、MicroSoft、IBM等公司的软件之所以越做越精致,是因为它们有着成千上万的企业用户。将IT技术问题抽象出来单独进行解决,对于一个国家软件工业水平的提高大有益处。

        和制造业一样,软件工业的水平可以体现一个国家的整体工业水平、是其他任何行业的基础;软件工业的战略必须提到国家发展战略的高度来进行考虑和安排。国家、政府应该制定出相应的法规和政策、对软件工业进行有效的扶持。

        在以往,由于软件版权保护及其他方面的综合因素,国家整体的软件工业水平并没有得到充分的发展,至少与高校的软件教育水平、及从业人员的数量和整体水平等因素不相匹配。在云计算和云平台不断被广泛采用的新形势下,软件用户不再需要得到软件的拷贝,而更多地改为付费订阅的软件版权使用模式。这一转变也将有利于软件版权和知识产权的保护、鼓励软件工业的发展。

        3. 高校计算机软件课程设置

        与现实对架构师要求的匹配问题继续将业务IT项目分成解决业务问题和解决软件工程问题两个部分这个话题:解决这两部分的问题的技术人员关心的侧重点不同、所需要的硬实力和软实力也不同。

        对比高校计算机软件教育的课程设置(包括中国和美国的顶尖高校),我发现,几乎所有课程都是软件工程方面的,而与解决企业实际的业务IT问题有关的课题却涉及的很少,比如大型复杂系统解决方案的架构和方法论、IT咨询技能、还有软实力的具体内容等等。这样就造成了高校的相关课程设置与工作市场和企业IT项目具体要求不相匹配的情况:我们的高校并没有教授给学生进入工业界后立即就需要的相关技能,短期内只能靠他们自己摸爬滚打。而在高校的计算机教育之外,似乎也没有在大范围内、系统教授这方面的知识和技能的地方。

        与解决企业实际的业务IT问题有关的课题,不仅在战术上直接关系到各个行业、各个企业的IT项目的成败,还会在战略上反过来促进软件工业的整体发展,并对企业能否顺利完成数字化转型、在新的互联网经济的大环境中生存和发展具有至关重要、决定性的意义,因此也是高大上、“诗和远方”的东西。高校的本科计算机软件基础教育,应该在高年级增加诸如大型复杂系统解决方案的架构和方法论、IT咨询技能及软实力等方面的课程,并像商学院、医学院、法学院、军事学院和体育学院那样,在课程中增加对实际案例的分析、以实践来加深学生对理论的认识。

        总之,未来对软件架构师的需求会越来越多。如何系统地培养优秀的软件架构师,也将成为一个热门的话题。

        (作者系资深系统解决方案架构师,著有系统架构及如何培养架构师的专著《现代 API - 通往架构师之门》。)

    光明日报社概况 | 关于光明网 | 报网动态 | 联系我们 | 法律声明 | 光明网邮箱 | 网站地图

    光明日报版权所有