写点什么

结对编程:肩并肩还是面对面

  • 2011-11-12
  • 本文字数:1124 字

    阅读完需:约 4 分钟

结对编程是一门敏捷软件开发的技术,其目的是让两个开发人员共同在同一个工作站上工作。关于结对编程所带来的好处已广为流传,相应的技术和方法也得到了广泛实践。然而,在进行结对编程时,最好的安排座位的方法又是怎样的呢?

通常的位置是肩并肩地坐,但这样存在着一些弊端,正如 Josh Susser 所说的那样:

尽管在多数情况下这样安排座位是一种很好的方法,但其并不符合人体工程学。首先,两个人都并非正对显示器,而是偏向显示器的边缘,在敲打键盘或观察显示器时,将会引起相互倚靠、懒散及扭头等情况的发生。同时,在不转动脖子的情况下,也很很难看清自己的搭档。即使桌子较宽,有足够的空间给键盘和鼠标,同样会存在拥挤、调整桌面和椅子所带来碰撞等问题。

另外一种方法就是面对面地进行结对编程。这种变通的方法看上去就像下图中阴影部分所表示的那样。

按照 Josh 的说法:

这样安排座位会更加舒服,结对的双方都能有更好的视角来观察屏幕,共同工作时还能非常容易的看到对方是一件非常有利的事情。结对双方坐的足够近,这样即使不提高嗓门也能够很容易地听到对方在讲什么。做了这样的调整后,一整天工作下来,我感觉比以前好了很多,脖子也不像以前那样难受了。

Brian 和 Corey对这种方法进行了尝试并取得了不错的效果。像 Brian 所说的那样,他最终还是倾向于用新方法取代传统的做法。

与在屏幕面前肩并肩地结对编程相比,我倾向于这种新的做法。我甚至认为这种方法比同时面对两个并排放置的屏幕,使用两套鼠标的方法还有效。工作变得更加自在,交流也变得更加充分。可以更容易地看清另外一个人的肢体动作。可以更加容易地终止编写代码、查找以及相互交谈。我发现人员状态的切换变得更加顺畅,光标将两个人的注意力在同一时间内聚集在一起的做法节省了大量时间。

Dave Smith 认为这种方法的出现并不稀奇,他在1980 年时就见过类似的做法,那时,两位计算机科学家相向而坐,放在他们之间的就是两台巨大的显示器。

Tim Ottinger 也尝试了这种布局,但是看起来不是很奏效。他提到:

我们只是做了下尝试。大家没有抵触这种做法,但我们感觉到彼此之间的联系没有以前那样紧密了,使我们不得不用鼠标来代替以前的手指来示意。这么做虽然看到了些效果,但更像是一种远程结对的体验。

这样的改进是否也存在着不足呢?

Josh 认为,在捕捉一些细微的动作上的确有些难度,比如在肩并肩结对时,可以很清晰地看到操控键盘的操作以及鼠标轨迹的移动。此外,这种做法在费用上也有所上升,因为需要更多的设备和场地空间。

不管这种做法从长远来看是否有效,但非常值得一试。 Davis W.Frank 这样评论到

我确信当这种方法被证明成功时,会有更多的人举双手赞成并广为使用。

查看英文原文: Pair Programming: Side-by-Side or Face-to-Face

2011-11-12 21:563721
用户头像

发布了 156 篇内容, 共 55.5 次阅读, 收获喜欢 7 次。

关注

评论

发布
暂无评论
发现更多内容

在线JSON转BigQuery工具

入门小站

架构实战营模块七作业-游戏商城异地多活

王晓宇

架构实战营

用友YonSuite在基于六力模型的SaaS产品中位居业界前列

海比研究院

金融科技成为服贸会热议话题:数字化转型中如何保障金融安全

CECBC

高并发系统SoEasy!Alibaba全新出品亿级并发设计速成笔记真香

Java 编程 架构 面试 架构师

连续两年的云上服贸会,一部会展行业的数智化启示录

脑极体

架构实战营 模块七 作业

一雄

作业 架构实战营 模块七

渗透测试入门指南之小白该如何学习渗透?

网络安全学海

黑客 网络安全 信息安全 WEB安全 渗透测试·

linux之ssh-keygen命令

入门小站

Linux

为什么说敏捷开发是应用程序的未来?

优秀

敏捷开发

Mybatis的工作流程及原理

咿呀呀

mybatis 9月日更

从 ClickHouse 到自研 ByteHouse:实时数据分析场景下的优化实践

火山引擎开发者社区

Clickhouse

2021年最受欢迎的10款开源DevOps工具

Jackpop

网络攻防学习笔记 Day128

穿过生命散发芬芳

开发安全 9月日更

MVP验证方向,差异化策略超越竞争

石云升

MVP 9月日更

太棒了!终于有大佬把“消息队列”核心知识点全都总结出来了

Java 编程 架构 面试 架构师

冒死上传!阿里内部最新版“SpringCloud Alibaba手册”细节拉满

Java 编程 架构 面试 架构师

从电视购物到电商直播,什么造就了「带货的参差」

融云 RongCloud

关于比特币和区块链的3件重要事项

CECBC

两种定时任务调度器对比

xyu

定时任务 Go 语言

学习笔记:TCP传输控制协议(一)

姬翔

9月日更

卖NFT表情包赚上百万,区块链技术终于找到了真正价值?

CECBC

百度清风算法再次升级:必须严打低质下载站

石头IT视角

【LeetCode】数据流中的中位数Java题解

Albert

算法 LeetCode 9月日更

自动交Y机器人开发|市值机器人源码搭建

量化系统19942438797

Promise.race() 原理解析及使用指南

devpoint

异步 Promise 9月日更

Java从建表语句中提取索引信息, 索引名称,复合索引包含字段,索引类别(普通索引/主键索引/唯一索引/全文索引/空间索引)解决方案

张音乐

数据库 索引 9月日更

压箱底宝藏!程序员必不可少的8款办公利器

Jackpop

♟Go语言那些事儿之Redis连接与数据操作♟

Regan Yue

Go 语言 9月日更

小游戏 合成

游戏开发_软件开发

架构实战营模块7课后作业

燕燕 yen yen

架构实战营

结对编程:肩并肩还是面对面_研发效能_Vikas Hazrati_InfoQ精选文章