序言
2019年对于材料管理软件(以下简称材料软件)来说是波澜不惊的一年,我们结束了持续近三年的核心功能开发,进入了大运维和全面推广应用阶段,最高峰同时有6,7个项目在执行应用实施。但是如火如荼的表面掩盖不了我们已经走入了瓶颈期,遗留的问题如何处理?下一步该去往何方?我觉得危机四伏却又无法找到答案。在寻求出路的过程中发生了很多有意思的故事,选取部分给大家分享,这些事情并不能告诉我们如何建设一个合格的信息化系统,但可能让人对信息化工作增加些许感性认识。有时信息化工作需要的不是高精尖理论,而是科普。
故事一:这世上没有白走的路
材料软件的技术架构经历了多次重构,一开始是比较土的ASPX界面,用上EasyUI后看上去高大上了许多,却遗留了一个问题:EasyUI对IE的兼容性不好,速度慢,有的界面打开会报错。这个问题随着软件应用面扩大变得越来越致命,我们不得不一次次地向用户推荐Chrome浏览器。有的人为了打开材料软件,人生第一次安装了Chrome,安装的时候他的眼神就像你要杀了他或者他想杀了你一样,你很难让他相信Chrome的V8引擎更加先进,他只会觉得你做的软件不灵。
这个问题一直拖到了今年,我下决心要解决,用户更习惯IE,这是合理需求,我们应该满足。于是我尝试新的UI框架,材料软件已经很庞大了,没有足够的人力用全新框架重做一遍,只能最小限度地替换前端UI。首先分析几个待选项:Bootstrap,LayUI,KendoUI,从中选出最符合我们这次修改要求的框架。预研发现LayUI对IE的兼容性很棒,与EasyUI的用法很接近,可以几乎不修改后端代码,于是初步打算选择LayUI,此时并不是立即开始替换,而是要用LayUI进行验证性开发,业内土话叫踩坑,你一定要经过类比实战的检验最终确定它可用,才能团队全面铺开,我选择两个界面,用LayUI完全实现原有的功能,力求踩中每一个细节,当做到第二个页面的时候,发现一个致命问题,LayUI的Table表格控件不带前端自动分页功能,这意味着我们几乎所有的后端查询都要修改,这是无法接受的,虽然熬了两个星期的夜,但此时不得不放弃LayUI,这是一个好UI框架,只是不适合我们,及时止损,避免团队人力浪费在错误的方向。
这就是我们的软件开发工作常常遇到的事情,付出了很大的心血而劳动成果是零,尤其在这个少有人关心过程多数人只关心结果的时代,更容易让人沮丧和气馁,我们必须拥有更多的勇气和坚毅。每验证了一条错误的路,我们就离正确的方向又近了一步,所有的试错都不是白走的路。软件开发从某种意义上来说就是一种试错工作,选择了这一行,就选择了燃烧生命Debug。
故事二:原则即尊严
整个一九年我们都被一个事情困扰,自从去年底供应商管理与合同支付管理进行了系统集成之后,供应商重名的问题就开始大量出现。原因并不复杂,在合同支付表单登记的时候,秘书每次都手工输入供应商的名称,当这个供应商需要开第二个支付表单的时候,秘书会再输入一次,不管这个厂家名称之前输入过没有,于是供应商目录里重复的厂家越来越多,有的厂家还变更了企业名称。当有一天我们要做系统集成准备梳理这个数据时,发现数据一团糟,10000多条供应商名称信息里7000多条是重复数据,一个供应商有20多条重复记录,其中十几行是同一个名称,还有几行是别的名称,数据洗无可洗,这就叫埋的雷炸了。
这个事情在第一步就走错了方向,避免这个问题有一套标准动作:
1.厂家的名称在输入时查重验证;
2.登记支付表单时用选择的方式输入厂家;
3.厂家更名时修改原信息而不是新登记一个。
看上去很简单,不过是ERP的传统小节目,但是为什么就让这个小问题最终变成了大问题呢?我猜大概原因是业务口输入的时候图方便,供应商名称手敲进去是不是真的方便我不能肯定,但肯定是最符合他们工作习惯的一种输入方式,于是他们提出这样的要求,我们的开发人员无条件接受,因为IT人员在业务面前没有话语权,什么软件开发标准动作、基本原则在用户满意面前都不值一提。
供应商名称本该是最核心的主数据之一,主数据的底层数据结构设计一定要谨慎,这种数据是不能离散的,一开始随意处理,回头再想当主数据用的时候会发现已经不符合主数据的约束条件,强行切换为主数据时,一部分数据变成了脏数据。
当然这都不重要了,重要的是我们没有坚持原则,我经历过相同的剧情,能体会到IT的无可奈何,但是事实也告诉我们坚持原则才是正确的。为什么?因为我们放弃原则的后果就是一无是处,别人输入的时候方便了,会感谢你吗,不太会,等问题积累爆发的时候呢,你承担全部责任,整整一年我们被问了一百遍为什么供应商信息会重复啊?底层数据规划有问题吧?你们人(能)力(力)不足(行)吧?你解释不了,别人听不懂也没有兴趣听。
原则代表了实事求是、代表了按科学规律办事,这是当下中国人最缺乏的东西。这是我们的尊严。你没日没夜的加班,做梦都在想怎么让那些已经存在的供应商信息跟新注册的账号关联起来,换来的是灵魂拷问三联,那一刻你突然觉得自己很不值得,因为尊严都没了,你加的所有的班,熬的所有的夜,读的所有的书,什么985211,在用户心里都是狗屁。愿我们都能想明白这个问题,下次用户再提出不符合软件开发规律的需求时,坚决说不。
故事三:需求溢出
R项目提了一个需求:MTO增加物理分区,大概就是在主项的下面增加一级,由两级管理变成了三级管理,这本没有什么错,精细化管理就是我们追求的目标;但是这种老是为了某个项目的管理要求去突破软件的基准的做法本身是违背信息化规律的,给我们的软件造成了一些麻烦。
软件在开发之初就确定装置-主项两级管理的数据结构,所有的材料都带有这样结构的WBS信息,如果要增加一级,也就意味着整个软件与材料明细数据有关的表(几乎所有的核心表)都要修改底层表结构,软件等于重做一遍,对于一个已经开发了数年,同时在线执行6,7个工程项目的系统来说工作量大到难以估算。为了这个需求付出这么大的成本是否值得呢?完全不值得,这是一种需求溢出,从我们已经执行过的项目实际情况来看,分两级的管理都没有百分百落实,很多阶段的管理都只到第一级,比如采买环节。每个专业都从自己专业的实际情况出发这没有错,采购就希望不要分太细,施工就希望分的细,便于管理,设计呢,在最上游的好处就是,反正你们要的我都提供,往下游专业一丢就没我啥事了,后面搞不出来是你们的事,跟我没关系。我们虽然参加了项目协调会,也提出了意见,但是没有什么效果,类似于故事二的没有话语权一样,所有人都在按照增加物理分区的方式推进。
这个问题并不是不能解决,增加物理分区的初衷是什么,更精细地管理材料,哪个物理分区的材料先施工就先买先到。在实际操作中可以把物理分区这个概念留在设计和施工, 采购管什么物理分区呢,材料标记上物理分区有什么用,到了现场还不是到处跨区域借来借去,材料越是按区域分的细,现场借调材料的交叉关联越是支离破碎。应该让施工根据物理分区做好施工计划,材料来了以后,不看材料属于哪个物理分区,看施工需求排序,该谁先施工就谁先拿,让计划成为正真的计划,让物理分区信息留在图纸上,留在施工计划里,让材料少一些非物理属性的标记,让材料数据在想捏拢的时候能够捏得更拢,要打散分项的时候照样可以分项。
我们的目标往往没有问题,但是在策划方案的时候太相信惯性思维,曾经有一些软件功能,在提交需求的时候说的无比重要紧急,开发的时候花费无数人力,做好之后从来没人用过。水溢出杯子的结果就是洒一桌子,不但没有用,还要浪费人力打扫收拾;需求溢出每次留给我们的一地鸡毛就是这个画面,特别形象。
故事四:困局和解决困局
G项目软件应用炸锅的时候我很吃惊,发来了一大篇问题清单;归纳一下发现主要的问题就是发料没人销账;材料没人销账的话,就会继续挂在可用库存里,账面可以继续开单领,但是东西已经被前面的单子领走,后面的单子领不出东西,于是乱套了。现场说没人力销账,要我们把软件改成,不用销账,开了单子材料自动就下账了,我们直接予以了拒绝。任何一个进销存类型的系统,销账都是最核心的动作没有之一,开单即销账才会真的乱套,因为人为绕过了所有材料的核对和审批环节,把材料的控制权交给了上帝。人力不足是项目管理资源层面的问题,管理资源不足就把软件的能力降低以适应当前管理的水平,这是一种让人十分惊讶的思路。
不过比这有趣的事情多了去了,比如有人说仓库人力不足就是我们软件害的,需要花费人力输入信息,搞得我以为以前用Excel管台账的时候,账目都用眼神看一眼数据自己就蹦上去的;还有说材料数据不对全部是软件的责任,跟“材料被偷了、到货晚了、工人领出去不见了,欠工人工资第二天工人跑了换一波人又来领一样的东西”这些事情都没有关系;还有从没打开过我们软件的人,开会第一句话就是“我觉得这个软件没什么用”,旁边坐着一排真正用过而且跟我们交流觉得软件挺有用的小年轻一看老同志这样发话都不敢吱声了。G项目暴露的问题也是整个软件项目多年以来一直面临的困局,是整个信息化工作在传统行业遭遇困难的写照,从下往上做信息化很难成功的原因就是制衡的因素太多,大家心如明镜,却又没人能说清楚。
G项目虽然没有结束,但是这个故事有一个好的结尾。通过沟通,项目增加了销账人员,大部分问题迎刃而解。事后我的体会:天时地利人和真是太重要了,特别是人和,这个项目我们正好同时遇到了比较支持信息化创新的项目领导和现场曾经与我们合作过并很认可软件的工程师,大家非常积极的解决问题,所以G项目能够从刚开始有点混乱的局面迅速扭转回来。相比之下,有的项目出了问题就甩锅给我们,或者用着用着就没有下文了。不过现在已经不在意这些问题了,我们在几个重点大项目里都完成了较好的应用效果,后续的几个大重点项目都在紧密跟踪,软件应用平稳,未来效果可期。
这四个故事是信息化工作在传统行业中艰难前进的缩影,我们既要看到艰难这两个字,也要看到前进这两个字。
心得,收获
今年参加了两场数字化工厂研讨会,开拓了不少眼界,最大的感受就是行业发展太快了。几年前数字化工厂还是一个新兴事务,今年已经是工程项目的标配。我们还没有回过神来,琳琅满目的软件产品已经摆在我们面前。材料管理作为被业界广为接受的成熟概念依然是工程项目集成化管理的一个重要组成部分,同时我也注意到材料管理在行业一线工程集成化解决方案中作为一个模块的身份逐渐被弱化,以一种下沉的方式分解和融入了项目全生命周期管理系统大框架中,可能这是未来工程项目信息化集成解决方案的发展趋势吧。
很多公司用的都是Marian,我们是少数自己开发材料管理软件的公司。为什么要一直坚持做这个事情,今年是回答这个问题的好时机,因为今年发生了好多大事,华为抗美,王坚当选院士。
当前整个工业软件领域,国内几乎是撒哈拉沙漠,比大家都关注的芯片领域荒芜N倍,国外专业软件事实垄断接近百分之百,计算、模拟仿真、三维、制图等平台占据整个工业设计软件的上游,用与上游平台集成的ERP类型软件比如P6,SAP这样的老牌领袖产品从行业前端逐渐向下游挤压,能留给我们自己做的东西真的不多了。类似材料软件这样的ERP类型系统可能是我们最后的阵地,而缺少自己的东西会有什么后果,从2019的华为抗击美国的事迹中可以找到答案,不再赘述。
自主研发的过程是非常艰辛的,需要好的土壤、足够的资源、合适的机遇再加上一点运气。一开始进展是很缓慢的,我们不止一次以为迎来了至暗时刻,结果发现更绝望的还在后面。有人质疑一个进销存软件真的有这么复杂吗?首先这不是一个进销存软件,其次确实很复杂,材料管理是一个系统工程,设计、请购、供应商、采购、监造、仓库(这里还省略了询价、物流等因为我们人力不足而没有深入开发的模块),每一个环节有大量复杂的应用场景,涉及的细节之多,数据颗粒度之小,超出了我们对一般表单式ERP系统的认知,流程的链条向上游延伸的很远,重心根本就不在末端的进销存场景里,单纯做这样一套增删改查不难,把他打磨的有灵魂却很难。用户能理解我们在做什么的人都非常少,有时沮丧是难以形容的,比如我们设计出了一种数据松耦合的实现方式,可以把结构化材料数据汇聚又打散而不破坏数据的关联关系,把最简单的数据结构的能力充分地发挥出来。这是我第一次体会到当年老师在课堂上眉飞色舞地介绍的数据结构之美,然而却无人分享,自己就像孔乙己一样,用指甲盖蘸了一下黄酒,想给大家表演茴字的四种写法,抬头发现人已经走光了。
软件产品研发的周期本来就漫长,正好适合一支队伍跟产品一起成长,队伍有阵地,产品有生命,彼此成就。自主研发一套软件并把它用好,得到的受益绝不仅仅是培养了几个工程师,积累了几行代码这么简单。这一点在MS项目上我深有体会,因为现场仓储要使用第三方的终端设备,连带让别人开发了现场仓库管理模块,我们与对方一起做系统集成和数据的互通,通过数据接口互相捞取数据,这是最短平快的集成方式。不需要委托别人做接口,能够迅速的响应与第三方的系统集成,这就是自主可控的优势。项目后期对方开发队伍核心人员都离职了,给我们带来了很大的麻烦,也提醒了我们依赖外部力量的不确定性和自主可控的重要性。现在不论是从整个大环境、国家的政策层面,支持自主创新已经是大势所趋。
论自主研发的艰苦,给大家分享阿里云的故事。
虽然目前阿里云估值已近5000亿,没有人再怀怀疑云技术的巨大能量,不过几年之前云的概念还没有为世人所接受。在乌镇互联网大会的前身-中国IT领袖2010年峰会上,有IT大佬曾表示云计算是一个比较超前的概念,可能你过几百年、一千年后,到阿凡达那种确实有可能。而当时另一位IT大佬表示,“是新瓶装旧酒”。不过这个所谓极度超前的概念,在短短几年后就阿里云带飞了。
云计算之所以在当时不被世人看好,关键在于其虚拟层损耗根本无法避免。打个比方形容云计算,它就好比镖局的总镖头不亲自下场,只是自身功力传输给其它镖师,再由镖师对外提供服务,由于镖师的功力是可以被标准化定制的,所以这种模式非常灵活方便;但坏处也随之而来,就是在功力传输的过程中损耗难以避免。
所谓“天之道,损有余而补不足”。金庸武功秘籍《九阴真经》中开篇金句的背后逻辑是如此之硬核,以至于没人考虑过要打破它,甚至会出言嘲笑那群誓言突破这条铁律的“疯子”。而王坚和他的阿里云对此的回应却也简单,直接将算力转化的损耗降为0,真是不疯魔,不成佛。
今年的“双十一”阿里巴巴正式宣布,其核心系统已100%跑在阿里云公共云上。
飞天的每一行代码都是阿里团队自行编写的,没有借鉴Open Stack等开源云调度OS,据说在2013年底,飞天进行上线前的最后测试时,王坚直接拍板使用暴力拨电源的方式测试其系统稳定性,其决心可见一般。虽然没有开源,但是从目前飞天调度10万台级别以上的服务器就能看出他是世界领先的云OS。
在去年7月王坚参加了央视的《朗读者》节目,再现登山经典《进入空气稀薄地带》,每每重温这期节目,笔者总不免热泪盈框。
王坚说“随着大家对计算需求的增大,需要有人想办法把井水变为自来水,让它顺畅地流入寻常百姓家。这个过程看似简单,实际上,需要建水厂、铺管道、做水龙头、装水表等一系列环节的精密配合。更重要的是,它需要人们对新理念的接纳。”
但是人们对于新概念的接受过程,却真是像这期节目的标题一样《进入空气稀薄地带》,用王坚的话说这是他的团队、他的客户拿命来填的,因为第一个用电的人,第一个坐飞机的人也是拿命来填的。在2012年阿里的年会上,看到那些曾经的同事,那个一向以坏脾气闻名的王坚突然变得柔软了,哭得像个孩子,这个镜头也被当期的节目忠实的记录了下来,可能这也是阿里云团队以命相博的一种释放吧。
要知道王坚在带领阿里云践行自主研发理念的时候还是在10年前,当时我国整个IT产业还处在复制美国模式、定制开源系统的时代,彼时笔者做为一名IT老兵都不太相信国人能自主写出操作系统,做出芯片。而王坚却领着他的团队,去做一个中国人从来没有做过,只在他们脑子里出现过的东西,并最终取得成功,证明了中国人可以在技术创新领域占有一席之地。从某种意义上讲目前国产自研的操作系统、数据库的如火如荼,是拜王坚及其阿里云带来的创新之风所赐。
王坚的团队不是拿命来填,是血荐轩辕。
王坚是心理学博士,计算机知识还是旁听来的,被人戏称“不会写代码”当然从公开材料上看王坚在浙大是教过计算机课的,所以不会写代码肯定只是一种调侃。但是这样的教育背景也实在无法让人们把王坚和中国工程院的院士联系到一起。
笔者在前文《我改变世界、我已看透、我不再是个程序员-IT创世诸神如是说》(https://blog.csdn.net/BEYONDMA/article/details/102882429)中也曾经介绍过微软的创始人比尔盖茨的《未来之路》简直可以称作穿越之路,书中种种描述均已成真。也许是微软系高管都有这种预言力的加持,时任微软亚研院副院长的王坚见到马云时第一句话“如果阿里还不掌握技术,未来就不会有阿里的身影”,竟一语成谶。
不过“理想很丰满,现实很骨感”。尽管得到了马云每年十亿连投十年的承诺,但是项目最初的几年却是非常的不顺利,由于概念过于超前,阿里云在2011年之前几乎是个连PPT都拿不出来的公司,所以王坚也不得不向现实妥协,在2012年联合天语、英伟达推出了阿里云手机,其搭载的云OS操作系统整合了阿里当时旗下如邮箱、云应用、地图 、浏览器及IM通讯多个电子商务服务,虽有不少人看好,但由于小米等国产厂商的入局,阿里云手机也是以彻底失败而告终。
虽然目前回头来看,手机是前端工具,而云是后端的算力系统,两者太不搭界,失败在所难免。不过当时的王坚也因为这个项目的失败而被冠以“骗子”的名号。
可以想象自身没有造血能力的阿里云当时的艰难,一年十亿的投入可能真的不是个虚数,但是这么多钱投进去,几年间也不见进度条上的变化,这也让很多人失去了耐心,据说最艰难的时候,有80%的人员选择离开。
王坚真正转机来自于12306,14年刚刚问世的12306,被很多网友怒喷为世界上最烂的网站,因为它永远都只会一招“该网页无法打开”。但是马云在2015年达沃斯论坛时说的:“我告诉阿里的年轻人,去支援12306,不收一分钱。因为我不想看到农民工兄弟买不到火车票。这不是为了钱,不是为了政府,是为了那些兄弟不用在雪夜等待买票,只需要通过手机、电脑就能顺畅购买。”用上了阿里云的12306,真是有了脱胎换骨般的改变,再没出现频繁的宕机现象,人们也不禁惊呼原来阿里云真的可以啊。
从此阿里云正式步入正轨,同年的SortBenchmark的排序竞赛中阿里云用不到7分钟就完成了100TB的数据排序,打破了ApacheSpark之前23.4分钟的纪录,并获得了2017年中国电子学会设立科技进步奖15年来的首个特等奖。
——节选自 云栖社区《王坚回顾阿里云10年:工程师拿命换来的成就》
阿里云的故事可以get到两个点:
1.务实真的很重要
2.坚持就是胜利
感谢,加油
既然选择了摸黑走夜路就请无怨无悔,这是一条最辛苦的路,一切未知,全靠勇气砥砺前行,但这是最近的路,能带我们到达罗马,举着别人的灯是走不到终点的。我们不要因外界的质疑而动摇自己的信心。对材料软件嗤之以鼻的人很多时候并不是喷我们这个软件,只是习惯性的喷所有与改革创新有关的东西,在他们眼里用纸和笔画图的时代才是最好的时代。不同的人属于不同的时代。
近期因为几个项目接连出现一些不顺利,加上历史累积的问题,使我们有同学遭遇打击,信心受挫。但是事实没有那么糟糕,问题很快都解决了。我觉得自从PKG项目开始,整个局面在向积极的方向发展,不知不觉中我们已经度过了最深的夜。虽然偶有突发状况,但是办法总比困难多,遇山开山遇水架桥就好了。就像《时间是最好的良药》里所说的那样:很多时候,当下那个我们以为迈不过去的坎,一段时间之后回过头看其实早就轻松跳过。
有些问题一时不能彻底解决,不如暂时放下,看看别人在做什么,也许思路打开了,问题迎刃而解。生活就是这样,不可能一帆风顺,在跌跌撞撞前行的过程中,会遇到这样那样的艰难险阻,没能打败你的,就会让你变得更加强大。觉得快要坚持不下去的时候,天就亮了。
最后给大家分享任总的讲话(亲手剪辑,全网独家版本)说得特别好,迷茫的时候读三遍。