`
run_xiao
  • 浏览: 193305 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

实践Pair Programming

阅读更多

前段时间在Team内小试了一下Pair Programming,小记一下感受。

         当我周会上决定近段时间的新功能两人结对开发时,大家一片欢呼,热烈欢迎,可现实状况——我们4个人都没有PP过的

经验,也都道听途说而已。为了先试试效果,决定先由我和另一个技术稍强,性格外向的组队。

        和他一起Programming的过程还是比较愉快。与其说是Pair Programming,不如说是Pair Talking。我们两个人讨论的时

间要比Coding 所花的时间多。比如需求理解不一致经常会争论;对设计经常会脑子灵光一现,产生好的Idea,然后就停下来讨

论可行性;程序不同的写法的差异和后果也会讨论一番;一些不好的编码习惯也会随时有人纠正;我也会把自己的很多开发的

经验告诉他。我发现平时我都没太多话的,这段时间都快成话唠了:)

       和他Pair的过程,我估计工期比一个人单独做略短一点,所以总工时 < 一个人做的工作 * 2,大约1.6倍左右。为什么会小

于2?因为两个人每小时都是有效工作时间,没人偷懒:)。但代码质量绝对有信心,最后User验收该功能也没有Bug。

        之后我安排他和一个比较内向的女生Pair,女生技术和经验上都差一点。发现效果比我们Pair时大打折扣。开始我发现女生

基本什么上都听他的,几乎没有提出自己的任何建议。后来我要求男生把Pair时的主控权大多时候交给女生,大多时间由女生

来掌控电脑,他负责Review她的工作,发现问题及时指正。这样让女生在做的过程中体现她的思路,了解她的思路后两人才能

更好的交流。最终产品质量也还不错,User验收只发现很少Bug。这个女生自己也说从他身上学了不少东西

       Pair Programming一段时间之后,还是可以看到很明显的效果。Team内大家的交流比以前多了,以前很少有人主动讨论

新技术。我一直想在Team内做单元测试也基本实现了,大家对Junit的思想和基本用法也都通过“一传十,十传百”比较熟悉

了。

      最终感觉, Pair Programming实施和个人性格关系很大,和外向的人Pair是件愉快的事情,和外向的人Pair确是比较沉闷。

分享到:
评论
10 楼 stefli 2007-07-09  
虽然在这边上班没有Pair Programming,但是,有一次和一个同事讨论一个新的模块的设计的时候,就坐在一起。更多的是讨论从无到有的分析和设计过程。整个过程中,彼此有自己的看法,但最终还是达到了一个共同想法。所以在一起讨论,编码,CodeReview对双方都是很有帮助的。可以提高代码的质量,也对自身的编程思想和方式都有提高。
9 楼 run_xiao 2007-07-09  
引用

想问问楼主:
1.项目时间紧吗?
2.结对的对象除了性格上的考虑,是不是在技术上也要考虑,如果差的太多,是不是就相当于1个人在教另一个人怎么开发,成本会不会太高?

1.们是属于公司的IT部门,不是很紧,但也会有时间压力
2.不知道你说的“差的太多”怎么衡量,我比另外一个要经验丰富一些,不过感觉还是能从他那学不少东西
8 楼 run_xiao 2007-07-09  
引用

是写一段时间然后交换代码review一下的那种结对,还是两个人坐在一起从早到晚?

坐在一起,我觉得你说的不是结对,而是代码走查
我觉得Pair最重要的是两个人会不停的说话交流
7 楼 moxie 2007-07-09  
Pair Programming是敏捷的最佳实践之一
其目的是提高团队内部的沟通交流,促进知识传递和提高代码质量。只要能达到目的,具体的形式就并不重要了。
引用
我们在什么时候需要Pair Programming?

敏捷实践的实施,很类似于我们面向对象中的设计模式的应用。设计模式专家们一再强调是:在一定的上下文环境(Context)下,你出现了这样的问题(Problem),于是你才可以使用这样的解决方案(Solution)

引用
是否每一件工作都需要Pair完成

当然不是。我们在下面两种情况下很重视Pair:
    1.新加入项目团队的成员。每个人都有义务和新成员Pair一周左右,让他快速了解项目的开发方法、业务、技术等。

    2.业务逻辑很复杂的功能模块和新技术。

其它就根据项目和团队的情况来了。

总而言之,这些实践是来帮助我们的团队提高工作效率,而不应该是团队的形式或负担。
6 楼 luyunjian 2007-07-09  
想问问楼主:
1.项目时间紧吗?
2.结对的对象除了性格上的考虑,是不是在技术上也要考虑,如果差的太多,是不是就相当于1个人在教另一个人怎么开发,成本会不会太高?
5 楼 Julien 2007-07-09  
是写一段时间然后交换代码review一下的那种结对,还是两个人坐在一起从早到晚?
4 楼 anchor 2007-07-09  
haha1903 写道
非常支持,我们 pair 的时候感觉也是这样,要努力的发挥出积极性才可以。

可以弄点小零食,大家一个吃,另一个干活。^_^


要是让BOSS看到......

3 楼 haha1903 2007-07-06  
非常支持,我们 pair 的时候感觉也是这样,要努力的发挥出积极性才可以。

可以弄点小零食,大家一个吃,另一个干活。^_^
2 楼 run_xiao 2007-07-06  
哈哈,手误
引用

和外向的人Pair确是比较沉闷

应该是:
和内向的人Pair确是比较沉闷
引用

我觉得许多程序员都内向,但是讨论到编程的时候就都来劲了。如果连编程的时候都沉闷,是否说明他其实不喜欢编程??

也有很多人喜欢自己捣腾,而且沟通上有障碍,除非和比较熟悉的人
1 楼 hax 2007-07-05  
最后一句有笔误吧。。。

我觉得许多程序员都内向,但是讨论到编程的时候就都来劲了。如果连编程的时候都沉闷,是否说明他其实不喜欢编程??

相关推荐

    pairProgramming

    PairProgramming-master这个文件名可能是指一个关于Pair Programming的项目或教程的源代码库,包含了实现Pair Programming实践的示例代码或相关资源。对于想要深入理解和实践Pair Programming的开发者来说,这是一...

    ThoughtWorks-Contractor-Pair-Programming.zip

    在"ThoughtWorks-Contractor-Pair-Programming.zip"这个压缩包中,我们可以推测其内容可能与ThoughtWorks的外包工程师合作模式以及配对编程(Pair Programming)的实践相关。 配对编程是敏捷开发方法中的一个重要...

    PairProgramming:19秋地科结对编程

    在“PairProgramming-master”这个文件名中,我们可以猜测这可能是一个项目源代码库,包含了关于结对编程的示例代码、练习或教学资源。通过研究这些内容,参与者可以更深入地理解结对编程的实际操作和益处。 总之,...

    week2d3pairprogramming

    标题“week2d3pairprogramming”可能指的是一个关于这一主题的课程或活动的第二周第三天的部分。在这个场景中,我们将深入探讨Pair Programming的概念以及与JavaScript编程相关的应用。 Pair Programming是指两个...

    Pair Programming Illuminated

     本书对结对编程技术的基本原则和最佳实践进行了论述,它不仅能帮助初次接触结对编程技术的团队成员和经理们熟悉这项技术,还能指导有经验的结对程序员把这项技术运用得更加纯熟。作者根据自身的实践经验,对结对...

    js-pairprogramming

    JavaScript对对编程(Pair Programming)是一种软件开发实践,它鼓励两个开发者在同一台计算机上共同编写代码,一人作为“驾驶员”,实际操作键盘输入代码,另一人则作为“观察员”或“导航员”,负责审查代码质量、...

    PairProgramming:CS 125 结对编程

    在“PairProgramming-master”这个压缩包文件中,可能包含了该课程关于结对编程的相关材料,如示例代码、练习题目、项目指南等。通过这些资源,学生可以学习如何在实践中应用结对编程技巧,进一步掌握Java编程语言。...

    Pair_programming:练习git理解

    在IT行业中,Pair Programming是一种软件开发实践,其中两个程序员共享同一台计算机,共同编写代码。这个过程旨在提高代码质量、促进团队协作,并增强对技术问题的理解。在这个特定的场景中,"Pair_programming:练习...

    gbic-pair-programming-2

    标题“gbic-pair-programming-2”暗示了一个关于配对编程的主题,这通常是一种软件开发中的协作技术,其中两位开发者同时在同一个代码编辑器上工作,共享键盘和鼠标,或者通过屏幕共享进行交流。他们共同解决问题,...

    XP的最佳实践

    7. Pair Programming(结对编程):Pair Programming是在软件工程里叫做结对编程,是由两个人在一台电脑上共同编写同一问题的代码,一人负责编写,一人负责代码的正确性与可读性。 8. Collective Ownership(共享...

    敏捷型软件开发方法与极限编程概述.pptx

    Pair Programming是一种重要的实践方法,两位开发人员共同编写同一份代码,互相学习和交流,有助于提高代码质量和防止错误。 敏捷型软件开发方法与极限编程都是软件开发行业的新趋势,它们能够快速响应需求变化,...

    XP实践结对编程demo

    **结对编程(Pair Programming)**是极限编程(XP,Extreme Programming)中的一项核心实践,旨在提高软件开发的效率和质量。在这个过程中,两位程序员坐在同一台电脑前,共同编写代码,一人为主程序员(Driver),...

    敏捷开发最佳实践-九大实践

    4. 结对编程(Pair Programming):两名开发人员共享同一台计算机,一起编写代码。这种方法可以提高代码质量,减少错误,同时促进知识共享和团队合作。 5. 简单设计(YAGNI and KISS原则):敏捷开发强调“你不会...

    Unix Network Programming

    3. **并发处理**:讨论多进程和多线程模型,解释如何在Unix中实现并发服务,如使用fork()、pipe()、socketpair()、select()、poll()和epoll()等系统调用。 4. **信号处理**:介绍Unix信号机制,如何注册信号处理器...

    The Linux Programming Interface

    进程管理部分涵盖了进程创建(fork、vfork、clone)、进程终止、信号处理、进程调度、进程间通信(pipe、fifo、socketpair、message queue、semaphore、shared memory)等内容,这些都是实现并发程序的关键。...

    极限编程(Extreme Programming)-XP之旅

    - **编程**: XP 实践中的编程包括结对编程(Pair Programming),两个开发人员共享一个工作站,共同编写和审查代码,提高代码质量和一致性。 - **测试**:测试先行,编写自动化单元测试和集成测试,确保每个功能的...

    XP编程实践精华版(Word格式)

    为了演示一下敏捷编程实践,Bob Koss(RSK)和Bob Martin(RCM)将在一个小型的应用程序中使用结对编程(pair programming)的方法,你可以在一边进行观看。在创建该应用程序的过程中,会使用测试驱动开发以及大量的...

    PPT 版本的XP课件,这个是原版的,可以下下来保存!!

    XP 的实践方法包括多种,如 pair programming(成对编程)、test-driven development(测试驱动开发)、refactoring(重构)、continuous integration(连续集成)等。这些方法旨在提高软件开发的质量和效率。 四、...

    Pair-Progamming:主页+ API

    标题 "Pair Programming: 主页+ API" 暗示了我们正在探讨一种软件开发实践,即配对编程,以及与之相关的API(应用程序接口)设计。配对编程是一种敏捷开发方法,其中两个开发者同时在一台计算机上工作,共享一个键盘...

Global site tag (gtag.js) - Google Analytics