编者按:编码人员,编程人员,开发人员,工程师,架构师……五花八门的IT职位名称你分得清楚吗?他们的区别是什么?哪些职位最有“钱途”,哪些职位可有可无?这篇文章可以帮你厘清区别,为职业规划提供参考。
我打第一份工的时候我还未成年,那是一份周末兼职,每周我都偷偷地在披萨店打工。每周周六早晨,我都准时出现在当地的商业街,停好自行车,然后开始打卡上班。这份工作非常辛苦,一袋面粉20千克,一桶水38千克,每天我都要把很多袋面粉和很多桶水搬到一台立式搅拌器进行搅拌。水和面粉搅拌完毕之后,我就要把沉甸甸的面团抱在怀里,放到一个金属台上,然后把面团切成很多块,撒上油,然后披萨店就用这些面团做出可口的披萨。到了中午,我已经筋疲力尽,稍作休整,打卡下班,回家。每个月我都会得到一个信封,里面装着我一个月的工资——100美元。这就是我第一份工作。
我给我这第一份职业起了个很正式的名字:面团小子。但是“面团小子”在简历上也没有给人留下很深的印象,所以后来我又给这份工作起了另一个名字:首席面团师。一个年轻人一定要有点尊严嘛,对吧?结果,好像没有人在乎我到底是什么头衔。
我不知道的是,这个职位将是我未来所有职位名称中取得最好的一个。
几年之前我成了一个程序员。在21世纪的美国,特别是在科技领域,职称变化很快。很长时间以来我都没有见过一个雇主认真考虑过职称问题。实际上,我刚刚入行时的一位雇主还告诉我,可以把任何想放的东西都放进简历,包括所谓的各种职位和职称。如果有人反对,他会支持我的。诚然,我是很想把自己的职位写成“高级部门领导兼技术架构师”的,尽管我当时做的只是在一家小公司做编程检测的工作。
我现在经常为我头上顶着的花里胡哨的职位名称而疑惑不解。我为一家初创公司写网络申请,我几乎什么层次的工作都做,从最低端的SQL服务器,到最高端的CSS。我觉得我可以称呼自己是:编码员、程序员、工程师、开发员、研究员。根据我前面在披萨店打工的经历,我甚至还可以称呼自己是:软件小子。所以问题来了:我到底是做什么的?
我发现我并不是唯一一个考虑这个问题的人。这个问题不好解答,因为要考虑很多变量。在有些国家,除非你获得相应证书,否则自称工程师是违法的。在一些文化中,人们可能更喜欢笼统的词(比如咨询),而不是具体的科技术语(比如网络申请开发人员)。在我所居住美国,职位名称上小小的差别可能导致薪资上的天壤之别。
这次我尝试做一件事,统计所有我能搜集到的关于从事编程工作人员职位名称的数据,搜集了各大网站上每个职位相应的薪资信息和职位描述(但是肯定会挂一漏万,没法穷尽)。如果你发现有什么重大的遗漏或者错误,请标出来,给我留言。
我的统计里不包括黑客,忍者,摇滚明星这类职称,因为这些职称相当不专业,而且毫无意义。老实说,我只见过一些及其不称职的招聘人员用过这些称谓。
薪资信息来自美国劳工统计局(BLS,美国劳工统计局是美国联邦政府劳动经济和劳工统计的主要机构,负责收集、加工、分析、以及向公众发布重要的统计数据。BLS也是美国劳动部的统计数据来源。BLS机构网站提供的数据包括通货膨胀与价格、消费支出、失业数据、就业数据、福利待遇、产出率、工伤统计等等,译者注),
Glassdoor(Glassdoor 是美国的一家做企业点评与职位搜索的职场社区。在Glassdoor上可匿名点评公司,包括其工资待遇,职场环境,面试问题等信息,译者注)
PayScale(PayScale是一家位于美国西雅图的薪水调查公司,2002年1月成立于美国西雅图,现时总部也是位于西雅图。PayScale尤以发布美国大学毕业生的薪水排行闻名,译者注)
Indeed(ed招聘网,2004年成立于美国,是一个专门提供招聘信息的垂直搜索引擎,也是世界目前最大的招聘搜索引擎。此网站致力于改善网络求职体验,力争为求职者提供最全面,最精确的招聘信息,每日从数千个招聘网站,报纸,求职机构,公司网站等聚合几千万条招聘信息。求职者无需单独访问各个招聘资源,只需要登陆Indeed便可以浏览所有职位。不过Indeed本身并不接受简历投递和单独职位咨询,只是提供信息,求职者若对某条职位感兴趣,还需要联系具体招聘机构,译者注)。
职位描述和定义来自美国劳工统计局(BLS)或者维基百科。如果两处来源都没有某一职位的定义,我就从我能找到的最简明最权威的来源里搜索该职位定义。
这些数据按职位名称不同分门别类,职位排序根据对其内容复杂程度的客观评估排列,由简单到复杂,数据收集时间是2017年4月。
每个词条都有一个定义,每个数据来源都有提供该职位在美国的平均薪资和变量评估(也就是该评估薪酬的变化范围)
编码员(Coder)
定义:书写电脑程序的人或者电脑程序员(定义来自Dictionary.com)
BLS: 无
Glassdoor: $40,000
Indeed: 无
PayScale: 无
平均薪资:无(因为上述几家机构只有一家提供薪资信息,我认为不能以$40,000作为均值)
变化幅度: 无
注:我通常都会避免使用像Dictionary.com这么low的网站的内容的,但是这个职称的定义实在太简单了,用用它们的定义也无妨。
程序员(Programmer)
定义:创造、修饰和检测代码、格式和可使电脑程序运转的文本,他们的工作往往需要按照软件开发人员和其他人的说明或者要求展开。(定义来自美国劳工统计局)
BLS: $79,840
Glassdoor: $65,806
Indeed: $74,832
PayScale: $60,842
平均薪资: $70,330
变化幅度: 中等,在$20,000以内
开发员(Developer)
定义:开发软件的个人或公司(定义来自Merriam-Webster)
BLS: 无
Glassdoor: $75,441
Indeed: $91,730
PayScale: 无
平均薪资: $83,585.50
变化幅度: 无. 根据两个数据统计得出的变化幅度是$15,000
注:很多人指出“developer”这个词还可能指的是房地产的开发商,因此我们很难确定我们在这些资源网站上找到的数据是否有意义。
前端开发员(Front End Developer)
定义:前端开发人员是电脑程序员的一种,负责编码和创造软件、应用或者网页的可视化前端元素。他们创造的电脑元件和特征,可以由终端用户或客户所见和使用(定义来自Techopedia)
BLS: 无
Glassdoor: $70,000
Indeed: $102,258
PayScale: $67,743
平均薪资:$80,000.33
变化幅度:很大,范围在$35,000以内
网络开发员(Web Developer)
定义:设计、创造和修饰网页。分析用户需求,执行网站内容、图像、绩效,拓充容量(定义来自美国劳工统计局)
BLS: $66,130
Glassdoor: $66,238
Indeed: $77,812
PayScale: $57,702
平均薪资: $66,970.50
变化幅度: 较小,范围在$10,000以内
全栈工程师(Full Stack Developer)
定义:全栈工程师是指那些对前端和后端技术处理游刃有余的人。具体来说,这些人会使用数据库、PHP, HTML, CSS, JavaScript,甚至还会将Photoshop的设计转化成前端代码(定义来自George Fekete on SitePoint)
BLS: 无
Glassdoor:无
Indeed: $110,796
PayScale: 无
平均薪资: 无.
变化幅度: 无.
注:有人质疑到底能不能找到这样的人胜任这种职位,因为这个岗位要求候选人要在网页技术的几大不同层面都成为专家。我们看到只有Indeed一家提供了该岗位的薪资信息,似乎互联网行业真的不常有这样的岗位。
软件开发员(Software Developer)
定义:开发、创造、修改通用的计算机应用软件或者专业化的实用程序,分析用户需求,开发软件解决方案(定义来自美国劳工统计局)
BLS: $100,080
Glassdoor: $85,000
Indeed: $90,056
PayScale: $69,083
平均薪资: $86,054.75
变化幅度:很大,范围在$30,000以内
软件工程师(Software Engineer)
定义:软件工程师需要将软件工程的原则运用到设计、研发、维护、测试、软件评估和使任何含有软件的电脑得以运行的体系当中。(定义来自维基百科)
BLS:无
Glassdoor: $95,195
Indeed: $100,532
PayScale: $80,825
平均薪资: $92,184
变化幅度: 中等,范围在$20,000以内
注:按照维基百科一贯的风格,这个定义看起来还是有点绕。但是如果不看“软件工程原则”这部分,定义还是有借鉴意义的。
以上几乎就是全部和编程与计算机相关的职位名称了。但是我接下来还想再介绍一些关于各种“高级”,“初级”和“架构师”等职位,尽管这些职位不是主流职位。
初级软件开发员(Junior Software Developer)
定义:入门级工程师,有一定的开发实践和经验,需要更高级工程师指导和支持,不断提高水平。(定义来自James Turnbull on Kartar.Net)
BLS: 无
Glassdoor: $60,000
Indeed: $65,540
PayScale: $57,607
平均薪资: $61,049
变化幅度: 很低,小于$5,000
高级软件开发员(Senior Software Developer)
定义:有超过同龄人的较深的专业知识;领导或指导其他开发员的开发员
BLS:无
Glassdoor: $120,000
Indeed: $103,594
PayScale: $99,935
平均薪资: $107,843
变化幅度: 中等,范围在$20,000以内
软件架构师(Software Architect)
定义:软件架构师是软件专家,制定高端设计决策和技术标准,包括软件代码标准,工具和平台等(定义来自维基百科)
BLS: 无
Glassdoor: $118,593
Indeed: $120,513
PayScale: $120,053
平均薪资: $119,719.67
变化幅度: 很低,小于$5,000.
薪资
按薪资从低到高的工作职位是:初级软件开发员,网页开发员,程序员,前端开发员,开发员,软件开发员,软件工程师,高级软件开发员和软件架构师(编码员和全栈工程师缺乏数据)。由于BLS可能拥有最大和最不偏倚的数据集,因此我粗体显示了BLS数据可用的职位。 顺便说一句,当单独考虑BLS数据时,列表的排序是成立的。
但是这些数据不能全信,理由如下:
我无法访问原始数据集。 我不知道这些数据集的大小或用于计算平均值的算法。 我无法获得人口统计数据,所以在这里不考虑像种族,性别,方向和职业等重要变量。如果数据集的大小和多样性已知,那么分析结果将更准确。
Glassdoor和Indeed本质上是求职平台,其拥有的数据集不是公共数据集。他们的数据是基于自愿的信息:员工自己填写的工资和各个企业的招聘贴。这使得它很容易出现不答复偏差以及其他形式的调查偏差。
PayScale,Glassdoor和Indeed是私人公司,他们的数据不是开源的。任何私人公司都对其股东负责,而不是对普通公众负责,因此可能会受到激励而收集和计算数据,从而增加产品对客户的价值。 例如,在Indeed上张贴工作的雇主可能更喜欢该网站报告较低的平均薪资数据,这样一来他们的薪水看起来就更具竞争力。Indeed可以通过将营销重点放在生活费用和平均工资较低的地区来实现这一点,这会使其自报的薪资数据向低端倾斜。我不是说他们一定这样做,但是他们这样做是合法和有利可图的
开发员和软件开发员的平均工资差别大约为3千美元,这可能不具有统计意义。 另一方面,软件开发员和软件工程师之间的差异是6千美元,这可能是有意义的。薪水的最大飞跃是从软件工程师到高级软件开发员,相差约15.5万美元。
在我看到的措辞中,还有几个细微的差异。例如,高级软件工程师赚的钱可能比高级软件开发员多一点,而高级或首席软件架构师的薪资也高于软件架构师。但是这应该足以洞察总体趋势。
定义
薪资背后:这些职位之间质的区别是什么?
首先,要避免从事一些职位(或者说至少要谨慎):
编码员是我在Glassdoor看到的薪水最低的职位,甚至比初级软件开发员还低。这个低薪给得很有道理。首先,编码员这个称呼太自吹自擂了,这就像一个普通建筑工人自称是行家里手或者一个初出茅庐的医生自称是妙手神医。 “代码”一词更倾向于做名词使用,它是用来实现目标的工具。如果我公司一个职位的候选人自称为编码员,这会让我觉得他们喜欢被告知要做什么以及如何去做——也就是说,他们会写代码,但是他们不会做出决定,不懂与人互动或提出改进的方法。更糟糕的是,一个为编码员创建工作岗位的雇主,可能并不是在寻找为复杂问题设计完美解决方案的,他们可能对软件的概念只有浅薄的理解,并且想雇用最便宜的人“构建一个非常简单的应用程序”。
全栈工程师似乎在问一个问题:我擅长什么?正如我所提到的,人们往往不相信在每个方面都是专家的候选人。 一个普通人根本无法什么都懂, 更何况是联网技术的每个方面(比如说JavaScript,REST,ASP.NET和SQL Server)。 当然,这些是你掌握的堆栈技术,但是别人的堆栈可能包括Dart,Falcor,Python和Couchbase。 你不是一个全栈工程师,充其量你是一个愿意学习一些新技术的普通开发员。
(计算机)程序员是一个被“恐龙化”的术语,还留着象牙塔里穿着衬衫和领带的怪胎的刻板印象。这个词的真正含义是知道编程语言的人,编程也曾经是一种罕见的技能(而且需求量不多)。 但现代软件构建不仅仅要求语法和词汇等编程的基本领域,因为现代软件不仅仅是一个命令行界面,而且还包括软盘上的一组数据库文件。应用程序必须是简洁明了,易于访问,用户友好,方便快捷,最重要的是具有竞争力。 而纯粹的“程序员”作出的产品则不满足上述几个要求中的任何一个。
如前所述,开发员是一个不必要的模糊职位。如果你的工作是建公寓,那么你就读错文章了。如果你的工作涉及计算机代码,你应该自称为软件开发人员。 用代码构建的任何东西都是软件,所以这种岗位更重要的是清晰的逻辑而不是数量的堆砌。 而且,根据网上信息,它提高了你的市场价值约2.5万美元
前端开发人员是一个非常不稳定的职位。 它在所有职位中薪资变化最大,而且我听说它的定义是相互矛盾的。对于一些人来说,前端开发人员是指知道HTML和CSS但不懂JavaScript的人; 对于其他人来说,前端开发人员是对JavaScript和其最受欢迎的框架和库有深入了解的人。 在我看来,解决方案就是称自己为JavaScript开发员(如果这是你通晓的领域的话),并且只要您知道HTML和CSS,就不要自称自己是干的是什么职位,认真地去学一门编程语言吧。
其余的职位语义上有所不同,但并不一定表示哪个更优于另一个。你应该确定哪一个最能描述你的职业生涯轨迹
软件开发员和软件工程师在许多方面都是相同的。两个职位都要求知道在各自领域的最佳实践,使用多种技术游刃有余,并具有可迁移的技能,且能够识别和编写任何语言和代码。这两个职位还要求能够做出关于软件设计和实现的合理决策,并愿意参与编程代码之外的软件生命周期。开发员和工程师是富有创造力,思想敏锐,知识渊博的人,每次讨论产品时都应该又他们的一席之地。 “工程师”比“开发人员”意味着更多的资历和精确性,所以年轻的开发人员如果自称为工程师,就会有自命不凡之嫌。考虑到他们之间的平均工资差距只有大约6千美元,你也许可以在这个职位上努力一番。
如果说网络开发员这个职位不像前端开发员那么危险,那么它至少也算是一个模棱两可的职位。我曾经看到关于这个这个术语的定义:“一个建立包括服务器端在内的网络应用程序的人”,或者只是“一个懂JavaScript的人”。但是,对于业内人士来说,这个术语还不够准确。这种定义对于一个只想去“让我成为一个网站”的自由职业者来说可能更完美一些。大多数个人和小企业主不了解前端和后端的复杂性,如果他们聘请了一名开发人员,那就是为了创建一个目的单一而又引人注目的网站,并将在Google搜索结果中显示出来。 我想网络开发员正是他们要找的人。 如果您不是搞房地产的承包商,软件开发人员可能会更有效地描述您(并给您平均工资将近$ 2万美元)。
初级和高级这两个前缀让工资有很大的差异。一般来说,你在业内头几年是初级开发人员,直到几年后你才是高级开发人员。但大多数开发人员都认为,从初级开发人员到开发人员,从开发人员到高级开发人员,与您的职业生涯的长短关系不大,更多与您的谦逊,领导力,能力多样性和经验有关(特别是在您带领下出现灾难性失败的次数)。
软件架构师是这个清单中薪水最高的职位,理由很充分。它代表了高标准,在整个行业有一个稳定的定义。软件架构师是最终的技术资源,他们曾经在该领域深耕多年,阅历丰富,他们几乎可以看到未来。在我工作的公司,企业架构师与CTO的地位相同,这是一个需要高度责任心而且很受人尊重的职位。你可能已经知道你适不适合这个岗位了。
我没有深入调查的另外一个职位是xx开发人员或xx 工程师,其中xx是特定的语言,框架或技术。例如,我可以称自己是JavaScript开发人员,AngularJS开发人员或.NET工程师,这将使我擅长的领域变得模糊。我会根据自己的职业目标选择其中之一,或者将其中的两个结合起来,例如 AngularJS /NET开发人员。 每一种xx开发员都会增加这篇文章的长度,这已经远远超出本文的初衷了。但在我看来,这个岗位是最适合懂编程的人来做的。 当然,如果您觉得自己不熟悉特定的技术,软件开发人员是完全可以接受的选择。
令人尴尬的是,我早在开始研究这个主题之前就已经写好了自己的简历,我在简历上说我是一个完全堆栈开发员,现在我要马上改回来。
我希望我提供的数据是有价值的。如果你还在探索自己的职位,我祝你好运。
原文链接:https://dev.to/isaacandsuch/choosing-a-job-title-for-people-whocode
编译组出品。编辑:郝鹏程