分布式团队中的敏捷开发

时间:2022-03-01 12:49:40

The Agile Manifesto emphasizes the importance and nature of communication in the software development process. Two of the twelve principles underscore this:

敏捷宣言强调了软件开发过程中沟通的重要性和本质。十二条原则中的两条强调了这一点:

  • Business people and developers must work together daily throughout the project.

    业务人员和开发人员必须在整个项目中每天一起工作。

  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

    向开发团队内部和内部传达信息的最有效和最有效的方法是面对面交谈。

On my current project, the five members of our development team are scattered across four cities in three states. Geographically distributed teams seem to be more and more common as telecommuting/remote working and offshore development expand.

在我目前的项目中,我们开发团队的五​​名成员分散在三个州的四个城市。随着远程办公/远程工作和离岸开发的扩展,地理位置分散的团队似乎越来越普遍。

When a team can't be face-to-face, how can tools and technology be employed to make practices like daily stand-up meetings, code reviews, pair programming, and the XP concept of "whole team" effective? How can these practices themselves be tailored to best suit a geographically distributed team?

当团队无法面对面时,如何利用工具和技术来实现日常站立会议,代码评审,结对编程以及“整个团队”的XP概念等实践?如何根据地理位置分散的团队量身定制这些实践?

11 个解决方案

#1


6  

These are findings my employer presented from a massive distributed project.

这些是我的雇主从一个大型分布式项目中提出的结果。

Make sure the team meets in person, both at start-up of project, and regularly throughout the project. Ensure that all feel included in social events.

确保团队在项目启动时以及在整个项目中定期召开会议。确保所有人都感受到社交活动。

Be prepared to spend on good communication equipment. Don't buy crap microphones -- go for decent teleconferencing equipment. Make sure you have enough bandwidth to handle this.

准备好花在良好的通讯设备上。不要购买垃圾话筒 - 去体面的电话会议设备。确保有足够的带宽来处理这个问题。

Find good collaboration tools and stick to them.

找到好的协作工具并坚持下去。

Add people's photos to virtual meeting rooms -- it's much easier to talk to a face even if it's just a photo.

将人们的照片添加到虚拟会议室 - 即使只是照片,也可以更轻松地与人脸交谈。

Communicate the project's vision as often as possible to ensure people are on track.

尽可能经常地传达项目的愿景,以确保人们走上正轨。

#2


3  

In order of priority:

按优先顺序排列:

  1. A good project manager who would keep different locations together
  2. 一个好的项目经理,他将不同的位置放在一起

  3. Effective (quick and reliable) chat tool which would allow a group chat. Skype is excellent. We have a group chat for all team members open permanently and use one-to-one chats and VoiP calls as necessary
  4. 有效(快速和可靠)的聊天工具,可以进行群聊。 Skype很棒。我们为所有团队成员进行群聊,永久开放,并根据需要使用一对一聊天和VoiP呼叫

  5. Code repository
  6. Wiki for shared Knowledge Management
  7. 共享知识管理的Wiki

  8. Good, quick and easy issue tracker.
  9. 好的,快速的,简单的问题跟踪器。

  10. Weekly/daily code reviews
  11. 每周/每日代码审查

  12. Continuous Integration system
  13. 持续集成系统

  14. A person with good organisation skill in every location where there is more than one team member who would keep a 'shard' organised internally.
  15. 在每个位置都具有良好组织能力的人,其中有多个团队成员会在内部组织“碎片”。

#3


2  

I'm on a team in a similar situation. We keep a Skype group chat going all day, it has been a huge benefit and we're extending the idea to other projects that are not agile or geographically dispersed.

我是一个类似情况的团队。我们整天都在进行Skype群聊,这是一个巨大的好处,我们正在将这个想法扩展到其他不敏捷或地域分散的项目。

We do the daily stand up on the phone though, that meeting needs the immediacy and feedback of true voice communications. We have the daily stand up in the morning on the phone, and then (still on the phone) if there are any complicated issues for the day those are discussed. The rest of the day everyone works on their assigned tasks and uses Skype for coordination. It works well.

我们每天都在电话上站起来,会议需要真实语音通信的即时性和反馈。我们每天早上都会通过电话站起来,然后(仍然在电话中)如果当天有任何复杂的问题需要讨论。其余的时间每个人都在处理他们分配的任务,并使用Skype进行协调。它运作良好。

#4


1  

I have found that you really need to be careful looking for tools that "do it all". The problem is that you end up having to change your process to use the tool rather than using the tool to help your process. This can be okay if the new process dictated by the tool is better, but in many cases it's not.

我发现你真的需要小心寻找“做到这一切”的工具。问题是您最终必须更改流程才能使用该工具,而不是使用该工具来帮助您的流程。如果工具规定的新流程更好,这可能没问题,但在许多情况下并非如此。

However, take a look at Campfire. It's like a cross between a wiki, IM, and irc. It's really quite good for free-ish form group communication with history and some structure.

但是,看看Campfire。这就像是wiki,IM和irc之间的交叉。对于具有历史和一些结构的*形式的群体交流来说,这真的很不错。

I also like BaseCamp (by the same company, 37signals) - it's more of a task list/discussion/project tracking system. More tools than just campfire.

我也喜欢BaseCamp(由同一家公司,37signals) - 它更像是一个任务列表/讨论/项目跟踪系统。比篝火更多的工具。

The nice thing about both of these is that they are pretty lightweight - use them to help what you do rather than hinder it.

这两者的好处在于它们非常轻巧 - 使用它们来帮助你做什么而不是阻碍它。

And lastly - Skype. Make sure people are not afraid to hit the "call" button. Make sure people set busy status and that it's respected.. Have people think of it like offices with doors, not a phone call.

最后 - Skype。确保人们不怕打“通话”按钮。确保人们设置忙碌状态并且它受到尊重。让人们想到它就像有门的办公室,而不是电话。

#5


1  

For those who tired of Campfire, there is recently launched Jaconda.im , chat as a GTalk/Jabber contact. We're using it in our team and kinda loving it, no need to install anything.

对于那些厌倦了Campfire的人来说,最近推出了Jaconda.im,作为GTalk / Jabber联系人聊天。我们在我们的团队中使用它,有点喜欢它,不需要安装任何东西。

You just create a 'room' there and give the contact to everybody you want to chat with, and you got your chat-room in your contact list.

您只需在那里创建一个“房间”并将联系人发送给您想要聊天的每个人,并在联系人列表中找到您的聊天室。

#6


1  

Standups, sprint planning, retrospective and estimates are some of the most important ceremonies in agile and ideally should be done face to face which gives the team more cohesiveness and leads to better team building. To achieve this for a distributed team I would suggest following

站立,冲刺计划,回顾和估计是敏捷中最重要的一些仪式,理想情况下应该面对面地进行,这样可以提高团队的凝聚力并带来更好的团​​队建设。为了实现分布式团队的这一点,我建议遵循

  • Ceremonies to be done via a video conferencing tool with video switched on so that all team members are able to see each other. What I have seen using just voice gives less cohesiveness, so switching on video is a good habit. Use any tool that works for you, my team uses google hangout and it works great for us.
  • 仪式通过视频会议工具完成,视频开启,以便所有团队成员能够看到对方。我所看到的仅使用语音会减少凝聚力,因此切换视频是一个好习惯。使用适合您的任何工具,我的团队使用谷歌视频群聊,它对我们很有用。

  • Just in time feedback/help is important for distributed agile teams as a blocker can be extended to next day in case a tool or a rather practice to reach out to team members is missing. Tools like slack are really effective. Create a channel for your team and communicate effectively over there, it is good practice to communicate your blocker on the team channel so that anyone from the team can come ahead to help you.

    及时反馈/帮助对于分布式敏捷团队非常重要,因为阻止程序可以延伸到第二天,以防缺少工具或相当的练习来联系团队成员。松弛等工具确实很有效。为您的团队创建一个频道并在那里进行有效沟通,优良作法是在团队频道上传达您的拦截器,以便团队中的任何人都可以帮助您。

  • Code reviews are also really important, though mostly face to face conversation is not required, so tools like github are really helpful. Peer programming can be achieved via google hangout. What we usually do in our team, in case one of the team member wants other team member to look into her/his code while she/he is actually working on it, we usually go to hangout and share our screens and peer review each other's work. Having multiple big screen help here.

    代码评论也非常重要,但大多数情况下不需要进行面对面的对话,因此像github这样的工具确实非常有用。同行编程可以通过谷歌环聊实现。我们通常在我们的团队中做的事情,如果团队成员之一希望其他团队成员在他/她实际工作时查看她/他的代码,我们通常会去环聊并分享我们的屏幕和同行评审彼此工作。这里有多个大屏幕帮助。

Primarily try to retain much of your communication but try using video conf tools as much as possible and in case it is possible meet centrally at one place at least once in 3 months and work together physically for a week or two.

主要尝试保留您的大部分沟通,但尽可能尝试使用视频配置工具,以防万一在3个月内至少集中在一个地方集中,并在一起或两个人身体一起工作。

#7


0  

Fowler has written about offshore development, but in your case it doesn't directly apply. It's still a good read. I'd suggest using collaboration tools (IRC, Wikis, Skype, IMs) as much as possible and try to arrange many face-to-face gettogethers if it's possible.

Fowler写过有关离岸开发的文章,但在您的情况下,它并不直接适用。这仍然是一个很好的阅读。我建议尽可能使用协作工具(IRC,Wiki,Skype,IM),并尽可能安排许多面对面的gettogethers。

#8


0  

We did some of this--you can do some work to mitigate the problems but it's a mess.

我们做了一些 - 你可以做一些工作来缓解问题,但这是一团糟。

Have your status meetings together in the morning on the phone, everyone needs to be on IM all the time, and you can pair via VNC/video conference, but that doesn't always work.

在早上通过电话举行状态会议,每个人都需要一直在IM上,你可以通过VNC /视频会议配对,但这并不总是有效。

Very long phone calls--When I had one member offsite, I often would just open the line at 9am and stay on until lunch--then reconnect as needed.

非常长的电话 - 当我有一个非现场成员时,我经常会在上午9点打开线路并一直待到午餐 - 然后根据需要重新连接。

That's actually an interesting idea--Create an always-on speakerphone using software so that anything you are doing is automatically picked up by the other offices. It's much easier to just say "Hey, Jim, what's the deal with line 203?"

这实际上是一个有趣的想法 - 使用软件创建一个永远在线的免提电话,这样你正在做的任何事情都会被其他办公室自动接收。只是说“嘿,吉姆,与203号线有什么关系?”要容易得多。

CHECK IN EARLY, CHECK IN OFTEN. Constantly, like every hour, max.

早点检查,检查一下。不断,像每小时,最大。

#9


0  

Some sort of group chat tool works very well. I set up a monitor and speaker in my cube with a custom MSN messenger account that gave anybody (the account only had team members as friends) the privilege to start a video chat.

某种群聊工具效果很好。我在我的多维数据集中设置了一个监视器和扬声器,其中包含一个自定义的MSN Messenger帐户,该帐户可以让任何人(该帐户只有团队成员作为朋友)开始视频聊天。

In addition, I checked in often (soon as I could get something to compile provided it wouldn't break any tests) and did a get often.

另外,我经常检查(很快我就可以得到一些东西来编译,只要它不会破坏任何测试)并经常得到。

A lot of times a colleague would pop up on the MSN monitor and just ask me to do a get because they'd checked in something important. I'd just do it without even turning my head towards the monitor. The long distance equivalent of your colleague over in the next cube hollering at you to get latest. Works a charm :)

很多时候,一位同事会在MSN显示器上弹出,只是让我去做,因为他们检查了一些重要的东西。我只是在没有把头转向显示器的情况下做到这一点。你的同事在下一个立方体中的长距离等同于你的最新消息。有魅力:)

#10


0  

Couple links related to the topic:

与主题相关的情侣链接:

Agile Variations for Distributed Software Teams

分布式软件团队的敏捷变体

The impact of the remote worker on Agile approaches

远程工作人员对敏捷方法的影响

#11


0  

There is a nice Success Story about Scrum Implementation with distributed teams: http://www.agile42.com/cms/pages/success-story-be2/

关于分布式团队的Scrum实施有一个很好的成功案例:http://www.agile42.com/cms/pages/success-story-be2/

And if you are looking for an online whiteboard to support your plannings, you can have a look at Agilo for Scrum: http://www.agile42.com/cms/pages/agilo/

如果您正在寻找支持您的计划的在线白板,您可以查看Agilo for Scrum:http://www.agile42.com/cms/pages/agilo/

#1


6  

These are findings my employer presented from a massive distributed project.

这些是我的雇主从一个大型分布式项目中提出的结果。

Make sure the team meets in person, both at start-up of project, and regularly throughout the project. Ensure that all feel included in social events.

确保团队在项目启动时以及在整个项目中定期召开会议。确保所有人都感受到社交活动。

Be prepared to spend on good communication equipment. Don't buy crap microphones -- go for decent teleconferencing equipment. Make sure you have enough bandwidth to handle this.

准备好花在良好的通讯设备上。不要购买垃圾话筒 - 去体面的电话会议设备。确保有足够的带宽来处理这个问题。

Find good collaboration tools and stick to them.

找到好的协作工具并坚持下去。

Add people's photos to virtual meeting rooms -- it's much easier to talk to a face even if it's just a photo.

将人们的照片添加到虚拟会议室 - 即使只是照片,也可以更轻松地与人脸交谈。

Communicate the project's vision as often as possible to ensure people are on track.

尽可能经常地传达项目的愿景,以确保人们走上正轨。

#2


3  

In order of priority:

按优先顺序排列:

  1. A good project manager who would keep different locations together
  2. 一个好的项目经理,他将不同的位置放在一起

  3. Effective (quick and reliable) chat tool which would allow a group chat. Skype is excellent. We have a group chat for all team members open permanently and use one-to-one chats and VoiP calls as necessary
  4. 有效(快速和可靠)的聊天工具,可以进行群聊。 Skype很棒。我们为所有团队成员进行群聊,永久开放,并根据需要使用一对一聊天和VoiP呼叫

  5. Code repository
  6. Wiki for shared Knowledge Management
  7. 共享知识管理的Wiki

  8. Good, quick and easy issue tracker.
  9. 好的,快速的,简单的问题跟踪器。

  10. Weekly/daily code reviews
  11. 每周/每日代码审查

  12. Continuous Integration system
  13. 持续集成系统

  14. A person with good organisation skill in every location where there is more than one team member who would keep a 'shard' organised internally.
  15. 在每个位置都具有良好组织能力的人,其中有多个团队成员会在内部组织“碎片”。

#3


2  

I'm on a team in a similar situation. We keep a Skype group chat going all day, it has been a huge benefit and we're extending the idea to other projects that are not agile or geographically dispersed.

我是一个类似情况的团队。我们整天都在进行Skype群聊,这是一个巨大的好处,我们正在将这个想法扩展到其他不敏捷或地域分散的项目。

We do the daily stand up on the phone though, that meeting needs the immediacy and feedback of true voice communications. We have the daily stand up in the morning on the phone, and then (still on the phone) if there are any complicated issues for the day those are discussed. The rest of the day everyone works on their assigned tasks and uses Skype for coordination. It works well.

我们每天都在电话上站起来,会议需要真实语音通信的即时性和反馈。我们每天早上都会通过电话站起来,然后(仍然在电话中)如果当天有任何复杂的问题需要讨论。其余的时间每个人都在处理他们分配的任务,并使用Skype进行协调。它运作良好。

#4


1  

I have found that you really need to be careful looking for tools that "do it all". The problem is that you end up having to change your process to use the tool rather than using the tool to help your process. This can be okay if the new process dictated by the tool is better, but in many cases it's not.

我发现你真的需要小心寻找“做到这一切”的工具。问题是您最终必须更改流程才能使用该工具,而不是使用该工具来帮助您的流程。如果工具规定的新流程更好,这可能没问题,但在许多情况下并非如此。

However, take a look at Campfire. It's like a cross between a wiki, IM, and irc. It's really quite good for free-ish form group communication with history and some structure.

但是,看看Campfire。这就像是wiki,IM和irc之间的交叉。对于具有历史和一些结构的*形式的群体交流来说,这真的很不错。

I also like BaseCamp (by the same company, 37signals) - it's more of a task list/discussion/project tracking system. More tools than just campfire.

我也喜欢BaseCamp(由同一家公司,37signals) - 它更像是一个任务列表/讨论/项目跟踪系统。比篝火更多的工具。

The nice thing about both of these is that they are pretty lightweight - use them to help what you do rather than hinder it.

这两者的好处在于它们非常轻巧 - 使用它们来帮助你做什么而不是阻碍它。

And lastly - Skype. Make sure people are not afraid to hit the "call" button. Make sure people set busy status and that it's respected.. Have people think of it like offices with doors, not a phone call.

最后 - Skype。确保人们不怕打“通话”按钮。确保人们设置忙碌状态并且它受到尊重。让人们想到它就像有门的办公室,而不是电话。

#5


1  

For those who tired of Campfire, there is recently launched Jaconda.im , chat as a GTalk/Jabber contact. We're using it in our team and kinda loving it, no need to install anything.

对于那些厌倦了Campfire的人来说,最近推出了Jaconda.im,作为GTalk / Jabber联系人聊天。我们在我们的团队中使用它,有点喜欢它,不需要安装任何东西。

You just create a 'room' there and give the contact to everybody you want to chat with, and you got your chat-room in your contact list.

您只需在那里创建一个“房间”并将联系人发送给您想要聊天的每个人,并在联系人列表中找到您的聊天室。

#6


1  

Standups, sprint planning, retrospective and estimates are some of the most important ceremonies in agile and ideally should be done face to face which gives the team more cohesiveness and leads to better team building. To achieve this for a distributed team I would suggest following

站立,冲刺计划,回顾和估计是敏捷中最重要的一些仪式,理想情况下应该面对面地进行,这样可以提高团队的凝聚力并带来更好的团​​队建设。为了实现分布式团队的这一点,我建议遵循

  • Ceremonies to be done via a video conferencing tool with video switched on so that all team members are able to see each other. What I have seen using just voice gives less cohesiveness, so switching on video is a good habit. Use any tool that works for you, my team uses google hangout and it works great for us.
  • 仪式通过视频会议工具完成,视频开启,以便所有团队成员能够看到对方。我所看到的仅使用语音会减少凝聚力,因此切换视频是一个好习惯。使用适合您的任何工具,我的团队使用谷歌视频群聊,它对我们很有用。

  • Just in time feedback/help is important for distributed agile teams as a blocker can be extended to next day in case a tool or a rather practice to reach out to team members is missing. Tools like slack are really effective. Create a channel for your team and communicate effectively over there, it is good practice to communicate your blocker on the team channel so that anyone from the team can come ahead to help you.

    及时反馈/帮助对于分布式敏捷团队非常重要,因为阻止程序可以延伸到第二天,以防缺少工具或相当的练习来联系团队成员。松弛等工具确实很有效。为您的团队创建一个频道并在那里进行有效沟通,优良作法是在团队频道上传达您的拦截器,以便团队中的任何人都可以帮助您。

  • Code reviews are also really important, though mostly face to face conversation is not required, so tools like github are really helpful. Peer programming can be achieved via google hangout. What we usually do in our team, in case one of the team member wants other team member to look into her/his code while she/he is actually working on it, we usually go to hangout and share our screens and peer review each other's work. Having multiple big screen help here.

    代码评论也非常重要,但大多数情况下不需要进行面对面的对话,因此像github这样的工具确实非常有用。同行编程可以通过谷歌环聊实现。我们通常在我们的团队中做的事情,如果团队成员之一希望其他团队成员在他/她实际工作时查看她/他的代码,我们通常会去环聊并分享我们的屏幕和同行评审彼此工作。这里有多个大屏幕帮助。

Primarily try to retain much of your communication but try using video conf tools as much as possible and in case it is possible meet centrally at one place at least once in 3 months and work together physically for a week or two.

主要尝试保留您的大部分沟通,但尽可能尝试使用视频配置工具,以防万一在3个月内至少集中在一个地方集中,并在一起或两个人身体一起工作。

#7


0  

Fowler has written about offshore development, but in your case it doesn't directly apply. It's still a good read. I'd suggest using collaboration tools (IRC, Wikis, Skype, IMs) as much as possible and try to arrange many face-to-face gettogethers if it's possible.

Fowler写过有关离岸开发的文章,但在您的情况下,它并不直接适用。这仍然是一个很好的阅读。我建议尽可能使用协作工具(IRC,Wiki,Skype,IM),并尽可能安排许多面对面的gettogethers。

#8


0  

We did some of this--you can do some work to mitigate the problems but it's a mess.

我们做了一些 - 你可以做一些工作来缓解问题,但这是一团糟。

Have your status meetings together in the morning on the phone, everyone needs to be on IM all the time, and you can pair via VNC/video conference, but that doesn't always work.

在早上通过电话举行状态会议,每个人都需要一直在IM上,你可以通过VNC /视频会议配对,但这并不总是有效。

Very long phone calls--When I had one member offsite, I often would just open the line at 9am and stay on until lunch--then reconnect as needed.

非常长的电话 - 当我有一个非现场成员时,我经常会在上午9点打开线路并一直待到午餐 - 然后根据需要重新连接。

That's actually an interesting idea--Create an always-on speakerphone using software so that anything you are doing is automatically picked up by the other offices. It's much easier to just say "Hey, Jim, what's the deal with line 203?"

这实际上是一个有趣的想法 - 使用软件创建一个永远在线的免提电话,这样你正在做的任何事情都会被其他办公室自动接收。只是说“嘿,吉姆,与203号线有什么关系?”要容易得多。

CHECK IN EARLY, CHECK IN OFTEN. Constantly, like every hour, max.

早点检查,检查一下。不断,像每小时,最大。

#9


0  

Some sort of group chat tool works very well. I set up a monitor and speaker in my cube with a custom MSN messenger account that gave anybody (the account only had team members as friends) the privilege to start a video chat.

某种群聊工具效果很好。我在我的多维数据集中设置了一个监视器和扬声器,其中包含一个自定义的MSN Messenger帐户,该帐户可以让任何人(该帐户只有团队成员作为朋友)开始视频聊天。

In addition, I checked in often (soon as I could get something to compile provided it wouldn't break any tests) and did a get often.

另外,我经常检查(很快我就可以得到一些东西来编译,只要它不会破坏任何测试)并经常得到。

A lot of times a colleague would pop up on the MSN monitor and just ask me to do a get because they'd checked in something important. I'd just do it without even turning my head towards the monitor. The long distance equivalent of your colleague over in the next cube hollering at you to get latest. Works a charm :)

很多时候,一位同事会在MSN显示器上弹出,只是让我去做,因为他们检查了一些重要的东西。我只是在没有把头转向显示器的情况下做到这一点。你的同事在下一个立方体中的长距离等同于你的最新消息。有魅力:)

#10


0  

Couple links related to the topic:

与主题相关的情侣链接:

Agile Variations for Distributed Software Teams

分布式软件团队的敏捷变体

The impact of the remote worker on Agile approaches

远程工作人员对敏捷方法的影响

#11


0  

There is a nice Success Story about Scrum Implementation with distributed teams: http://www.agile42.com/cms/pages/success-story-be2/

关于分布式团队的Scrum实施有一个很好的成功案例:http://www.agile42.com/cms/pages/success-story-be2/

And if you are looking for an online whiteboard to support your plannings, you can have a look at Agilo for Scrum: http://www.agile42.com/cms/pages/agilo/

如果您正在寻找支持您的计划的在线白板,您可以查看Agilo for Scrum:http://www.agile42.com/cms/pages/agilo/