软件工程师行业

发布时间:2011-02-24 20:43:32

软件工程师综述/行业展望

——北大青鸟昌平校区提供

引言:软件工程师是一类新兴的职业。与传统的行业相比较,这个行业是随着计算机的发展而逐步发展的,并且,随着信息产业化的飞速发展,软件工程师这个行业不仅让人们越来越熟悉,并且,也吸引着大量人才的涌入,很多人都会通过参加软件工程师培训,或是通过大学专业的选择,加入到这个队伍当中。

当今信息瞬息万变,软件工程师的需求量也逐步加大,从当初单一的编程工作,发展到软件测试工作、宏观管理工作等。人们对于软件工程师这个行业的兴趣越来越大。

软件工程师到底从事什么,软件工程师待遇如何,软件工程师发展前景怎样,人们有许多疑问。本篇文章,通过对软件工程师详细的介绍,让大家真正了解这个行业,并最终指明软件工程师的发展前景,旨在为那些选择的人做一个明确的发展方向。

目录

软件工程师概述……………………………………………………………………2

软件工程师分类……………………………………………………………………2

软件工程师工作内容………………………………………………………………3

软件工程师待遇……………………………………………………………………4

软件工程师行业展望………………………………………………………………6

软件工程师要求……………………………………………………………………7

软件工程师认证培训………………………………………………………………8

软件工程师知识补充………………………………………………………………10

第一部分:软件工程师概述

定义:

软件工程师主要进行软件前期的项目需求的分析,然后对项目进行风险评估并试图解决这些风险,然后开始进行软件的开发,后期对软件的进度做相关的评估。

现状:

目前国内软件测试工程师的来源主要有三方面:一是以前专业做软件开发的人员后来转行做软件测试,二是从大学招聘的本科或者研究生,三就是通过培训机构招聘的专业学员。

其实,无论通过何种形式,目的在于招聘到优秀的人选,招聘到优秀的工作者,因此,通过参加培训,如北大青鸟培训等,也是不错的选择。

第二部分:软件工程师分类

按级别分类

上面的梯形图明确的表示出软件工程师的四个步骤,如同金字塔一般,越是对技术要求高,人也就越少,当然,待遇各方面都会越好,但是责任与工作任务会越大。其实,越往高,技术,能力,各方面要求全部会相应提高。

按从事类型分类

第三部分:软件工程师工作内容

基本工作内容

第一:指导程序员的工作;

第二:参与软件工程系统的设计、开发、测试等过程;

第三:协助工程管理人保证项目的质量;

第四:负责工程中主要功能的代码实现;

第五:解决工程中的关键问题和技术难题;

第六:协调各个程序员的工作,并能与其它软件工程师协作工作。

职业分析

软件工程师是从事软件开发相关工作的人员的统称。

软件工程师是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位虽然这些岗位的分工不同,职位或级别不同,但工作内容都是与软件开发生产相关的。软件工程师是IT行业需求量最大的职位,稳居IT行业职位需求TOP10的第一位(第二位是高级软件工程师)。

软件工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)、.NET平台技术C#C/S B/S程序开发,还有诸多如JAVA SCRIPTAJAXHIBERNATESPRINGJ2EEWEB SERVICESTRUTS等前沿技术。除此之外,关于网络工程和软件测试的其他技术也要有所涉猎,以利于操控全局。

软件工程师可谓是软件项目开发的掌舵者。一名优秀的软件工程师应当具有较强的逻辑思维能力,对于技术的发展有敏锐的嗅觉。虽然要求技术全面,但无须偏执于门门技术都精通,任何软件工程师都有自己的技术特长和偏向,对于自己手中的技术,可有精通-掌握-熟悉-了解之分,根据工作需要和职业发展的具体情况来划分。

第四部分:软件工程师待遇

软件工程师是一个新兴行业,因此关注他的人会越来越多,上面我们谈到软件工程师行业定位,软件工程师的两个分类,这一次,应该谈到网络工程师的待遇。

其实对于待遇而言,软件工程师是待遇比较高的,相较于同一间写字楼的同事,但是工作内容与工作压力也不可小看,比如说,一个项目会经常加班;而且会一个月甚至两个月为了一个项目在奋斗。

软件工程师待遇与以下以下因素有关:

第一:所从事工作的类别

如同本文提到的级别分类一般,不同级别的工程师,所从事的工作不同,承担的责任不同,当然,待遇也有所区别。

如果刚刚进公司,只是不是名初级软件工程师,那么与高级软件工程师的待遇是不同的,这一点完成可以理解,因为无论从技能方面、职场经验方面、所处的位置方面都有差别,待遇自然不同。

第二:所处公司不同

这一点很多人都能够理解,在IBMGOOGLE、微软这些公司中,软件工程师的待遇应该都会比一般规模软件工程师的待遇高一些。公司的实力,公司的规模,公司对此职业的重视程度,都与软件工程师的待遇相关。

第三:所在地区的差别

大家都知道,城市也有区别,比如大都市或者沿海地区,由于所处的位置不同,经济发展水平也有区别,因此,城市整体的消费水准也不同,这样,软件工程师的待遇也会不同。

有资料显示:一级城市(如深圳、上海等)初-高级软件工程师的待遇在40009000之间;内地其他省会城市一般在20006000之间,但工作量大,繁琐枯燥。

X轴表示软件工程师中的各个职位,由左到右的职位分别为——

程序员;实施工程师;支持工程师;架构师;系统分析师;售前工程师;项目经理;技术总监。

Y轴表示软件工程师各职位的平均待遇薪水,此表中仅表示基本薪水,相关的佣金、花红、奖金及相应补助不包含在其中。

总结:

如果希望得到更高的待遇,要提升自己的能力,并且不断的学习,具备一定的抗压力,这样,你才能有资格去从事软件工程师的工作,并且随着自己职业生涯的增长、职场经验的丰富,你就会得到相应的待遇。

第五部分:软件工程师行业展望

软件工程师行业性质:

行业虽然分为很多种,但是大体可以分为两类:朝阳行业与夕阳行业。顾名思义,我们来看看两类行业的概念。

朝阳行业:刚刚兴起,正在发展阶段,而且有相当大的发展空间的行业,比如电子信息行业,通信行业,软件,生物工程,电子等等。

相对于朝阳行业的,是夕阳行业。

夕阳行业,比如钢铁,机械,自动化,采矿,纺织,汽车等,它们行业内竞争非常激烈,已经发展得很完善而且技术水平已相当高,发展上升的空间很小, 正在走下坡路

由上面的解释可以得出,软件工程师这个行业,是属于朝阳行业的,因为这个行业是随着电子信息产业的发展而逐步发展,并且日臻完善。

软件工程师行业发展

网游、网购、网恋……网络视频、社交网站、及时聊天工具……通过网络,通过计算机,人们从事事情越来越多,相较而言,对各类功能要求越来越高,软件工程师的分类也就越来越细,要求也越来越多。当然,上面讲的是从技术方面的要求。

大家也许都听说过一个职位CTOChief Technology Offer 首席技术官),是企业内负责技术的最高负责人。另一个是CIO(Chief Information Officer)首席信息官是一种新型的信息管理者。他(她)们不同于一般的信息技术部门或信息中心的负责人,而是已经进入公司最高决策层,相当于副总裁或副经理地位的重要官员。

这两个职位都具备含金量,都进入到公司的管理层,无论是薪水也好,自我价值也好,都得到公司乃至公众的认可。这两个职位有几个共同点:一是都作为公司的高层出现;二是都与技术相关。

软件工程师的工作不同于程序员但是一个软件工程师其前身必定是一个优秀的程序员,软件的开发工具、开发技术在不断地发展。技能不断发展的同时,自身的素质也不断提升,同时,应变能力、处理问题的能力、自我激励与提升能力、管理能力,这样,一名程序员,或者软件工程师,最终将进入到公司的高层,成为人人瞩目的CTOCIO

这是从软件工程师这个职业自身分析,下面看看整体行业的发展。

前面分析过,电子信息产业是朝阳行业,而软件工程师是这个行业中不可缺少的一部分人,因此,软件工程师整体行业的发展非常不错,因为这是社会进步的需求。

第六部分:软件工程师要求

第一:外包开发行业快速发展,对人才在代码和文档方面的规范性、技能和工具的熟练程度要求越来越高;

第二:Java.NET技术在市场上平分秋色,都有大量的岗位需求,同时值得庆幸的是二者在应用层面上的技术差异越来越少;

第三:软件开发企业对开发人员的基本技术素养强调得越来越多,例如:面向对象的程序设计思想和代码组织方法、HTML/CSS/JavaScript客户端技术;

第四:为了保证质量和工期,企业中大量使用各种框架技术,要求开发人员至少熟悉一种框架技术;

第五:MISOAERPCRM、系统集成、物流、进销存、电子政务、网站建设这一类B/S系统,成为软件工程师需求最大的业务领域。

第七部分:软件工程师认证培训

软件工程师认证

软件工程师培训方面

微软专家认证、Cisco专家认证、3COM资格认证、ADOBE资格认证、Oracle认证、北大青鸟ACCP软件工程师培训、北大青鸟BTEST软件测试工程师培训

以下是对于年轻人选择软件工程师培训机构的参考意见:

第一:教材能够定期更新升级

对于培训机构,教材是非常重要的,如果培训机构使用的教材是十几年前或更早的教材,这样的培训机构能否相信呢?IT技术是瞬息万变的,而且人们对各项网络功能要求的提高,也是对软件工程师技能的要求提高,因此,考察教材非常重要。

北大青鸟教材采取十八至二十四个月的升级更新,保障学员学习到最新的知识。

北大青鸟ACCP软件工程师培训课程是北大青鸟IT教育推出的软件工程师职业教育课程,由中美印软件技术专家联合研发完成。作为一款面向大众的求职系列教育产品,ACCP全面提升学员就业竞争力,课程开发采用了逆向设计理念,推陈出新,引领未来IT技术发展潮流,继续保持了北大青鸟IT教育ACCP课程体系的国际同步水平以及在国内IT职业教育领域的领导地位。

第二:教材开发有保障

只关注教材的更新度不关注教材开发同样不可取,因为开发的人群非常重要,如果课程的开发团队不具备权威性,那么就算再怎么更新,又有何用呢?

北大青鸟APTECH拥有一支具有国际水平的培训课程研发团队。该团队由我国计算机教育专家谭浩强教授担任首席学术顾问,来自北京大学、清华大学、IBM公司、微软公司、Oracle公司等领域的知名学者和专家担任技术指导,已经成功开发出多款IT培训课程体系,其中包括软件工程师培训课程体系。

第三:教师资格有保证

课程好,但是老师不好,同样得不到保障,北大青鸟所有老师都具备教师资格证,因为所有老师在上岗前,都必须经过北大青鸟总部的标准化培训。

第四:硬件与软件设施有保障

“纸上得来终觉浅,决知此事要躬行”,这是陆游老先生千年之前的诗句,但是如今,放在软件工程师行业中,仍然适用,因为软件工程师就是要多实践,才能够掌握,应用。如果培训机构不好,不能够提供优良的硬件与软件设施,那么这家培训机构就要小心。

第八部分:软件工程师知识补充

一、明星软件工程师十种特质:

1热爱编程

编程是一种为了满足兴趣而心甘情愿去做的劳动(Programming is a labor of love)。和其他任何职业一样,唯有真正的热情,才能完成真正的伟大事情。这里有个误解,认为编写代码是机械化并纯科学性的。事实上,最优秀的软件工程师是工匠,他们能把能量、独创性和创造力融入到每一行代码中。

明星软件工程师知道何时该把代码雕琢至完美,知道何时把大型系统像拼图一样组装到一块。热爱编程的工程师从构建软件中获得满足,就好比一位作曲家在完成一部交响乐后而欣喜若狂。正是兴奋感和成就感,才造就了喜爱编程的明星工程师。
2完成事情
有很多技术人员只谈论软件而不编写代码(只说不做型)。而优秀软件工程师会真正去编码,这也是他们最为重要的品质之一。他们是实际做事的人。聪明人都知道,解决问题的最佳途径是直面问题,而不是花上数周来设计复杂又不必要的架构和函数库。

优秀工程师应当会问:解决手头问题的最简单方法是什么?最近的软 件开发方法——敏捷实践,正是专注那个。它的思想是,把复杂的项目拆分为短小的迭代,每个迭代只关注一小部分的增量功能。因为每个迭代对应的编码只需要数周,所以功能易于管理并简单。
3持续重构代码
编码很像雕刻。要像艺术家一样不断完善自己的作品,软件工程师也要通过可能的最佳方式来持续完善自己的代码,以达到目标。重新塑造代码的原则称为重构Martin Fowler在他的创意书中有相应描述。

重构背后的原始思想是:改善代码而不改变其功能,移动调整部分代码以确保系统不腐,还有确保系统完成基于当前需求 该完成的事。持续重构可以让开发人员解决另一个著名的问题——黑盒遗留代码(这个问题基本无人想触及)。
几十年的软件开发文化要求我们,不应该去改变正常工作的东西。然而,随着时间推移,问题是我们成为了老旧代码的奴隶,老旧代码变得不稳定和不兼容。而重构正好可以改变这一状况,因为我们是代码的主人,不是它的奴隶。重构在工程师和代码之间建立起持续的对话,并带来所有权、确定性、自信心和系统的稳定性。
不要成为老旧代码的奴隶。如果代码是他人所写,或许你可以轻易推脱责任。但大多数时候,那些代码是自己所写,要拿得起放得下,旧代码该埋时,就把它埋了!

4使用设计模式

自从这些大人物Erich GammaRichard HelmRalph JohnsonJohn Vlissides)发表他们的著作——《设计模式》后,全世界的软件工程师一直都在讨论模式。

在我们所处世界,不管是自然界还是人类行为,模式无处不在。软件工程自然也不例外。模式就是不断重现的跨语言跨系统的场景和机制。一位优秀的工程师通常能识别并利用模式,而不是受制于模式。工程师不应(强制) 让系统去适应某种模式,而需发现在系统中使用模式的时机(恰当使用模式)。在使用模式来确保正确性时,应借鉴利用前人的智慧结晶,使用以前能正当解决特定工程问题的方法。

但请切记:模式不是万灵药;不要为了使用设计模式而使用设计模式。
5编写测试
曾有段时间,软件工程师们认为测试不值得他们去做。然而,如果你不做测试,你怎么能确保代码就能正常工作呢?敏捷实践中的单元测试已获得普遍认可,因为它注重编写测试来反映代码是否有效。

随着系统增大,测试也随之增大。有经验的工程师知道并了解测试的价值所在,因为测试的目的就是创建一个能正常运作的系统。优秀的工程师通常会确保出现过一次的Bug不会再出现第二次。但优秀的工程师也知道,不应该浪费时间写那些琐碎或多余的测试,而需要专注测试 各个组件中的核心部分。
6善用现有代码
重新发明轮子一直是软件行业中的巨大问题之一。从发明新语言到从写函数库,忽视并重写那些已经存在并已能工作的奇怪驱动力,已经造成大量软件开发的失败案例。

一位明星工程师会专注三种基本类型的重用:第一,内部基础架构的重用,相应代码是他自己或同事编写的;第二,使用第三方的函数库,比如 JDK。最后,研究使用某些大型网络服务商提供的相应服务,比如Amazon。总之,正确善用现有的代码,使得软件工程师能真正专注于最为重要的事情上 ——应用程序本身。
7专注可用性

优秀的工程师通常都专注于用户。无论用户是企业还是个人,无论是为消费型的软件公司还是投资银行,需要关注的都是可用性。用户如何和系统交互?系统是否提供一种简单、直接和平稳的操作体验?有种说法,因为软件工程师是技术人员,他/她和用户如何与系统交互没有关联,这种说法严重错误。

优秀工程师努力工作是为了什么?不正是让系统简单并易于使用。他们无时无刻都会想到用户,不会尝试去发明那些令人费解,只有极客才能理解并欣赏的东西。
有些时候,一些软件工程师过于投入,反而忘记所编写的程序/软件,是供他人使用,不是做给自己看的艺术品。所以,在软件开发过程中,一直要把用户放在心中。
8编写可维护的代码
软件开发界的另外一个小秘密是:编写优秀代码和糟糕代码所花费的时间是一样多。

一位训练有素的工程师,他/她会从第一行代码开始就考虑可维护性和代码的演化。没有任何理由编写丑陋的代码、长达数页的函数,或是稀奇古怪的变量名。

优秀的工程师编写代码会遵循命名惯例,代码编写紧凑、简单和不过度炫耀聪明。代码的每一行,都应恰如其分地展现出其原有目的。在给不便理解的代码(块)合理注释时,别忘了命名规则。清晰明了的函数名和变量名可以让代码不言而明。
在编码时,有些程序员会有这种心态:过一会儿再来修改或完善某部分代码或某条语句。但谁知这一过一会竟然是一天一周一个月一年,甚至以后根本就没机会再回头修改。所以,尽量别妥协写出暂时堪用的代码。否则,不仅不会节省开发时间,也可以阻碍整个进程。当然也不利于后续维护人员的工作。
9能用任何语言编程
优秀的软件工程师或许有自己一门特别钟爱的编程语言,但从不会执迷于当中。如今已有很多优秀的编程语言,也就是说,如果你只会使用其中一门语言,说明你缺乏多样性。你可以用JavaC#C++编写任何现代软件,可以用PHPPerlRuby编写任何网站的后台。简而言之,编程所用语言,远远没有语言相应的函数库重要。优秀的工程师能够认知到这一点,并愿意去学习新语言、新函数库和构建系统的新方法。
10知晓基本的计算机科学知识
最后,但肯定不是优秀工程师最不重要的特质就是:扎实的基础。优秀的工程师或许并没有计算机科学的学位,但他/她必须知道基础——数据结构和算法。

如果不知道哈希表,或者不知道链表和数组之间的差别,你如何构建一款大型的软件?这些都是每位从事软件开发的开发人员应当知道的。算法也同样重要,从二分查找到各种排序,到图形遍历,一位明星工程师必须知道并内在消化这些基础东西。因为这些基础就是你在构建任何现代软件中做抉择时的必备品。

二、软件工程师面试常见问题

1、请你自我介绍一下你自己

一般应试者回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有,其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。

尤其是软件工程师,工作枯燥,会掌握公司核心的技术,因此对人品要求会高。

2你觉得你个性上最大的优点是什么?

沉着冷静、条理清楚、立场坚定、顽强向上。软件工程师要求是细心,认真,因此,这方面的回答也比较重要。当然,乐于助人和关心他人、适应能力和幽默感、乐观和友爱。大家都欢迎你。

3说说你最大的缺点?

作为公司技术人员,回答问题的时候要注意一点。

这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。

企业喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,突出优点的部分。企业喜欢聪明的求职者。

4你对加班的看法?
软件工程师加班非常平常。

好多公司问这个问题,并不证明一定要加班。 只是想测试你是否愿意为公司奉献。
可以体现自己能够加班,同时也要明确表示自己会提高工作效率,减少不必要的加班

5你对薪资的要求?
对薪酬的要求太低,显然贬低自己的能力;对薪酬的要求太高,那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求聘的职位定下开支预算,因而他们第一次提出的价钱往往是他们所能给予的最高价钱。他们问你只不过想证实一下这笔钱是否足以引起你对该工作的兴趣。
参考:我受过系统的软件编程的训练,不需要进行大量的培训。而且我本人也对编程特别感兴趣。因此,我希望公司能根据我的情况和市场标准的水平,给我合理的薪水。

参考:如果你必须自己说出具体数目,请不要说一个宽泛的范围,那样你将只能得到最低限度的数字。最好给出一个具体的数字,这样表明你已经对当今的人才市场作了调查,知道像自己这样学历的雇员有什么样的价值

6在五年的时间内,你的职业规划?
这是每一个应聘者都不希望被问到的问题,但是几乎每个人都会被问到。

近几年来,许多公司都已经建立了专门的技术途径。这些工作地位往往被称作顾问参议技师高级软件工程师等等。

当然,说出其他一些你感兴趣的职位也是可以的,比如产品销售部经理,生产部经理等一些与你的专业有相关背景的工作。

考官总是喜欢有进取心的应聘者,此时如果说不知道,或许就会使你丧失一个好机会。

7你还有什么问题要问吗?

企业的这个问题看上去可有可无,其实很关键,企业不喜欢说没有问题的人,因为其很注重员工的个性和创新能力。

企业不喜欢求职者问个人福利之类的问题,如果有人这样问:贵公司对新入公司的员工有没有什么培训项目,我可以参加吗?或者说贵公司的晋升机制是什么样的?企业将很欢迎,因为体现出你对学习的热情和对公司的忠诚度以及你的上进心。

8如果你的工作出现失误,给本公司造成经济损失,你认为该怎么办?

软件编程错误的确会造成公司的损失。因此此问题一般是软件工程师面试的必问问题。

参考:本意是为公司努力工作,如果造成经济损失,我认为首要的问题是想方设法去弥补或挽回经济损失。如果我无能力负责,希望单位帮助解决;

参考:是责任问题。分清责任,各负其责,如果是我的责任,我甘愿受罚;如果是一个我负责的团队中别人的失误,也不能幸灾乐祸,作为一个团队,需要互相提携共同完成工作,安慰同事并且帮助同事查找原因总结经验。

参考:总结经验教训,一个人的一生不可能不犯错误,重要的是能从自己的或者是别人的错误中吸取经验教训,并在今后的工作中避免发生同类的错误。检讨自己的工作方法、分析问题的深度和力度是否不够,以致出现了本可以避免的错误。
9你最近是否参加了培训课程?谈谈培训课程的内容。是公司资助还是自费参加?

IT这个行业,无论是软件工程师或是网络工程师,自我提升与充电都必不可少,因此,企业会问到这样的问题,以观察求职者是否有进取心。

如今有很多机构都有软件工程师培训,比如北大青鸟ACCP件工程师与北大青鸟BTEST软件测试工程师培训,都非常不错。

10、对工作的期望与目标何在?

这是面试者用来评断求职者是否对自己有一定程度的期望、对这份工作是否了解的问题。对于工作有确实学习目标的人通常学习较快,对于新工作自然较容易进入状况,这时建议你,最好针对工作的性质找出一个确实的答案

尾篇:

通过以上对软件工程师行业、软件工程师待遇、软件工程师培训、软件工程师认证、软件工程师发展前景等进行的综合描述,相信会为读者提供一份完整的资料,会让大家从中有所收获,也会为大家的选择指明方向。

软件工程师行业

相关推荐