本帖最后由 cleandj270 于 2012-4-15 11:11 编辑
软件工程师的未来如何?会有哪些出路?在IT技术飞速发展、IT产业竞争加剧的今天,一个软件工程师怎样才能应对各种挑战?
一时间成为IT人求职的热点话题。一句话:怎样才能成为一名受欢迎的软件工程师?答案恐怕只有一个:学会学习。
软件工程师的职业生涯:学无止境
我们首先来看一下一个软件工程师的成长历程:
一个软件工程师最初都是从写程序开始的。写软件程序其实是很简单的,入了门,只要条件配合,走专职程序员的道路是相当自然的。这里说的条件是什么呢?兴趣是第一,再者就是进修提高。学校虽尽其可能传授学生最新的知识,但仍然不能追赶技术的脚步。不断自发地接触新知识就成了最重要的进修方式,能不能把握好这些机会,决定着程序员的技术层次和前程。
在技术钻研的历程上,刚开始你可能只是一个程序生产者。在这个阶段里,你只以编写程序的能力来提供服务。这个阶段重要的是打好基础,千万不要养成不良习惯:比如求快而忽略细节,千万不要以为简单和简陋是同一件事情。
渐渐地,单纯的程序编写已不具挑战性,你开始对自己负责程序编写的模块设计产生怀疑,并能适时地提供改善的建议。接着,你可能因为经常提出好点子而被嘉许。就这样逐渐开始接触设计的领域。富有创意或是基础扎实的人,会比较快地进入此阶段。
更进一步,你开始负责模块的设计。与前一阶段相比,你的工作内容已经从程序编写变为程序设计,这时你编写的程序的比重在逐渐减少,但通常都是比较重要的部分。在与同事的沟通中,你将了解到整个产品的设计理念和重点。能不能更上一层楼,是否具有足够的前瞻性,都取决于这个阶段。很多不错的工程师都在这一层上下徘徊,无法取得进一步的突破。若不能下足工夫,将很难再创新高。
过了这个阶段,你就可以独立完成一个产品的全部模块设计。此时重要的是产品系统的周全性,以及各模块之间的关联及互动。此时,你就将由程序员升格为软件工程师。
由此可见,修成一个成熟的软件工程师要有相当时间的磨练和积累,学习与不断提高伴随着软件工程师的职业生涯。在这个过程中," 学会学习 " 比 " 学习什么 " 更为重要,因为学习方法远比学习内容重要,一个成功的软件工程师必须在实践中积累分析问题、解决问题的能力。没有一劳永逸的职业,软件行业更是如此。趋势公司科技产品研发部的罗钟灵是如此描述软件工程师的工作的,我们不妨也看一下:" 写程序没有模糊地带,必须照顾好所有细节,一旦程序有一点小问题,就会造成产品瑕疵。在学校写程序和在工作实践中写程序的最大不同在于,在学校编写的程序只要能用就行了,但在工作中却有很大部分时间是在处理各种意外,使程序更为完美,这就要求你必须花很大的精力去学习和积累。新入行的程序员容易把问题简单化,往往还未对问题透彻了解就贸然解决问题。你应该努力学习分析、解决问题的能力,这是最为迫切的。
成就软件工程师的六个要素
北京软件行业协会近日对800多家软件企业进行的一项调查表明,软件企业要求基础软件工程师具备如下六大基本素质:
一,良好的编程能力。编程能力直接决定了项目开发的效率。这要求软件工程师至少精通一门编程语言,熟悉它的基本语法、技术特点和 API( 应用程序接口 ) 。
二,自觉的规范意识和团队精神。随着软件项目规模越来越大,仅仅依靠个人力量已经无法完成工作,因此,现代软件企业越来越重视团队精神。一般来讲,软件企业中的程序员可以分为两种,一种是 " 游击队员 " ,他们可能对编程工具很熟,能力很强,编写的程序简洁高效,却缺乏规范和合作的观念;另一种程序员个人能力不一定很强,但程序较为规范,合作意识良好。第二种人更适合现代软件企业发展的潮流。对于基础软件工程师来说,他们在企业中的角色决定了他们必须具有良好的规范意识和团队精神。
三,认识和运用数据库的能力。信息以数据为中心,因此与数据库的交互是必不可少的,了解数据库的操作和编程是软件工程师需要具备的基本素质之一。
四,较强的英语阅读和写作能力。程序世界的主导语言是英文,编写程序开发文档和开发工具帮助文件离不开英文,了解业界的最新动向、阅读技术文章离不开英文,与编程高手交流、发布帮助请求同样也离不开英文。作为基础软件工程师,具有一定的英语基础对于提升自身的学习和工作能力极有帮助。
五,具有软件工程的概念。基础软件工程师从事的工作相对于系统分析师和高级程序员要单纯一些,但是他们仍然是整个软件工程中重要的一环,他们同样需要具有软件工程的概念:从项目需求分析开始到安装调试完毕,基础软件工程师都必须能清楚地理解和把握这些过程,并能胜任各种环节的具体工作。
六,求知欲和进取心。软件业是一个不断变化和不断创新的行业,面对层出不穷的新技术,软件人才的求知欲和进取心就显得尤为重要,它是在这个激烈竞争的行业中立足的基本条件。软件工程师应具有较强的学习总结能力、需求理解能力以及对新技术的敏感性。
上述这些能力不可能凭空产生,与信息技术领域先进的基础理论教育相比,我国高校软件人才培养模式在实践技能的培养、IT 前沿技术的获取与沟通、具有国际水平和标准的软件项目开发等方面的培养存在极大不足。为解决这一问题,很多人都是通过培训和继续教育的过程逐步获得的。
目前,社会上的软件工程师培训很多,但良莠不齐。有些好的培训,能够从知识到技能、从技能到应用、从应用到项目,多层次多角度地对学员进行培训,不仅关注技术层面,同时关注项目规划的实施、团队合作、技术文档的编写等在认证培训过程中无法顾及、但在实际工作中又不可或缺的能力的培养,可以使学员在理论上掌握和理解面向对象的软件工程方法和组件化的软件设计思想。还有一些培训中心,针对软件设计人员,通过对经典设计模式的理论实践,使学员掌握、运用其思考和解决问题的方法,总结技术经验,构造自己的设计模式库,使软件设计人员能系统地掌握面向对象的方法。
仅有技术是远远不够的,产业变动快速,复合型的概念也适用于信息技术相关科系,软件工程师若能软 / 硬件兼修或略通电信,再通晓某一行业的相关知识,在职场上就会比单纯写程序的工程师吃香,工作选择机会也比较多。而要想成为复合型的软件工程师,至少要做到以下几点:
一、培养自己的市场意识。市场需求决定着软件产业的发展方向,软件工程师要就市场论技术,即便是 " 天衣无缝 " 的技术,如果没有市场需求也只能 " 孤芳自 赏 " 。绝大多数软件都是商品,任何商品的成就大小首先都取决于应用需求规模。比尔. 盖茨能够成为软件业第一人物的基本前提,乃是他抓住了 PC 时代软件业最大的应用需求。
二、培养全局角度的应变能力。**靠财务软件起家,但王文京最近却表示,两年之后不会再有专门的财务软件公司存在: " 财务是企业管理的核心,但企业的供销存、客户关系管理的需求必然会越来越大,所以,最好忘掉我们是一个财务软件公司,我们要的是企业管理软件市场。 " 同样,对软件工程师个人来说,自身的定位也不可能一劳永逸。善于审时度势、合纵连横,有良好应变能力是软件工程师必不可少的基本素质。在风声鹤唳之时,善于辨别哪里是最不可替代的用户需求关口,然后再结合自身技术特点进行转型,才能在软件行业有所成就。
三、培养某一行业的专业知识。IBM 有一份《中国银行业加入 WTO 的新**》**, IBM 做银行业咨询顾问的最终目的还是推销自己的整体解决方案,占领中国金融业软 / 硬件服务市场。但 IBM 的行动告诉我们,要想让技术和产品介入某一行业,仅有大批专业技术人员还不够,还需要一种对行业的认知和把握能力。软件教育要摒弃培养单纯的技术开发人员的旧观念,要着眼未来的需求,大力培养复合型软件工程师。
四、熟练掌握英语。英语是 IT 世界的主流语言,它对软件工程师技能和业务水平提高的重要性不言而喻,软件工程师总是需要在第一时间学习业界最流行、最先进的编程工具的使用方法,但软件工程师不可能马上就能找到这种软件的中文说明或帮助文档。北京软件行业协会推出的软件工程师培训项目中,重点强调了软件工程英语的重要性,增加了英语教学课时,结合科技英语和编程工作的特点,撰写有针对性的教材,突出实用性。通过对培训学员的调查和学习效果的检查,这种方法已经取得了良好的效果。
五、随着中国软件行业不断深入参与国际市场的竞争,软件从业人员也必须加速了解和掌握国际规范和准则,这对软件工程师的素质提出了更高的要求。在熟练掌握技术的基础上,还要强调对集成和整合能力的培养和训练,不断提升相关的周边知识和素养水平。一个与国际标准全面兼容的软件工程师,一定会受到用人单位的青睐和欢迎。
|