19种最常见的开发人员类型,看看你属于哪一种?
软件开发领域不断变化。由于软件行业的不懈创新,专业化,技术和方法的新领域每隔几个月就会出现。有了它,描述专业类型开发人员的术语成为非官方行业术语的一部分,并出现在招聘广告和公司头衔中。
在互联网的存在之前,这些专业领域很多都不存在。万维网改变了我们生活的方方面面,包括软件工程师的职业道路革命化。
没有官方的行业词汇表。了解每种类型开发人员需要具备的技能会让新手感到困惑,并且可能会对非技术人员产生恐吓。
在这篇文章中,我定义了19种最常见的开发人员类型,他们使用简短的描述和技术列表以及他们必须具备的技能。请注意,这些术语的定义反映了我对专业的理解,但它可能因公司,地区或行业而异。
1 - 前端开发人员
这是一个开发人员,专门从事视觉用户界面的编程,包括美学和布局。前端开发人员代码在网站用户的计算机上的Web浏览器上运行。
这是非常高级的工作,通常远离硬件。它比计算机科学理论更需要理解人机交互和设计原则。大部分前端开发人员的生命都花在处理跨浏览器兼容性问题以及调整UI视觉呈现的细节上。
前端开发技能包括设计用户界面(UI)和用户体验(UX),CSS,JavaScript,HTML和越来越多的UI框架。
2 - 后端开发者
这是一位开发人员,专门从事远离最终用户的机器上运行的软件或系统的设计,实现,功能核心逻辑,性能和可扩展性。
后端系统可能会变得非常复杂,但它们的复杂性往往对用户不可见。例如,考虑Google搜索引擎。前端部分是一个非常简单的用户界面,包含标题,文本框和两个或三个按钮。后端是一个非常复杂的系统,能够抓取网页,对其进行索引,并利用不断增长的复杂机制找到您正在寻找的内容。
后端开发人员使用诸如Java,C,C ++,Ruby,Perl,Python,Scala,Go等编程语言。后端开发人员通常需要与众多服务集成,例如数据库,数据存储系统,缓存系统,日志记录系统,电子邮件系统等。
3 - 全栈开发者
这是一个开展前端和后端工作的开发人员。他或她拥有创建功能完整的Web应用程序所需的技能。
4 - 中间层开发人员
这是一名开发人员,他编写在浏览器中运行的非UI代码,并且经常与在服务器上运行的非核心代码交谈。一般来说,中间层是系统的“管道”。
术语中间层开发人员用于描述不专门从事前端或后端工作的人员,但可以兼顾两者,而不是全栈开发人员。很少有工程师将此作为标题,因为它更像是对技能的描述,而不是职业道路。
5 - Web开发人员
Web开发人员是专门创建网站的软件工程师。他们是前端开发人员,后端开发人员,中级开发人员或全栈开发人员。
在90年代末和21世纪初,Web开发成为进入软件工程世界的一种非常普遍的方式。它的入门点很低,只需要基本的HTML和CSS知识。只需几个月的经验,入门级Web开发人员就可以开始生产运往生产系统的代码。对于那些没有CS基础知识并想加入编程世界的人来说,这是一个特别有吸引力的选择。
6 - 桌面开发人员
这是一个开发人员,负责在桌面操作系统(如Mac OS,Windows和Linux)上本地运行的软件应用程序。
早在上世纪八十年代,这就是最常见的工程师类型之一,通过诸如Turbo Pascal,Turbo C,Visual Basic,Quick C,Visual Studio和Delphi等便宜的开发环境来普及。
桌面开发人员经常使用GUI工具包,如Cocoa,XAML,WinForms,Gtk等。
7 - 移动开发者
这是一位开发人员,他为在智能手机和平板电脑等消费者移动设备上本机运行的应用程序编写代码。在21世纪初以及智能手机市场爆发之前,移动开发几乎闻所未闻。在此之前,移动开发被视为嵌入式开发的一个子集。
移动开发人员了解iOS和Android等移动操作系统的复杂性,以及用于在这些操作系统上编写软件的开发环境和框架。这包括Java,Swift和Objective-C。
8 - 图形开发人员
这是一种专门为渲染,照明,阴影,着色,剔除和场景管理编写软件的开发人员。这些开发商通常负责将技术整合到游戏和视频制作行业。
图形开发曾经是一种低级开发形式,需要高级数学和计算机科学培训。随着商业和开源框架和系统的引入,它变得更加易于使用。例如,今天很少有人需要能够从头开始编写着色器。
框架包括DirectX,OpenGL,Unity 3D,WebGL。对于更高级的图形开发人员,低级开发需要C,C ++和Assembly。
9 - 游戏开发者
这是一个通用术语,用于识别专门编写游戏的开发人员。游戏开发者可以属于其他类别的开发者之一,但他们通常在设计和实现引人入胜的互动游戏体验方面拥有特定的知识和技能。
游戏开发者使用的框架包括DirectX,OpenGL,Unity 3D,WebGL以及诸如C,C ++和Java等语言。Adobe Flash曾经是网页游戏的标准游戏平台。 由于Flash正在被放弃,JavaScript和HTML5成为新的标准。在移动设备上,Swift和Java现在成为iOS和Android游戏的首选技术。
10 - 数据科学家
这类开发人员编写软件程序来分析数据集。他们经常负责统计分析,机器学习,数据可视化和预测建模。
数据科学家使用的语言通常包括SQL,R和Python。
11 - 大数据开发人员
这类开发人员编写软件程序来存储和检索数据仓库,ETL(提取转换负载)系统,关系数据库,数据湖泊管理系统等系统中的大量数据。
大数据开发人员通常熟悉用于分布式存储和处理大量数据的框架和系统,如MapReduce,Hadoop和Spark。大数据开发人员使用的语言包括SQL,Java,Python和R.
12 - DevOps开发人员
这是一类熟悉开发构建,部署,集成和管理后端软件和分布式系统所需技术的开发人员。
DevOps工程师使用的技术包括Kubernetes,Docker,Apache Mesos,HashiCorp堆栈(Terraform,Vagrant,Packer,Vault,Consul,Nomad),Jenkins等。
13 - CRM 开发商
这类开发人员专门从事收集用户和消费者数据的系统领域。这些开发人员的任务是通过改进客户支持代表,客户经理和销售代表所使用的工具来改善客户满意度和销售。
这些开发人员使用的技术包括SAP,Salesforce,Sharepoint和ERP(企业资源规划)。
14 - 测试软件开发工程师(SDET)
这类开发人员负责编写软件来验证软件系统的质量。他们创建自动化测试,工具和系统以确保产品和流程按预期运行。
SDET使用的技术包括Python,Ruby和Selenium。
15 - 嵌入式开发人员
这些开发人员使用通常不归类为计算机的硬件。例如,微控制器,实时系统,电子接口,机顶盒,消费类设备,iOT设备,硬件驱动程序和串行数据传输都属于这一类。
嵌入式开发人员经常使用C,C ++,汇编语言,Java或专有技术,框架和工具包等语言。
16 - 高级开发人员
这是一个开发人员的通用术语,它使用高级脚本语言(如PHP,Perl,Python和Ruby)编写与硬件距离很远的代码。Web开发人员通常是高级开发人员,但并非总是如此。
17 - 低级别开发者
对于开发人员来说,这是一个通用术语,它使用汇编和C等低级语言编写非常接近硬件的代码。嵌入式开发人员通常是低级开发人员,但并非总是如此。
18 - WordPress开发者
我将WordPress开发人员列入此列表中,因为他们是一群庞大的专业Web开发人员。他们为WordPress创建和定制主题和插件并管理WordPress网站。
这种开发人员使用WordPress系统,PHP,JavaScript和HTML。
19 - 安全开发人员
这种类型的开发人员专门创建系统,方法和过程来测试软件系统的安全性并修复安全漏洞。这种类型的开发人员经常作为“白帽”道德黑客工作,并试图渗透系统发现漏洞。
安全开发人员通常使用脚本语言(如Python和Ruby)编写工具,并详细了解用于攻击软件系统的许多模式。更高级的安全开发人员需要阅读和理解用C和C ++编写的操作系统源代码。他们还可能对图书馆和商业软件系统进行反向工程,以发现和利用漏洞。
结论
软件开发人员可以通过很多途径进入职业生涯并取得进展。无论你从一个正式的计算机科学教育开始,或者通过个人项目陷入网络发展,或者尝试创造一百万美元来制作iPhone游戏,这种可能性是无止境的。
一旦你选择了一条路径,你可以随着技能和知识的提高而改变。即使你选择在整个职业生涯中坚持一条道路,你也永远不会耗尽学习的东西。技术发展得如此之快,远比容易感到厌倦。