首席开发人员在敏捷团队中的作用是什么?


42

在非敏捷开发团队中,首席开发人员通常

  • 设置标准(编码等)
  • 为团队研究新技术
  • 为团队设定技术方向
  • 对事情有最终决定权
  • 设计系统架构

但是,敏捷团队的工作方式有所不同:

  • 敏捷团队将依靠紧急设计,而不是预先设计
  • 敏捷团队一起设计,而不是由一个人决定设计
  • 敏捷团队决定自己的技术方向,这是交付项目的最佳选择

这将使敏捷开发团队中的首席开发人员离开哪里?在敏捷团队中是否可能有首席开发人员?敏捷团队是否需要与领导不同的职责?


在回答Matts的最后评论时,我要补充说,首席开发人员应该是那些会影响系统许多组件的关键体系结构决策者。同样,他是负责这一责任的人,如果出现问题,应该改变主意。
user2236631 2014年

Answers:


46

敏捷并没有改变首席开发人员的运作方式。无论采用哪种开发模型,他们都应让团队的其他成员参与系统体系结构决策和技术指导。

通过命令发布决策是任何开发团队运行的糟糕方式。敏捷只是使从团队其他成员手中获得收益的过程变得更加明确,因此首席开发人员应该一直这样做。

仅仅因为Scrum方法论中没有固定的开发人员角色,并不意味着经验最丰富的程序员的意见并不是最受尊重的。敏捷并没有让每个人都忙于自己的事情,然后试图将其整合在一起,仍然需要设定一个统一的愿景和方向。


您是否可以澄清一下“按法令做出决定是任何开发团队运行的糟糕方式”的含义?我同意您文章的其余部分,但我仅以某些方式同意上述声明,而其他方式则不同。例如,如何决定在数据库层上使用SOA?难道这不是一项法令,还是没有人拥有最终决定权?我问,因为我是团队负责人,遇到了这种情况。我打了个电话,不要根据业务需要使用SOA。没有足够的时间允许所有开发人员讨论/争论每一点。
布莱恩

@Brian做出建筑决策将是一个冲刺中的故事,可能是专门用于特定成员的一个故事,但与其他任何故事都相同。像其他故事一样,它也应该接受同行评审。时间争论是胡扯,如果您碰巧错过了X或决定尝试Z,使团队中的其他每个人都不熟悉您,结果是将花费更多的时间进行开发,即使是一整天的设计争论也相对来说是微不足道的。一个简单的会议/评论说:“我之所以选择A,是因为X,Y,Z。” 可能需要花费一个小时,并使其成为一项协作工作。
Ryathal 2014年

30

在一个敏捷的团队中,每个人都应该将自己的自我抛在一边。

如果敏捷团队中的一个成员比其他成员具有更多的经验,则可能会发生的情况是,经验丰富的成员将参与大多数代码审查,并且人们在制定团队决策时通常会尊重该人的经验。

因此,“领先”开发人员将继续“领先”,但这是其经验的自然结果,而不是其头衔的强制性功能。

那是一个理想的世界,人们可以将自己的自我抛在一边。祝好运!


不会同意。我经常看到开发人员自己做出的轻率决定,结果很糟糕,只是因为领导者不在场而开发人员对这种情况不习惯。我告诉你放牧猫。
andrew.fox

20

除了Ryathal的答案

您谈论的是紧急设计和团队指导,就好像它们是从团队中完美和谐地融为一体。一群人,一群程序员特别有冲突。作为团队的领导,您在敏捷团队中的工作更多是裁判或催化剂而不是瀑布。例如,当团队在使用哪种设计方面存在冲突时,您将确保人们有平等的发言权,并坚持就优劣进行争论。当路径不清楚时,您最终将成为团队将使用哪个提议解决方案的仲裁者。

这是领导最重要的职责之一,但是要使一群人组成一个团队,还需要做很多其他事情。您仍然需要就良好的编码树立一个榜样,并经常实施(直接或通过创建一种文化来做到这一点)。您需要促进所有团队成员之间的交流,因为每天站立一次并不会减少交流。

您忽略的另一个重要事项是会议。将整个团队带到团队需要与业务人员,其他技术团队等进行互动的每次会议上都是不切实际的。作为团队的领导,您是团队的代表。您去参加会议,以便他们可以留在办公桌前做事。您是联络点,这样他们就不会被直接路过的人打断。然后,您将努力从外部世界获取信息(其他团队正在做什么,敏捷团队的下一个冲刺是什么样子,该公开请求的状态如何等),为他们精简下来并进行交流。

简而言之,您就是润滑剂,以确保它们可以平稳运行。


1
这在“带时间限制”的会议中尤其重要,这意味着会议或特定的讨论将不会持续超过X分钟。最后,有人做出了决定并保持流程前进。这可能是系统体系结构和相关讨论的首席开发人员。
克里斯(Chris)

1
说得好。首席开发人员还应该适应改善他们所在团队的经验和了解,其长期计划不仅是成为“领导”,而且还要成为同行团队的成员。
大卫“秃头姜”

您所描述的是一个ScrumMaster。
DBedrenko

6

您的非敏捷描述不会使您的敏捷描述无效。

敏捷团队将依靠紧急设计,而不是预先设计。

关于首席开发人员的定义,没有任何内容表明设计必须预先进行。他可以设定方向,但仍可以进行初步设计。这种设计肯定是新兴的。

敏捷团队一起设计,而不是由一个人决定设计

您对首席开发人员的定义并没有说他决定设计。尽管他可能拥有最终决定权,但只有糟糕的领先优势才能完全无视大多数队友的想法。另一方面,只有一个贫穷的团队会完全忽略首席开发人员的想法。

敏捷团队决定自己的技术方向,这是交付项目的最佳选择

同样,这并不意味着领导者最初不会设定此方向。领导是这个敏捷团队的一部分。即使在不敏捷的环境中,当已知的可行性变得不可行或提供新的信息使该方向无效时,只有不好的领导才能继续向该方向前进。


6

这个问题还有其他几个问题。您认为有什么资格告诉其他软件工程师团队做什么?是你的经验吗?是老板给你的有趣的小标题吗?是你的自我吗?您在公司任职?是您的“煎饼”吗?你的风格?” 您的“领导能力”?

敏捷团队不会向彼此分发徽章或帽子,说:“恭喜,您是我们的超级天才-您是唯一允许进行超级秘密的双重天才工作的人。” 相反,重点是手头的工作。如果您确实更有经验,那么这种经验应该显示出您的设计将工作推进到完成的程度。您的自选任务(卡片)应反映您最擅长的领域。另一方面,如果某个刚从大学毕业的孩子有更好的主意,并且比大约40年的资深人士浮出水面更适合背景为什么我们会选择较差的设计呢?我们的工作场所不是理疗办公室-它们是我们来打造伟大事物的地方。

这就引出了另一个问题:谁来决定“更好”是什么意思?答案:利益相关者团队。这意味着开发人员,需求人员,测试人员,业务人员等都是相关事物的构建者和用户。如果您有一个好主意,则最好能够证明它为什么更好。如果您不能做到这一点,那么团队就没有理由相信您的想法更好。敏捷鼓励精英。

那么,“开发团队负责人”怎么办?敏捷?没有什么比他们更能兑现这个名字了,他们实际上能够比团队中的其他人更好地生产更好的软件。否则,没有理由称他们为“领导”-它只是一个小徽章或滑稽的帽子,毫无意义。许多人发现这种威胁。他们觉得自己一直在为徽章或滑稽的帽子“工作”。好的开发人员不会为滑稽的帽子工作。他们致力于开发出色的软件,并且计划一直这样做直到他们崩溃为止-他们的目标是每天变得更好地开发软件。如果不是您,也许您可​​能想研究项目管理。您可能会更快乐。


为“手边的工作” +1。我同意专注于为您现在必须提供的最佳解决方案。这与谁提出这个想法无关。
Kwebble 2014年

如果按照您的要求,开发团队领导对SCRUM团队所做的所有事情都是“生产比团队中其他人员更好的软件”,那么他们所要做的只是一个没有明显责任的开发人员。您的答案是否暗示了这一点?否则,这真的无法回答开发领导者如何适应SCRUM团队的问题。
DBedrenko

是的,它确实。他们是一名优秀的工程师,因此他们有担任工程师的角色(从技术上讲,是“团队成员”)。什么别的,他们会是什么?
Calphool

3

根据我在敏捷方面的经验,开发团队作为一个整体所承担的责任比您的示例所暗示的要少,这使首席开发人员和架构师可以协调高层设计的选择,而将较低层次的设计交给整个敏捷团队。

因此,首席开发人员仍然负责系统架构和技术选择。这非常重要:尽管敏捷鼓励涌现的设计和重构,但这应该在代码对象级别进行。该系统作为一个整体需要有前期设计和刚度更高水平的其他项目可能会变成一个不协调的混乱。

在我们的项目中,首席开发人员要求选择技术,并设计系统组件之间的交互方式。敏捷计划会议的重点是如何在他的更高权限范围内设计这些组件。顺便说一句,这可以避免其他麻烦的计划会议的范围。

他还充当了最后手段。当个别程序员遇到无法解决的问题时,他们将发挥领导作用,而将问题修复的最终责任则由他来承担。


这与我的经验相似,但是我确实认为,“徽章”和“帽子”比必要的多。优秀的开发人员对设计的看法与建筑师对设计的看法之间几乎没有区别。
Calphool 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.