制约软件产业发展的三要素

来源:互联网 发布:阿波罗计划 知乎 编辑:程序博客网 时间:2024/04/28 11:26

 

我对中国软件产业发展的看法

制约软件产业发展的三大因素: 软件工艺、服务意识和抗风险能力

 

 

中国软件与技术服务股份有限公司 陈尚义

 

 

对中国软件产业发展,很多人发表了自己的看法,国家也出台了一些措施,最著名的是18号文件和47号文件,从软件产业发展的政策和法律环境、资金、税收政策等方面提出了很多加速发展软件产业的建议和意见。

这些无疑都是对的,也确实为我国软件产业的发展起到了极大的推动作用。但是,我个人还认为,软件产业的发展有三个方面需要特别重视,一是软件的“工艺”水平问题,二软件从业人员和软件企业的服务意识和服务水平;三是软件行业的风险意识和抗风险措施。恰是这三个方面在过去没有引起足够的重视,在政府文件、专家学者和行业主管领导的讲话与会议发言中,鲜有提到上述三个方面的。

 

第一,软件产品的根本问题是软件的“工艺”水平问题,不是计算机科学的问题,也不是政府采购政策的落实问题。

这一点较少有人提及。在我的印象当中,大家一提起制约我们软件产业发展的因素时,支持民族软件的专家学者就会指责政府采购政策的落实存在很多问题,迫切需要解决;有人呼吁向大企业倾斜,扶持一批骨干企业;也有人认为国内企业规模小,核心技术受制于国外,等等不一而足。但很少有人说到软件的“工艺”水平问题,记忆中只有北京大学的杨芙清教授曾说过,商品化软件是要经过反复测试才能投入市场的;行业协会理事长陈冲先生也曾说过,软件工程化水平不足。但这些观点由于其声音较小,尚未引起各方应有的重视。

我说的软件“工艺”水平,主要是指产品的质量,包括软件的界面制作、可用性、可靠性、安全性、可扩展性等,而不是软件产品的功能。二十年前,在传统制造业,我们不是做不出来产品,而是做不好,小到玩具、衣服,大到汽车和飞机,都是工艺水平达不到要求,生产出来的产品不好销。现在的汽车制造业就是例证,能造汽车的企业很多,但目前我们自己生产的汽车质量还不高,虽然价格便宜,但用户接受程度还很有限。奔驰和夏利都是汽车,功能上基本一样,四个轮子都能跑,能载一样多的人,但价格一样吗?如果国人坐惯了奔驰,你偏要在国内普及夏利,人们乐意吗?记得80年代,有报道说标志汽车的标致要拿到国外去做,国内根本做不出来,工艺水平没达到要求。还例如,服装行业,西服我们会生产吧,但质量不行就是没人买,或上不了大雅之堂。还记得上个实际80年代,国家领导人穿上我们自己生产的西服,被国外朋友赞赏的情景吗?西服的功能都是一样的,问题纯粹出在质量上。在那个“工艺”水平落后的年代,我们的产品很难出口,在美国很难发现中国制造的产品。1985年,我有一位老师从美国回来,告诉我在美国仅能找到少量塑料书包和凉鞋是从中国进口的。然而十多年过去了,中国制造的产品充斥美国市场,原因是中国制造业的工艺水平上来了。软件莫不如此,当工艺水平达不到一定水准,要成为软件强国是不可能的。软件的“工艺”水平代表的是软件的质量,包括其稳定性、安全性、可靠性、可用性和可扩展性。我们没有重视过这方面的问题。我们只强调软件的功能,对其它的质量方面,不仅我们的厂商,就连我们的客户也不重视,“能用就行”。我们的软件要被广泛的接受,甚至打破国外垄断,不解决质量,就根本无从谈起。

对那些不同意我这个观点的人,看看“绿坝事件”就不难相信我的话了。绿坝事件反映了我们国家整个软件行业的不成熟,其中最重要的是不关注软件的工程化,致使安全软件自身就极不安全,评测机构没有测出明显的漏洞,政府部门也仓促决策上马,这一切都说明了软件行业没有关注软件的质量,把精力集中在功能上,无论商家、第三方测评,还是政府和用户,都是如此。详细情况见我的另一篇文章:《对绿坝事件的反思》。

当我强调软件工艺问题的时候,人们就以ISO9000CMMI来反驳我的观点,说这不是正在解决嘛!诚然,我们也曾关注过生产过程的工程化,反对小作坊,的确,二十多年来,通过软件工程教育,实施国际化标准,取得了很大进步。但另一方面,产品的工艺水平,不是靠这些标准和软件工程的教育就能解决问题的。传统制造业早就有标准,它的工艺水平是靠标准的实施达到的吗?更何况,我们在实施CMMIISO 9000时,真正认真的有几家?

执行标准不是走形式。在硅谷的时候,我没发现那里的企业做CMMIISO9000。前不久看到一份资料,2005前后,全世界通过CMM 5级的企业只有500多家,印度就占了400多家,剩下的就算全是美国的,也就100来家,但为什么美国的软件产业那么发达呢。我认为,关键的一点是美国软件企业抓住要害的软件开发方式:该管住的一点不含糊,可以不管的放手让工程师自己去发挥,既灵活有不失去原则。比如说,在软件的配置管理方面,国内的企业在做CMM的时候,做培训,引进工具,在实施过程中,做计划搞审计,但都不在点子上,在咨询师和评估师眼里,配置管理环节符合了CMM要求,但真正要抓的地方却没抓住,走了个形式。这样的配置管理是无用的,依靠咨询师和评估师也很难发现其中的问题。况且,我们的咨询师拥有多少软件方面的经验呢?软件设计也一样,设计完成了,也评审了,往服务器一放,问一问设计说明书中多少是能真正指导软件实现的?

执行标准的人、企业,他们的经验、责任心和敬业精神,是影响软件工艺水平的最主要因素。解决这个问题,要从培养工程师的职业态度、增强服务意识入手;其次是要培养并留住有经验的软件设计师和软件开发工程师,关于这一点我在后面还要提到,我们整个的从业人员队伍年龄偏小,实则经验不足。

 

第二,软件行业的问题不是孤立存在的,和传统文化相关,和市场化程度相关,和大学教育模式相关。

传统的官本位文化影响了软件人才的职业观点。不得不承认,我们是发展中国家,从几千年的封建社会走过来,社会分工还不精细,官本位还深深根植于人们的思想之中。不是吗,没有人开后门当程序员的,但有的是人开后门进职能部门或机关的;没有人打算把程序员当成自己的终身职业,但绝大多数人因为当上项目经理而高兴;很少家长是把技术工作当成自己孩子的理想职业,但千军万马报考公务员。看一看国内的程序员年龄结构就能看出问题,1999年我出国工作,在国内我差不多是最资深的程序员,在公司里,除了管理层,我是年纪最大的,但在新加坡和美国,似乎我不仅不是年纪最大的程序员,可以说算很小的。美国更是如此,我在美国公司的同事里,他们大都是来自不同的国家如中国和印度,他们是国内最好学校的最好的学生。他们这些国内同龄人中的骄骄者,到美国接受一段时间的再教育,然后才参加工作,年纪都比我只大不小,35岁以上,还有很多40-50岁、甚至50多岁的工程师。其它公司的情况也大致如此。再看看我们公司的年龄结构,一般软件公司的平均年龄在30岁以下,35岁以后程序员自己就不想干了,一定要当个经理什么的。导致软件人才队伍中有经验的人员很少。一个没经验的人才队伍,开发出来的产品就达不到应有的工艺水平。软件由于其自身的特殊性,质量问题非常具有挑战性,是世界性的难题。就连微软这样的公司都不能很好地解决。可我们把这样的世界性难题交给了一些年龄不满30周岁的人去解决,非出问题不可。

服务意识和服务水平也制约了软件人才的职业观和职业道德水准。记得有一位从美国回来的、做外包的公司女老板说了一句话:“中国软件外包存在的问题根本上是服务意识问题”。我非常同意这个观点。我们的软件工程师大多数没有服务意识,加上员工和公司的利益没有处理好,更多的程序员处在和公司对立的位置上,你不给我很好的待遇,我就应付。应该说这是个普遍现象。表现在职业态度上,是极其不专业,习惯于不做单元测试、不做验证,或马虎了事,提交半成品。当然这是全社会的问题,不仅工程师有这个问题,软件公司也有服务意识不强、做事不专业的问题。由于国内软件工程师工资水平不规范,高低差别很大,一些人对工资不高表示不满,身在曹营心在汉,抱怨现实,有能力的想着跳槽,没有能力的在混日子。跳槽比服务重要,手下的任务能将就则将就。

一次我邀请从美国回国访问的高级软件工程师来我公司进行交流,当我公司的软件工程师问他,为什么选择软件工程师作为职业、而且一干那么多年时,这位美国回来访问的、45岁的工程师不假思索地回答:“这个行业应该收入还不错吧”。回答得非常平静和朴实,言语间透着一颗平常心。可我们的工程师呢,不能说没有,而是很少有人踏踏实实地愿意将软件开发作为自己的终身职业。等干到一定时间,刚有了点经验,就换行,真正能留在软件行业做一线工作的人少之又少。这就是中国和美国之间的一个重要差别。

服务意识的高低和商品化程度相关,也与经济社会发展水平相关。关于这个问题,仅从软件行业本身很难找到答案。但我观察到,在服务意识上,南方比北方强,民企比国企强。提高服务意识既要靠政府引导,更要靠全社会努力。

软件产业的发展水平与大学教育模式密切相关。考察一下我国和美国计算机教育的历史,就不难发现我们的教育存在先天的缺陷。美国的计算机科学教育伴随着计算机应用的发展而发展,他们在国防、航空航天、银行、教育等很多部门大量应用计算机之后,发现了很多问题,特别是当软件危机出现之后,科学家带着问题找答案,老师们带着问题教学生。而我们是在看到美国有了相应的课程之后,就在大学开设该课程,教材是翻译过来的,老师没有亲身经历项目建设,也没有那些失败的挫折和成功的经验,他们从书本到书本,从概念到概念,想想,你、我、他的老师是不是都这样?这不是在贬低我们敬爱的老师们,而是中国软件教育的现状。这个现象到目前为止仍然存在,看看身边的教授,甚至是大腕教授,几个真正在研究、解决实际问题?理论很强(很多老师理论都谈不上),但脱离实际工程建设需要。再仔细看看我们的企业,没几个是大学办的,校办企业只有北大方正和东软算是成功了,清华同方很一般,记得北京理工大学系统工程公司只红火过一小阵子。这就很说明问题,那么多教授理论水平那么高,很多人出国留过学、做过访问学者,但解决了工程中的实际问题了吗?产、学、研很难成为一体化,原因也在于此。我接手管理现在的研发中心5年多以来,试图和高校和研究所建立长期合作关系,但很难。不仅我这里是这样的,其它地方也一样。中科院软件所成立了一个工程中心,尝试将研究所的成果转化成商品,发现原来做研究用的原型系统离产品化相差太远,以至于干脆抛弃不用,从头再来。从产业化的过程中,他们发现软件测试非常重要,这在实验室做研究是根本不需要的。大学和研究所的工作模式根本不适合软件产品化的需要。

很多人没认识到这个问题。当我们研发中心的产品出现质量问题的时候,有人推荐我找某大学的教授,说那个教授很有本事,应该可以解决我们的产品稳定性和可靠性问题,要知道他可能研究过深奥的理论问题,但从没有解决过实际问题;还有好心人推荐我找公司内部一位资深的工程师,那个资深的工程师做过很多项目,要知道他是做项目的,没做过产品,产品与项目是很不同的;也有人介绍另一个老师,说他们做过我们类似的产品,应该能帮解决加密产品的兼容性问题,殊不知,他是做数据库加密的,我们是在文件系统中做加密,他们所遇到的问题和我们的问题相比,性质根本不一样。产品稳定性问题是个复杂的问题,和软件的结构相关,和编程人员的代码质量相关,也和软件开发的过程相关,其他人或许能给出原则性指导,解决问题还要靠大量测试、开发人员不断修复缺陷。

 

三、风险意识不强,抗风险能力不足,抗风险机制缺失。

在硅谷,我睁大眼睛观察美国的公司为什么能做出那么多优秀的产品,冥思苦想:我们为什么搞不出来?后来发现,风险机制确实帮了美国很大的忙。

    可以说,在美国创业是一个让人羡慕的事情。有大量的天使基金,有大量的风险投资机构。创业的人用的不是自己的钱,有个好点子,就比较容易找到风险投资,如果再有个好班子,就更容易开张了。创业的人即使失败了,个人收入也有保障,不至于倾家荡产;公司失败了,技术和产品还可以得到再利用,他们或者变卖技术专利收回一部分投资,或者将一些有用的技术和产品合并到其投资的其它公司去。

这种合并,使市场资源优势的公司不断地和技术型的公司结合,发挥技术和产品效益。这样做的另一大优势是,他们对创业人才的要求不是那么求全责备,很多技术人才专心致志做技术,等到一定程度就被具有市场能力的大公司收购,实现资源的有效互补。而国内创业,对所谓的领军人物要求极其苛刻,既要懂技术,又要懂经营,还要懂管理。

正因为如此,硅谷吸引了全世界各地优秀的工程技术人员。我们呢,国家鼓励大学毕业生如找不到工作就创业,钱呢?自己没有,国家也不给,找风险基金难于上青天。况且国内的生存环境很恶劣,很多企业靠野蛮生存,刚毕业的学生面对充斥潜规则的社会根本没有经验。即没钱又没经验,很多好点子只是想想而已,胎死腹中,不能进入实际创业阶段。

    总之,大量的风险资金,科学的风险意识,完善的抗风险机制,壮了美国创业者的胆,极大地推动了美国软件产业的蓬勃发展,实现了投资者和创业者的双赢局面。大力发展风险投资基金,增强企业的抗风险能力,引导企业的风险投资意识,是政府部门值得花大力气做的事情。

原创粉丝点击