你会推荐在团队组成经常变化的组织中实施的极端编程实践吗?如果在一个极端的编程场景中,团队中途变得不稳定,你会推荐什么?谢谢。
5 回答
我建议首先解决团队波动的问题。如果你的办公室一开始就有旋转门,那么任何流程都不会运作得很好,我想说的是,使用一个更依赖于个人绩效和贡献的流程,而不是打算用于“如果可能的话,机器中的可更换齿轮”将使事情变得更糟。
结对编程可能会在这种情况下起作用,前提是您可以让一些人在身边足够长的时间,以便他们可以将他们的知识传授给团队中的新成员。然而,问题的一部分是你不能真正练习结对编程的“对等”部分,你最终会陷入隐含的高级/初级情况,只是因为一半的对不知道代码足够好。
大多数开发过程都依赖于一个相对稳定的团队,该团队确实非常了解代码库。如果你没有这个,你需要围绕这样一个事实设计一个流程,即你将与那些试图掌握代码库的开发人员在他们试图提高生产力的同时进行处理。
程序员配对成为必须。工程师实践 (XP) 和管理实践 (SCRUM) 能够以可持续的速度交付。对于一个工作团队,您应该强调的第一件事就是将其保持在一起。如果这不可能,编程配对就更重要了!
对于瀑布,一个项目开始,人们聚集,然后他们必须经历Form,Storm,Norm然后Perform。一旦团队学会了如何一起工作,项目就会结束,工作团队就会解散。然后再次重复该过程。你看到问题了吗?谁有这么多钱,可以继续为团队支付Form,Storm,Norm,然后一次又一次的Performance?
话虽如此,每个团队都会看到团队人员来来去去。通过程序员结对,您可以将新人带入团队,他们几乎会立即生效。通过配对,他们将很快学习业务领域、应用程序代码和工程实践。
我们选择了一个 4 对的团队,并为团队增加了 3 对新对。我们将所有新开发人员与经验丰富的团队成员配对。我们给了自己 30 天的时间让新成员跟上进度。团队完成了所有可交付成果。您能否想象在瀑布团队中将 6 名开发人员添加到由 8 名开发人员组成的团队中。团队在同化新团队成员时几乎陷入停顿。
最重要的是,保持一个职能团队在一起。如果无法做到这一点,请有效地利用配对来让新朋友快速加入。
High test coverage and a continuous integration can help ensure that new team members do not break what was previously implemented. Pair programming is the fastest way that I've found to help someone get familiar with a project. Planning meetings, short iterations, and tracking velocity over those iterations could also help new developers easily bite small pieces that are more easily managed.
当团队组成不稳定时,什么过程会起作用?至少在 XP 中,使用结对编程,您希望不止一个团队成员熟悉代码的所有部分。FWIW,我不练习 XP,我只是不知道使用 XP 会如何加剧这个问题。
结对编程应该有助于让新的团队成员加快速度,以及在团队房间中进行渗透沟通。开发人员和客户测试的广泛套件应确保新团队成员不会破坏现有功能。高代码质量应该帮助他们更快地找到自己的方式。
话虽如此,易变团队确实是一种强大的反模式。为什么你首先拥有它们?