你可以远程配对程序吗?

时间:2008-08-29 16:16:57

标签: tdd pair-programming

我们有一个由大约7名工程师组成的团队,我负责监督。我们没有正式的办公室,我们都在这里工作。相反,少数人位于我们城市之外,而我们其他人则分散在湾区周围。

很多时候,我发现自己试图教授像TDD这样的概念,或者重构一些我们更初级(或不是)的开发人员。我所知道的最好的技术是结对编程,你可以坐在同一台计算机上并一起解决问题。由于我们大多数时间不在同一个地方,唯一的选择是使用某种屏幕共享和Skype让我们中的一个“开车”,而另一个咨询,然后切换。

我的问题是,有没有人尝试过这种“虚拟”对编程,你觉得它有用吗?

11 个答案:

答案 0 :(得分:14)

我做了很多配对编程,不仅是跨站点,而且是跨时区。我住在以色列,我一直和西海岸的人一起工作。我发现的最好方法是使用共享VNC会话和Skype。你需要一些“良好行为”来确保我们中只有一个人在特定时间输入。我们使用的VNC服务器为我们提供了两个不同的指针,因此只要我们不实际点击,我们就可以移动各自的鼠标而不会妨碍它们。 主要问题是剪贴板是共享的,所以如果有人选择了某些东西,它会自动复制到另一个剪贴板上 作为一般规则,结对编程跨站点虽然不理想,但肯定是可行的,而且绝对有用。

答案 1 :(得分:6)

我知道Netbeans有一个“开发者协作”插件(flash demo),它基本上就像多人游戏编程。您在本地文件中所做的任何更改都会立即复制到另一方。这很酷,但是我玩了它已经有一段时间了,而且我从来没有将它用于真正的项目。有一个聊天窗口,但你最好还是通过电话或使用Skype进行通话。

答案 2 :(得分:5)

是的,您绝对可以远程配对程序,并且我已经成功完成了很长一段时间。我们整天打开Skype音频聊天,并使用TeamViewer镜像屏幕。工作出色。

如果我没记错的话,它有一个笔/绘图工具,允许导航器向驾驶员显示他在屏幕上谈论的内容。

答案 3 :(得分:3)

尝试远程配对程序可能不如亲自执行该程序那么有用,但您当然可以在OS X中使用协作编辑器SubEthaEdit来执行此操作。

答案 4 :(得分:3)

维基百科上有一个非常好的编辑器列表,其中包含协作实时功能: http://en.wikipedia.org/wiki/Collaborative_real-time_editor#List_of_current_editors

我个人尝试了 Etherpad ,后来被Google收购,并部分集成到Google Wave的实时“邮件”传输中,这一功能集现在可能存在于Google文档中。另一个非常好的基于Web的解决方案是Mozilla的云代码,以前称为 Bespin 。 Adobe也使用BuzzWords进入了这个版本,虽然没有用于编码,因此没有语法高亮等等,它确实可以与锁定会话一起使用,只有一个编辑器可以控制。我对Eclipse COLA Framework(ECF)没有好运,但是当我上次查看它时,该项目看起来很有希望。有些人只使用Google文档

Google 亚马逊等公司也经常在面试过程中使用这些网页编辑进行快速结对编程对于较小的问题,受访者在基于网络的会话中进行编码,而采访者使用文本突出显示等同于深入研究特定会话,我看到采访者甚至只是简单地编辑代码。

除了这里看到的一些报道之外,我从来没有遇到跨大西洋问题的延迟,并且做了更长/更强的编码会话。关于抖动和延迟对协作编辑的影响有相当多的研究,其中经常发现抖动被认为是更具破坏性和持续延迟,在所有使用的工具中均等,似乎是用户可以采用的: http://scholar.google.com/scholar?q=Jitter+and+Delay+real+time+collab

虽然彼此相邻可能会避免对不同通信方式进行一些必要的调整,但使用软件进行协作有明显的优势。通过系统进行配对可以完整记录整个会话,并且如果会话中的详细信息变得不清楚(尽管这可能不会发生,有时肯定会发生),您只需完成会话记录即可。 Etherpad有一个方便的小功能,允许您浏览所有编辑的时间线,然后向后滑动,第四次通过会话。

在我看来,协同编码不应该以与编程相同的方式进行处理,因为你应该利用同时编辑的能力。在不断编写测试时,乒乓编程变得更加互动,每个开发人员都会选择是否观看另一个直播或等待并理解完成的测试。它允许以A / B编程方式编写相同方法的小弯路,而不必等待两者都按顺序实现和讨论,而是两者都可以并行编写。

最好的问候 花岗岩

答案 5 :(得分:2)

我们已经使用了webex。虽然它不一定适合这种事情,但它确实有一些功能可以调解谁控制计算机以及何时控制计算机。

答案 6 :(得分:2)

我只是想为Eclipse IDE添加一些非常好的插件 - 它叫做 Saros ,它是OSS。有一些非常漂亮的功能!
它有一些不错的功能(突出显示源代码,内置VoIP(测试版),聊天以及其他一些功能,如屏幕共享和白板功能)......

saros-project.org

了解相关信息

答案 7 :(得分:1)

我们一直在Eclipse 3.4(Ganymede)中使用新的ECF功能,我们喜欢它。我们实际上并不是彼此远离,除非我们其中一个人在家工作,但ECF允许您编辑同一个文件并且还有一个用于聊天的IM窗口。如果你使用Skype,那就更好了。

有一个很好的screencast on Vimeo屏幕共享让我们对它感到兴奋。

答案 8 :(得分:1)

在我目前的工作中,我和另一个位于另一个地方的开发人员合作过。虽然我们通过电话(耳机是一个巨大的优势!)和屏幕共享经常互相咨询,但当我访问他的位置时,真正的“一起工作”(包括一些真正的配对编程)更有效(做了两次整整一周,这些星期非常激烈。)

屏幕共享的主要问题是你永远不知道谁会移动鼠标,......(例如指向屏幕上的某些东西)。

在那个项目中,我们最终将工作划分为2个子项目,并聚在一起(意思是:旅行)将它们连接在一起。

答案 9 :(得分:1)

在OSX上,我使用了vim和多用户GNU屏幕会话 - 这比VNC,屏幕共享等提供了更好的响应能力。我使用这个设置以及Skype和耳机进行语音通信。

我已经做了很多这样的远程配对,我发现它可以很好地工作。然而,为了使它运作良好,就像面对面的配对(但可能更多),我认为你需要双方都有良好的动机和熟悉你正在使用的工具。此外(比面对面场景更多)我认为有助于对你正在做的事情提供更多的评论。

答案 10 :(得分:1)

是的 - 我做过远程配对。

我们使用的是老式免提电话和VNC。我们在西雅图和英国伯恩茅斯之间进行了配对。跨大西洋的时间滞后使VNC很难使用 - 很难不使用随机网络滞后的鼠标打断其他人。

你需要很大的耐心和一些约定轮流“驱动”键盘和鼠标。

我们只是在短时间内进行远程配对开发 - 比如说30分钟左右,因为大多数人很快就出现了头痛。网络滞后是如此痛苦。我们只是为解决问题而努力,人们通过演示比通过阅读维基上的文字更容易解释。

我想现在,使用远程桌面可能会获得更好的结果 - 我也用它进行配对。我的远程桌面远程配对虽然是支持和部署,但它是在两个远程开发人员登录到工作中的机器之间。人们告诉我,远程桌面在带宽方面比VNC更有效 - 但我无法验证。