23

我的组织一直在尝试引入更多“敏捷”方法。我们已经尝试了一段时间的 Scrum 方法,并且团队中的大多数人或多或少地适应了它。我喜欢它作为一个整体,但我担心该方法的一个潜在的严重影响:由于团队始终专注于功能和积压项目,并且测试人员与整个开发过程更加集成,似乎技能组合正在成为模糊,人们对个人能力的尊重越来越少。

我们的一些开发人员在服务器端技术和重量级数据供应的优化方面表现出色。其他人则投入了大量的职业来学习 GUI 技术,并对用户和应用程序的可用性有了基本的了解。两种技能都不比另一种好,但它们肯定是不同的。

这是 Scrum 过程的必然结果吗?由于团队中的每个人(据我所知)都为满足手头的下一个功能/要求、待办事项或测试目标做出了贡献,因此基本理念似乎是“任何人都可以做到”。根据我的经验,这根本不是真的。大多数工程师(开发人员、测试人员等)都有他们多年来磨练出来的特定技能,而在我看来,Scrum 方法往往会贬低他们以前受到尊重的那些能力。

这是一个澄清的例子:

如果服务器端数据配置发生技术突然变化,并且冲刺的待办事项列表中的每一项都基于这种新变化,那么 GUI 开发人员(他们可能还没有时间适应新技术)可能无法为冲刺做出贡献。至少,他们需要投入时间来提升,然后他们的代码会因为缺乏经验而受到怀疑。

我理解快速发展的必要性以阻止“角色孤岛”,但这并没有贬低一个基本现实:人们根据需要、他们的兴趣或他们的经验发展技能。当人们认为他们的位置是一种“插入能力”(例如,我们可以“插入”任何人来完成这项特定任务)时,他们似乎就没有那么积极了。Scrum 如何解决这个问题?如果没有,是否有人在采用 Scrum 方法时解决了这个问题?

4

9 回答 9

16

简短的回答是强调“”!Scrum 不会模糊或贬低专业化所需的技能。Scrum 不提倡泛化。

长答案是,在 Scrum 中,最重要的是让工作“完成”。团队作为一个团队(而不是单个“明星”的集合)根据需要进行协作,以完成工作。不管需要什么——不管他们想要什么(Scrum 是关于自我管理、自我激励的团队,对吧?)。

这意味着一个 Scrum 团队可能由几位专家组成,他们主要从事他们擅长的工作(DBA、平面设计,甚至技术作家)。作为一个整体,团队应该具备满足要求所需的所有技能。这与说每个团队成员都必须具备上述所有技能不同。

话虽这么说,但通常是成员自己通常希望除专家之外的成员至少具备与其专长不同的技能。另一张海报已经提到斯科特安布勒的“普通专家”。当某类工作太多、专家缺席时,这对团队有帮助,当成员真正想获得专业以外的经验时,这对团队有帮助。

鉴于团队是自组织的,如果由于某种原因专家发现自己处于 sprint 的中间,在他的专业领域没有任何工作要做,最好的处理方法就是简单地询问专家他想做什么做。让团队决定。专家可以决定在他的其他适当领域提供帮助,为下一个冲刺做 POC,通过修复一些长期被遗忘的技术债务来“支撑”防御,或者擦亮正在工作的成员的鞋子。

是的。我不知道这是不是长的答案。但这绝对是一个很长的答案。:-)

于 2009-05-12T19:22:40.647 回答
12

Scrum 的重点是让开发人员自组织。我们在我所在的地方使用 scrum,并且工作会根据一个人的关注点被动排序。我们不是故意用图表和列表来做的,它只是发生了。我们都知道谁最擅长什么,或者他们的主要/次要重点是什么。如果“主要”人需要帮助,他们就会让具有次要关注点的人/人提供帮助。我们确实有很多任务不一定符合我们特别关注的重点,但你总是知道该向谁寻求帮助。

对于您的示例-我不知道如果您说有 3 个服务器人员和 5 个 gui 人员,您是否希望在该 sprint 中完成所有工作(如果服务器人员 + 其他人的一些帮助不是足够)。sprint 的工作方式应该是,从优先列表中,开发人员选择他们认为在 30 天的时间内可以完成的工作。如果这意味着 GUI 人员需要 2 天的服务器端培训才能提供帮助,那就是它的意思。除非他们可以做的事情也排在首位。冲刺任务不应该由管理层规定为伪截止日期。

如果您有一个 Safari 帐户,那么其中一个发明 scrum 的人会写一本有趣的案例研究书。

于 2009-04-10T18:18:05.967 回答
3

我作为 ScrumMaster 工作了大约 18 个月,并与两个不同的团队一起工作。我最初预计会遇到您提出的潜在问题,但事实并非如此。我通常观察到的是,当人们找到适合自己的角色时,团队会演变成专家和通才的混合体——他们可以享受并获得成功。这是工作中的自组织。我从来没有遇到过我们的专家无所事事的情况。

如果确实发生了这种情况,我希望它会在 Sprint Retrospective 中作为一个问题提出,并且团队将讨论如何改善这种情况。最明显(也是最残酷)的结论是改变团队组成。

于 2009-04-24T06:30:39.390 回答
2

我不确定为什么技能组合会变得模糊。在敏捷世界中存在相当多的混乱。Scrum 是一个项目管理过程,而不是软件开发过程,不应被视为一个过程。工程师必须遵循他们自己的方法,如 TDD 或极限编程,以增加他们自己的敏捷性。

在 scrum 中什么都不会消失。

PM 仍然是文档,架构师仍然在构建他们的组件。唯一的问题是他们只是将一些重大决定推迟到更负责任的时间点。开发人员仍应遵循SOLID 原则等最佳实践,以便在功能更改时以一致的方式进行重构。

于 2009-04-10T18:41:23.073 回答
2

我认为 Scott Ambler 在http://www.agilemodeling.com/essays/generalizingSpecialists.htm中非常彻底地解决了这个问题......

他的泛化专家概念正是集体所有权/Scrum 团队所要求的,对我来说完全有意义。

但在现实生活中很难实现;-)

于 2009-04-21T11:23:45.587 回答
1

如果您出于任何原因(“技术的突然变化”与否)发现系统在 sprint 中所需的工作量大于可用的工作量,那么您的调度就有问题。

一种解决方法是,正如您所建议的,您将其他领域的程序员加入其中。这工作的好坏取决于那个人的技能以及问题域的不同程度,但是将程序员视为可以根据需要外包出去的通用单元通常不是开发软件的成功策略。

但这仍然是一个调度问题。

于 2009-04-10T18:18:52.753 回答
1

Scrum 最好的地方就是技能确实有点模糊!关键是通过在团队中传播专业知识并让人们在他们的舒适区之外工作,不惜一切代价避免孤岛。

显然,这并不适合所有人。一些开发人员在他们自己狭窄的专业领域中很开心,这些人在 Scrum 过程中更多的是障碍而不是资产,而决心完成工作的全面和多才多艺的人通常非常适应它而且效率更高。

Scrum 的主要好处之一是让整个团队真正参与并投入到项目中,而不是解决他们自己的特殊任务,然后骑马奔向地平线。我声称对于大多数人来说,这是一种比传送带式瀑布流程更有价值的工作方式。

所以我建议大胆地接受技能的混合,让人们团结起来解决棘手的问题,而不是依赖专家的孤岛。由积极进取的人组成的团队的结果可能令人惊讶。

于 2009-04-21T06:24:57.647 回答
0

听起来这将导致更全面的开发人员,并允许那些在某些领域的专家继续贡献他们的专业知识。

我自己(还)没有太多使用 Scrum,但是根据你的描述,这些类型的团队会导致一个整体上更加全面的团队/组织——这不应该是任何团队的目标?

于 2009-04-10T18:03:03.350 回答
0

处理突然的变化是敏捷的一部分,这可能意味着有些人必须离开并学习新技能。当然,这更多地属于一般的敏捷哲学,而不是任何特定于 Scrum 的东西。可能存在一些极端情况,客户或企业决定通过引入新事物来改变世界,因此必须处理这些人的后续痛苦,但如果这是他们想要的并且开发人员被否决,那么就有只有几个选择:(坚持到底并尝试处理重大变化)或(退出并离开那里)。

虽然在某些情况下,专门从事某事的人可能能够更快地完成工作,但这并不一定意味着团队中只有一个专家是专家并且在该领域有足够的工作整个冲刺10人。那些不是专家的人是否应该根本不做这项工作,让那个人尽可能多地尝试通过?我不这么认为,但对于那些在某事上仍不擅长但仍在努力完成他们可以完成的事情的人来说,应该有话要说。

于 2009-04-14T23:45:12.247 回答