软件工程终极指南。

2025-05-28

软件工程终极指南。

图片来源:Pixabay

本文将探讨成为一名优秀软件工程师所需的技能以及如何学习这些技能。读完本文后,你将对软件工程、不同类型的软件工程角色等内容有基本的了解。

👉 目录(TOC)。

介绍。

🔝转到目录


蒂玛·米罗什尼琴科

软件工程师是任何软件/科技公司的骨干力量。他们负责软件的设计、开发和测试。他们服务于各行各业,包括但不限于研发、医疗保健、金融和零售。

优秀的软件工程师能够批判性地思考问题,并提出创新的解决方案。他们必须具备良好的团队合作能力,并与同事有效沟通。他们必须了解企业的​​需求,并懂得如何将这些需求与自己的技能和知识相结合。

说到数字,根据Indeed [ 0]的数据,美国软件工程师的平均基本年薪为126,262 美元;根据 Glassdoor [ 1]的数据,该数字为118,547 美元根据 Salary [ 2]的数据,该数字为119,430 美元根据 Payscale [ 3] 的数据,该数字为87,000 美元。值得一提的是,平均工资取决于许多因素,例如经验、技能、教育水平、公司居住地区、公司层级中的职位、公司类型等。

软件工程师与软件开发人员。

🔝转到目录


照片由约翰·沃尔夫拍摄。

软件工程师负责软件的设计和实现。他们还负责设计系统架构,包括选择和开发硬件和软件组件。另一方面,软件开发人员负责软件的编码和测试。

软件工程师需要对计算机科学概念有基本的了解,例如数据结构、算法、编程语言、操作系统、复杂性分析等。软件开发人员需要对 Java 或 C++ 等编程语言有深入的了解,才能为特定产品编写代码。

现在,您可能想知道成为一名软件工程师或开发人员需要采取哪些步骤。这正是我们在下一节中要探索的内容。

如何成为一名软件工程师/开发人员。

🔝转到目录


照片由Ivica Džambo拍摄。

成为一名软件工程师的过程并非易事。需要付出心血、汗水和泪水才能实现。真的,但最终一切都是值得的。

成为一名软件工程师有很多不同的途径。但它们都有一个共同点:都需要你对编程、技术和计算机科学充满热情。如果你对此没有热情,那就别费心尝试了。编程很难,真的非常非常难。如果有人告诉你不是这样,那说明他们经验不足。但如果你能克服这一点,最终你会获得十倍的回报。想从另一个角度理解“为什么编程很难”,我强烈推荐你观看这个 YouTube 视频 [ 4]

成为软件工程师的第一步通常是攻读计算机科学、工程学或数学专业的学士学位或同等学历。许多人还会获得硕士或博士学位,具体学位取决于他们选择的专业。

值得一提的是,大多数在 F/MAANG 公司工作的软件工程师都拥有计算机科学或工程学学位。然而,即使没有工程或计算机科学背景(例如哲学学士学位),也有可能在这些公司获得软件工程师的职位。

第二种途径是通过编程训练营学习编程。编程训练营是学习编程的好方法。它们提供结构化、密集的学习环境,旨在教会你成为专业开发者所需的技能。

通过编程训练营学习编程并非易事。它需要奉献精神、努力和决心。编程训练营通常比传统学校更昂贵,但值得投入。当你掌握了所需的技能,最终获得理想的软件开发人员工作时,你会发现这一切都是值得的。

根据“编码训练营校友成果与人口统计研究”的调查,训练营毕业生就业率约为73% [ 5],这与大学毕业生就业率(78%)相当接近,也高于高中毕业的学生(69%) [ 6]。虽然由于数据来自不同的调查和时间线,这种比较并不真正有效,但它确实能提供一个大概的了解。

学习编程是一项非常热门的技能。它也是一项可以自学的技能,无需接受正规教育,这就引出了第三条道路:自己编程,也就是自学。

自学编程的道路可能充满挑战且耗时,但也可能收获颇丰,令人满足。如果您一直对编程感兴趣并渴望学习,这里有一些资源可以帮助您入门。最受欢迎的资源是W3schoolsTreehouseCodecademyfreecodecamp。这些网站提供互动课程和练习,教授 HTML、CSS、JavaScript、Python、Ruby on Rails 等编程语言的基础知识。

本质上,成为一名软件工程师有三条主要途径可供选择:

  • 大学:进入该行业的标准途径。
  • 编程训练营:你必须完成一个项目。你可以参考 Samuel Lee 的 YouTube 视频,了解更多关于编程训练营的信息 [ 7]
  • 自学:这条路需要很大的奉献精神,因为没有既定的时间表,也没有课程……你必须弄清楚自己需要学什么以及如何学习。以下是 Jenefer Licet [ 8]讲述的自学成才的 UI 工程师、Amigoscode [ 9]讲述的自学成才的后端工程师,以及 Jeremiah [ 10]讲述的自学成才的工程师的真实经历

现在,您可能想知道:成为软件工程师的最佳途径是什么?

这个问题很难回答,因为成为软件工程师的途径有很多。然而,根据 StackOverflow 的一项调查,最常见的途径是获得计算机科学或计算机工程学士学位。


开发者简介、教育背景 [ 11]

计算机科学或计算机工程学士学位可以为想要成为软件工程师的人提供必要的技能。

成为软件工程师的最快方法是采取正确的步骤。了解你的目标以及你希望的流程至关重要。这可能会让人不知所措,但许多在线资源可以帮助你完成整个过程。

成为一名优秀软件工程师所需的技能。

🔝转到目录


照片由ANTONI SHKRABA拍摄。

软件工程需要广泛的软技能和硬技能。它不仅仅是编程。为了在这个领域取得成功,你还需要学习许多其他技能。

软件工程师必须全面了解计算机系统和编程。你必须了解计算机的工作原理,并且还需要知道如何编写计算机程序。编程知识对于编写有效的程序至关重要。但是,如果你不是编程新手,可以通过编程训练营开始学习编程,接受面对面的培训或参加计算机科学课程。你可以使用许多免费资源,例如freecodecamp,它可以从头开始教你编程。你也可以参加在线课程或阅读书籍和教程。可以说,学习编程的最佳方式就是实践。

软件工程师帮助设计和构建计算机和移动设备的软件。他们经常作为团队的一员参与项目,开发许多人使用的软件。软件工程师通常需要掌握最新的技术、工具和技术。这可能包括学习新的编程语言和可视化软件。软件工程师可能需要的其他技能包括理解用户需求、在敏捷开发环境中工作以及与他人协作。

要想成为一名成功的软件工程师,从头开始学习编程至关重要,因为大多数编程语言都需要很好地理解计算机的工作原理以及数据在计算机上的存储和访问方式。还有很多不同的编程语言可供学习,比如 C++、Java、Python 和 Javascript。可以说,最好的起点是阅读文档/书籍,尽管也有很多在线教程可供参考。你应该注意到,大多数编程语言都使用类似的教学方法,因此在学习一种语言之后,你将能够相对轻松地学习其他语言。例如,Java 和 C# 之间有很多交叉(例如,基于类的面向对象、垃圾收集、静态类型、花括号语言),因为 C++ 对两者都有很大的影响[ 12]。如果你不熟悉这些编程语言中的任何一种,请尝试选择一种与你已经知道的语言类似的语言;这样你将能够更轻松地了解它们之间的差异。JavaScript 是 Web 开发中使用最广泛的语言[ 13]


编程、脚本和标记语言[ 13]

所以,如果你想从零开始学习编程,JavaScript 是一个不错的选择。然而,正如 StackOverflow 的调查显示,这并不意味着 JavaScript 就是薪酬最高的技术。


是时候学习 Clojure 了 ;-)。

优秀软件工程师的素质。

🔝转到目录


照片由MART PRODUCTION拍摄。

优秀的软件工程师对计算机科学和工程的基础知识有着深刻的理解,并且能够与团队合作解决复杂的问题。

我认为优秀软件工程师的终极素质是:

  • 他们具有很强的解决问题的能力。
  • 他们对技术和创新充满热情。
  • 他们重视可靠性、效率和有效性。
  • 他们具有出色的分析、编程和技术技能。
  • 他们有强烈的职业道德,以便按时完成任务。
  • 他们可以在高压环境下以最少的监督工作。
  • 他们能够创造性地思考并为复杂问题开发创新的解决方案。
  • 他们很有竞争力。(他们愿意在竞争环境中学习并脱颖而出)。
  • 他们在与不同经验水平的人合作方面有着出色的记录。
  • 他们能够以书面和口头形式与技术和非技术受众进行有效沟通。

事实上,软件工程师的需求正在增长,找到一位具备所有先前技能的完美候选人需要耗费大量的计算资源。然而,你并不需要具备上述所有技能才能成为优秀的软件工程师。

软件工程师的成功可能不仅取决于他们的技能,还取决于他们所加入的公司。并非所有软件工程师都如此,因为他们中的许多人都具备公司所需的技能,但对其技能的需求取决于各自公司的项目。

说到这儿,你可能会想:软件工程中最关键的技能是什么?正如你所猜测的,遇到问题时就去 Google 一下。


当你陷入困境时你会怎么做[ 14]

在下一节中,我们将详细列出不同的软件工程角色。

软件工程师/开发人员的类型:角色和职责。

🔝转到目录

软件工程师有很多不同的类型。有些专注于特定领域,例如移动应用开发或 Web 开发,而有些则从事各种项目。最常见的软件工程师类型是全栈工程师,他们负责设计和开发网站和 Web 应用程序。


开发者简介,开发者角色[ 15]

软件工程师遍布各行各业,他们的职责范围广泛。他们可能负责设计用户界面、编写代码,或测试产品以确保其无错误。他们可能致力于开发电子游戏、网络应用程序和移动应用程序。他们还了解应用程序的工作原理以及其他人如何使用它。

通常,软件工程师有十二种类型:

前端工程师。

🔝转到目录


照片由Markus Spiske拍摄。

平均年薪Indeed上为92,698美元[ 16]Glassdoor上为101,982美元[ 17]

前端工程师是专门负责网站或 Web 应用程序用户界面 (UI) 的设计和开发的人员。他们负责确保网站在所有设备上都具有响应能力且显示良好。

前端工程师还负责确保网站快速加载并与搜索引擎良好兼容。他们还负责设计构成网站界面的图形、动画和其他视觉元素。

技能:AJAX、API、AWS、Agile、Angular、Azure、Bootstrap、CSS、沟通技巧、设计模式、前端开发、Git。

后端工程师。

🔝转到目录


照片由克里斯蒂娜·莫里洛 (Christina Morillo)拍摄。

平均年薪Indeed上为95,318美元[ 18]Glassdoor上为130,298美元[ 19]

后端工程师是专门负责应用程序或系统后端设计和开发的软件工程师。

后端是应用程序中负责处理所有数据处理、存储和检索的部分。它通常由两部分组成:用于存储信息的数据库和用于处理请求并向用户提供信息的 Web 服务器。

后端工程师的工作就是设计和开发这些组件,确保数据能够可靠地存储、快速地检索和高效地处理。

技能:API、AWS、Agile、Azure、后端开发、CI/CD、沟通技巧、数据库、分布式系统、Docker、Git、Go。

全栈工程师。

🔝转到目录


照片由fauxels拍摄。

平均年薪Indeed上为101,017美元[ 20]Glassdoor上为117,731美元[ 21]

全栈工程师是指具备网站前端和后端技能的人员。他们负责网站从开发到最终完成的整个过程。

全栈工程师在科技行业非常抢手,因为他们能够完成构建网站所需的一切工作。他们精通前端和后端开发,这使得他们比其他工程师更有价值。

技能:API、AWS、Agile、Angular、Azure、C#、CI/CD、CSS、沟通技巧、DevOps、Docker、全栈开发。

质量保证(QA)工程师。

🔝转到目录


照片由ThisIsEngineering拍摄。

平均年薪Indeed上为67,227 美元[ 22]Glassdoor 上为55,127 至 60,710 美元[ 23]

QA工程师负责确保产品没有错误并符合标准。他们确保开发人员创建的产品符合质量标准。

技能:API、敏捷、分析技能、C、C++、CI/CD、沟通技能、调试、Java、JavaScript、Jira、Linux。

DevOps 工程师。

🔝转到目录


摄影:Mikhail Fesenko

平均年薪Indeed上为115,435美元[ 24]Glassdoor上为123,115美元[ 25]

DevOps 工程师的工作是确保公司代码始终保持最新并平稳运行。他们通常负责实施和监控生产环境中的软件。

DevOps 工程师是指精通多种编程语言并能使用各种工具的人。他们也可以被称为系统管理员、应用程序开发人员或发布工程师。DevOps 工程师最重要的特质是他们精通开发和运维。

过去,系统管理员负责创建和维护公司系统。许多开发团队会配备一个独立的系统管理员团队,与他们合作实现新功能并维护生产环境中的系统。然而,由于 DevOps 实践的引入,开发人员和系统管理员之间的界限已经变得模糊。

技能:AWS、Agile、Ansible、Azure、Bash、CI/CD、Chef、云基础设施、沟通技巧、持续集成、DevOps、Docker。

安全工程师。

🔝转到目录


照片由cottonbro拍摄。

平均年薪Indeed上为75,732美元[ 26]Glassdoor上为113,236美元[ 27]

安全工程师负责公司网络和数据的安全。他们负责设计、实施和维护组织IT基础设施的安全。

安全工程师致力于保护公司信息免遭外部人员未经授权的访问或使用。他们制定策略来管理员工如何访问其计算机或移动设备上的敏感信息,并监控网络以检测未经授权的活动,例如黑客攻击或恶意软件感染。

技能:AWS、Active Directory、分析技能、Azure、C++、沟通技能、计算机网络、加密、防火墙、Google Cloud Platform、IDS、身份和访问管理。

游戏设计师。

🔝转到目录


照片来自Pixabay

平均年薪Indeed上为94,763美元[ 28]Glassdoor上为95,894美元[ 29]

电子游戏设计师负责电子游戏的设计和开发。他们负责设计游戏的关卡、角色、玩法、故事和图形。

游戏设计师必须精通各种软件应用,例如3D建模工具、动画软件、工程工具和音频制作软件。然而,他们的核心技能在于创作有趣且吸引玩家的互动游戏的艺术或科学。他们还会运用在游戏开发、编程、文学、电影和心理学等其他领域的专业知识,为设计过程寻找新的见解。

技能:沟通技巧。

移动开发人员。

🔝转到目录


摄影:Skylar Kang

平均年薪Indeed上为92,974美元[ 30]Glassdoor上为112,702美元[ 31]

移动开发者负责开发移动应用程序。他们负责设计和开发可在智能手机、平板电脑和其他移动设备上运行的软件。他们为各自的平台(Android、iOS)开发原生应用程序。原生应用程序是专门为其运行平台(通常是设备的操作系统 (OS))创建的。

移动开发人员需要熟练掌握各种编程语言,如 Java、Swift、Objective-C、C++ 等。他们还需要了解多种操作系统,如 iOS、Android 等。

技能:API、AWS、Agile、分析技能、Android、Android 开发、应用程序开发、C#、C++、CSS、沟通技巧、设计模式。

软件集成工程师。

🔝转到目录


照片由Alexander Dummer拍摄。

平均年薪Indeed上为108,209美元[ 32]Glassdoor上为109,965美元[ 33]

软件集成工程师(嵌入式系统开发人员)负责将软件组件和模块与安全警报系统等硬件集成。他们还负责设计和开发这些组件的接口。

技能:.NET、API、AWS、Agile、C、C#、C++、沟通技巧、调试、Docker、Git、Java。

数据科学家。

🔝转到目录


照片由卢卡斯拍摄。

平均年薪Indeed上为102,247美元[ 34]Glassdoor上为123,357美元[ 35]

数据科学家是分析数据并从中提取洞察的人。数据科学家使用各种工具,包括编程语言、统计软件和机器学习算法。数据科学家在当前的就业市场中需求旺盛,可以在医疗保健、金融、零售或市场营销等多个行业工作。

技能:AI、AWS、分析技能、分析、Apache Hive、Azure、C++、沟通技能、数据分析技能、数据挖掘、数据科学、数据可视化。

大数据工程师。

🔝转到目录


照片由Olya Kobruseva拍摄。

平均年薪Indeed上为115,737美元[ 36]Glassdoor上为103,470美元[ 37]

大数据工程师是指具备处理海量数据集并从中提取洞见的技能的人员。他们负责设计、开发和维护存储和处理数据的系统。

技能:API、AWS、Agile、Apache Hive、Azure、大数据、Cassandra、沟通技巧、数据建模、数据仓库、ETL、全栈开发。

站点可靠性工程师。

🔝转到目录


照片由Format拍摄。

平均年薪Indeed上为129,032美元[ 38]Glassdoor上为121,142美元[ 39]

网站可靠性工程师负责公司网站的可靠性。他们确保网站始终正常运行,并能应对任何流量高峰。

技能:API、AWS、Ansible、Azure、Bash、CI/CD、Chef、云基础设施、沟通技巧、计算机网络、DevOps、分布式系统。

在下一部分中,我们将列出一直在寻找软件工程师来帮助他们构建下一代产品的顶级科技公司。

招聘软件工程师的顶级公司。

🔝转到目录


照片由Format - Unsplash拍摄。

软件工程师的需求量很大,很多公司都在招聘这类职位。你永远不知道什么时候就能找到理想的工作。时刻留意机会总是好的。以下是一些招聘软件工程师的顶级公司:

  • Meta(前身为 Facebook):自 2004 年成立以来,一直是全球最受欢迎的社交媒体平台之一[ 40]

  • 亚马逊:他们已经存在超过 25 年了,并且他们一直在寻找新的方法来简化客户的购物体验[ 41]

  • 苹果:自 1976 年成立以来,苹果一直是最受欢迎的公司之一,凭借其生产的高质量产品和令人难以置信的忠实消费者[ 42]

  • Netflix:他们已经存在 20 多年,并且已经发展成为世界上最受欢迎的流媒体服务之一 [ 43]

  • 谷歌:他们有着悠久的成功历史,拥有丰富的产品,并聘用最优秀的人才。

  • 微软:自 1975 年成立以来,一直是全球最优秀的软件提供商之一[ 44]

这些公司每年招聘数千名软件工程师,并提供具有挑战性的项目。你可以参考Glassdoor上招聘软件工程师的顶级公司的详尽列表[ 45]

结论。

🔝转到目录

总而言之,科技行业的未来一片光明。工程师不仅仅关乎一个人拥有的技术技能,还关乎一个人如何思考、如何解决问题以及如何表达自己的想法。理解一个人如何成为一名杰出的工程师至关重要。

一如既往,这篇文章是送给您的一份礼物,您可以与任何人分享,或以任何有益于您个人和职业发展的方式使用它。支持这个博客,能激励我发布高质量的内容。在此先行感谢您的鼎力支持!

今天的文章就到这里。感谢阅读!大家注意补充水分,下期再见。

参考文献和资源。

🔝转到目录

[0]Indeed。美国软件工程师薪资。Indeed.com。检索日期:2022年5月6日。

[1]Glassdoor。软件工程师能挣多少钱? glassdoor.com。检索日期:2022年5月6日。

[2]薪资。美国软件工程师的平均薪资是多少? salary.com。检索日期:2022年5月6日。

[3]Payscale。美国软件工程师的平均收入是多少? payscale.com。检索日期:2022年5月6日。

[4]安迪·斯特科维茨(Andy Sterkowitz)。编程为何困难? youtube.com。

[5]莉兹·埃格尔斯顿。2016年课程报告:校友成果与人口统计研究。coursereport.com。检索日期:2022年5月7日。

[6]NCES。年轻人就业率。nces.ed.gov。检索日期:2022年5月6日。

[7]Samuel Lee,2022 年。我的编码训练营体验 | Flatiron 学校 | 编码训练营到底是什么样的。youtube.com。

[8]Jenefer Licet,2020 年。在 6 个月内,我成为了自学成才的 UI 软件工程师/无需学位/无需训练营。youtube.com。

[9]Amigoscode,2020 年。我如何在没有计算机科学学位的情况下成为一名软件工程师 | 精彩故事。youtube.com。

[10]耶利米,2020 年。我是如何成为一名没有学位的软件工程师的。youtube.com。

[11]Stackoverflow,2021 年。开发者简介,教育背景。检索日期:2022 年 5 月 8 日。

[12]维基百科,2016。自由百科全书,C Sharp 与 Java 的比较。检索日期:2022-05-08。

[13]Stackoverflow,2021 年。编程、脚本和标记语言。检索日期:2022-05-08。

[14]Stackoverflow,2021 年。“当你遇到困难时你会怎么做”。检索日期:2022 年 5 月 8 日。

[15]Stackoverflow,2021 年。开发者资料,开发者角色。检索日期:2022 年 5 月 8 日。

[16]确实如此。美国前端开发人员薪资。Indeed.com。检索日期:2022年5月6日。

[17]Glassdoor。前端开发人员能赚多少钱? glassdoor.com。检索日期:2022 年 5 月 6 日。

[18]确实如此。美国后端开发人员薪资。Indeed.com。检索日期:2022年5月6日。

[19]Glassdoor。后端工程师能挣多少钱? glassdoor.com。检索日期:2022年5月6日。

[20]确实如此。美国全栈开发人员薪资。Indeed.com。检索日期:2022年5月6日。

[21]Glassdoor。全栈开发人员能挣多少钱? glassdoor.com。检索日期:2022年5月6日。

[22]确实如此。美国质量保证工程师薪资。Indeed.com。检索日期:2022年5月6日。

[23]Glassdoor。质量保证及质量保证薪资。glassdoor.com。检索日期:2022年5月6日。

[24]确实如此。美国质量保证工程师薪资。Indeed.com。检索日期:2022年5月6日。

[25]Glassdoor。质量保证及质量保证薪资。glassdoor.com。检索日期:2022年5月6日。

[26]确实如此。美国安全工程师薪资。Indeed.com。检索日期:2022年5月6日。

[27]Glassdoor。安全工程师的薪水是多少? glassdoor.com。检索日期:2022年5月6日。

[28]确实如此。美国电子游戏设计师薪资。Indeed.com。检索日期:2022年5月6日。

[29]Glassdoor。游戏设计师能挣多少钱? glassdoor.com。检索日期:2022年5月6日。

[30]确实如此。美国移动开发人员薪资。Indeed.com。检索日期:2022年5月6日。

[31]Glassdoor。移动开发人员能赚多少钱? glassdoor.com。检索日期:2022年5月6日。

[32]Indeed。美国软件集成工程师薪资。Indeed.com。检索日期:2022年5月6日。

[33]Glassdoor。软件集成工程师的薪水是多少? glassdoor.com。检索日期:2022年5月6日。

[34]确实如此。美国数据科学家薪资。Indeed.com。检索日期:2022年5月6日。

[35]Glassdoor。数据科学家能挣多少钱? glassdoor.com。检索日期:2022年5月6日。

[36]确实如此。美国数据工程师薪资。Indeed.com。检索日期:2022年5月6日。

[37]Glassdoor。数据工程师能挣多少钱? glassdoor.com。检索日期:2022年5月6日。

[38]确实如此。美国站点可靠性工程师薪资。Indeed.com。检索日期:2022年5月6日。

[39]Glassdoor。站点可靠性工程师的薪水是多少? glassdoor.com。检索日期:2022年5月6日。

[40]维基百科,自由的百科全书。Facebook的历史。wikipedia.org。检索日期:2022年5月8日。

[41]维基百科,自由的百科全书。亚马逊的历史。wikipedia.org。检索日期:2022年5月8日。

[42]维基百科,自由的百科全书。苹果公司的历史。wikipedia.org。检索日期:2022年5月8日。

[43]维基百科,自由的百科全书。Netflix。wikipedia.org。检索日期:2022年5月8日。

[44]维基百科,自由的百科全书。微软的历史。wikipedia.org。检索日期:2022年5月8日。

[45]Glassdoor。招聘软件工程师的顶级公司。glassdoor.com。检索日期:2022年5月8日。

文章来源:https://dev.to/wiseai/the-ultimate-guide-to-software-engineering-545e
PREV
2022 年适用于 Python 开发人员的最佳 VS Code 扩展。
NEXT
文本:权威指南 - 第 1 部分。