我在工作中,接触到印度软件公司开发出来的软件:    
  整个体系架构非常清晰,按照我们的要求实现了全部功能,而且相当
  稳定。但是打开具体的代码一看,拖沓冗长,水平不咋样。我们自己的一    
  些程序员就有怪话了,说他们水平真低。但是!印度人能够把软件整体把    
  握得很好,能够完成软件,并得到相当好的设计文档。    
  而中国人在那里琢磨数据结构、算法,界面人员就还没编码就想着是    
  Outlook式的还是Visual   Studio式的界面。到最后就成为Code高手,对某    
  些特定的开发工具精通,但是就是不能保证能够把一个软件稳当、完整的    
  开发出来。    
  举个简单的例子:    
  软件中需要一个列表,用来表示我们处理的事务。该类表在业务繁忙    
  的时候将变得很大。中国人就用双向链表,抱着《数据结构》书在那里写    
  链表的类。印度人开了一个大数组,然后就开始干。为什么印度人不用链    
  表,他们说:    
  1.你们给出的设备(小型机),最少具备512M内存,浪费一些没有什    
  么。    
  2.数组方式访问方便、效率高。    
  看出了一拿到东西就吭哧吭哧作Code,和好好进行软件分析的不同了    
  吗?正好前几天我有几个同事从印度回来和我们交流,那家公司是CMM4级    
  公司。我感受的几点:    
  1.流程重于项目    
  2.QC(就是QA)独立于研发部门,专门检查研发部门的开发流程是不    
  是按照既定流程走。如果QC觉得流程不对,他会直接上报高层,项目肯定    
  就此停止。    
  3.所谓的项目经理(PC)一般也是从编码人员升上来的,并不是所谓    
  的不懂技术,一般都至少有四年以上的经验    
  4.PC主要就是制定开发计划,负责协调,填写各种表格。    
  5.所有的东西(包括草稿)都有文档。    
  6.详细文档要求达到只有这个文档就可以编码的程度,一般写文档时    
  间占60,编码时间极少    
  7.有各种详细的review(同行评审),项目组内的,项目组之间的,    
  客户的……    
  8.计划很详细,的确能达到小时级,但是实际情况还是误差比较大,    
  所以他们也有加班。    
  先学习UML和Rose以及RUP,不要总是要找着证据。在中国的软件开发    
  水平下,很难给你一个好的例子,OK?中国人总是要看到一个东西有了试    
  验田,而且稻子长得好,才换稻种。要知道在国外上述的软件开发模式的    
  应用,大可以看看   Rational网页上的story。Just   do   it!一句话,中国    
  的软件开发水平低得很。赶不上印度人,印度的软件公司可以让高中生编    
  代码,它的软件工程水平可想而知。    
  当然,你如果是个很牛的程序员。估计够呛,因为中国的气氛中,很    
  牛的程序员都很难接受软件工程的。你可以测试一下自己,看看自己适不    
  适合现在学习软件工程:    
  1.你是不是不能忍受一个编程序不如你的人做你的项目经理?    
  2.你是不是觉得你的老板对客户吹牛皮、夸大自己而感到不舒服?    
  3.你是不是一个拿到一个需求脑袋里第一念头就是如何实现的人?    
  4.你是不是很崇拜Stallman,Linus,很讨厌Microsoft?    
  5.你是不是曾经在深夜编码的时候,突然感觉到一种乏味,对Code的    
  生涯感到一种无趣?    
  我们现在处于深深的自卑当中,感到中国的软件工程水平的低下已经    
  是牵涉到民族劣根性的问题了。    
  1.他们的软件教育水平:我们招聘印度人,给应聘者出了一份与国内    
  差不多的试卷,有基础概念和编程题目。等到他们完成后,我们这些中国    
  的自认高手惊呆了!他们的编程题目简直象是抄袭的??程序结构,注释,    
  变量命名就不说了吧,全部都是极其类似!    
  反观中国的牛人、高手,每个人有自己的一套。到了新的岗位,先把    
  前任的程序贬损一通,然后自己再开发更多的问题的代码来代替。我的公    
  司统计,一个软件中有4个以上CSocket版本,每个人都觉得别人做得差,    
  自己再搞一套。中国人,就是这个样子,还会辩解说“我们这样有创造    
  性”。其实软件发展,早就走过了求伯君那个编码英雄的年代,程序员已    
  经是个坐办公室的蓝领了。你具备拧好一个螺丝钉的能力就可以了,Code    
  是最低级的事情了。    
  2.他们许多公司的项目经理根本就不懂技术。中国的项目经理如果不    
  能在技术上压服下属,那么下属将与他搞鬼,越是高手越喜欢搞鬼,根本    
  不知道作软件的终极目的是从别人兜里掏钱,而在内部搞不团结。技术高    
  手都会纠集一些对他技术上崇拜的菜鸟,与管理层作对。    
  而印度的软件经理根本就不懂正在做的东西,许多甚至直接就是MBA,    
  或者是领域专家(工业设计、地理专家等),而不是编码的专家。但是却    
  能够领导大群素质良好的程序员把工作做好,没有内部不团结的情况。许    
  多印度的程序员加入一个公司很长时间,都不知道自己整天编的代码是干    
  什么用的。给他们的任务可能就是一个函数的声明以及该函数要实现的功    
  能。我们呢?    
  3.他们的编程人员的流动率达到   30!他们的编程人员流动率(包括    
  内部项目之间的流动)高达   30,可以想见他们的文档水平如何。他们的    
  产品不依赖任何一个人,谁都可以立即辞职,产品的开发还是会正常进行。    
  而中国,是老板怕总工。技术骨干拥兵自重,抗拒管理。任何制定好的计    
  划,都有可能被技术人员推翻或者跟你消极怠工。    
  4.他们的开发计划能够做到小时级别。如果一个印度公司的项目经理    
  没有上班,那么他的下属将可能不知道作什么。他们的计划一般都定到天,    
  每个基层开发人员每天的工作量就是   8小时。而我们能够给出月度计划的    
  公司就很少,而给出的月度计划要么不可能实现,要么就可能被取消。开    
  发人员被初略的给个任务,他在月初,可以慢慢琢磨是做成什么样子,然    
  后上上网,聊聊天。到了月中和月末,就开始熬夜编码。    
  看到每年,从各大高校不尽牛人滚滚来,我们是不得不要召人,同时    
  又是不抱希望。我公司现在有意以后将核心软件开发外包给印度公司,中    
  国人?做做界面吧,中国人做界面会极尽奇技淫巧,搞得花里胡哨的。    
  BTW   ,我公司非外企,大家不要误会我们有什么种族歧视。但是我们现在    
  就是对自己歧视,自卑得很。中科院那么多研究院,连个能用的操作系统    
  都搞不定。    
  北大开发一些东西,比如什么青鸟CASE,就是给一帮人评职称的。杨    
  芙清院士整天搞来搞去,搞出了什么东西?B大,T大的人最难管理,牛得    
  看不见人。中国的程序员骂微软,追   Linux是全世界最狠的,可是我们除    
  了汉化Linux,做了什么东西出来。CDE   是瑞典人写的,Linus是芬兰的,    
  GNome是墨西哥人写的。哎,我们曾经是多么的瞧不起印度人。

posted on 2010-01-06 20:32  stillful  阅读(420)  评论(0编辑  收藏  举报