一、前言
高级软件工程师和初级软件工程师之间到底有什么区别?这俩头衔与“软件开发者”和“测试软件开发工程师”又有什么差别?这是一些相当令人迷惑不解的问题。
如果在过去和现在这些问题都让你感到困惑的话,在本文中我想尽自己的绵薄之力,为我自己也为你解除这个疑惑,并就这些头衔将如何影响你和你的职业生涯提供一些通用的指导。
二、职位头衔
2.1、为什么职位头衔不重要
因为不同的公司会有成百个各色各样的职位,即使是不同公司里的同一职位,在各个公司内部的含义也会大相径庭(在一家公司里,高级软件工程师可能是所有开发工作岗位的标准头衔;在另一家公司里,高级软件工程师可能意味着你是整个程序员团队的技术领导者。而在另一家公司里,高级软件工程师可能意味着你老了)。
因此,在这个疯狂的科技世界里,当你读到一个职位的名称时,不要对它看得太重。相反,读一读工作描述、关注一下薪水多寡,才是真正要紧的。
2.2、要尽力得到最好的头衔
你对头衔感到迷惑不解,其他人也是如此。没有人知道“软件开发者III”是否比“高级开发工程师”职位更高(人们会怎么做呢?头衔听起来是什么样人们就认为它该是什么样(是的,听上去很愚蠢,但是如果你能获得“软件开发高级总监”的职位,可能会比“初级开发者”给你带来更好的下一份工作,尽管实际上你可能在一家只有两个程序员的公司做着“软件开发高级总监”的工作))。
有没有想过为什么有人能获得“首席执行官”的头衔?很简单。他们玩“头衔互换游戏”——先在一家小到不值一提的公司获得首席执行官的头衔,然后一旦他们能在简历上填上这么一个头衔,他们就会换到一家更大的公司。
再说一次,我对头衔不太看重。不过,在谈判工作邀约的过程中,你至少需要考虑一下:通过谈判获取高级头衔可以提高你的威望。你不需要把这个因素置于其他因素之上,但你应该为一个更高的头衔争取一下。
当你得到升职机会时你也可以玩这个游戏,你甚至可以拒绝加薪,以升级来代替(“我知道你现在付不了我更多的钱,我明白这不在预算范围之内,但你至少能把我的头衔升级为最高机密密码司令官吧?”)。
2.3、一些常见的头衔
2.3.1、软件开发者
这个头衔的描述性很强,可以描述大多数程序员所做的事情——他们开发软件。
2.3.2、程序员
这个头衔非常简洁,它描述了工作的核心内容——我们编写程序(是的,我们开发软件,但是从技术上讲,你可以不用编程就能开发软)。
但绝大多数程序员似乎会因为被称作“程序员”而感到受到侮辱。“你不了解我们,伙计。”他们很执着。软件开发可不仅仅是编程。“我是一个工程师。我收集需求,与客户沟通和交流,我还要设计、构建、测试,把丑陋的泥灰塑造成优雅的雕塑。”是的,这些我都明白。但人家雇你做的主要工作就是编程序、写代码。
2.3.3、软件工程师
你有没有注意到:90%的软件工程师都是“高级软件工程师”?对这个头衔我觉得没什么,但是,如果电气工程师、机械工程师、结构工程师等人士听到这个头衔会觉得迷失了自我。
头衔只是一种称呼,唯一能为人们所敬仰的学术权威应该被称为成就。
2.4、需要避开的头衔
如果可能的话,我会尽量避免戴上这样的头衔——“初级……”,如初级开发者、初级软件开发者、初级软件工程师等(许多刚入行的程序员以为他们必须从初级开发者开始干起,但事实并非如此(“初级开发者”的职位通常需要一系列非初级开发者角色的技能,但薪酬要低得多)【如果你刚刚入行,还没有任何实际经验,你可能无法获得高级软件工程师的职位,但是没有理由让你连一个普通开发者的头衔都拿不到】)。
被冠以“初级……”角色的最大问题在于,如果你担任初级职位一年或者最多两年,你很可能会和普通开发者(没有被冠以“初级”头衔)做着同样的工作,但得到的报酬却可能会低得多。
因此,不要寻求“低级……”的角色,去找一些只需要很少一点儿工作经验或者你已经具备的某些专门技能但没有被冠以“初级”头衔的工作【实际上,找到一份没有被冠以“初级”头衔的工作要比找到一份“初级……”的工作容易得多,因为每一位刚毕业的大学毕业生都会去竞争“初级……”的工作岗位】。
2.5、大型科技公司里的头衔
与大公司打交道的时候,头衔往往要更正式一些。像惠普、微软、苹果这样的大型科技公司,都有一套正式的头衔以及与之相关联的薪酬标准。提前了解这些信息、提前了解这个体系的工作机制,将有助于你的谈判过程,还可以帮助你在公司里获得升职加薪。
假设你在一家大型科技公司找到了工作
《1》最有可能的是,你将申请到某一个职位,让我们假设为软件开发工程师;
《2》这个职位与一个级别相关联,级别决定了担任该角色的人的报酬、职责和通常的资格/资质(通常,这个级别还要被分配一个数字,如59。有些头衔,如软件开发工程师,可能与一系列的级别相关。例如,软件开发工程师的级别可能会从59到60级。在61级,头衔可能会变为软件开发工程师II。在63级,头衔可能会变为高级软件开发工程师);
《3》每个级别都有一个较低的薪酬范围和较高的薪酬范围,所以实际上级别比头衔本身更重要。如果你在这些公司中找到了一份工作,你就该争取拿到最高的级别,这样你的薪水也就可以达到最高;
《4》如果可以选择的话,争取要让级别高一些(而不是工资高一些),因为一段时间之后,同一级别的软件开发者工资水平上较低的更有可能获得加薪。因为大公司的人力资源部门倾向于让处于同一级别上的每个人薪水都接近;
《5》通常在这些大公司中,加薪只是工资增长,而级别不变,但晋升就意味着被擢升到更高级别;
《6》大多数大公司的工资水平都是机密,不过如果你努力搜寻的话还是可以找到相关信息的,而头衔与级别的进阶关系通常是由人力资源部正式发布的。通常,你也可以找到成为某个级别的“软件开发者”的一系列要求;
《7》你应该明确知晓你当前所处级别以上一级和以上两级的所有要求。当你满足了自己当前级别以上两级的所有要求时,获得晋升就容易得多了;
《8》你还会注意到,要想得到最高级别的头衔,你通常需要成为一个行业领导者,你的影响力需要超越你的公司。这就是我总是强调创建博客和打造你的个人品牌的众多原因之一;
《9》如果你想成为一个公司的“院士”或者其他类似的最高级别的头衔,那你就需要在软件开发行业内的某个特定领域里成为鼎鼎大名的人物。
2.6、关于头衔还有相当多门道
即使头衔本身在整个业界并不重要,但它们在某个公司里肯定还是会起作用的;
因此,对此我对你的最好建议就是:不必太过纠结于公司与公司之间职位头衔的比较,但是要努力弄清楚职位头衔在某个公司内部的真实含义,而且,更重要的是,要弄清楚工作岗位本身;
如果你真的不喜欢别人赋予你的任何职位头衔,你可以自己开一家公司,然后随便怎么称呼你自己都可以。
三、基本角色
尽管软件开发者可以被冠以很多不同的头衔,但在软件开发的技术轨道上,实际上只有五种不同的角色【大多数工作都是这些角色或者级别的一分子】。
3.1、测试软件开发工程师
在许多小型组织中,你找不到这个角色,但是像微软这样的大公司喜欢先雇用开发者作为“测试软件开发工程师”(Software Development Engineer in Test,SDET)。
测试软件开发工程师实际上也是一种软件开发角色,只不过不是在编写用于生产环境的代码,而是编写用于测试代码的代码,或者是用于工具上的代码(对团队来说,工具通常是让开发团队的工作更简单的东西)。
这一角色也可能被称为“工具开发者”或者其他类似的名称。你可以将此职位视为软件开发的支持型角色。
这个起点很不错,因为如果你致力于编写自动化测试或工具,你可以通过这份工作很好地理解测试过程,而且这份工作还可以全面塑造你成为一名更优秀的开发者。
3.2、初级/中级/高级开发者
初级/中级/高级开发者(Junior/Regular Size/Senior Developer)是标准的软件开发者角色。大多数开发者都属于这几类开发者。
在这里,你将编写代码、开发实际的产品。
3.3、团队主管或者技术主管
团队主管(Team Lead)或者技术主管(Technical Lead)是在软件开发者之上的一个台阶。
担任这种角色,你可能会带领一支开发团队执行一些管理和开发工作,例如,构建代码库的架构、评审代码、指导其他开发者。
主管通常也会负责对项目做出重要的技术性决策,也许还要负责面试开发者、分配任务以及其他职责。通常,主管的大部分工作仍然是编写代码,否则他们就会晋升成为经理。
3.4、架构师
担任架构师(Architect)这个角色的开发者可能不必再去编写代码了,但是仍然会大量参与软件开发的技术工作。
架构师要设计整个系统、参加会议来决定技术架构,甚至要为某一项功能特性或者整个系统开发原型。
大型公司往往都有架构师的角色,尤其是那些需要大量设计和规划工作的大型软件系统。架构师可能要负责整个项目的技术指导和最终实施工作。
3.5、总监
总监(Director)这个角色在软件开发工作中极为罕见,有些人可能认为它并非属于开发者,但我决定还是把它罗列在这里,因为在许多组织中,软件开发者最终会以这个角色来终结自己的职业生涯。
有些公司把这个角色称为研究员(Fellow)或者技术院士(Technical Fellow)。
担任这个角色的软件开发者是某一领域内的杰出专家,领导研究工作,是公司智囊团的成员,或者参与非常复杂或者极高优先级的项目。
总监这类角色还可能涉及指导整个组织内的开发者的工作。作为软件开发总监,还要做出各种技术性和非技术性决策。
标签:工作岗位,软件开发,工程师,头衔,初级,实至名归,开发者,软件 From: https://blog.csdn.net/xiaochenXIHUA/article/details/145135687