UML软件工程组织

我们需要什么样的软件工程师
作者:张小明 本文选自:中国电脑教育报——赛迪网 2002年10月29日

 

近期,IT行业中最令人关注的职位当属“软件工程师”了,其需求量在IT人才市场中总是名列第一,成为IT人求职的热点。软件工程师的未来是什么?有哪些出路?你是否已做好物质上及心理上的准备以迎接各阶段的挑战呢?从软件技术的发展及软件产业的竞争来看,只有学会学习,软件工程师才能应对未来的各种挑战。我们将分两期向大家介绍四种类型的软件工程师,分别是学习型、应用型、复合型和通用型。我们先来看前两种,希望对大家的学习和职业生涯有所帮助。


软件开发生涯需要:“学习型”工程师


写软件程序其实很简单。电脑知识入了门,熟悉它运作的基本原理,自己设计些程序并不难。不断改善的人机界面,提供了前所未有的简单使用方法,更让写程序的年龄记录不断下降。入了门,只要条件允许,走上专职软件工程师这条路是相当自然的。这里说的条件是什么呢?兴趣是第一,再者就是进修提高。学校虽尽其可能传授学生最新的知识,但很可能学校所学的知识一毕业就过时了。工作后再学习就成了最重要的进修方式。能不能把握好这些机会,决定着程序员的技术层次和前程。

入门容易,要成为大师却很难。同样,要在软件业修炼成高手也要有相当时间来磨炼和积累。学习与不断提高伴随着软件工程师的职业生涯。

在技术钻研的历程上,刚开始你可能只是一个程序生产者。在这个阶段里,你只以编写程序的能力来提供服务。常常知其然,不知其所以然,但那不是问题。就像是个学徒,重要的是打好基础。千万不能染上一些恶习,例如求快而忽略细节,也不要以为简单和简陋一样。

通常经过一段时间,单纯的程序编写已不具挑战性。渐渐的,你开始对自己负责设计和编写的模块产生怀疑,并能适时地提供改善的建议。接着,你常因提出好点子而被赞许。就这样逐渐开始接触设计的领域。富有创意或是基本功好的人,会比较早进入此阶段,享受到意见被接受的快乐与成就感。

更进一步,你开始负责模块的设计。也许自己只编写较重要的部分程序,而将大部分程序编写工作交给上述的程序生产者。与前阶段比较来说,工作内容从程序编写渐渐变成设计。程序编写的工作量虽逐渐减少,但仍然是一个重要的部分。在和其他负责模块的同事不断沟通中,你将了解到整个产品的设计理念和重点。

接下来能不能更上一层楼,取决于你能否评判模块的设计是不是完整、有没有足够的前瞻性。很多软件工程师上不上、下不下地卡在这一层。不求真,断章取义,只看到问题的表面;不尽善,贪功求快,只解决今天的问题;不知美,照猫画虎,只满足于东施效颦。若非下足工夫,是很难再创新高的。

职业生涯要求软件工程师学会学习,更强调学习方法,而不强调学习内容。一个成功的软件工程师必须在实践中努力学习如何分析问题、如何解决问题。趋势科技产品研发部经理罗钟灵以这么一句话描绘软件工程师的特质:“像艺术家一样有创意、不修边幅又执著。”看着埋首在编码世界里的工程师们,还真有几分艺术家模样,好的工程师要能天马行空地遐想,不受所知限制,去发掘创意。他强调:“设计产品时,想的是它可以有哪些功能、应该怎么表现,不是想我现在有什么工具,所以我只能做到什么事情,这样才能充分发挥想像力。除了有创意外,还要能落实想像。‘做了’跟‘把它做好了’有很大的差距。用在软件产业上,差距更明显。写程序没有模糊地带,必须照顾好所有细节。一打马虎眼,就出问题,程序只要有一点小问题,就会造成产品瑕疵。在如今讲求产品品质的市场更是要不得的。”

在学校写程序和工作职场最大的不同是,在校是处理程序中20%“对”的部分,工作却有很大部分是在处理80%的各种“错误”,也就是意外情况。在校时,程序只要能用就好,死掉的话就重新开机,但这种作法到了职场却行不通。新人容易把问题过度单纯化,往往还未对问题透彻了解就贸然想解决问题,常会头痛医头、脚痛医脚,所以,放宽心胸,努力学习如何分析、解决问题显得更为迫切。


软件企业需要:“应用型”工程师


中国有那么多的软件企业和那么多从事软件开发的人员。对中国的多数企业来说,目前的从业人员缺少哪些技能?首先,目前的从业人员缺少国际化、规范化、标准化的软件产品理念;其次,缺少软件工程理念;第三,动手能力、解决实际问题能力较差,缺少团队精神与理解能力。

北京软件行业协会曾对800多家软件企业进行了一项调查发现,软件企业要求基础软件工程师具备六大基本素质,即良好的编码能力、自觉的规范意识和团队精神、认识和运用数据库的能力、较强的英语阅读和写作能力、具有软件工程的概念和求知欲和进取心。

良好的编码能力。软件人员的一个重要职责是把用户的需求功能用某种计算机语言予以实现。编码能力直接决定了项目开发的效率。这就要求软件工程师至少精通一门编程语言,比如当前国内企业常用的C/C++、VB和国际上最流行的Java语言,熟悉它的基本语法、技术特点和API(应用程序接口)。

自觉的规范意识和团队精神。随着软件项目规模越来越大,仅仅依靠个人力量已经无法完成工作,因此,现代软件企业越来越重视团队精神。一般来讲,软件企业中的程序员可以分为两种,一种是程序“游击队员”,他们可能对编程工具很熟,能力很强,把编码编得很简洁高效,但却缺乏规范和合作的观念;另一种程序员编程不一定很快,但是很规范,个人能力不一定很强,但合作意识很好。第二种人更加适合现代软件企业发展的潮流。对于基础软件工程师来说,他们在企业中的角色决定了他们必须具有良好的规范意识和团队精神。

认识和运用数据库的能力。信息是以数据为中心的,因此与数据库的交互在所有软件中都是必不可少的,了解数据库操作和编程是软件工程师需要具备的基本素质之一。目前常用的数据库软件有甲骨文公司的Oracle数据库和微软公司的SQL Server等。

较强的英语阅读和写作能力。程序世界的主导语言是英文,编写程序开发文档和开发工具帮助文件离不开英文,了解业界的最新动向、阅读技术文章离不开英文,与世界各地编程高手交流、发布帮助请求同样离不开英文。作为基础软件工程师,具有一定的英语基础对于自身的学习和工作极有帮助。

具有软件工程的概念。基础软件工程师处于软件企业人才金字塔的底层,是整个人才结构的基础,虽然他们从事的工作相对于系统分析师和高级程序员要单纯一些,但是他们是整个软件工程中重要的一环,因此,基础软件工程师同样要具有软件工程的概念。从项目需求分析开始到安装调试完毕,基础软件工程师都必须能清楚地理解和把握这些过程,并能胜任各种环节的具体工作,这样的能力正好符合了当前企业对基础软件工程师的全面要求。

求知欲和进取心。软件业是一个不断变化和不断创新的行业,面对层出不穷的新技术,软件人才的求知欲和进取心就显得尤为重要,它是在这个激烈竞争的行业中立足的基本条件。软件工程师应具有较强的学习总结能力、需求理解能力和对IT新技术比较敏感,同时,掌握最新的IT实用技术。 (未完待续)

(责任编辑:Sunny)



版权所有:UML软件工程组织