论中国软件的失败:纯技术原因



中国有十几亿人口,从事软件的人员有数百万,但却鲜有听说,中国有哪个企业做出了一款软件产品,可以与国际上同类软件相媲美的,达到世界一流的水平。

这里所说的软件,是指以产品或项目形式,最终交付客户手中,经得起客户严格检验的纯软件模块或系统。所谓达到世界一流的水平,不是厂家自己来宣传,而是在市场上得到世界性的认可。
以这样的标准,你能说出中国有哪款软件是世界一流的?

以前有种说法:中国不适合做基础软件的开发(比如操作系统、数据库等),只适合做应用开发。因为基础软件技术门槛高,我们没有技术积累,另外国外巨头希望自己牢牢把控核心技术,通过各种手段来限制别人来开发。因此,中国只能做应用开发。1984年:“计算机要从娃娃抓起”,软件作为计算机的灵魂走入中国人的世界。到现在26年了,中国为什么还没有一款世界一流的应用软件?

为了回答这个问题,我们需要走近世界一流的软件厂商,近距离观察他们的软件研发过程,看他们的世界一流的软件,是如何研发出来的。再反观中国的软件企业,看我们的软件是如何研发出来的。二者相比,答案自然就出来了。
然而,即使是世界级的软件巨头,比如Microsoft,Oracle,SAP等,他们内部的组织结构、岗位设定、软件研发过程管理也不相同。但最终他们都产出了世界一流的产品,那么他们应该具有生产世界一流产品所需的共同特征。那么,这些特征到底是什么呢?

根据我多年的见闻和体会,我总结如下:

一个软件公司要想产出世界一流的软件产品,从技术角度分析,至少要具备以下能力:
1)世界一流的需求分析和管理能力
2)世界一流的软件UI设计能力
3)世界一流的软件架构设计能力
4)世界一流的软件编码实现能力
5)世界一流的软件测试能力
6)世界一流的软件文档写作能力

我们来逐个考察一下:
1)世界一流的需求分析和管理能力
   软件源于需求,充分满足用户需求的软件,就是优秀的软件。但弄清客户的需求,绝非一般的人可以做到。除了用户可以明确告知的显性需求,还有大量的用户未说出、甚至客户自己还没有意识到的需求。还有可维护性的要求、安全性的要求、性能的要求等等。
   只有站在客户的角度,设身处地,充分理解客户的业务内容、发展现状、遭遇问题和将来规划,以及客户的组织结构、运作流程、甚至当期预算等,再借助高超的需求分析能力,将客户的需求一一剖析清楚。
   另外,在后续的研发过程中,对客户的需求要进行有效管理。如果需求管理失控,需求一变再变,项目注定要不断延期,质量下降,走向失败。一流的软件企业,会对客户进行大量的引导、说服和教育工作,让其认识到软件开发的复杂性和系统工程性,因此客户提出需求时会十分审慎,不会随意提一些很花哨、实际用不到的功能。再有,客户是需要按需求进行付费的,提更多的需求,就意味着客户需支付更多的费用。
   在这个环节上,中国的软件企业是做得非常差的。基本上,项目的需求还没搞清楚,就先签单,然后再做需求调研。合同金额已经确定,客户提多少需求,都是这些钱。因此,客户往往会提非常多的需求,并且频繁进行需求变更。再加之中国的软件企业中,很少有具备高超需求分析能力的人,需求分析不到位,需求控制不住,这就从项目一开始就注定了失败,最终只能产出劣等的软件。
   为什么中国企业中很少有具备高超软件需求分析的人员?大学里没有软件需求分析这门课;有几个人参加过软件需求技能培训并在项目实践中强化运用?中国所谓的系统分析员,在项目实战中毫无用处。有谁能说出软件需求分析的要素、方法和过程?大多数中国软件公司,都是项目经理去做需求分析,项目经理就是凭自己的感觉,把用户说的记录下来,这就是所谓的软件需求说明书了。这样的软件需求分析过程,为后续软件研发过程埋下了巨大的隐患。

2)世界一流的软件UI设计能力
   一款优秀的软件,不仅界面要美观,更重要的是,客户操作软件时要非常方便实用。因此,世界一流的公司,都会安排专门的UI、UE工程师,进行软件UI设计。UI设计,不仅要考虑软件的功能、操作逻辑,还要考虑客户的能力水平,力求简单直观。
   我们中国的软件公司,界面基本都由程序员来做,最后由美工画几个图贴上去。最后客户用起来,感受就是三难:“难看、难用、难受”!

3)世界一流的软件架构设计能力
   唯有顶级的软件架构师,才能构建出世界一流的软件。软件架构之于软件,犹如地基之于大厦,从根本上决定了软件的质量。中国有哪个软件企业,肯出大价钱,聘请一流的软件架构师?中国的软件企业,大多用二流、三流的软件架构师,甚至根本没有软件架构这个环节!

4)世界一流的软件编码实现能力
   硅谷的程序员,一个月几万美金,而且35岁以上的程序员才是真正的主力。为什么?他们从小学就开始学习编程,Linux/Unix/C/C++/数据结构/多线程/网络/WEB 各种技术非常精通,有20年以上的编程经验,这样的程序员写出来的代码,是什么质量?这些人写出的软件,能不世界一流吗?
   而中国的程序员,从大学才开始学编程,在软件企业中软件程序员薪酬一般在3k~7k 之间,年龄在25~30之间为主力,大多数人连指针、内存、链表、栈都搞不清楚,就在那儿开发软件。可以想象,这些人开发出的软件,会是怎样的质量?

5)世界一流的软件测试能力
   在中国,软件测试被认为比软件开发低一等的工作。因此,从开发团队淘汰的人,通常被转入测试团队。另外,公司内部闲置人员,也往往被安插到测试部。基本上,是个人都能做测试。这就是中国企业软件测试的状况。这样,如何保证交付给客户的软件质量?

6)世界一流的软件文档写作能力
   老外的软件,都会带有详尽的文档。文档内容之丰富,表述之精确,文本之流畅,让我们佩服之极。
   在中国,大学中至今还未有软件文档写作的课程,培训机构也未有此类课程。因此,中国的程序员大多不写文档。项目经理硬性要求时,才硬着头皮,写出一些干干巴巴、空洞无物的文字,实在让人无法读下去。

   因此,中国的软件企业,用不称职的需求分析人员、二三流的软件架构师、最初级的程序员、最初级的测试人员,在需求管理失控的情况下,输出了低劣的程序、空洞的文档和三难的软件界面。

   这种状况下,中国软件怎么不失败?

猜你喜欢

转载自kong-desheng.iteye.com/blog/613763