宋齐军,齐少安(中讯邮电咨询设计院有限公司,北京100048)
一个新的IT 技术在电信运营商的应用通常是衡量一个技术是否成熟,是否具备支持大规模业务量的业界主流认识。但随着互联网时代的到来,游戏规则发生了变化。具有叛逆基因的互联网企业纷纷用自主研发的利器打破了运营商多年的传统观念。去IOE、云计算以及大数据用户画像等新的技术逐渐被互联网厂商所引领,运营商开始向互联网厂商取经。
运营商内部也在不断反思,几十年的持续投入最后却没有自己的核心IT技术积累,自主研发逐步提到议事日程。
国内运营商的IT 系统的建设流程基本是沿用网络基础设施的投资建设模式,对应用软件系统的开发需要经历规划、可研、设计、采购招标、建设、验收、交维等必须的流程。随着互联网的发展和用户使用习惯的改变,运营商的业务支撑同样需要快速响应客户的需求。各大运营商在向互联网厂商借鉴经验的过程中,发现主流互联网厂商都是依据自主团队进行IT 系统开发建设,在快速响应市场变化的需求中起到了重要作用。回头再看运营商自己的核心IT 支撑系统却严重依赖应用厂商的开发实施,再加上宏观层面对自主研发能力的导向,使得各运营商也有了对IT支撑系统进行自主研发的冲动。
运营商IT 支撑系统传统开发模式在满足电信业务支撑需求的同时,也给运营商带来几个方面的痛点。
随着国内电信运营商IT系统的风云变换,国内参与电信行业核心IT 系统建设的系统集成商之间虽然也经历了收购整合等一系列的运作,但主要的IT从业人员只是随着东家的变化,并没有离开电信IT系统这个圈子。三大运营商通过核心系统统一版本等战略行动,最后留下来的应用软件系统集成商主要集中在亚信、华为、东软、思特奇、中兴、大唐、天源迪科等几家。
早期,电信运营商与银行业并称国内IT系统的强力推动者,对国内大型支撑软件开发能力的提升提供了丰富的应用场景和大规模业务量的实战检验环境。银行业由于金融数据和交易的敏感性,较早建立了自己的研发中心,走上了自主研发和外包相结合的IT系统发展道路。而运营商则走了另外一条道路,将网络设备厂商之间的白热化竞争引入到IT系统建设中,同样压低了IT 系统建设成本。这条道路在电信行业红火的时候并无大碍,但是当电信行业整体增长趋势变缓时开始暴露出一些问题。由于运营商一直都是对应用系统进行采购使用,并没有掌握IT支撑系统的核心技术,运行维护对集成商的依赖性较大。当需要对IT系统精耕细作,通过提升IT系统支撑能力发掘网络潜力,提升用户满意度的时候,却发现不仅系统改动成本较高,而且改动效果及风险都非运营商所能控制。
运营商的IT 系统与其他的数据、传输、无线基站等基础网络设施相比具有不同的特点。IT 系统具有应用个性化强,与业务紧密关联、要求与市场策略和措施紧密配合等一些列特点。
依赖外部开发的IT支撑系统,在响应需求变化时可以采用2 种开发模式:一种是系统改造的工程项目模式,一种是购买工时的人力外包模式。
如果采用系统改造的工程项目模式,则应用厂商需要在开发合同中明确业务需求,才能评估时间进度和人力需求。而现实环境中,业务需求也是需要不断尝试调整才能最后稳定下来。而开发人员作为外部人员,对系统修改缺乏主观能动性,往往是被动地对系统进行修修补补。而且电信运营商的工程建设流程,使得新的需求从提出,到最后提交给开发商进行实质性开发,往往需要经过漫长的阶段,等到系统上线时经常落后市场策略的支撑要求。
如果采用购买工时的人力外包模式,则运营商的项目开发经理需要对系统非常熟悉,能够指导开发人员进行正确开发,这又恰好是运营商技术队伍的短板。
长期的运营商基础网络的建设模式和流程,固化了运营商IT建设管理人员的思维方式,缺乏创新的思维,对IT 系统的建设基本上处于被动推进的状态,而不是主动求变,去拥抱市场及需求的变化。
运营商的IT支撑系统是和市场策略、用户使用紧密相关的业务支撑系统。在互联网时代,当用户使用习惯、生活方式发生巨大改变的时候,仍然沿用旧的思维方式,则必然难以快速高质量地支撑业务发展。
在应用软件行业关于开发成本估算虽然有诸如经验估算、因素估算、人月估算等一些模型和算法,但这些都是要以详细准确的相关工作量为基础,然后参考各种费用构成来估算软件的开发费用。运营商IT 支撑系统通常采用的是整体采购定制化应用软件,而定制软件一旦上线,重新更换应用厂商是一件非常恐怖的事情。由于不掌握系统开发的核心技术,运营商对新增或变化需求导致的软件开发工作量评估缺乏依据,软件厂商为了弥补招标时的低价中标损失也会虚报工作量,双方经常陷入讨价还价的境地。
另外由于运营商在IT 支撑应用软件采购上沿用网络基础项目建设流程,在年度规划时,宏观确定了IT支撑项目投资,但此时需求和方案均不明确。运营商IT 支撑系统的开发客观规律是要在规定的时间点上线需要的系统功能,这就造成很多项目先开发后算账的既成事实。而IT 建设部门为适应建设流程又必须在规划及可研批复的框架内使用开发费用,每年的IT 系统开发费用与需求没有明显的相关性。最终造成公司高层觉得IT投资弹性大,基层执行者认为项目建设很委屈,软件厂商在合同额度降低时认为保不住成本,甚至以撤出支撑团队为由提高价码的尴尬现象。
IT集成商在项目初期为了抢占和保住市场,一般会投入核心技术力量进行系统开发。一旦系统上线进入维护性开发阶段,开发团队的能力则开始良莠不齐。
运营商IT支撑系统是直接面向用户的,很多需求的提出来源于市场部门的一线业务需求,这些需求又经过IT 建设部门的消化转化为软件开发需求。从事软件开发的人员都有共同体会,业务人员最初的朦胧需求到完成开发实现所需的具体需求距离还很遥远。
按照运营商目前的IT工程建设流程和采购方式,应用软件开发商往往按照运营商提出的业务需求进行开发和交付。由于系统的功能要求在业务需求提出阶段可能描述得不够详尽,当开发商交付软件功能时,业务人员会发现实现的功能与自己真正需求的功能相差甚远。
为了降低硬件采购成本,三大运营商采用的IT硬件设备集中采购成功实现了IT 设备价格的迅速回落。但随之采用的软硬件分离模式,也使得IT集成商在系统性能优化方面失去了动力。应用开发商在发现系统处理性能下降时,不是尝试优化系统,而是对运营商提出应该对设备进行扩容的要求。这使得运营商IT系统的主机越买越多,CPU利用率仍然居高不下。
自主研发不是一蹴而就的事情,软件研发有其客观规律可循。运营商从依赖外部开发向自主研发转型,必须首先从观念上解决好以下问题。
运营商IT支撑系统一方面连接客户,面向复杂的市场需求,以及部分政策性需求。另一方面连接着网络设备,面向国际电信行业的设备标准。在面向标准化设备方面,电信行业的主流IT集成商已经有了多年的投入,并且经过与现网设备的长期磨合,软件功能相对成熟。运营商IT 研发团队在这方面应该投入的力量是研究网络标准与业务发展的关系,做好规范衔接工作,为系统接口预留扩展性,而无需投入力量进行重复开发。
对于IT支撑系统中使用的一些基础框架性软件,和业务相关性很低,属于可重复利用的组件,IT 研发团队应投入力量熟悉并掌握软件的使用和运维,能够在某些功能需要使用这些基础能力时,快速实现系统对接即可。
运营商IT 研发团队的主战场应该是面向业务和用户的系统功能研发,这是运营商业务发展的根本,也是自主研发与委托开发的重要区别所在。在这些模块的研发中,自主研发团队需要对业务进行梳理和抽象,设计出相对稳定的软件框架,并可实施自主代码开发或对厂商进行指导性开发。
自主研发应该根据运营商自身专业人员配置、经验积累等情况,把现有的IT支撑系统的主要模块进行分类,根据优先程度和必要性合理安排自主研发的深度和范围,避免大而全的自主研发局面。
以往运营商的IT 支撑系统都是从IT 集成商采购定制软件或服务,运营商IT建设部门与系统集成商之间是明显的甲方乙方关系。运营商的管理人员通常利用自身的强势地位,不管需求是否合理,时间进度是否可行,统统压给乙方去解决,包括和软件项目相关的一些杂活累活,都由开发商代劳。一旦运营商开始实施IT 支撑系统自主研发,则首先会带来业务部门、建设部门和研发部门的不适应。业务需求部门、系统建设部门和软件开发部门三者处于一个平等的地位,开发人员可以说不,这是业务需求和建设方都要适应的新变化。
运营商IT 支撑系统相关的人员首先要转变观念和思路,从分析需求、系统架构、代码开发、系统部署、测试联调、运行维护全流程都需要亲历恭行。要具有高度的责任感,对业务负责,对系统负责,才能有好的效果。这就要求运营商IT 支撑团队消除根深蒂固的甲方思维,转变为主人翁精神,从我要厂商怎么干,转为我应为系统怎么干。
软件研发不是一个按点下班的工作,运营商自身人员虽然也有经常加班写汇报材料的痛苦经历,但能否转化为愉快地解决研发问题的自觉工作,是运营商人员难以迈过的坎。
IT支撑系统是电信运营商发展市场,面向用户的有力抓手,在系统的自主研发中应以服务企业战略为根本目的。服务企业战略就要看系统是否适应市场需要,运营商高层可以提出战略目标,研发团队需要在目标和方向牵引下研发系统。检验系统的标准要看系统真正用户的使用评价和是否实现系统预期的目标为基础,不能因某个领导或某个人的喜好为标准进行评价。
在电信运营商内部长期存在着重网络、轻运营的思想,认为只要网络好,就能够吸引用户,IT支撑系统先天性就是配合网络发展战略而存在的。IT 支撑系统一直是一种辅助配套的角色,包括IT建设部门自身有时候也会认同这种观点,这和互联网厂商有着本质区别。互联网厂商的IT核心系统是企业的价值源泉,依赖的网络不是自己的,IT系统才是互联网企业立身的根本。
运营商IT支撑系统必须有量化的价值定位,才能真正做好自己的长远规划,与电信基础网络建立合理的边界。在系统内核上建立稳定的支撑架构,支撑网络底层技术的不断演进。
电信运营商IT 支撑系统需要在实现自身价值的基础上,具备衍生新的价值空间,才能激发研发团队的热情,做好自主研发工作。一个没有量化价值目标的IT支撑团队是难以进行考核与激励的,也是难以支撑自主研发的持续改进的。
自主研发首先是个软件研发的过程,只是参与主体从IT 系统集成商转换为运营商自有团队。因此做好自主研发也必须遵从软件研发的客观规律,做好研发最重要的因素还是人的因素,因此组建高效的自主研发团队是第一要务。
按照软件工程的理论,运营商组建自主研发团队同样需要组建需求分析、系统分析、系统架构、系统开发、系统测试、运行维护等人才队伍。
相对稳定的工作环境,经过多年的积累,运营商内部拥有对电信网络系统、业务模式非常专业的人才。这些人可能分散在分(子)公司或设计院(所),运营商需要采用灵活的方式把这部分人充分利用起来。此外还应该引进一些互联网公司的人才为团队打开思路,不局限于运营商内部的常规运营思路。
由于自身机制等制约因素,运营商的系统分析、系统架构和系统开发、测试人才缺乏。这部分团队的组建是整个团队组建的难点。应用软件研发是个对团队及个体能力要求都比较高的工作。一个好的架构师在系统中发挥的作用常常是不可估量的。
运营商的现有用人机制不仅很难拿出高薪水吸引社会人才,而且稳坐钓鱼台,等鱼上钩的招人心态很难招到顶尖的领军人才。从高校新招的毕业生缺乏经验又需要一定的成长周期,远水难解近渴。初期阶段运营商可以采取和行业内的IT 集成公司合作的方式开展自主研发工作,把自身对业务的熟悉与专业的开发队伍结合起来,既培养了人才又使系统有了平稳的过渡。
自主研发需要在团队内部有灵活的机制来调动人员的积极性。IT 支撑研发团队的管理有别于现有的IT 项目建设管理人员的管理。需要借鉴业界比较有效的管理方式,从薪水激励、升迁通道等多方面对团队进行激励。IT支撑系统的研发创新评估、工作量的估算、劳动价值的衡量有其自身的特点,如果沿用原有管理模式下的考核、激励机制显然不能满足要求。
IT 支撑系统自主研发需要对各子团队负责人放权,行政团队需要的是为技术团队提供各类后勤保障,而不是对团队进行各种KPI考核。对子团队的考核应以结果为导向,就像部队战斗歼敌再多最后没有拿下高地对整个军事行动而言就是失败。
任何应用系统都是为业务需求服务的,运营商IT支撑系统也不能例外。需求对一个应用系统的研发具有的重要性体现在如下方面。
需求的合理性决定应用系统的成败:需求的描述要分步骤、分阶段,抓住主要矛盾和轻重缓急,促使系统合理推进。在运营商自主研发的起步阶段,需求的合理性尤为重要,否则会使研发团队陷入挫败感,严重时会影响整个项目的成败。
需求的明晰程度决定应用系统开发效率:需求描述一定要准确、严谨,具有明确的界限,不能采用模糊语音,否则依照需求开发出来的成果很难与需求提出者所想要的结果相吻合,就容易造成返工修改的现象,严重影响开发的效率。
需求的稳定决定系统的开发周期:需求提出后,在交付开发前一定要进行筛选,统筹考虑,在一定时期保持需求的稳定性,避免需求主要内容的频繁变化,否则会严重延缓系统的开发周期。
由于需求对系统研发成败至关重要,组建真正的需求团队就非常重要。运营商内部有大量的对业务模式与网络结构较为熟悉的人员,可以从系统的使用方面提出用业务语言描述的需求。但是要把提出的业务需求真正按照软件工程的要求变成可以使开发团队能够理解并转化开发说明书还需要一个过程,既懂业务又懂技术的综合性人才就显得尤其重要,这部分成员知道如何把业务需求转换为技术需求,并对需求进行识别,发现需求表象下的真正需求,从而有利于开发团队理解,起到事半功倍的效果。
应用系统开发是个渐进的过程,对系统的规划设计应着力于大框架的设计,而非细节的纠缠。在细节上应通过开发实践和使用反馈来不断完善。运营商常年善于给人绘制美好的蓝图,但在落地上总是有些差强人意。反观互联网厂商在有了新的点子后,会马上切入,快速推出产品原型,然后不断通过用户反馈来丰满系统功能,并逐步修正系统的研发目标,在用户使用中去发现或试探出有效的需求。
运营商做自主研发必须首先克服重研讨轻实践的做法,一个经过多年系统实践的架构师才有能力设计出更高效和稳健的系统。通过快速迭代在实践中提升系统的应用效果远远好过只展现一个蓝图来描绘系统的美化前景,而且还可以锻炼开发队伍,去验证开发技术在生产环境下的应用效果。
系统开发的目的是为了运用,如何使系统使用起来是运营商自主研发的后续动力和信心所在。运营商有一些开发交付后几乎没有用户的IT系统,原因主要有2个,一个是开发需求把控不严,开发了实际不需要的系统,另外一个是系统投入使用后与用户期望甚远,用户拒绝使用系统。
因此在解决了需求识别的问题,投入力量开发的系统一定要让用户真正用起来。系统的开发建设是为了减轻人的工作量和使其规范化、满足高效率管理需求,但是上线初期出现工作量增大、操作流程不顺手等问题又是事物的发展客观规律所致。研发团队要让用户了解系统带来的便利性,并真正从用户的角度去改进使用中发现的问题,切实重视、倾听使用者的意见,快速响应,持续积极改进,使用户能够逐步看到系统使用的前景和曙光。
IT支撑系统研发团队应改变被动支撑的局面,主动研发可能满足市场需要的系统功能,然后提供给业务部门选用。或者当业务部门提出自己的市场策略的时候,可以快速地拿出实现方案并上线使用。真正把业务部门作为自己的客户进行服务,变业务部门提出需求由IT 部门实现支撑的模式为IT 系统引导业务发展方向的模式。
做自主研发就要尊重研发的客观规律,任何研发都不是百分百成功的。尤其做预研性研发,研发结果失败是很正常的。运营商做IT支撑系统的自主研发,领导层一定要以宽容的角度看待研发团队,要鼓励大胆尝试,允许失败。软件研发还有一个其他行业不可比拟的优势就是即使一个项目研发失败了,这个项目的一些衍生品仍然可以在其他项目中得到很好应用。只要能从研发失败的项目中汲取经验,在方向正确的前提下,会有更多的几率取得成功。
运营商曾经一度是各大高校优秀毕业生的理想就业选择目标。随着电信行业景气度的整体下行压力,近几年对优秀人才的吸引力也开始下降,不仅外部人才引进困难,内部IT人员的流失也比较严重。组建优秀的自主研发团队首先面临如何留住优秀系统架构师级别人才的难题,运营商作为国有大型企业,一些体制内的惯性思维和条条框框对招揽高水平的软件系统开发领军人物缺乏吸引力,对内部人才的整合也存在各种困难。如果不能在用人机制上取得突破,运营商自主研发团队的质量将难以保证。
运营商对IT 系统做自主研发应该避免进入压缩软件研发费用的误区,认为IT 支撑系统都自主研发了,就应该节约投资才对。其实自主研发的主要目的是让应用系统能够更好地符合企业战略规划的需要,快速响应市场需求,并掌握核心技术,在研发初期并不会节约投资,而且由于人才储备的需要还会增加投资。但是当自主研发发展到成熟阶段,就会自然地节约IT投资。
自主研发还应避免陷入完全自力更生的误区。自主研发在保证自己掌握核心技术、起主导作用外,不管从管理模式或者合作模式,均可以有多种方式。运营商一方面要着手自主研发系统,一方面还要保证现有IT 支撑系统的正常运行。如何给陪伴运营商多年成长的系统集成商留下合理的生存空间,充分发挥他们这些年积累的经验技术,让系统集成商团队在一定程度上成为运营商自主研发的助力者,这些都需要很高的平衡艺术。
运营商的IT支撑系统自主研发道路任重道远,转型的代价和阵痛同样存在,必须有大格局者才能担此重任,而且需要运营商从公司战略层面给予保障,走在这条路上需要勇气、热情和坚持。
[1] 布鲁克斯.人月神话[M].北京:清华大学出版社,2002.
[2] 迪马可,利斯物.人件[M].3版.肖然,张逸,滕云,译.北京:机械工业出版社,2014.
[3] 萨默维尔.软件工程[M].程成,译.北京:机械工业出版社,2011.
[4] Ian Alexander. Discovering Requirements: How to Specify Products and Services[M].New Jersey:John Wiley&Sons Inc,2009.