当前位置:首页>>资讯>>数字人生>>新闻内容  
读《中国与印度软件工程师之比较》有感
作者:FireAngel/CSDN 发布时间:2004-4-3 12:00:58 | 【字体:

  读《中国与印度软件工程师之比较》一文,感觉文中都是对中国程序员的侮蔑、诽谤和侮辱,有些话不说不快。(该文的URL: http://www.weste.net/html/200404/20040403QBI115250.html)文中的红色字部分皆是出自该文。
我先哉这里申明:我这里不是要替程序员推卸责任,我是觉得这种不负责任的、错位的文章广为流传,非常不利于中国的软件业,所以觉得有必要进行驳斥。

  的确,中国现在的软件工程水平不是很高。但是即使在美国,每年也有很多软件项目失败,难道中国就不允许失败了,难道印度就没有失败的项目么,更有甚者,为什么要把项目失败归结到程序员身上,平心而论,一个管理者对项目的影响比程序员大吧。

  按照软件工程的说法,一个软件项目中人员的责任是严格区分的:项目经理、系统构架师、过程工程师、系统设计师、程序员、测试人员等等,可以参考RUP中的相关部分。而在中国的现状是,我们的程序员至少兼了系统设计师和程序员的职责,有的公司好些,没让再兼系统构架师,可能还有专门的测试人员,很多公司就是程序员兼测试人员兼系统设计师和系统构架师了,所以我们的程序员肩上承担了太多的责任。实际上作者在文中并没有体现出非常好的软件工程素质,而是笼统的分成了项目经理,除了项目经理的都是程序员,呵呵,有意思。

  文中提到“印度人能够把软件整体把握得很好,能够完成软件,并得到相当好的设计文档。而中国人在那里琢磨数据结构、算法,界面人员就还没编码就想着是Outlook式的还是Visual Studio式的界面。

  首先,文中的这个“印度人”“中国人”含义模糊,印度人跟中国人一样的,也有项目经理、系统构架师、系统设计师等等区分,那究竟这里指的谁?姑且不管。实际上,对项目整体进行把握,并进行功能划分,这个应该是系统构架师的工作;然后由系统设计师各个部分进行系统设计;再后面由程序员做编码实现;最后测试,交付。。。。而在上面“中国人”的行为实际体现的是一种无计划无分工的行为,以至于无法保证项目的成功实施。我想问,这个究竟是谁的责任?难道是我们程序员责任?当然,作者是认为我们程序员劣根低下,要负责任。先让我们看看所谓的项目经理干什么的,他必须组织项目的计划、日程和资源,他必须能够执行项目决策,并最终为项目决策负责,这个是项目经理的组织和决策能力。上面体现的无计划和无分工的状况,正是项目经理缺乏组织和决策能力的表现,所以真正的责任承担者应该是项目经理。

  “界面人员没编码前先想着是outlook式的还是Visual Studio式的界面”,这个有错吗?设计本来就在编码之前,难道要一边编码一边想是什么样式?这个好像不符合作者对软件工程前调的想法吧。

  “就是不能保证能够把一个软件稳当、完整的开发出来。”这个是谁的错,是谁来保证项目的成功?当然是项目经理了。如果一个项目分成ABC三部分,做A的程序员只能保证A成功,BC的成功不是他的职责。

  举个简单的例子:

  “软件中需要一个列表,用来表示我们处理的事务。该类表在业务繁忙的时候将变得很大。中国人就用双向链表,抱着《数据结构》书在那里写链表的类。印度人开了一个大数组,然后就开始干。为什么印度人不用链表,他们说:1、你们给出的设备(小型机),最少具备512M内存,浪费一些没有什么。2、数组方式访问方便、效率高。 看出了一拿到东西就吭哧吭哧作Code,和好好进行软件分析的不同了吗?

  我想问的是,作为项目经理,你在这里有没有把规范的需求文档提交给程序员?你有没有明确的告诉过“该类表在业务繁忙的时候将变得很大”“给出的设备(小型机),最少具备512M内存”?另外,你有没有告诉过程序员,因为有512M而可以不需要考虑内存浪费的问题(因为数组是静态分配,可能会浪费内存一些,但是应为直接访问,所以速度快些、方便些),即使是512M并不是就等于可以随便浪费内存,从操作系统的角度来说,内存永远是不够的。需要知道,需求分析不是程序员的责任,从软件工程的角度来说,那是上一个流程应该输出的产品。不明确需求就该是着手实现,这是过程控制上的问题,而过程控制上的问题恰恰是项目经理的责任。

  “所谓的项目经理(PC)一般也是从编码人员升上来的,并不是所谓的不懂技术,一般都至少有四年以上的经验”,印度也要求项目经理懂技术的撒。

  “PC主要就是制定开发计划,负责协调,填写各种表格.”呵呵,这个PC对自己的职能还是了解的嘛,不光是填写各种表格哦,需要制定开发计划,负责协调

  “所有的东西(包括草稿)都有文档”不是每家中国的软件企业都没有文档,不是每家印度软度公司都由好文档,况且文档也有质量的区别。(象中兴、华为等通信设备制造商其实更象软件企业,他们的员工大部分是做软件的。)

  “详细文档要求达到只有这个文档就可以编码的程度,一般写文档时间占60%,编码时间极少”,看作者的意思是熟悉软件工程了,张口RUP,闭口UML,可是这个PC缺乏一些基本的软件工程常识,不管是那种过程,瀑布式也好,螺旋式也好,还是RUP也好,XP也好,软件过程都不是划分“文档编写”和“编码阶段”的,文档只是各个软件过程中的副产品,各个阶段时间怎么分配的,可以参考教材。作者的意思,文档编写就代表了立项、需求分析、系统设计,但是,真如这样吗?仅仅一个文档编写就能代表需求所有这些步骤的含义?就这么简单?

  “计划很详细,的确能达到小时级,但是实际情况还是误差比较大,所以他们也有加班” 。计划是不是越细越好,达到小时级有意义吗?那是不是算到秒级更好?结果到后面还是“实际情况还是误差比较大,所以他们也有加班”,那这样的计划有何意义?

  “先学习UML和Rose以及RUP,不要总是要找着证据。在中国的软件开发水平下,很难给你一个好的例子,OK?中国人总是要看到一个东西有了试验田,而且稻子长得好,才换稻种。要知道在国外上述的软件开发模式的应用,大可以看看Rational网页上的story。Just do it! 一句话,中国的软件开发水平低得很。赶不上印度人,印度的软件公司可以让高中生编代码,它的软件工程水平可想而知。当然,你如果是个很牛的程序员。估计够呛,因为中国的气氛中,很牛的程序员都很难接受软件工程的”。实际上这段话不知道作者想说什么,不过我想说得是,中国的高中生去看Rational的网站够戗,估计有部分可以,但是要求大部分高中生看懂,是不是苛刻了点。而且,“中国的气氛中,很牛的程序员都很难接受软件工程的”,求柏君反对软件工程?鲍月桥反对软件工程?,实际上作者这句话没有依据,体现根据他本人对程序员的一种歪曲法。据我感觉,中国大多数程序员都是呼唤软件工程的。

  “你是不是不能忍受一个编程序不如你的人做你的项目经理? ”,项目经理是否编程序比我好我不在意,但是我在意项目经理居然不懂软件工程,我在意项目经理认为分析设计就是简单的谢谢文档,我在意项目经理居然对问题域一点都不了解,我在意项目经理只会在吃饭的时候调戏酒店服务员(即使服务员已经表现出非常的委屈何难堪)。

  “你是不是觉得你的老板对客户吹牛皮、夸大自己而感到不舒服?”一般情况下,项目经理何老板是两个人。

  “你是不是一个拿到一个需求脑袋里第一念头就是如何实现的人?” 在中国,只有少部分程序员可能这样,而且他们也在不断进步中。实际上,我觉得原文作者本人作为一个项目经理的想法倒有点意思:软件项目=“写文档”+“写代码”

  “你是不是很崇拜Stallman,Linus,很讨厌Microsoft? ”那纯粹是个人问题,和作者讲的软件工程何干?我想作者的意思无非是说这是一种不成熟的表现罢了,借此,作者进一步认为我们程序员都很肤浅。

  “我们现在处于深深的自卑当中,感到中国的软件工程水平的低下已经是牵涉到民族劣根性的问题了。” 这只能说明作者那种对程序员的仇视和诽谤的心理,估计也是他本人能力不够以至于项目失败,而把员应归结到程序员身上。

  “他们的编程题目简直象是抄袭的?程序结构,注释,变量命名就不说了吧,全部都是极其类似!反观中国的牛人、高手,每个人有自己的一套。”这能说明什么问题,难道编得和人家一样就效率高了,就体现出软将工程素质高了?我想作者走到极端了,盲目最求创造性固然不好,但是有自己的一套也成错事了?怪哉!!!!

  “到了新的岗位,先把前任的程序贬损一通,然后自己再开发更多的问题的代码来代替。”,实际上,作者这句话不负责任,这种情况存在,但不是仅仅只发生在程序员身上,而中国的程序员都是学校出来的,相对心地单纯,我估计更多的情况是发生在他们项目经理身上,比如硬把项目失败的经理推卸到程序员身上。“我的公司统计,一个软件中有4个以上 CSocket版本”这个是版本控制做得不好,与程序员何干?

  “他们许多公司的项目经理根本就不懂技术。”要么作者自相矛盾,要么就是这个项目经理也太那个了,前面还说 “所谓的项目经理(PC)一般也是从编码人员升上来的,并不是所谓的不懂技术,一般都至少有四年以上的经验”,这里又说“许多公司的项目经理根本就不懂技术”,呵呵,不知道他们这4-5年怎么混的,难道真应了那据话,“不懂的人就去当项目经理”?。另外,技术并不只是编码,分析设计、项目管理也是一种技术。就作者的认识,说句大不敬的话,他真的肤浅得很。

  “是老板怕总工。技术骨干拥兵自重,抗拒管理。”我想,这个问题离作者讨论的软件工程的问题太远了,实际上,这个是个社会问题,而联想柳总和倪总的故事好像不是这样的,而方正张总和王选院士的故事也不是这样的。“任何制定好的计划,都有可能被技术人员推翻或者跟你消极怠工。”,实际上,制定好的计划被技术人员推翻也没什么奇怪的,制定计划本生也是个过程,不是说一个人关了门套个文档模板写了个计划书就可以了。而至于“跟你消极怠工”,这是对中国大部分程序员的诽谤,我想中国大部分程序员都不会做这个事情,另外事情本生也体现了项目经理的管理能力问题。

  文中多处体现的是对程序员的轻视、侮蔑、诽谤和人身攻击:比如“牛人、高手”一看就是反语;“开发人员被初略的给个任务,他在月初,可以慢慢琢磨是做成什么样子,然 后上上网,聊聊天。到了月中和月末,就开始熬夜编码。” “跟你消极怠工”,这是没有根据的侮蔑。程序员也是人,基本的受尊重的权利是宪法赋予的,作为项我的目经理你可以命令我、批评我,但你不能侮辱我。

  实际上,该文中体现了作者对软件工程、RUP、CMM根本就是不甚了解,存在处处错误的观念,学了几个名词就拿来大讲特讲,我想应该有很多人已经看出来了,就该作者而言,缺乏组织和协调能力。作者将项目失败的责任一股脑的都推到程序员身上,须知一个项目中,项目经理才是最大的责任承担者,一个项目的失败首先是计划、分工等不合理,至于最底层的程序员,对项目的影响是非常小的。


文章来源:西部E网
·跨国软件职业生涯
·中国与印度软件工程师之比较
 放生
 愚爱
 够爱
 触电
 白狐
 葬爱
 光荣
 画心
 火花
 稻香
 小酒窝
 下雨天
 右手边
 安静了
 魔杰座
 你不像她
 边做边爱
 擦肩而过
 我的答铃
 怀念过去
 等一分钟
 放手去爱
 冰河时代
 你的承诺
 自由飞翔
 原谅我一次
 吻的太逼真
 左眼皮跳跳
 做你的爱人
 一定要爱你
 飞向别人的床
 爱上别人的人
 感动天感动地
 心在跳情在烧
 玫瑰花的葬礼
 有没有人告诉你
 即使知道要见面
 爱上你是一个错
 最后一次的温柔
 爱上你是我的错
 怎么会狠心伤害我
 不是因为寂寞才想
 亲爱的那不是爱情
 难道爱一个人有错
 寂寞的时候说爱我