问题描述
在DevOps领域的一个评论中,提到了这样一个问题:“为什么厨师是厨房的负责人,但全栈开发人员通常不是开发团队的领导,这是另一个问题的话题。” 鉴于这里的假设是正确的,为什么会是这样呢?我们是否在整体改进和进步方面还没有达到目标,或者这是经济上的无稽之谈(或者,假设不正确)?
解决方案
请注意以下操作可能存在不同的观点和解释。
误解角色与专业知识的差异
这个问题的根本误解在于混淆了“厨师是厨房的负责人”这一独特的领导/负责人角色(在法语中,“chef”字面上意味着首领/负责人/领导者)与填充该角色所需的专业知识。相比之下,全栈开发人员只是一种专业知识,而不是一个独特的角色。
就像要成为一名厨师,必须在厨房的每个其他职位上有经验一样,全栈开发人员的专业知识涵盖了前端、后端等团队产品所需的每个其他更专门的专业知识。这可能是评论中比较的起点。
规模问题
规模在这里很重要。在一个大团队中,领导职位的要求并不一定是技术专业知识。这就是为什么在软件开发中,团队领导的角色通常是管理职位,而不是技术职位。这可以看作是明确的劳动分工示例。
在一个大厨团队中,可以有多个合格的人来担任厨师的角色,但实际上在任何时候只有一个人可以真正担任该职位,这里的“厨师”实际上指的是角色,而不是专业知识。同样,一个厨房中可能有许多类型的厨师,比如在邮轮上的厨师岗位。
小团队和资源匮乏的情况
在资源匮乏的小团队中,如果团队领导必须从唯一的全栈开发人员和一个或多个经验较少的人中选出,那么很可能全栈开发人员将成为领导,就像在一个小厨房中唯一有资格成为厨师的人一样。
管理与技术专业知识的区别
要明白领导不仅仅与特定技术有关,更与深刻理解团队编写软件以解决的问题有关,以及拥有出色的人际技能:指导、解决冲突、自我认知等等。那些认为领导只与技术能力有关的人,至少在这些方面存在缺陷。
技术专业知识的广度
此外,让我们坦率地说——绝大多数“全栈”开发人员实际上只熟悉JavaScript,甚至只是在将预先编写好的框架应用于已知问题(如内部网或购物车)的上下文中熟悉JavaScript。一个精通C++、主要关系数据库管理系统或类似传统技能的人可能不会对此感到印象深刻,并且不会从认为自己是堆栈中所有技能的大师的人那里接受领导,除非这个人放下自己的自我,采用更现实的职位。
结论
在实际情况中,团队的领导角色与技术专业知识之间存在差异。在大团队中,领导的要求可能更多地集中在管理和人际技能上,而在小团队中,领导可能需要涵盖更广泛的技术专业知识。尽管全栈开发人员拥有多方面的技能,但领导需要更多的能力,包括团队合作、冲突解决和问题解决等技能。