热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么结对编程很难实施

结对编程有助于提高软件质量和加强团队成员合作。它有非常多的好处,但是,团队成员真的很容易结成对子吗?\u0026#xD;\n\u0026#

结对编程有助于提高软件质量和加强团队成员合作。它有非常多的好处,但是,团队成员真的很容易结成对子吗?

\u0026#xD;\n\u0026#xD;\n

Marcos Brizeno,巴西ThoughtWorks 公司的电脑科学家和顾问开发,在他最近的博客中分享了他的想法,描述了为什么采用结对编程很难。

\u0026#xD;\n\u0026#xD;\n

Marcos提出如下在做结对编程时的一些挑战:

\u0026#xD;\n\u0026#xD;\n
  • 基础设施:团队需要有专用的工作站,提供通用的安装, 例如编辑器,操作系统等。\u0026#xD;\n\u0026#xD;\n
  • 疲劳:提高专注力并不容易,要花很多的精力专注在某个问题上,要分享你的想法和倾听其他人的意见。\u0026#xD;\n\u0026#xD;\n
  • 自我:很重要的一点是要保持谦卑并倾听其他人的想法,而不是争辩。\u0026#xD;\n

David Green,TIM Group的软件工程师,说结对并不适合所有人。他在最近的博客 上分享了他的观点:

\u0026#xD;\n\u0026#xD;\n
\u0026#xD;\n

任何一个团队最终都是由不同性格的人混合在一起的。外向型的人更喜欢结对,然而内向型的人会更倾向性地认为这很难做到,并且他们尽量避免这种做法。这并不一定是教育或者说服的问题,相对来说也看不清其中的收益,甚至更多内向型开发人员可能会发现整个过程并不比独自工作更快乐。

\u0026#xD;\n
\u0026#xD;\n\u0026#xD;\n

Joe Barnes,ASCII字符的制作者,提到了剽窃是团队停止做结对的原因。

\u0026#xD;\n\u0026#xD;\n
\u0026#xD;\n

我相信我已经意识到了,扼杀我们团队合作的最大因素是结对。老是担心被剽窃就会间接这样的结果。

\u0026#xD;\n
\u0026#xD;\n\u0026#xD;\n

Marcos介绍了一项回顾练习,称为“那个人和这个人”,从而得出你们团队结对编程一系列的最佳实践。最初这是一个回顾活动,该活动信息是由Paulo Caroli(ThoughtWorks的敏捷教练)和Taina TC Caetano(ThoughtWorks的开发者顾问)联合发表的。

\u0026#xD;\n\u0026#xD;\n

把一堵墙分成两个部分,“不要做那个人”和“要做这个人!”:在第一部分,成员写下他们不喜欢哪些行为的示例。第二部分包括大家真正喜欢的行为示例。

\u0026#xD;\n\u0026#xD;\n

然后,走到墙边让团队成员讨论每一个例子。在交流中应该让团队讨论对于某个特定类型的行为有什么看法,大家是否都觉得这个行为还不错呢?有些示例中的行为可能潜显易懂没什么可谈的,而有一些就可能值得深入讨论了。

\u0026#xD;\n\u0026#xD;\n
\u0026#xD;\n

我认为这个活动是提高团队士气的一个好方法,有了这样的对话,经常会让人们感觉彼此间能够更加地坦诚,因此又会增进了更多的交流。如何感受团队的动力呢?一个比较好的方式就是观察他们互相之间是如何谈话的。通常,一个安静的团队就意味着人们之间都不怎么联系,并且很少分享信息。

\u0026#xD;\n
\u0026#xD;\n\u0026#xD;\n

查看英文原文:Why Pair Programming is Hard to Implement


感谢夏雪对本文的审校。

\u0026#xD;\n

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。


推荐阅读
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
author-avatar
手机用户2502886745
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有