国际化软件工程师的成才之路

来源:互联网 发布:搜狗mac怎么设置 编辑:程序博客网 时间:2024/06/12 01:25
国际化软件工程师的成才之路
北京航空航天大学 2005-8-17 13:10:36 点击:188 次 发表评论

主讲人:孙伟
主讲人介绍:北京航空航天大学软件学院院长;北京航空航天大学学术委员;学位委员会委员;国际电子电气工程师协会(IEEE)高级资深会员;美国迈阿密佛罗里达州州立大学(FIU)计算机学院终生教授。

    首先,我们对中国市场和IT市场做一个简单的描述。
    就中国而言,主要是制造业。在过去的20年内,中国已经成功的将全球的制造业转移到中国,在世界各地我们都可以看到由中国制造的物品,从家用电器,到穿衣带帽,中国的制造业可谓是繁荣昌盛。但是有一点我们不能忽视,制造任何物品都是要消耗资源的。过分的消耗资源,对任何一个国家来都是很大的创伤,而未来的战争也是围绕资源而战的。 也许我们现在使用的资源就是我们子孙后代的资源。况且制造业除去成本费用后,所剩无几。与制造业相比而言,软件开发便不具备这些后顾之忧,开发软件,做软件服务,所需要的只是PC机,办公室,和少量的电。除了电以外其他两样可以说是没有什么消耗可言。而今软件开发和软件服务已然成为全球的一个重要组成部分。印度这方面做的就比较好,印度仅软件这一项,出口额每年达到95亿美元,而中国仅为20亿。
    这现象的出现引起了我国政府的注意,为了振兴中国的软件业,国务院先后曾颁布了18号及4 7号文件。而今18号文件实施整整5年,47号文件实施也已3年。回顾中国软件业走过的5年历程,整个软件行业的发展似乎并没有期望的那样顺利,重金扶持却收效甚微。与我们的邻国印度相比较,5年后的今天我们在软件方面与印度的差距更大了。面对政府前所未有的扶持政策,为什么我们的软件差异会越来越大?造成这一现象的最根本原因是我们缺乏与国际接轨的软件开发人才,印度每年理工科毕业的学生大概有340万人涌入IT业,而其中的有30万左右成为了真正意义上的工程师,从事软件的开发。而我国虽然每年涌入IT业的人也是越来越多,但是能够成为合格的能与国际接轨的软件工程师的人却是很少。
    如何能成为一名成功的国际软件工程师?我们主要从以下3点来评价,满足这3点要求的,便可以称之为合格的国际软件工程师。我们就拿软件出口大国——印度来做一个参考。
   
首先,是个人能力和耐性的培养
    在印度的学生具有很强的实际运用能力,印度的软件经理大部分并非编码专家,许多甚至直接就是MBA,或者是领域专家(工业设计、地理专家等),但是却能够领导大群素质良好的程序员把工作做好。为什么?这就是能力的培养。2004年在和华为的一个主管的交谈中得知华为作了一个实验,使选择了一个约1500行代码难度的题来考了3个中国人和3个印度人(分别为新手、一般程序员、程序员高手和项目经理)。结果是:印度的3个人做出来的东西(甚至到了变量名、注释等)非常雷同,除了新手稍微慢一点。而中国的3个人做出来的东西完全不一样:程序员高手只用了1000来行代码,程序做的精练有效,新手干脆连题都没有看懂。这种能够标准化的一致性的意义极其重大。在软件工程领域中,不亚于在汽车领域里汽车的标准化工业化的生产的意义。印度人能够把软件整体把握得很好,能够完成软件,并整理出相当好的设计文档。
    反观中国所谓科班出身的大学生们,总是期望一毕业就能成为项目经理、分析师、设计师,事实却是心有余而力不足,眼高手低几乎成了他们的通病,不满现有编程工作,即使编一个很小的程序,时间不常就会怨声载道,交出的程序又不能正常使用的大有人在。 “学生不符合需要,顶多算半成品”是企业说得比较多的话题。软件科学是一门实践的科学和艺术,资深的“软件白领”至少要经过5年以上正规开发大项目的锻炼,软件开发是需要清楚的头脑和敏捷的思维,心浮气躁则是软件工程师的大计,作任何工作都应该专心致志,做好自己的本质工作,不要整天想着改行,做这个、做那个,这样到头来只能是一事无成。软件工程师更应该避讳这一点,只有长时间的从事软件的开发工作,才能具有强烈的市场意识,懂得怎样沟通、如何将技术研究和产品开发衔接好,这样才是一名合格的国际软件工程师。
    其次,就语言的掌握能力。这其中包括强大的表达,书写,和逻辑思维能力。
    国际上大部分的软件还是来自于欧美,也就是说很好的掌握英语是成为国际软件工程师的另一个必备条件。
    我国是一个英语能力相对薄弱的国家,这并不是我们的政府不注重英语教育,主要是我们的学习方法不对。我问过我的学生,他们大多数学习英语的时间都在15年左右,而在坐的各位,大多数学习英语的时间也都在10年以上吧。可是我们可以想一想,我们在过去的10——15年间,对英语的掌握程度如何?我们是否具备了良好的听、说、读、写的能力。而要想成为合格的国际软件工程师,这些条件都是不可或缺的,只有掌握了英语,才能做到一个能与国际接轨的软件工程师。如果我们在对外语听、读方面存在疑问,那我们如何能够正确的领会到对方所传递的信息,如果连听都听不懂又何来的软件开发、编程,而且软件开发是一个及其精确的工作,一旦理解有偏差,那么做出来的程序可就是差之毫厘,谬之千里。我的技术部经理曾告诉我,他每天早晨得耗费2个小时来阅读美方的E-mail,以精确理解其中的含义;给对方传递我们的信息最终是要通过说、写来实现的。这不但要求我们的软件开发人员具有良好的语言表达能力,还要求具有敏锐的思维能力,能够准确无误的书写出对方要求的程序代码。所以语言的掌握也是一个很重要的因素。
    最后,就是团队精神,这种精神无论是在什么地方都是很重要的,这也是中国软件业落后与印度的又一个原因。
    在印度,软件业“存在规则并尊重规则”!每个人都很清楚并严格遵守自己的职责、任务和约束,合作一个整体表现出的则是社会化生产的团结、标准化和高效。程序员已降成是个坐办公室的蓝领了,具备充当好一个螺丝钉的能力就可以了。印度人,尽管可能优秀和长的帅气,但却甘于毕生作为管家和仆人。这个文化深处的特性对于项目来说,对于程序员素质来说,是非常重要的。他能加强团队意识,不管在那一个岗位上,勤勤恳恳地把工作做好,而不是去作个人英雄主义。因此,印度的软件公司的编程人员流动率即使(包括内部项目之间的流动)高达30%,许多印度的程序员加入一个公司很长时间,都不知道自己整天编的代码是干什么用的,他们的产品仍然不依赖任何一个人,谁都可以立即辞职,产品的开发还会正常进行。
    而在中国几千年历史的沉淀让“无规则”或者“潜规则”存在于社会的各个方面,学生们相互比较的是个人的能力,是个人的学习成绩,,很多人都不习惯件集体协作,认为对“规则”、“文本”、“约束”的抵制一定最终会以某种“变通”来平衡。对团队合作的概念认知程度较差,也不太重视动手实践这一重要环节。 进入公司以后,由于用于团队开发的工具很昂贵,我们的软件企业不愿意或没实力获得这些工具,使得中国程序员缺少开发工具的使用经验, 造成和国际的开发模式也不接轨,多数人可能只是各自反复琢磨数据结构、算法,琢磨细节,还没编码就想着是Outlook式的还是VisualStudio式的界面。或许我们的学生对某些特定的开发工具可能是精通的,但是就是不能保证把一个软件稳当、完整地开发出来。一位业内人士统计了一下自己的公司,一个软件中有4个以上CSocket版本,每个人都觉得别人做得差,公司新进人员总是先把前任的程序贬损一通,然后自己再开发出有更多问题的代码来代替。技术骨干拥兵自重,抗拒管理的故事层出不穷,任何制定好的计划,都有可能被技术人员推翻或者跟你消极怠工。因此能够给出月度计划的公司就很少,而给出的月度计划要么不可能实现,要么可能被取消。所以,团队精神也是一名合格的工程师所必备的条件。
    以上是一名严格意义上的工程师必须具备的要求,如果说评定一个人的好与坏是以他 的综合素质作为尺度,那么以上就是评定你是否具备一名国际软件工程师所具备的综合素质的标准。 

原创粉丝点击