如何成为一名软件工程师
软件工程是对整个计算机技术至关重要的一个领域。如果没有软件来运行计算机硬件,那硬件就只是一堆塑料、硅和金属——或许可以作为一个定价过高的镇纸。
严格意义上说,软件工程是将工程原理应用于软件的设计、开发和实现。因为软件工程是一个独特的,科学和技术驱动的领域,特殊的培训和正式的学位是必需的。通过获得软件工程学位,毕业生可以在任何领域工作,如制作视频游戏、开发互联网应用程序、运行计算机网络或为组织实施计算机安全措施。了解更多关于软件工程学位和职业的信息,并了解这个专业领域的薪水和就业计划。
软件工程师做什么?
结合商业意识和编程知识,软件工程师为商业问题设计软件应用解决方案。软件工程师在不同的平台上工作,比如互联网、移动设备和桌面计算机。
软件工程师的工资
市场对合格软件工程师的需求引发了对顶尖人才的军备竞赛。来自ComputerWorld、美国劳工统计局(Bureau of Labor Statistics)和罗致半富国际(Robert Half International)的薪酬研究都揭示了同样的问题:公司愿意支付更高的薪酬来获取顶尖人才,有些公司的年薪甚至达到了六位数。《计算机世界》2015年IT行业薪资调查报告显示,软件工程师的平均薪资接近10.9万美元,而罗致恒富的薪资则在9.6万美元至14.7万美元之间。金融环境对考虑在该领域工作的个人来说是有利的——罗致恒富预计2016年工资将上涨6.6%。
软件工程领域的顶尖职业 | 工资中位数 |
---|---|
软件工程师、应用 | 95510美元 |
软件工程师、软件 | 102880美元 |
资料来源:劳工统计局,职业和工资估计,2014年
成为软件工程师的步骤
软件工程是一个不断变化的职业,随着新技术的开发而不断适应。由于其不断变化的性质,进入该行业有多个切入点。虽然成为软件工程师的道路并不单一,但下面的步骤概括了就业的一般路径。
副学士学位(两年):虽然雇主通常更喜欢有四年学位的候选人,副学士学位可以为该领域的初级工作打开大门。学生可以选择几个相关领域的专业,如软件工程技术或软件系统工程。课程集中在软件工程的核心原则,编程语言,以及软件开发的现代方法。
学士学位(四年):计算机科学或相关领域的学士学位是雇主首选的传统最低学位。学士学位课程让学生接触到更广泛的课程,其中包括数学和计算机科学基础。学生对编程、软件架构和软件测试有全面的理解。他们也可以学习应用领域的专业课程,如网络或嵌入式系统。
编程训练营(8到12周):编程训练营对于有抱负的软件工程师或开发人员来说是一个相对较新的教育途径。这些项目通常持续8到12周,将学生置于一个亲身实践的、沉浸式的学习环境中。在毕业时,学生应该准备好从事初级职业,如软件工程师或开发人员。
- Web开发
- DevOps
- 移动开发
- 技术栈(例如,Python, Ruby)
软件工程学位和专业
与软件工程学位匹配的目标
职业目标和教育需求 | 联系 | 学士 | 硕士 | 博士学位 | 在线 |
---|---|---|---|---|---|
我已经在计算机技术领域工作了,但我想在我的事业上有所发展。也许我可以通过管理大型软件开发项目来承担更多的责任,或者最终进入管理岗位。 |
|
||||
我没有计算机技术或计算机科学的教育背景,但我很确定我想成为一名软件工程师,并尽快在这一领域工作。 |
|
||||
我想我想学软件工程,但我不是百分之百确定。我不想把四年的时间和大量的钱浪费在一个学士学位上,而这个学位我可能最终不会喜欢。如果有一种方法可以让我不用上四年学就能接触到基本的软件工程课程,我会很高兴的。 |
|
||||
我有丰富的软件工程背景,曾在私营部门工作多年。我的经历给了我很多想要探索和研究的想法。另外,我可能想尝试一下教学。 |
|
||||
我想找一份软件工程师的工作,但是我负担不起去上学的费用,我也没有时间去参加白天的校园课程。此外,我喜欢按自己的节奏学习,这样我就可以加快我理解的内容,而不会花时间学习更有挑战性的材料。 |
|
软件工程
对于那些对软件工程学位感兴趣的人来说,研究生和本科水平都有很多选择。根据之前的工作、教育背景以及职业志向,一个学位可能比另一个更有意义。让我们来看看现有的软件工程学位。
软件工程副学士
软件工程的副学士学位大约需要两年完成。对于那些想要获得学位而不需要花时间和金钱获得四年制学位的学生来说,副学士学位是一种有用的方法。作为额外的奖励,一些副学士学位可以作为以后获得学士学位的敲门砖。
软件工程副学位课程的典型课程包括:
数据库管理系统
本课程涵盖了数据库管理系统是如何工作的,以及如何设计、创建和实现一个组织内的系统,以满足他们的特定需求。
技能的获得
-
熟悉常用的数据库管理系统 -
学习关系数据库、层次数据库和面向对象数据库的原理 -
了解数据管理的当前趋势,如数据挖掘和业务分析
Web应用程序开发
本课程将回顾web应用程序的架构设计,以及帮助构建web应用程序的编程语言和技术。
技能的获得
-
设计一个web应用程序 -
实现和测试客户端和服务器解决方案 -
学习用户界面原则
操作系统
基本概念,以及操作系统设计和操作的基本原则,在这门课中被检查。
技能的获得
-
常用的操作系统编程语言 -
计算机架构设计注意事项 -
文件管理技术
网络
教授学生网络的基本原理,以及软件在其功能和应用中所扮演的角色。
技能的获得
-
网络安全协议 -
类型的网络 -
网络设计注意事项
软件工程学士学位
对于刚从高中毕业(或从另一个职业转移)的学生,谁想最大限度地发挥他们在软件工程的专业潜力,并给自己找到理想的研究生就业的最佳机会,软件工程学士学位是值得追求的。事实上,大多数入门级的软件工程职位都需要本科学历。一些更高级的职位可能需要软件工程硕士学位。在这种情况下,学士学位可能是入学的先决条件。
在大多数软件工程学士学位课程中可以找到的四种典型课程如下:
面向对象的软件开发
学生将学习一门高级编程语言,以解决常见的计算机问题和任务。
技能的获得
-
计算机编程的表情 -
理解字段和方法如何工作 -
编程逻辑
计算机安全
学生将接受计算机安全概览。此外,还将讨论伦理、法律和实践方面的考虑。
技能的获得
-
灾难和数据丢失恢复 -
用户访问方法 -
密码学原理
项目管理
本课程应涵盖按进度和预算设计和开发软件项目的技术和方法。
技能的获得
-
了解项目生命周期 -
项目计划 -
风险管理
用户界面
通过应用人类交流方法的概念,学生应该学习如何创建用户友好的软件,可以与人交流。
技能的获得
-
用户界面设计注意事项 -
根据人类用户的具体需求定制软件 -
可用性测试
软件工程硕士学位
根据课程的不同,软件工程硕士学位大约需要两年的时间才能完成。许多课程都是为全职工作的学生设计的。硕士学位不仅提供了软件工程领域的额外知识,而且提供了管理和领导能力的教育,这样毕业生就可以承担更复杂的项目,能够成功地协调这些项目,并与团队合作。
进入软件工程硕士学位项目的学生可以期望覆盖以下课程:
数学建模
数学建模向学生介绍数学模型,数学模型在理解和预测自然现象和人性方面有应用。
技能的获得
-
将模型应用于现实世界的问题 -
对给定情况的特定数学模型的识别 -
量化变量和预期结果
软件设计
软件设计学生应该期望研究不同的编程语言,并学习如何将它们的特点应用到软件开发中。
技能的获得
-
强化面向对象编程原则 -
批判性地分析现有的计算机代码 -
有效和高效地设计程序的技术
软件测试
软件实际测试的工具和技术,以及分析理论测试模型,是本课程的重点。
技能的获得
-
如何解决 -
调试的方法 -
分析和解释测试结果
软件系统架构
涵盖软件架构范例的基本原理及其在软件开发过程中的应用。
技能的获得
-
确定软件架构技术 -
软件设计分析 -
用于软件架构设计的工具
软件工程博士
虽然软件工程的博士学位确实存在,但它们远没有学士或硕士学位那么普遍。通常需要至少四年才能完成,软件工程博士学位通常以研究为导向,最后以论文结束。此外,学生们还将重点学习软件工程的特定领域,如机器人、分布式系统、软件安全性和定量研究方法。对于那些希望从事研究或学术工作的人,如在学院或大学教书的人来说,博士学位通常是必要的。
通过攻读软件工程博士学位,学生们可以量身定制适合自己的课程。因此,在同一个项目的学生中,很少有类似的课程表。然而,以下课程可能对博士课程列表很有帮助:
软件建模与设计
开发大型软件系统的原则。
技能的获得
-
识别在设计软件时使用的设计概念 -
熟悉统一建模语言 -
利用先进的面向对象软件架构 -
理解各种设计符号
软件工程经济学
学生将学习如何在设计和管理软件时将盈利能力和经济因素考虑在内
技能的获得
-
软件生命周期的定量建模 -
软件设计过程中的成本效益分析 -
常用的软件评估指标
互联网软件工程
本课程教授如何创建有用和有效的基于网络的软件和应用程序的原则
技能的获得
-
使一个有用的交互式web应用程序的因素 -
客户机-服务器编程方法 -
了解中间件
软件工程实验
本课程涵盖了科学过程如何应用于软件工程
技能的获得
-
运用科学的方法进行实证研究 -
软件工程实验技术的应用 -
以有效和令人信服的方式提出研究结果
一个成功的软件工程职业的组成部分:技能,工具和技术
技能
软件工程师需要有广泛的知识基础和多种技能,包括非技术和技术领域。
非技术技能
因为软件工程师与非工程师打交道,比如与供应商、客户和其他团队成员打交道,所以雇主看重拥有非技术技能的个人。一个好的软件工程师应该是:
-
合作者
-
能够利用他人的意见来设计解决方案。 -
团队合作精神
-
在团队环境中有效工作。 -
创造性的思想家
-
能够开发新的开发方法。 -
问题解决者
-
了解复杂的问题,知道如何使用技术来解决问题。 -
沟通者
-
可以对不同的听众使用技术和非技术术语。
特定于行业的技能。
软件工程需要全面的技术技能集和知识库,从理解业务需求到测试产品。下面是来自新兴技术国家劳动力中心的核心软件工程能力列表。
技能 | 描述 |
---|---|
软件需求 | 确定软件用户需求或软件目标的能力 |
软件设计 | 规划和开发软件解决方案规范的过程 |
软件建设 | 软件的开发通过面向对象的编程(编码)、测试和调试 |
软件测试 | 在产品发布之前对软件系统或组件的评审 |
软件维护 | 修改软件产品以改进或解决问题的过程 |
软件配置管理 | 软件变更的跟踪和管理 |
软件工程管理 | 软件开发过程的管理,从设计到产品交付 |
软件工程过程 | 应用于软件开发的方法(例如,敏捷方法、瀑布式编程) |
软件质量 | 能够创建和维护满足其功能需求的软件 |
软件工程经济学 | 了解软件成本,产品估计和当前的市场趋势 |
根据罗致恒富科技公司的说法,拥有下列编程、数据库和Web领域宝贵技术技能的计算机软件工程师可能会看到相应的收入增长潜力。
技能领域 | %增加工资 |
---|---|
Java | 9% |
c# | 8% |
Java EE / J2EE | 8% |
net | 8% |
PHP | 8% |
Web服务 | 8% |
Hadoop | 7% |
ASP | 5% |
c++ | 5% |
DCOM / COM/Active X | 5% |
软件工程专业证书确立了个人在该领域的资格。证书证明了对专业特定领域的概念理解和技术专长。软件工程师可以根据自己的职业需求和职业目标,从各种各样的认证项目中进行选择。下面是一些可能的认证。
- c++认证。
c++学院为C和c++编程语言设计了多个认证程序。在难度上,每一种编程语言都有辅助、专业和高级考试。副证书本质上是基础性的,展示候选人的C/ c++编程基础知识。专业证书是高级的,衡量候选人对复杂的C/ c++编程技术的理解。高级是专家级认证,测试考生对高度复杂的C/ c++编码问题的知识。证书包括:
- C程序设计语言认证协会
- C Certified Professional Programmer (CLP)
- 认证高级程序员(CLS)
- c++注册副程序员(CPA)
- c++认证专业程序员(CPP)
- c++高级程序员认证(CPS)
- IEEE专业软件开发人员认证(PSD)
由IEEE计算机协会主办的专业软件开发人员认证(PSD)测试候选人在软件工程需求、设计、构建和测试方面的知识。
- IEEE软件工程专业流程硕士认证(PSEPM)
PSEPM衡量候选人在软件工程方面的关键知识。考试分为两部分,第一部分包括软件需求、软件构建与测试、软件设计、维护和配置管理。第二次审查审查软件工程管理、软件工程过程、软件模型和方法、质量和工程经济学以及软件项目管理。
- IEEE软件工程硕士认证(PSEM)
作为一种高级认证,PSEM通过应用考试测试候选人的软件工程原理知识以及技术技能。申请考试将测试者置于专业开发人员的位置,并要求完成两项性能任务,并对其进行审查和评级。
- 微软认证解决方案开发人员(MCSD)
MCSD认证是为使用微软语言和企业开发工具的专业人员设计的。MCSD涵盖了多个认证领域,包括Windows Store应用程序、Web应用程序、SharePoint应用程序、Azure解决方案架构师、应用程序生命周期管理和通用Windows平台。
工具和技术
软件工程师拥有一套多学科、多功能的技能,它超越了编程语言,涵盖了从项目管理到计算机科学的一切。反过来,他们依靠各种工具和技术来发挥他们的技术才能,例如:
集成开发环境。
环境是指在软件开发中使用的编程工具和应用程序。- Microsoft Visual Studio .NET
- 甲骨文Netbeans
- Eclipse
- DreamWeaver
面向对象的编程语言。
软件工程师在程序设计和软件应用程序开发中使用面向对象的编程语言。语言通常包括:- Python
- c++
- Ruby
- PHP
- Java
操作系统软件
操作系统软件管理着计算系统的软件和硬件资源,是应用程序运行所必需的。例子包括:- 窗户
- iOS
- 安卓
- Linux
程序测试软件。
程序测试软件用于发现错误和验证应用程序是否按设计运行。例子包括:- LoadRunner
- Testcloud
- Jira
- Critiware
Web开发软件
Web开发软件用于网站和应用程序的生产。一些常用的开发软件包括:- Apache Tomcat
- WebMatrix
- Xamarin的
- Coda
软件工程的职业发展趋势
对软件工程师的需求是由信息经济的出现和对基于消费者和基于企业的市场的技术解决方案的需求驱动的。例如,罗致恒富科技(Robert Half Technology)报告称,医疗保健机构正在寻找新的软件解决方案,以改善患者护理,而金融服务机构正在寻找方法,为客户提供更有效的技术驱动的服务。与这些传统行业相结合,新兴市场——如大数据、移动计算和安全——正在为软件工程师创造新的机会。最后,因为软件工程师的复杂技能适用于任何行业,所以它几乎是每个商业部门的必备职位。
相关的职业
根据美国劳工统计局(Bureau of Labor Statistics)的数据,以下是2012年至2022年间预计将出现两位数就业增长的相关职业机会。
业务信息分析师
业务信息分析师结合业务知识和计算专业知识,帮助公司将业务需求转化为技术解决方案。在他们的角色中,业务信息分析师利用分析技能集来研究、计划和管理如何使用信息系统和软件来解决业务问题。
就业增长: 19%Web开发人员
Web开发人员对Internet约定和Web应用程序有很强的掌握。使用Web技术和编程语言,如JavaScript, HTML或AJAX, Web开发人员为网站编写代码,集成后端系统(如数据库与网站)和开发新的网站功能和应用程序。
就业增长: 20%帮助台支持专家
帮助台支持专家对软件、硬件和网络系统有全面的了解。他们为公司及其员工提供各种技术支持,从解决硬件问题到管理软件程序安装到排除网络故障。
就业增长: 20%计算机系统分析员
计算机系统分析师利用对硬件和软件系统的深入了解来确定一个组织如何最好地利用这些资源来有效地运作。他们协助公司确定技术基础设施需求,研究设计和安装计算包,并为信息系统编制成本效益分析。
就业增长: 25%信息安全分析师
信息安全分析师处于计算机和网络安全的最前沿,例如加密技术和防火墙保护。他们执行安全审计,进行风险评估,并提出建议,以提高公司数据系统的安全性。通过识别弱点,信息安全分析师制定适当的安全策略以保证数据的安全。
就业增长: 37%数据库管理员
数据库管理员具有数据库结构、安装和维护方面的技术基础。他们具有特定的关系数据库语言知识(如Oracle、Microsoft SQL Server),可以管理公司数据库,维护数据库的稳定性,执行数据库备份,并根据公司的数据需求修改数据库的结构。
就业增长: 15%聚光灯下的职业
由于移动网络、电话和商业的爆炸性增长,目前最热门、最受欢迎的软件工程技能是移动应用程序开发。根据阿拉巴马大学伯明翰分校的数据,到2017年,全球移动应用程序市场的价值将达到770亿美元,移动行业咨询公司Digi-Capital表示,到2018年,移动网络市场的价值将达到8500亿美元。因此,移动应用程序开发人员拥有公司需要的技能。根据罗致恒富科技的调查,下面列出了软件工程领域的三个重点职业及其相应的薪水数字。
移动应用程序开发人员
工资中位数:134500美元
移动应用开发者使用JavaScript, . net和Objective-C等语言和平台来为移动设备(如iPhone, iPad, Samsung Galaxy)构建应用程序和网站。与iOS和Android等移动操作系统合作,开发人员设计、编码、测试、调试和记录移动应用开发过程。计算机科学或计算机工程专业毕业。在当今以移动为第一的世界,对个人和企业的需求不断增加移动应用程序导致了对开发人员的巨大需求。Gartner Inc.预计,到2017年底,市场对企业移动应用程序开发人员的需求将至少是现有人才的五倍。
质量保证工程师
工资中位数:$76,000(质量保证工程师手册);$89,000(质量保证工程师-自动化)
质量保证工程师设计并执行测试和质量评审计划,以识别软件开发过程中的问题。在理解软件开发生命周期和质量保证原则后,QA工程师定义测试的范围,执行手动和自动测试计划,并与开发人员密切合作,确定改进的领域。美国劳工统计局(Bureau of Labor Statistics)已将该职业领域标记为一个新兴的高增长领域,预计在2012年至2022年期间将在全国创造10万个新就业岗位。
应用程序架构师
工资中位数:126625美元
应用程序架构师将开发工具和系统架构的知识与业务头脑和团队领导技能结合起来,协调创建企业级应用程序。应用程序架构师是一个重要的职位,作为团队的联络人,将每个项目的用户体验、前端开发人员、程序员和质量保证专家聚集在一起。计算机科学或信息系统的学士学位是传统的要求,这是信息技术领域薪酬最高的职业之一。
软件工程师工作增长,前景和展望
根据美国计算机行业协会(CompTIA)的研究,如今,软件占美国IT市场的19%。几个因素共同促成了软件工程师时代的到来:向云基础设施的转变、移动设备和计算的兴起、大数据分析的爆发、社交媒体尚未挖掘的潜力,以及企业提供管理服务的需求。
相关职业能赚多少钱?
无论是在线技术服务、数据存储、网络管理还是安全,技术创新都是由一个核心需求驱动的:更有效、更强大的计算解决方案。因为编程语言和框架(例如,HTML, SQL, Java, c++)跨越了行业渠道,具有教育和经验的个人可以在今天拥挤和竞争的IT市场中脱颖而出。与此同时,软件工程领域的其他技术职位也在不断增长,经验丰富的专业人士的薪水可能超过10万美元。
相关职业:你需要知道的
对高技能信息技术人才的需求横跨各个专业领域,从信息系统到网络,从数据库到商业智能。计算机科学和软件开发方面的教育可以为整个技术行业带来各种相关的职业机会。下面是一些职业途径的例子:
商业智能分析
工资
90860美元
教育和培训:
学士学位
计算机系统管理员
工资
79770美元
教育和培训:
学士学位
数据库管理员
工资
82280美元
教育和培训:
学士学位
帮助台/用户支持
工资
51500美元
教育和培训:
有些大学,没有学位
信息系统经理
工资
136280美元
教育和培训:
学士学位
网络支持专家
工资
66140美元
教育和培训:
大专文凭
系统分析师
工资
87320美元
教育和培训:
学士学位
技术作家
工资
71950美元
教育和培训:
学士学位
资料来源:劳动统计局,职业与就业工资,2014年
相关职业一瞥
软件工程学位和职业资源2022年世界杯赛程时间
教唆ABET是对科学、技术和工程领域的本科和研究生课程进行认证的领先组织。
计算机协会ACM是世界上最大的计算机协会,其使命是促进计算机科学和相关领域的教育和专业领域。
前年美国计算机行业协会通过代表信息技术专业人士的利益进行宣传,并为从事信息技术工作的人提供专业证书和教育机会,以促进信息技术专业人士的利益。
IEEEIEEE是一个领先的专业组织,其目标是通过先进技术的支持来帮助人类。
计算机专业人员认证协会(ICCP)ICCP是一个非营利性组织,提供许多国际认可的计算机认证。
软件工程无线电这个优秀的播客大约每两周更新一次,内容包括引人注目的专家嘉宾和软件工程世界的内幕信息,过去、现在和未来。
尝试工程学:计算机软件工程师这个网站提供了对各种工程职业的见解,包括软件工程师。这是对软件工程师工作的一个很好的基本描述。
最新的文章
LearnHowToBecome.com是一个广告支持的网站。特色或可信的合作伙伴项目和所有学校搜索,finder或匹配结果是为补偿我们的学校。这一补偿不影响我们的学校排名,资源指南,或其他编辑独立的信息发布在这个网站。
查看与你兴趣最相关的课程,并根据学费、录取率和其他对你重要的因素进行比较。