我在工作中,接触到印度软件公司开发出来的软件: 整个体系架构非常清晰,按照我们的要求实现了全部功能,而且相当 稳定。但是打开具体的代码一看,拖沓冗长,水平不咋样。我们自己 的一些程序员就有怪话了,说他们水平真低。但是!印度人能够把 软件整体把握得很好,能够完成软件,并得到相当好的设计文档。 而中国人在那里琢磨数据结构、算法,界面人员就还没编码就想着 是 Outlook 式的还是 VisualStudio 式的界面。到最后就成为 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 。 Justdoit! 一句话, 中国的软件开发水平低得很。赶不上印度人,印度的软件公司 可以让高中生编代码,它的软件工程水平可想而知。 当然,你如果是个很牛的程序员。估计够呛,因为中国的气氛中, 很牛的程序员都很难接受软件工程的。
    你可以测试一下自己, 看看自己适不适合现在学习软件工程:

1 、你是不是不能忍受一个编程序不如你的人做你的项目经理?

2 、你是不是觉得你的老板对客户吹牛皮、夸大自己而感到不舒服 ? 
    3 、你是不是一个拿到一个需求脑袋里第一念头就是如何实现的人?

4 、你是不是很崇拜 Stallman , Linus ,很讨厌 Microsoft?

5 、你是不是曾经在深夜编码的时候,突然感觉到一种乏味, 对 Code 的生涯感到一种无趣?

以管窥豹──印度神话作者: "Kino" 我们现在处于深深的自卑 当中,感到中国的软件工程水平的低下已经是牵涉到民族 劣根性的问题了。

1 、他们的软件教育水平:我们招聘印度人,给应聘者出了一份 与国内差不多的试卷,有基础概念和编程题目。等到他们完成后, 我们这些中国的自认高手惊呆了!他们的编程题目简直象是抄袭的 ? ? 程序结构,注释,变量命名就不说了吧,全部都是极其类似! 反观中国的牛人、高手,每个人有自己的一套。到了新的岗位, 先把前任的程序贬损一通,然后自己再开发更多的问题的代码来 代替。我的公司统计,一个软件中有 4 个以上 CSocket 版本, 每个人都觉得别人做得差,自己再搞一套。中国人,就是这个样子, 还会辩解说“我们这样有创造性”。其实软件发展,早就走过了 求伯君那个编码英雄的年代,程序员已经是个坐办公室的蓝领了。 你具备拧好一个螺丝钉的能力就可以了。 Code 是最低级的事情了。

2 、他们许多公司的项目经理根本就不懂技术。中国的项目经理 如果不能在技术上压服下属,那么下属将与他搞鬼,越是高手 越喜欢搞鬼,根本不知道作软件的终极目的是从别人兜里掏钱, 而在内部搞不团结。技术高手都会纠集一些对他技术上崇拜的菜鸟, 与管理层作对。而印度的软件经理根本就不懂正在做的东西, 许多甚至直接就是 MBA ,或者是领域专家(工业设计、地理专家等) ,而不是编码的专家。但是却能够领导大群素质良好的程序员 把工作做好,没有内部不团结的情况。许多印度的程序员加入 一个公司很长时间,都不知道自己整天编的代码是干什么用的。 给他们的任务可能就是一个函数的声明以及该函数要实现的功能 。我们呢?

3 、他们的编程人员的流动率达到 30%! 他们的编程人员流动率 (包括内部项目之间的流动)高达 30% ,可以想见他们的文档水平 如何。他们的产品不依赖任何一个人,谁都可以立即辞职, 产品的开发还是会正常进行。而中国,是老板怕总工。 技术骨干拥兵自重,抗拒管理。任何制定好的计划,都有可能 被技术人员推翻或者跟你消极怠工。

4 、他们的开发计划能够做到小时级别。如果一个印度公司的项目 经理没有上班,那么他的下属将可能不知道作什么。他们的计划 一般都定到天,每个基层开发人员每天的工作量就是 8 小时。 而我们能够给出月度计划的公司就很少,而给出的月度计划要么 不可能实现,要么就可能被取消。开发人员被初略的给个任务, 他在月初,可以慢慢琢磨是做成什么样子,然后上上网,聊聊天。 到了月中和月末,就开始熬夜编码。

看到每年,从各大高校不尽牛人滚滚来,我们是不得不要召人, 同时又是不抱希望。我公司现在有意以后将核心软件开发外 包给印度公司,中国人?做做界面吧,中国人做界面会极尽 奇技淫巧,搞得花里胡哨的。 BTW ,我公司非外企,大家不要误 会我们有什么种族歧视。但是我们现在就是对自己歧视,自卑得很 。中科院那么多研究院,连个能用的操作系统都搞不定。 北大开发一些东西,比如什么青鸟 CASE ,就是给一帮人评职称的。 杨芙清院士整天搞来搞去,搞出了什么东西? B 大, T 大的人最难 管理,牛得看不见人。中国的程序员骂微软,追 Linux 是全世界 最狠的,可是我们除了汉化 Linux ,做了什么东西出来。 CDE 是 瑞典人写的, Linus 是芬兰的, GNome 是墨西哥人写的。哎,我们 曾经是多么的瞧不起印度人。

印度人是怎样开发软件的?相关推荐

  1. 如何带领5人小团队开发软件

    作为一个项目经理,你可能经常面临着如何带领一个小团队高效地开发软件的挑战.在这篇博客中,我将分享一些我的经验和技巧,希望对你有所帮助. 如何明确项目目标和范围,以及团队成员的角色和职责 在开始一个软件 ...

  2. 软件工程是不是教会不怎么会写程序的人开发软件?你的观点?

    软件工程并不是教会不怎么会写程序的人开发软件.软件工程的主旨是用工程化的方法指导软件开发.维护,它是研究如何以系统化的.规范化.可定量的过程化方法去开发和维护软件,软件工程涉及了很多方面的内容,包括程 ...

  3. 软件工程是不是教会不怎么写程序的人开发软件?你的观点。

    观点:我认为软件工程仅仅是一本辅助书,知识充当开拓人的思想构建的一本书.单纯的观看这本书,并不能使我们学会开发软件,更多的是要我们自己去实践,多去找资源和题目学习,操作.要真的实现软件的开发,必须要有 ...

  4. 软件工程是不是教会不怎么会写程序的人开发软件的?

       提问: "Software engineering, of course, presents itself as another worthy cause, but that is e ...

  5. 关于软件工程是不是教会不怎么会写程序的人开发软件的个人观点

    问题 "Software engineering , of course , presents itself as another worthy cause, but that is eye ...

  6. 【无标题】软件工程是不是教会不怎么会写程序的人开发软件?

    我认为软件工程并不是教会不怎么写程序的人开发软件. 软件工程是教会人将更系统化,严格约束的,可量化的方法应用于软件的开发,运行和维护,而不是简单写代码编写程序,一个合格的软件,是由几千甚至几万.几十万 ...

  7. 1.2软件工程是不是教会不怎么会写程序的人开发软件?

    "Software engineering,of course,presents itself as another worthy cause, but that is eyewash: i ...

  8. 软件工程是不是教会不怎么会写程序的人开发软件,你的观点?

    我认为这个观点是不准确的.软件工程不仅仅是编写代码,而是一个包括计划.设计.测试.部署等多个阶段的综合过程,软件工程师仍然需要有一定的编程能力才能进行有效的软件开发.事实上,软件工程师通常需要掌握多种 ...

  9. 软件工程是不是教不怎么会写程序的人开发软件,说说你的看法?

    我认为软件工程并不是教不怎么会写程序的人开发软件. 软件工程包括软件工程的工程化和工程化的软件工程. 软件工程的目标是指导计算机软件开发和维护的学科,目的只在于通过工程化的方式进行软件的开发,而不是着 ...

  10. 软件工程到底能不能教会不怎么写程序的人开发软件?

    我的观点是,不能 不能是因为,软件工程的开发需要一定的写程序的基础和经验,不可能不怎么积累经验就能够去开发软件,软件的初期开发靠的就是我们的积累和经验,凡事都是学中做,做中学,竟然都不怎么写程序,&q ...

最新文章

  1. 校验正确获取对象或者数组的属性方法(babel-plugin-idx/_.get)
  2. Service Fabric独立集群搭建
  3. MAR-8ASM射频放大器测试
  4. FreeRTOS临界区应用与总结
  5. 2能不用cuda_cuda学习-1-cufft的使用
  6. 利用python进行数据分析_资料 | 利用Python进行数据分析
  7. [渝粤教育] 西南科技大学 程序设计语言VB 在线考试复习资料(1)
  8. 【计算机网络复习】1.2.4 TCP/IP参考模型和5层参考模型
  9. object-c 混编 调用C,C++接口
  10. MyBatis框架的基本使用
  11. openstack实例状态错误_CSS超炫加载动画设计、实现与实例讲解
  12. 如何将Eclipse设置为中文版
  13. 简述 矩阵-DirectX 原理,并详解世界坐标转屏幕坐标,附C++实现。
  14. qq视频转码失败怎么办_迅捷视频转换器腾讯视频转换失败如何解决?
  15. 在Edge浏览器中设置编码方式
  16. 概率运算中C(k,n)是怎么算的啊? 比如C(6,3)等于几?怎么来的.
  17. 解除隐藏已购项目_从AppStore的已购项目中隐藏已经购买的APP
  18. html版心宽度怎么设置,Word中版心尺寸是什么意思?怎样设置版心尺寸?
  19. matlab仿真直流电机,[转载]基于Matlab/Simulink的无刷直流电机控制仿真研究
  20. win10计算机找不到家庭组,win10专业版没有家庭组怎么办?一招帮你解决问题

热门文章

  1. 服务器创建新文件夹权限设置密码,在服务器上修改文件夹权限设置密码
  2. matlab padarray,MATLAB中padarray函数用法
  3. 伪元素在父元素中居中_从ArrayList中移除元素
  4. python无需编译解释执行,解释型语言和编译型语言的不同以及Python怎么运行
  5. python env虚拟环境
  6. 帆软 JS给填报控件(单元格)赋值 包含扩展单元格赋值
  7. 双方确认函_影片份额转让合同约定第一出品方出具确认函后合同生效,未出具而受让方支付投资款的,合同也生效...
  8. 51Nod 1002 数字三角形 Label:水水水 非学习区警告
  9. Eclipse Egit 安装
  10. php学习的一些笔记