职业软件工程师的世界里有着各种各样的头衔和等级。老板们用具有各种头衔代表各种不同技能的人搭配组建开发团队,在招聘员工时用它们来吸引相应级别的求职者,用它来描绘诱人的职业仕途,用它来制定薪酬方案。然而,很多公司的各种职位头衔并不一致,使得这套官衔制度不是很容易理解,尤其是对那些年轻的程序员而言。
有些非常严谨的老板喜欢将软件工程师的头衔等级定义的非常清楚,通常会是像下面这样:
头衔 | 阅历要求 | 工作职责 | 影响力范围 |
软件工程师副手 / 初级软件工程师 / 实习生 | 0 年 | 修补缺陷,开发次要功能 | 自身 |
软件工程师 | 1-4 年 | 开发软件功能 | 开发小组 |
高级软件工程师 | 4-8 年 | 模块 | 开发团队 |
首席软件工程师 | 8-12 年 | 产品,架构 | 公司 |
专家 | 12+ 年 | 各种产品,技术策略 | 行业 |
这种官衔制度通常在一些比较大的公司、比较成熟的开发团队里使用。
还有些老板喜欢用等级来评定头衔,听起来像电影的续集系列:
- Software Engineer I
- Software Engineer II
- Software Engineer III
- Software Engineer IV
- Software Engineer V
我想你不会感到意外,这些听起来很官僚的头衔跟美国劳工部制定的那些官衔很相似。
当然也有例外的情况,有些公司完全抛弃这些工作头衔等级的概念,把所有人都称作古老而又普通的“软件工程师”,完全忽略他们的经验和才能。这对防止公司内部象牙塔的形成很有效,使得年轻的工程师能够和老的工程师在同一地位上相互合作。然而,这种想法很难实施,因为它跟大多数人的传统(文化)背道而驰。它会让那些特别在意自己仕途上官衔晋升的人感到不舒服。
因为软件工程师的头衔并没有一个统一的标准,一个首席软件工程师进入一家新公司后得到的新头衔有可能不如以前的那么吸引人——尽管职责更重,影响力更大。
成熟的软件工程师更注重在一个新岗位上的机遇和挑战,而不是他们在LinkedIn上的身份描述。他们知道一名称职的招聘经理会知道每个公司都有自己的评级标准,不会因为看到简历上头衔的倒退而认为是降级。他们会注重程序员的自身技能,而不是以前的名片上的描述。
当你到一家新公司面试时是否会担心简历上头衔的变化?不,你真的不必担心。技术面试官更关注的是你的技术才能,而不是你的头衔。你在工作中的职责和影响力才是你面试时的亮点。所以,如果你在寻找新工作,找那些具有稳定商业模式,具有健康和活跃的团队文化的公司,不要在意他们给你的头衔,而要关注你能如何的培养技能和增长知识。这些对任何软件工程师都是最重要的资本,对那些招聘程序员的公司也是。