我的团队一直在尝试“敏捷”发布几个版本,但是作为大公司的一员并没有使它变得容易。我不会假装自己有答案,但是我可以分享一些观察结果。
按模块划分开发人员:
- 您需要注意,因为如果人们孤立地工作太多,您的团队就不会从技能和知识的共享中受益
- 如果人们过多地专注于自己的模块并且看不到更大的景象,那么计划会议和日常站立会变得非常沉闷。一旦人们感到无聊,他们就会开始进行检查,您将失去敏捷带来的很多好处
- 您可能最终会写得非常好一些组件,而其他组件则写得很好...没那么多。如果人们孤立地工作,那么您的高级人员将无法培训初级人员。
每个人都同时在同一个模块上工作
- 我们尝试过一次发布,当管理层决定他们将对整个团队实施敏捷时,这完全是他们的方式。这绝对是火车残骸。我们有一个由9名开发人员组成的团队,在一年内交付通常由1个开发人员完成的工作。(我可能在这里夸大了,但幅度不大)。
- 没有人觉得这里有呼吸室。那些不关心软件的人会感到宾至如归,因为他们是大包装中的一员,只是被小组成员稀释了。我们当中那些对软件充满热情的人感到绝对窒息,因为没有自由来移动或超越9个人所同意的范围。
- 所有的会议永远到了我想要开枪的地步。在同一个房间中有太多意见的人被迫使用相同的DLL。惊恐的事件。
- 在上一个版本中,我们决定尝试一些不同的方法
- 首先,将开发团队分成3-4个开发人员的较小团队。每个团队之间的工作都相对隔离,但是在团队内部,人们之间的协作更加紧密
- 使用这种方法,站立起来很快,而计划会议需要1-2个小时,而固定会议需要4个小时。
- 每个人都感到参与,因为每个团队仅讨论该团队的开发人员关心的是什么。
- 每个团队的技术负责人都会定期与其他技术负责人进行交谈,以确保整个项目步入正轨。
- 我们没有让人们成为特定模块的所有者,而是为人们分配了专业领域,因此,当我们首次启动该项目时,感觉就像人们拥有自己的模块一样,但是几个月后,开发人员将开始将彼此的代码视为区域开始重叠。
- 代码审查至关重要。这是我们有严格的代码审查策略的第二个版本,团队中的每个人都喜欢它们。当其他人修改某个代码时,特定领域的专家总是在进行代码审查。
- 通过代码审查,我们可以进行大量的知识共享,您可以看到我们团队的代码质量的总体提高。同样因为代码经常被审查,所以当人们进入别人的专业领域时,他们至少已经看过几次代码了。
- 每个团队的大部分人员都参与了设计评审会议,因此,即使他们从未看过代码,每个人都熟悉其团队负责的所有模块的一般流程。
- 我们已经完成了大约10个月的时间,感觉就像我们从隔离模块方法开始,逐渐演变为每个人在所有事情上所做的工作一样。但与此同时,没有人会感到局促或局限。为了确保他们仍然有一定的权威感,我们将他们留给了区域专家,尽管现在这大部分只是形式上的事情。
我们一直在做最后一件事,尽管还有很多改进的余地,但总体而言,当我们成为大公司的一员时,我们的整个团队非常高兴。
我们在“敏捷”的前3次犯错的一个重要事情是,每一次都告诉人们如何工作以及如何工作。这是让您的团队对项目完全失去兴趣然后让您真正陷入困境的第一方法。
相反,请尝试相反的操作。告诉团队,他们可以做他们想做的任何事情,而作为经理/领导者(如果您是一个人,如果不让您的经理重复这些话),您的工作就是确保他们尽可能多产且快乐。流程不是一件坏事,但是当流程意识到需要一个流程,而不是相反时,流程应该可以帮助您的团队。
如果您的某些团队成员更喜欢孤立工作,请(一定程度上)让他们。如果他们喜欢成对工作,让他们这样做。确保让您的员工尽可能多地选择自己的作品。
最后,这非常重要,并且始终被忽略。您将无法正确理解(除非您是超人或至少是蝙蝠侠)。定期召开回顾会议非常重要。当我们进行回顾时,回顾工作是由书完成的,感觉就像您还需要经历另一个过程。那不是追溯的目的。它用于倾听您的团队,确定造成最大痛苦的区域并修复它们,以便每个人都可以继续工作。显然,软件工程师通常喜欢交付产品和功能,而回顾会议需要传达的最重要的信息是,这完全是为了他们的利益。您想找出并解决障碍,从最大的障碍(或最简单的障碍开始,