我们需要什么样的软件工程师
近期,IT行业中最令人关注的职位当属“软件工程师”了,其需求量在IT人才市场中总是名列第一,成为IT人求职的热点。软件工程师的未来是什么?有哪些出路?你是否已做好物质上及心理上的准备以迎接各阶段的挑战呢?从软件技术的发展及软件产业的竞争来看,只有学会学习,软件工程师才能应对未来的各种挑战。我们将分两期向大家介绍四种类型的软件工程师,分别是学习型、应用型、复合型和通用型。我们先来看前两种,希望对大家的学习和职业生涯有所帮助。软件开发生涯需要
“学习型”工程师
写软件程序其实很简单。电脑知识入了门,熟悉它运作的基本原理,自己设计些程序并不难。不断改善的人机界面,提供了前所未有的简单使用方法,更让写程序的年龄记录不断下降。入了门,只要条件允许,走上专职软件工程师这条路是相当自然的。这里说的条件是什么呢?兴趣是第一,再者就是进修提高。学校虽尽其可能传授学生最新的知识,但很可能学校所学的知识一毕业就过时了。工作后再学习就成了最重要的进修方式。能不能把握好这些机会,决定着程序员的技术层次和前程。
入门容易,要成为大师却很难。同样,要在软件业修炼成高手也要有相当时间来磨炼和积累。学习与不断提高伴随着软件工程师的职业生涯。
在技术钻研的历程上,刚开始你可能只是一个程序生产者。在这个阶段里,你只以编写程序的能力来提供服务。常常知其然,不知其所以然,但那不是问题。就像是个学徒,重要的是打好基础。千万不能染上一些恶习,例如求快而忽略细节,也不要以为简单和简陋一样。
通常经过一段时间,单纯的程序编写已不具挑战性。渐渐的,你开始对自己负责设计和编写的模块产生怀疑,并能适时地提供改善的建议。接着,你常因提出好点子而被赞许。就这样逐渐开始接触设计的领域。富有创意或是基本功好的人,会比较早进入此阶段,享受到意见被接受的快乐与成就感。 更进一步,你开始负责模块的设计。也许自己只编写较重要的部分程序,而将大部分程序编写工作交给上述的程序生产者。与前阶段比较来说,工作内容从程序编写渐渐变成设计。程序编写的工作量虽逐渐减少,但仍然是一个重要的部分。在和其他负责模块的同事不断沟通中,你将了解到整个产品的设计理念和重点。
接下来能不能更上一层楼,取决于你能否评判模块的设计是不是完整、有没有足够的前瞻性。很多软件工程师上不上、下不下地卡在这一层。不求真,断章取义,只看到问题的表面;不尽善,贪功求快,只解决今天的问题;不知美,照猫画虎,只满足于东施效颦。若非下足工夫,是很难再创新高的。
职业生涯要求软件工程师学会学习,更强调学习方法,而不强调学习内容。一个成功的软件工程师必须在实践中努力学习如何分析问题、如何解决问题。趋势科技产品研发部经理罗钟灵以这么一句话描绘软件工程师的特质:“像艺术家一样有创意、不修边幅又执著。”看着埋首在编码世界里的工程师们,还真有几分艺术家模样,好的工程师要能天马行空地遐想,不受所知限制,去发掘创意。他强调:“设计产品时,想的是它可以有哪些功能、应该怎么表现,不是想我现在有什么工具,所以我只能做到什么事情,这样才能充分发挥想像力。除了有创意外,还要能落实想像。‘做了’跟‘把它做好了’有很大的差距。用在软件产业上,差距更明显。写程序没有模糊地带,必须照顾好所有细节。一打马虎眼,就出问题,程序只要有一点小问题,就会造成产品瑕疵。在如今讲求产品品质的市场更是要不得的。”
在学校写程序和工作职场最大的不同是,在校是处理程序中20%“对”的部分,工作却有很大部分是在处理80%的各种“错误”,也就是意外情况。在校时,程序只要能用就好,死掉的话就重新开机,但这种作法到了职场却行不通。新人容易把问题过度单纯化,往往还未对问题透彻了解就贸然想解决问题,常会头痛医头、脚痛医脚,所以,放宽心胸,努力学习如何分析、解决问题显得更为迫切。 软件企业需要
“应用型”工程师
中国有那么多的软件企业和那么多从事软件开发的人员。对中国的多数企业来说,目前的从业人员缺少哪些技能?首先,目前的从业人员缺少国际化、规范化、标准化的软件产品理念;其次,缺少软件工程理念;第三,动手能力、解决实际问题能力较差,缺少团队精神与理解能力。
北京软件行业协会曾对800多家软件企业进行了一项调查发现,软件企业要求基础软件工程师具备六大基本素质,即良好的编码能力、自觉的规范意识和团队精神、认识和运用数据库的能力、较强的英语阅读和写作能力、具有软件工程的概念和求知欲和进取心。
良好的编码能力。软件人员的一个重要职责是把用户的需求功能用某种计算机语言予以实现。编码能力直接决定了项目开发的效率。这就要求软件工程师至少精通一门编程语言,比如当前国内企业常用的C/C++、VB和国际上最流行的Java语言,熟悉它的基本语法、技术特点和API(应用程序接口)。
自觉的规范意识和团队精神。随着软件项目规模越来越大,仅仅依靠个人力量已经无法完成工作,因此,现代软件企业越来越重视团队精神。一般来讲,软件企业中的程序员可以分为两种,一种是程序“游击队员”,他们可能对编程工具很熟,能力很强,把编码编得很简洁高效,但却缺乏规范和合作的观念;另一种程序员编程不一定很快,但是很规范,个人能力不一定很强,但合作意识很好。第二种人更加适合现代软件企业发展的潮流。对于基础软件工程师来说,他们在企业中的角色决定了他们必须具有良好的规范意识和团队精神。
认识和运用数据库的能力。信息是以数据为中心的,因此与数据库的交互在所有软件中都是必不可少的,了解数据库操作和编程是软件工程师需要具备的基本素质之一。目前常用的数据库软件有甲骨文公司的Oracle数据库和微软公司的SQL Server等。
较强的英语阅读和写作能力。程序世界的主导语言是英文,编写程序开发文档和开发工具帮助文件离不开英文,了解业界的最新动向、阅读技术文章离不开英文,与世界各地编程高手交流、发布帮助请求同样离不开英文。作为基础软件工程师,具有一定的英语基础对于自身的学习和工作极有帮助。 软件产业发展需要“复合型”工程师
IT产业变动快速,第二专长的概念日益受到关注。若能软硬件兼修或是懂得其他行业的知识,在职场上就比单会写程序的工程师受欢迎。这里所说的“复合型”工程师,指的就是具备多种能力和素质,并能够将多种能力进行综合运用的人。
善于发现:市场需求决定着软件产业的发展方向。软件工程师不能就技术论技术,而是要就市场论技术。因为如果没有市场需求,没有地方可应用,即便是“天衣无缝”的技术也只能“孤芳自赏”。比尔·盖茨、王嘉廉、王永民、王文京、求伯君……无论这些软件业人物成就大小,是否是计算机专业出身,成功的第一要素都是对市场需求的敏锐判断力和孜孜不倦的追求。
善变和善辨:现在赚钱不等于将来赚钱。据说王永民先生领导的王码公司,现在还在潜心研究如何在鼠标上使用五笔字型输入法。用友靠财务软件起家打江山,但王文京先生最近却表示,两年之后不再会有专门的财务软件公司存在,他们将进军企业管理软件市场。软件应用需求总是日新月异,公司产品定位不可能一劳永逸。善于审时度势、合纵连横,有良好应变能力是软件业人士必不可少的基本素质。
现在不赚钱也不等于将来不赚钱。比如,投资商现在一听说搜索引擎多半会觉得索然无味,因为现在搜索引擎的市场需求似乎正在萎缩。但是,有一件事情是显而易见的:如果没有了信息检索服务,互联网上的海量信息又如何共享?因此,在信息检索这一互联网信息共享的咽喉之处,未来“钱景”其实是无疑的。最后的拼杀仅在于,哪一种搜索技术能够向用户提供最有价值的信息检索服务。
在风声鹤唳之时,善于辨别哪里是最不可替代的用户需求关口,然后在人机协同方案和底层技术创造上不懈追求者,最有可能成为软件行业的领军人物。
重视非IT行业:软件业和其他产业息息相关,要想做出真正受欢迎、应用性能出色的软件,必须鼓励、吸引该行业非计算机专业人士加盟核心团队,必须善于与非计算机专业人士精诚合作。那种不重视非计算机专业人士在软件领域的重大作用的陈腐观念,有可能正在阻碍着中国软件业的发展。 与国际接轨需要“通用型”工程师
注重国际规范:有关资料显示,在未来5年中,我国每年至少需要4万名符合国际标准规范的软件工程硕士。美国软件公司在寻求外包软件人员时发现:同样的需求,印度的软件工程师会编写出十分规范的程序软件,而我国的软件工程技术人员则会编写出五花八门的程序软件。原因是我们太缺乏与国际接轨的、系统、规范、工程化地培养软件人才的体系了。
与我国先进的基础教育和信息技术的基础理论教育相比,软件工程人才在实际技能的培养、国际前沿技术的获取与沟通、具有国际水平和标准的软件项目开发与运作、软件出口外包等方面的培养有极大的不足。要实现软件开发的工程化,必须在我们高校的软件人才培养模式中推出“软件教育产品”的理念。传统教育体制下培养出来的软件硕士更重理论课程,概念虽被背得滚瓜烂熟,但有时还不知它们该往何处“安插”。缺少与国际规范接轨的高级编程人员,极大地制约了我国民族软件产业的发展。
选择优秀培训课程:好的软件工程师培训课程,应该针对企业的需求,有针对性地选用全球权威性的、IT前沿系统的课程。同时,针对我国现阶段软件工程教育领域中的不足,应当适时补充和推出全新的、符合国际标准的职业认证体系。
在美国硅谷,许多不同的小公司正在崛起,为解决个别问题而设计的独立软件层出不穷。但是,大企业总是会想方设法要将不同的“散件”组合在一起,以便找到全面解决问题的方法。对照软件行业的这种趋势,中国软件工程教育目前缺少的正是这种人才培养的整合力量。因此,要强调对软件人才的集成和整合能力的培养和训练,这正是软件行业和我国高校应该共同面临的问题。
英语的重要性:英语作为目前编程工具软件的主流语言、作为程序编写的主要工作语言、作为互联网上占主导地位的语言,对于软件工程师的技能和业务水平提高的重要性不言而喻。而且,软件行业的发展一日千里,编程工具软件的更新换代十分快,软件工程师总是需要在第一时间学习业界最流行、最先进的编程工具软件的使用方法。通常,在一种软件刚刚面世的时候,软件工程师是不可能找到这种软件的中文使用说明或中文帮助文档的。优秀的软件人才从不会为这样的问题烦恼,因为他们早已经在软件工程专业英语方面达到了娴熟运用的水平,浏览英文的文档、英文的帮助文件,在第一时间掌握最先进、效率最高的软件工具的使用方法是他们在业界立足的根本。 好,好,好,楼主说的好!
看来我们的路还是很长呀!!!
不错!不错!
大家都来努力吧! 真正出色的程序员不只会写代码,对相关领域都能够灵活运用才叫牛:d 我想成为一个通用滴:p努力吧!
只要目标确定,一定会成功的。[ Last edited by bobli on 2004-7-30 at 18:35 ] 加油加油!!!
看来我要学的还有好多哦!
真正出色的程序员不只会写代码,对相关领域都能够灵活运用才叫牛只会写代码的,那不叫程序员,那叫coding人员!程序员最起码要知道一些需求分析. 大家一起加油把﹗
play up! 这么长,够我看一阵的,也够琢磨一段时间的了,晕~~~~~~~ 路漫漫,唉,要慢慢熬阿 加油,我才起步。。。 加油!!!!!!!!!!!!!!!!! 好多哦~呵呵
刚找到的论坛~我还是学生还需要多学习学习~ good
页:
[1]
2