2007年12月8-9日,2007中国软件技术大会在北京举行。中国软件技术大会自2003年以来已连续成功举办四届,秉承“弘扬个性、促进创新、引爆争鸣、激发活力”的宗旨,目前已成为国内技术水平高,领域覆盖面广,具有极大影响力的年度交流盛典。
图为:群硕软件大中华区软件开发总监邵荣演讲(骆磊 摄)
以下为其演讲全文:
邵荣:非常荣幸有机会跟在座的同行进行探讨,而且我也觉得特别荣幸,今天能够跟行业里面传奇的前辈倪光南院士同台跟大家分享经验。今天我的演讲主题,在之前我们收演讲通知的时候,觉得非常矛盾,因为好多东西可以讲,最终我们换了一个主题,我们想要站在软件开发角度来讲,换一种形式跟大家分享一些平时大家关注不是特别多的一部分。
首先,我讲一个故事。有一个推销员,刚刚开始进入行业,他是一个推销吸尘器的推销员,但是他在一开始的时候,非常不成功,为什么?他是敲门,他说:张太太你应该买吸尘器,我这个东西非常棒,你应该买。但是没有人听不他的。一开始的时候他花很多时间,觉得自己不够努力,他从早上六点钟开始推销到晚上十点钟,他找各种各样的指南,包括寻找很多的销售工具来帮助提升他的销售。过了一阶段之后,他逐步开始发现一些门道,他敲门的时候会确认最有消费能力的小区是在北京的哪些小区,他发现这家人家可能养狗,他可能跟太太聊家常说,你这条狗很可爱,不过我看到它可能会掉毛,张太太也会说它会掉毛,把沙发弄的非常脏,这个时候他会说我这有一个工具可以帮助你做清洁。这样他的成功率提高很多,也就是说他会逐步花时间分析客户的需求。到有一天,他成为行业里面的销售大师,那时发生了什么事情呢?哪怕他不再推销吸尘器,他只是在推销微波炉,他看到账太太,就跟张太太说我有一个微波炉特别适合你,你应该买一个微波炉,张太太连什么品牌功能都没有问,就直接购买了,为什么?因为很长时间以后,在张太太心目中认为这个人一定会自我考虑的,他每次给我带来的东西都应该是有价值的东西。
这是一个推销员的过程,你去看他的过程,第一阶段通过个人修炼,并成长。到了第二阶段他开始关注客户,他不再把整个视野放在自己的身上,而是看用户,很多的数据、很多的销售网络他没有办法个人布置。到大师阶段的时候他开始以用户作为核心,总去考虑怎么提供核心的价值,最关键的一点是他关注长期的信任,他不是做一票就走,而是考虑怎么能够长期的跟客户之间一直有这样的关系。
这个故事我想要说的是,这个跟我们做软件开发过程当中有非常类似的状况。回头我会有进一步的阐述,分开来谈。
下面我拿一张行业里面非常著名的卡通图做一个细说。第一张图客户解释说“这是我想要的”(图),有三层,开始了解的时候已经开始过滤了一些信息,整个挂的地方和产生的画面是变化的,接下来是分析员说的,然后顾问解释给客户听的时候,就会说这个沙发特别的舒服,我们程序里面的项目文档是怎么做的?是一片空白。到安装之后,什么东西都不能用,但是客户的帐单不断的来来去去。作为客户来讲,他只会在里面不断的重复说你的机器重启了吗?有没有重装。客户真正想要的东西没有那么复杂,他想在树上挂一个秋千,有人晃一晃就行了。
基于这种状况,我们看到刚才那张图里面每一个环境、每一个层次都会导致软件失败率上升。我这里有一份报告,在英国CHAOS的报告跟踪94年、01年、03年的成功率,04年的时候项目成功率大概是占31%。
如果仔细看一看,目前未知,全世界的软件成功率按照每年1.7%的速度做直线上升。到2014年左右平均做两个项目才有可能有一个项目是真的成功的。也就是说行业里面的软件成功率现在还非常低。
现在要问一个问题,究竟是谁的错?从技术的角度来讲,绝大多数情况,一般我们都会说是客户的需求,为什么?客户需求在变化。还有一个客户描述给你听的东西不是他想要。我们从项目管理论到软件流程,到新的语言、新的架构、软件模式、软件通用平台,都希望解决这个问题。但是到现在未知,一个多百分点的成功率并不让我们特别满意。
我们换一个视角看整个软件开发是怎么回事。在我那张卡通图里面看起来很高效,但是是一个很严肃的话题,很多时候真正的缺失是在不同人和不同阶段的沟通,信息会被误读或者丢失。还有一个,在软件企业里面,我们大概花超过一半的时间不断构建行业里面已经构建起来的东西。
我们的软件从出生开始,它的内部其实已经构建了低质量。
我们刚才所谈到的,在每一个阶段,每个人不断的沟通过程当中是传递用户体验。为什么?我在一开始想做一个秋千的时候,对我来讲并不知道这是水泥还是钢筋、铁的,我只是描述一种体验,我跟设计师说我想有一个秋千,能够晃来晃去,而且很牢固,我没有说需要钢板或者绳子。从传统用户角度来讲,在一开始的时候所面对的东西,其实不知道后台用什么样的语言、中间件、开发平台、软件开发流程,只知道电脑一按有一个程序出来,手机上有一个短消息可以发出去。用户认为互联网是什么东西?其实互联网对他来讲,他需要通过我们所看到的这些载体,他所面对的这些电脑、手机和电视来做这样的事情。
你对用户宣传你的技术多先进,其实没有多大用处。而是可以看到真正的用户企业在里面是最关键的。最近几年开始,用户企业作为核心,已经越来越能够成为一种可能性,现在我给大家看的图是IPODPhone,现在很多企业都在应用,因为企业逐步的进行了一些变更,再加上整个技术的发展和成熟,在这两天大家会分享到很多技术上的新主题,这些技术的成熟也带来了通过用户体验作为驱动的沟通方式,成为一种可能性。
大家都知道,为什么到现在为止,中国每个阶段不同人沟通的时候都出现信息丢失和曲解,因为在机器和人之间的是有差异的,如果有网上相册的地方,我希望能够共享照片、下载,能够做数码打印。对于机器来讲,整个的感觉这是一个代码,所以程序员的世界,大家可以想到,他尽管想为最终用户构建一个非常完美的世界,但是他生活在那个世界里面,很多时间是基于代码、基于机器类型的一部分,并不是真的基于用户体验。
我们在跟用户进行需求确认的时候,我们交付给用户几百页需求说明书,回头让用户签名说这是你所想要。你说用户能不能够签字或者说他真的能理解这几百页他需要的吗?如果在需求文档里有一行字写到:界面是要求大方美观,程序员理解的东西跟用户所理解的东西如果不出错才怪呢。
我们有一种更好的办法,以用户体验作为核心,从用户的角度、从用户的理解,根据用户的反馈进行调成。这个东西感觉是每个企业所喊的口号,但是有什么落地方法论呢?有两个基本原则,这个基本原则是不能够在系统内部的设计,然后去跟客户说看这个东西是否合适。而是应该从系统外部的交互进行主导。例如IPODPhone,没有办法把一个工人关在门里面,闭门造具,最后把最新的产品推出来,必须把时间花在最终需求,由他来主导整个的设计。
以前我们传统的方式里面,是以用户作为中心,我们现在所说的以用户企业作为核心的方式有什么显著的区别呢?我们知道现在有很多的公司已经在迭代开发方式,但是用户往往要到最后期,等到软件真正做出来才知道这个软件怎么回事。在我们一行代码没有开发的时候,每次用户跟你的软件系统进行交互的时候,不断的在跟你优化、加固,最后才能对软件系统使用理解。我们拿快速原形的过程当中是把很多关键的细节去掉。我们在帮俄罗斯的一个厂商做设计,他在里面是有一个触摸屏,俄罗斯冬天特别冷,他要戴手套。其实不是用用户体验做中心方式做驱动,很有可能触摸屏发不到俄罗斯,你的手指太大,点击的时候要捕捉,才能被发现,回来被反攻。但是在开始的时候以用户为核心做驱动,就不会出现反攻。
更高层次的软件重用。到现在为止我们花很多时间谈重用问题,数据、逻辑、界面的重用。问题是现在这样的重用方式的模式还是太低,从真正的重用角度来讲,这些年成功的企业是做核心竞争力的重用,而不是简简单单的代码级的重用。对业务逻辑、业务行为,最关键的是支持的重用。我们现在讲数据、数据、数据,把数据组织起来叫做信息,再把信息真正的利用起来,能够变成帮助你解决问题,这就是知识。知识的重用现在做的比较差,就是从全世界的角度来讲。
Compiere,这是一个ERP,他的版本在SAP里面可以找到源代码。作为里面的东西已经预先预示了很多行业垂直领域的逻辑。这个是Pentaho,创始人均来自Appsoerce,后来被Arbor收购。
现在很多的企业在使用开源软件,还是因为它是免费。但其实不是的,现在这个级别重用的时候,其实有很多部分可以采用另外层面的优化。
我们说了很多,大家也会说你能不能够给我几个落地的例子。我们到现在为止成立了四年多时间,现在90%以上都是北美最顶尖的客户,像微软、英特尔、摩托罗拉、EMC等厂商,提供一些核心部分的开发和测试。我们现在在全球员工有1300多人,中国员工1200多人左右,我们差不多每12个月到18个月翻一番。我们在今年年初刚刚被入选到全球IT百强。由中国人自己做的这张试卷,应该说还是及格的,如果我们看看中国软件过去四年。
作为群硕内部的案例。在两年前我曾经带领一个团队从零开始做了一个PHT的一个网站,我们到发布的时候已经有300万的访问量,就在几天前,我们最新的统计是每一天在线电子商务网站是18亿次,目前到了全球的第二名,我们预计大概三个月左右应该会成为全球开放式广告交易网站的全世界第一名。我们花三年左右时间打造全世界第一名的网站,从零开始,所有东西都是从中国团队做,这个成就还是应该可以让我们自己小小窃喜一下。
我想分享的是两点。第一,我们实实在在的在线不是通过用户企业驱动方式带来的发布,我们不是到一个很大的周期,比如三个月或者六个月之后才把软件发布出去,才让市场考验。我们是用一种别的版的方式,进行更新,差不多每两个礼拜我们有一个很大的发布,在互联网上做发布。而且我们在这个网站,所有的部分是基于开放源代码。八个月之后,我们把当中开源软件的广告引擎全部替换掉。在这个部分中重用不是简单的代码级或者内部级,而是利用行业商业逻辑,是使用开源的广告引擎。
在张三和李四去考试,张三把自己的试卷做完以后40分钟交完就走了,李四做完以后来来回回检查了20多分钟才交卷。这后面的股市,张三每次在学校里面老师让做的作业,他都会去做,每次让看的文档他也会去看,会花时间去研究自己应该学习的知识点。而李四从来不花时间复习。这两个学生做出来的考试结果,显而易见,张三的成绩毫无疑问比李四的成绩好很多,因为李四在开天窗,花很多时间做检查,其实还是没有用。
我在这个地方讲这样小故事干什么呢?因为在群硕内部、在行业内部都有这样的倾向,我首先把整个软件大的架构搭起来,接下来才开始慢慢的做测试,我先把前面的做好,到最后有时间做测试。那个时间其实你的软件质量已经在内部构建的低质量了。为什么?你去问了你的项目经理和开发人员,在六个月左右的软件项目,你跟他说:我请问一下,我到下里面发布软件,你觉得里面还有什么问题?项目经理会告诉你说,我也不知道,你继续测,肯定会有问题。谁都不知道这里面还存在多少炸弹和问题,我们能够做的事情是把这个软件发布到最终用户,让最终用户作为实验品,给我们反馈,回头再修改。那个时候是以牺牲用户的满意度作为代价。
如果你真的考虑这么一个简单的道理,怎么去做这个事情?只要考虑把软件内部每一个很小的功能,每一次连接的时候,都把里面的元素做得特别好,只要很小的事情都做好之后,再去构建的时候这个市场就会变得很牢固,到后面的测试都不是特别多,整个质量也会远远高于行业产业里面的平均。而且千万不要认为质量保证只是后面DOA的责任,质量保证是每一个人的事情,项目经理、分析师、设计人员,每个环节都必须把自己的工作做好,而且必须最大化的保留原来客户所想要的这部分。通过这种方式,看上去代价很大,但到最后,你的软件开发质量会非常高,在群硕四年多,我们还没有一个案例是真正因为客户不满意,因为我们质量很低,跟我们终止合同的方式。
软件项目里面我们认为共的更重要的元素,第一部分是将个人的修炼提升成团队的修炼。我们前面讲推销员的新手关注自身,同样现在中国程序员花很多时间做个人的修炼,而不是团队的修炼。个人的修炼个问题,对个人的提升有帮助,但是速度有限,二是对整个产业的贡献相对来讲比较低。我想给大家的案例是,在群硕内部,我们在Fixbug的时候,每个人都会参加技术培训,在群硕里面有三个层次。第一层次,假设发现我的程序里面有一个bug,我要修复掉,一定要修复完才走,这样已经很有责任心了,但是我们觉得这只是做到了一个软件开发人员的第一个层次,只是做到最基本的。第二层次,这个程序员在修bug的时候,应该想到程序里面有没有类似的场景,有没有因为拷贝粘贴等在其他地方也有类似的状况,甚至说现在出现这样的缺陷,在其他人类似场景里面也可能出现,他会花时间研究这些问题,甚至会提醒对方的团队可能会有这样的问题,我这边发现的问题很严重。我们认为在群硕内部已经完成了软件开发的第二个层次。第三个层次,我们至少要求项目经理这个层次一定要有基本素质,我们如果发现同样类型的错误或者bug连续出现三四次的时候,要仔细看一看现在是因为什么原因出现的,比如说因为这个人的技能不够,还是因为客户给你的需求当时就不清晰。通过根本原因的分析,才有可能去解决真正问题。为什么?如果那个人没有这个技能,你回头再继续做这样的程序,以后类似的错误会不断再次的犯。问题是,这种责任心,如果不是整个团队真正的认同,认为个人有这样的能力,对整个软件发布会有帮助吗?
我个人认为整个软件行业里面流程不是太少,而是太多,我们花太多时间关注流程的本身,而不是关注流程的执行上。我想举个例子,关于投资民主。大家知道有一个小故事,有四个猴子被关在铁笼子里面,笼子外面有一串香蕉,这些猴子都想去拿外面的香蕉吃,但是一做这个动作就会被电到,之后大家看到外面挂了香蕉也不会去拿。之后猴子们被换了一批,新的猴子不知道怎么回事,也不知道会被电击,也想过去拿香蕉,刚刚跑过去,剩下的三个,猴子就不愿意,你又想我们三个猴子被你电击,所以冲上来把新进来的猴子一吨爆打,接下来我们做重复的事情,把一个一个猴子轮换放出去,最后把从来没有经过被电的猴子放进去,然后新进来的的猴子在拿香蕉的时候被一顿爆打,其实在笼子里面的三个猴子也不知道为什么会被打。大家想想,我们在做程序的时候,有多少项目去花时间做流程设计,但是下面的团队真正知道为什么要碰那个香蕉吗?
其实最关键的是构建一个团队的文化,我们想跟大家分享,假设一个五星级酒店的服务员被培训过。第一个服务员看到你的钮扣会调,他直接拿去帮助你洗掉,接下来钮扣掉下来,他会说不知道。第二个酒店的服务员,受过一些培训,你的衣服拿过去洗的时候他会看每个扣会不会掉,如果有掉的口子,他会让你签字,会跟你说,客户,你的扣子在洗的时候会掉。所以一定要让你确认,看到了这个扣子不是服务员的事情。洗完之后,如果客户看到扣子掉的话会去找服务员,而服务员就会说这个扣子是事先跟你确认过的。更好的酒店的服务员在拿你衣服洗的时候,他不会跟你说任何事情,他看到掉的扣子会在洗衣服之前拿下来,洗完衣服后会让缝纫师把扣子缝上来,然后送回来,你甚至不知道你的扣子掉下来的这件事情。我想问,你在这个酒店里,你可能知道究竟真的可以教育每个成员到这种程度吗?你是做不到的。
类似这些事情,在软件开发过程当中,想通过个人的责任心让他想到是做不到,必须要让团队有这种文化,新人被老人带,才有可能真正的做到这样的方式。越到后面,你的核心价值,你的与众不同之处就在于整个团队的核心文化,每个人都能够被它感染,高兴就是高兴,责任心就是责任心,每个人骨子里面都有荣誉感。
真正改变世界的力量不是来自于技术,我们可能有很多时间觉得我们花在技术本身、流程本身上面的时间太多了,我们认为改变世界的力量是来自于怎样运用技术。谢谢大家。
RSS订阅






收 藏
推 荐