精华88
威望36854
K币34333 元
注册时间2001-5-26
在线时间2627 小时
最后登录2022-5-13
荣誉版主
软件硕士
 
- 精华
- 88
- 威望
- 36854
- K币
- 34333 元
- 注册时间
- 2001-5-26

|
这篇文章是一位中国的软件工程师发自肺腑的感言,从中可以悟出中国软件产业中存在的一些问题…………在工作中,我有机会接触到印度软件公司开发出来的软件,发现其特点是:体系架构清晰,层次分明,按照要求实现了用户的全部功能,而且运行相当稳定。打开代码一看,我的天呀!拖沓冗长,编程水平实在不敢恭维。我马上叫本单位的其他程序员来看看,他们说印度人编程能力真低,还不如中国软件专业二年级的大学生水平。但是,印度人能够把软件整体结构把握得很好,能够完成大型复杂的软件,能够形成相当好的设计与实现文,能够在国际外包市场上占据很大比例。而中国人整天在那里琢磨着的是数据结构、算法花样和界面花招,到最后只能成为Code高手,而不是一个庞大团队。这些高手虽然对某些特定的开发工具非常精通,比如.net和J2EE开发平台。但就是不能按质、按量、按时把一个大型软件稳妥而完整地开发出来。难怪有人说:一个中国人是条龙,多个中国人是条虫!……举个简单的例子:软件中需要一个列表,用来表示处理的事务。该列表在平时很小,在业务峰值的时候变得很大。中国人就用双向链表来设计,抱着《数据结构》书在那里拼地写链表。印度人只开了一个大数组,然后就开始干。为什么印度人不用链表,他们说:“你们给出的设备是小型机,最少具备512MB内存,浪费一些内存没有什么了不起,而且数组方式访问方便、效率高。”此时,你看出了一拿到东西就研究数据结构、探讨算法分析、吭哧吭哧作Code的中国人,和好好进行系统分析与设计的印度人有什么不同了吗?……正好前几天有几个同事从印度回来和我们交流,那家公司是CMMI4级公司,他们感受到的几点是 1) 流程重于项目;(2) QC(就是质量保证QA)独立于研发部门,专门检查研发部门的开发流程是不是按照既定流程走,如果QC觉得流程不对,他会直接上报高层,项目开发肯定就此停止;(3) 所谓的项目经理一般也是从编码人员升上来的,并不是所谓的不懂技术的外行经理,他们一般都至少有四年以上的编码经验;(4) 项目经理主要就是制定开发计划,负责协调,填写各种表格;(5) 所有的东西(包括草稿)都有文;(6) 详细文要求达到:只有这个文就可以编码的程度。一般写文时间占60%,编码时间极少;(7) 有各种详细的Review(同行评审),同行评审可以是项目组内部的,项目组之间的,客户的……;(8) 计划很详细,的确能达到小时级,但是实际情况还是误差比较大,所以他们也有加班。……先学习统一建模语言UML、开发工具Rose以及Rational迭代模型RUP,不要总是要找到这些语言、工具和模型成功的证据。目前在中国的软件开发水平下,很难给你一个好的成功案例,来作为这些语言、工具和模型的成功证据。中国人总是要看到一个东西有了试验田,而且稻子长得好,才换稻种,你想要知道国外软件开发模式应用的成功案例吗?请看看Rational网页上的story吧。Just doit!一句话,当前中国的软件开发水平还很低,赶不上当今的印度人、以色列人和爱尔兰人。印度的软件公司可以让高中生写代码,由此可见他们的软件工程管理水平之高。当然,如果你是个很牛的程序员,可能很不服气。但是我要告诉你:在中国的软件环境中,很牛的程序员一般是很难接受软件工程观点与方法的。你可以测试一下自己,看看自己适不适合现在学习的软件工程:(1) 你是不是不能忍受一个编程序不如你的人做你的项目经理?(2) 你是不是觉得你的老板对客户吹牛皮时,夸大他自己的作用而感到不舒服?(3) 你是不是一个拿到需求之后,脑袋里第一念头就是如何Code的人?(4) 你是不是很崇拜Stallman,Linux,很讨厌Microsoft?(5) 你是不是曾经在深夜编码的时候,突然感觉到一种乏味,对Code的生涯感到一种无趣?……我们现在处于深深的自卑当中,深感中国的软件工程水平的低下,已经是牵涉到族劣根性的问题了,与印度人、以色列人和爱尔兰人比较起来,我们存在如下问题:(1)印度的软件教育水平规范。我们招聘印度人,给应聘者出了一份与国内差不多的试卷,有基础概念和编程题目。等到他们完成后,我们这些中国的自认高手惊呆了!他们的编程题目简直像是抄袭的!程序结构、注释、变量名就不说了吧,全部都是极其类似!反观中国的牛人和高手,每个人都有自己的一套。到了新的岗位,先把前任的程序贬损一通,然后自己再开发更多的问题代码来代替它。我们公司统计,一个软件中有4个以上版本,每个人都觉得别人做得差,自己再搞一套。中国人,就是这个样子,还会辩解说:“我们这样是创新”。其实软件的发展,早就走过了求伯君(20世纪90年代的编程开才、WPS的发明人、现任金山软件股份有限公司董事长兼总裁)那个编码英雄的年代,程序员已经是个坐办公室的蓝领了。你具备拧好一个螺丝钉的能力就可以了,因为Code是最低级的事情了。由此联想到中国的软件教育水平现状。在高校软件教育中分什么研究型大学和应用型大学。研究型大学是培养理论研究型人才,即理论创新型人才。请问:软件中有多少理论难题等待这些人才去研究?去创新?这样的难题很少很少!软件公司需要的软件人才,主要是系统需求分析、系统架构设计、系统测试、过程改进与过程管理、程度编码的人才,即应用型人才!难怪国内一些博士生不适应在企业工作,软件公司将他们轰走的事常有发生。(2)印度许多公司的项目经理懂技术,但是不懂很深的技术。中国的项目经理如果不能在技术上压服下属,那么下属将对他搞鬼,越是高手越喜欢搞鬼,他们根本不知道做软件的终极目的是从别人兜里掏钱,而不是在自己内部搞不团结。在中国,技术高手一般都纠集一些对他技术上崇拜的菜鸟,与管理层作对。而印度有的软件经理就不懂自己正在做的软件编码,因为他们许多就MBA,或者是领域专家(工业设计、地理专家等),而不是编码专家。但是却能够领导一大群素质良好的程序员把工作做好,不存在内部不团结的情况。许多印度的程序员加入一个公司很长时间,都不知道自己整天编的代码是干什么用的。给他们任务可能就是一个函数的声明,以及该函数要实现的功能。想想我们呢?(3)印度的编程人员的流动率达到30%!由此可以想象他们的文水平如何高明。他们的产品不依赖任何一个人,谁都可以立即辞职,产品的开发照样正常进行!这是为什么?因为他们的软件企业是大规模的现代化生产企业,生产的主体是蓝领。而中国,有时是老板怕项目经理,项目经理怕Code高手。因为技术骨干拥兵自重,抗拒管理。任何制定好的计划,都有可能被技术人员或者跟你消极怠工。这是为什么?因为我们的软件企业是小规模手工作坊式的生产企业,生产的主体是艺术工匠。(4)印度大部分软件组织达到CMMI3级以上,所以开发计划能够做到小时级别。如果一个印度公司的项目经理没有上班,那么他的下属将可能不知道做什么。他们的谋划一般都定到天,每个基层开发人员每天的工作量就是8小时。而我们能够给出月度计划的公司就很少,而且给出的月度计划要么不可能实现,要么可能被取消。开发人员被粗略地给个任务,他在月初,可以慢慢琢磨做成什么样子,然后上上网,聊聊天。到了月中和月末,就开始熬夜编码了。……当然,中国也有少量规范的软件公司,这些公司大部分分布在大连市,专门从事日本的软件外包项目开发。……以上就是一位中国的软件工程师发自肺腑的感言!这也是一般中国软件企业的真实写照!这揭示出我们与与印度软件企业的差距!差距不仅仅在于软件公司的规模,而在于软件人员的职业素质与道德规范!究其原因,在于软件组织内部的CMM/CMMI管理水平。印度人做CMM/CMMI是真正做给自己用的,即自己的软件组织过程改进。中国人做CMM/CMMI有时是做给别人看的,比如在招标或投标中装装门面,在广告中壮壮声势,而不是专门为了实现自己的软件组织过程改进!
[/hide]
[ 本帖最后由 llljj 于 2009-6-24 12:43 编辑 ] |
|