说到 “开发工程师 “这个词,我们一般指的是 “软件”。而不是说,”房地产”。然而,即使是对计算机和代码的关注,也为描述开发工程师的类型留下了很大的余地。
我们可以通过他们使用的编程语言对开发工程师进行分类–比如 “JavaScript开发工程师 “或”Python开发工程师”–但这并不能揭示他们正在创造的东西或他们在这个过程中的作用。此外,开发工程师懂得多种语言是很常见的。
因此,我们将使用一些被广泛接受的(更具有描述性的)开发者类型的标签,并看一下它们背后的任务和工具。
我们已经确定,软件是我们开发者故事的关键。这可以有多种形式。
微软的SQL Server数据库软件背后的编程团队的成员是一名开发工程师。使用结构化查询语言来处理存储在这种数据库中的信息的人也可以是一名开发工程师。
一个开发者创建了一个嵌入电路板的计算机操作系统。另一个人写Bash脚本,以实现多个其他软件程序之间的自动互动。
所有这些类型的开发工程师都用代码建立了一些东西。
屏幕上的代码 (Photo by Fotis Fotopoulos on Unsplash)
没有一个 “官方 “的开发者工作描述清单。我们将使用一些常见的术语来看待开发工程师的工作,我们甚至将范围广泛的 “网络开发工程师 “类别分解为三个不同的角色。
在这里,我们将总共罗列了最为常见的11种类型的开发工程师。
前端开发工程师专注于一个网站的用户界面。他们使用他们的HTML和CSS技能来控制一个网站的外观和感觉,经常适应移动和桌面浏览器的各种屏幕尺寸。
前端开发工程师通常依靠JavaScript来为用户创建响应式体验。这些开发工程师通常熟悉可以加速创建动态、面向客户的应用程序的JavaScript库和框架。
前端开发工程师的工作是提高网站性能,优化图像、JavaScript和标记,以加快浏览器的加载时间。大多数前端开发员还专注于搜索引擎优化和网站可访问性。
所有这些都需要很多技能,而一个前端开发工程师的工资可以反映这一点。
前端开发是网页设计师吗?
许多前端开发者也是设计师,但这并不是 “前端 “这个头衔的要求。同样地,许多网页设计师精通HTML和CSS–并可能在模拟中使用它们–但不认为自己是开发者。
对于许多组织来说,设计是品牌建设的一部分,它包含了网络以外的媒体。
无论谁创造了一个设计,前端开发者的工作是将其在网页上实现,并将用户体验的愿景转化为一个正常的应用程序。
后端开发工程师构建服务器端应用程序,通常需要网络服务器软件、数据库和运行的操作系统方面的专业知识。一个全开源的例子是Linux操作系统,Nginx或Apache网络服务器,以及MariaDB或PostgreSQL数据库。
后端和前端开发之间的界限被像PHP这样的技术所模糊,PHP只是一种服务器端的脚本语言,在前端向浏览器发送HTML。
PHP–它为WordPress和其他流行的内容管理系统,以及Laravel等开发框架提供动力–是网络上最常见的服务器端脚本语言。不过,后端开发工程师可能使用C#和微软的.NET框架、Python、Java、Ruby on Rails或Node.js等技术。
后台开发工程师可以期望与负责网站面向客户方面的团队成员合作。服务器端开发也可以包括创建应用程序接口(API),以支持前端服务,而不需要双方的紧密耦合。
如果所有这些听起来都是你喜欢的工作,你可能会对典型的后端开发工程师的工资感兴趣。
你可能已经猜到了,全栈开发者做的是前端和后端开发者的工作。(不幸的是,这并不意味着一个典型的全栈开发工程师的工资是其他人的两倍)。
尽管如此,掌握所有级别的网络开发似乎也有其回报。StackOverflow在2022年对开发者进行的一项调查发现,当受访者被要求描述他们的角色时,”全栈开发者 “是最高的回答(近47%)。
2022年不同类型开发者占比 (via: StackOverflow)
WordPress开发者是全栈式开发者吗?
在任何地方安装的WordPress对开发者是友好的,它提供了一个庞大的自己的PHP函数/方法库,是对一些常见的服务器端任务的抽象层。例如,WordPress的开发者可以在关系数据库中存储和检索记录,而不用写SQL。他们可以将媒体上传至服务器的文件系统,而不需要知道PHP的核心功能来实现这一切。
“WordPress开发者 “本可以在此自成一类,但那样的话,我们就不得不为使用Drupal、Joomla和DNN等CMS产品以及Laravel、.NET和Django等框架的开发者做同样的事。
许多WordPress开发者–特别是一些构建WordPress主题和插件的开发者- 有鼓舞人心的全栈能力。所以,对 “WordPress开发者是全栈开发者吗?”这个问题的答案是。这取决于他所扮演的角色。
术语 “应用程序 “在软件开发中涵盖了很多领域。从桌面到网络,应用程序是为终端用户完成工作的工具。
当简称为 “app “时–如 “有一个app可以用来做这个!”- 我们往往首先想到的是运行在智能手机、平板电脑和其他移动设备上的应用程序。而创建移动应用程序需要一个专业类型的开发工程师。
移动应用程序开发工程师熟悉软件开发工具包(SDK)和相关工具,用于为设备操作系统(如苹果的iOS或谷歌的Android)构建应用程序。
Swift是iOS的原生编程语言,而Java和Kotlin是Android最常用的语言。此外,一个庞大的应用程序构建工具生态系统,如Apache Cordova和NativeScript,可以将基于网络友好的JavaScript、HTML和CSS的代码变成原生移动软件。
当我们看了应用程序开发工程师的平均工资时,我们发现那些为移动平台开发的人比那些专注于桌面或网络的人赚得略多。
桌面开发工程师创建在个人电脑和工作站上运行的软件应用程序。
开发工程师通常为特定的操作系统构建桌面应用程序,因此这一领域的活动反映了微软的Windows、苹果的macOS、谷歌的Chrome OS和开源操作系统Linux等平台的相对市场份额。
Statcounter利用从全球网站访问中收集的数据,在2022年8月估计,Windows在桌面操作系统中占据了74%的市场份额。
2022年8月桌面操作系统的市场份额 (via: Statcounter)
开发工程师可能会使用集成开发环境(IDE)工具进行编程,以快速编辑、调试和编译源代码。
用于桌面应用程序编程的流行语言包括C#、C++、Swift和Java。
桌面软件在本地运行,但现代应用程序可能使用互联网连接来完成从产品更新到通过云存储共享数据等任务。
人类在日常生活中帮助产生了大量的数据:在杂货店结账、上网、开车经过交通摄像头、使用手机–甚至投票。我们已经建立了系统来记录来自自然现象的数据,如天气、地震和来自太空的电磁信号。
数据科学家是一个使用计算机的数学向导,他可以在所有这些信息中发现模式。
这些开发者很有可能正在使用Python编程语言或更专业的语言,如R、Scala或Julia。
“大数据 “通常会在关系型数据库中结束,所以数据科学家很可能在他们的编程工具箱中拥有SQL。
人工智能(AI)软件开发工程师试图模仿人类的行为,如决策。加上机器学习(ML),一个应用程序可以随着时间的推移变得更加智能。
人工智能/ML应用程序通常使用复杂的算法处理大量的数据,因此该领域的开发工程师往往是数据科学家。
市场研究公司IDC发现,2021年全球人工智能相关的应用、硬件和服务的收入超过3830亿美元,比2020年增长了近21%。
客户关系管理软件和企业资源管理软件约占人工智能增强型应用收入的65%。
2020年与2021年全球人工智能软件的价值 (via: IDC)
计算机游戏开发者代表了广泛的技能。
他们的软件可能在台式机、移动设备、游戏机或网络浏览器上运行。故事情节适应不同的游戏类型,如军事或体育模拟,第一人称射击游戏,战略,或角色扮演。然后可能还有3D图形、音乐和声音效果。
在一个互联网连接的游戏世界里,大型多人游戏的开发者面临着与最繁忙的电子商务网站一样苛刻的后台服务器和数据库要求。
游戏开发者通常拥有3D渲染工具和其他动画相关软件的专业知识。
而且,专注于前沿技术,SlashData的Developer Nation最近的开发者调查显示,刚刚超过37%的增强现实(AR)或虚拟现实(VR)应用是AR/VR游戏。还有27.9%的项目涉及建立虚拟世界–有些用于游戏。
使用AR/VR的开发类型 (via: SlashData’s Developer Nation)
虽然成千上万的开发者在最流行的操作系统上工作–为Linux做贡献或受雇于微软、苹果或谷歌–但这仍然是一个独特的群体。毕竟,SlashData说它的调查表明全世界的开发者总人数超过了2400万。
很有可能你的冰箱有一个操作系统,但流行的计算机操作系统是需要大量开发工程师团队的努力,他们中的大多数人在整个项目中从事较小的组件。
大多数操作系统的核心是内核,它负责管理对CPU、内存、文件系统和I/O设备的访问。C语言是微软Windows、苹果macOS和Linux内核的主要编码语言。此外,还使用了一些用汇编编写的低级代码。
而安卓内核是从Linux内核演变而来的。
在内核的基础上,操作系统有管理各种硬件设备的驱动程序和管理系统内务的应用程序。然后是系统的图形用户界面。开发工程师可能使用C、C++、Objective C(macOS),甚至是Python(Linux)来开发这些组件。
DevOps工程师负责管理工具和工作流程,使软件快速、可靠地从开发阶段到公开发布。
“DevOps “是 “开发 “和 “运营 “两个词的组合,从业人员将重复的软件开发任务自动化–从管理代码到测试、部署、监控、维护和故障排除。
这些工程师采用一套DevOps工具来帮助加快软件发布周期,管理项目代码库的各个版本,并确认最终产品能按预期运行。
当用于网络开发时,DevOps过程还可以确保应用程序所需的资源是可用的,并在网络服务器上正确配置。
DevOps需要高级技能,DevOps工程师的工资通常反映了这一点。
安全开发工程师建立工具并管理测试软件和计算机系统安全的过程。
在软件开发中,安全往往是DevOps流程的一个组成部分。在这种环境下专注于安全的人可能被称为SecDevOps工程师。
安全开发工程师的工作是保护软件和计算机系统免受网络安全攻击和威胁。他们使用各种工具,包括Python、Bash和Ruby等脚本语言,以实现重复性任务的自动化。
一个安全开发工程师必须对他们要保护的软件和系统有深入的了解。
如果你想自己成为一名开发工程师,我们有一些信息可以帮助你采取下一步行动。你可以阅读关于最佳编程语言的学习,或者直接挖掘学习PHP和发现JavaScript的教程。
也许你会有兴趣了解成为一名Laravel开发工程师所需的条件,或者专注于学习WordPress,世界上最流行的CMS。
这就是对11种类型的开发工程师的简述,他们的角色与众不同,足以突出他们领域中的各种任务。
然而,许多开发工程师扮演着不止一个角色,而且大多数人都熟悉多种编程或脚本语言。也许这就是为什么我们永远无法就开发者类型的 “官方 “列表达成一致。
最后,愿大家在即将来临的2024,家庭幸福,身体健康,心想事成,飞黄腾达……
Happy Coding!