程序员“封爵之路”:工程师、架构师和项目经理有何区别?
国外的软件开发行业,与国内环境略有不同。
编者按:CTO、项目经理、软件工程师……各种软件开发相关的职位琳琅满目,很多人并不清楚各个职位之间的共性和差异。需要清楚的是,国内的这些职位其实都是“舶来品”,大多是模仿硅谷技术企业而设立的。本文由外国专家撰写,详细分析了技术人员的职位职责和职业路径。需要注意的是,本文针对的是国外的软件开发行业,与国内环境略有不同。编译自medium原题为Software Roles and Titles的文章,作者Eric Elliott。
近来,我注意到在业内对很多与“软件”相关的职位存在很多角色和头衔方面的混淆,即使是公司创始人、招聘经理或者团队建设者都很容易分辨不清。今天我们就来谈一下,软件团队中各种职位的角色和职责分别是什么,以及哪些职位更倾向于涵盖哪些角色。
在深入研究这个问题之前,我想强调的是,每个团队都是独一无二的,某种责任往往会在不同时间段在各个成员间浮动,或由团队的不同成员共同承担。任何人都可以出于各种原因将责任委托给其他人,毕竟每个团队都有自己的运作方式。
如果你的团队不完全符合我接下来的描述,也欢迎交流指正。事实上,我认为确实只有很少一部分团队和特定软件工作者的角色能够与我们即将要探讨的内容完美匹配——相比于特性,这只是一个更倾向于平均化的通用框架。
我将从管理职称开始,按资历由深至浅地分析各种角色。不过开始之前强调一点,永远不要被你的职称所束缚。在我看来,
技能比职称重要;
持续不断有成果输出比死盯截止日期重要;
支持比责备重要;
协作比竞争重要;
总之,我喜欢以更高的责任来作为主动性的奖励。如果某位员工有主动的意愿和相应的技能去承担超过他们头衔的责任,我会更愿意去提拔他,这是一个很不错地培养潜力员工的机会。
下面进入正题。软件开发角色包括:
工程院士
CEO
CTO
首席信息官/首席数字官/首席创新官
工程副总裁/工程总监
首席架构师
软件架构师
工程项目经理/项目经理
技术主管/工程主管/团队负责人
首席软件工程师
高级软件工程师/高级软件开发人员
软件工程师
软件开发师
初级软件开发人员
实习软件开发人员
我们还将讨论这些角色与其他角色的关系,包括:
产品管理副总裁/产品负责人
产品经理
营销副总裁
注意:有时也会有“主管”或“总监”等头衔用来表示介于技术管理人员和“首席”之间的中层管理人员。 通常,“首席(Chief)”头衔表示一套比较高级的职称,高级管理人员通常会直接向首席执行官报告。 在非常大的公司中,“主管”或“总监”通常扮演着与高层管理人员类似的角色,区别在于他们是向相当于大公司中一个较小的业务单元的负责人(类似于这个单元内的CEO)进行汇报。不同的业务部门有时像独立的公司一样运营,完成自己部分的独立会计工作,拥有自己部门专门的财务人员等。不同的业务部门也可以有副总裁,商务运营部的工程副总裁”。
工程院士
“院士”是软件工程师成就的巅峰之作,它通常是为了表彰那些为计算机领域做出杰出贡献的人而颁发的,并且通常在工程师撰写一些畅销书籍,获得图灵奖,诺贝尔奖等奖项后颁发。换句话说,院士通常在组织外已经很有名,此时公司试图通过更有影响力的、值得敬仰的人来强化自身的品牌。
在我看来,组织不应该试图聘请“院士”角色。相反,我认为应该去找到最好和最合适的人,雇用他们。如果工程师具有相应能力,再授予这份头衔作为荣誉和奖励。
一位工程院士通常还会在公司担任另一个头衔。通常是CTO、架构师、工程副总裁等。他们能够领导、指导或作为组织其他成员的榜样和灵感。
CEO
首席执行官是组织中最具有权威的职位。通常情况下,他们为公司设定了愿景和目标。围绕着对于公司使命、战略和核心价值观的共识,CEO将每一位员工团结在一起。
一般来说CEO也是公司的公众形象,在某些情况下,还会成为品牌的代名词(例如,Steve Jobs与Apple,Elon Musk与Tesla / SpaceX等)
在某些情况下,首席执行官也是软件组织的技术创始人,在这种情况下,他们也经常担任CTO角色,并可能拥有运营,销售,战略和营销副总裁,帮助解决其他一些常见的CEO职责。当然,一家小公司的首席执行官经常顶着很多其他的头衔。
无论如何,如果要做出重要的组织决策,责任的核心就在于CEO。
中国观察