精华内容
参与话题
问答
  • 结对编程

    千次阅读 2013-03-21 11:30:29
    结对编程技术是指两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计、同一个算法、同一段代码或同一组测试,能编写出质量更高的代码。   简介 结对编程技术是一个非常简单和直观的概念,能达到事半功倍的...
    结对编程技术是指两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计、同一个算法、同一段代码或同一组测试,能编写出质量更高的代码。
     
    简介
    结对编程技术是一个非常简单和直观的概念,能达到事半功倍的工作效果。但是,人与人之间的合作不是一件简单的事情——尤其当人们都早已习惯了独自工作的时候、实施结对编程技术将给软件项目的开发工作带来好处.只是这些好处必须经过缜密的思考和计划才能真正体现出来。而另一方面,两个有经验的人可能会发现配对编程里没有什么技能的转移,但是让他们在不同的抽象层次解决同一个问题会让他们更快地找到解决方案,而且错误更少。
    两个程序员具有相同的缺点和盲点的可能性很小,所以我们当我们采用结对编程的时候会获得一个强大的解决方案。而这个解决方案恰恰是其它软件工程方法学中所没有的。
    在我们平时的编程当中,如果遇到一个非常难解决的问题(困难到对该项目产生厌烦的态度),那么你势必会希望录求帮助,无论是从信息量庞大的Internet网络里,还是从身边的技术大师里,你都会拼了老命去解决(前提是你有对计算机知识的势爱)。这个时候不妨采用结对编程试一下,其它的不说,可能感觉就不同。
     
    优势
    其实结对编程坐起来很简单也很有趣,找个水平差的不太远的程序员和自己配成一对。只用一台计算机,大家选一个人坐在键盘前面负责输入,另一个人坐在后面口述。两个人要不断的交流,频率不应低于一分钟一次。整个的设计思想由后面只动口不动手的人主导,而由操键盘的人做实现。由于人的思维速度是快于输入代码的速度的。那么观看的人可以有空闲的时间做额外的思考,观察代码写的有没有问题,结构有没有问题。
    如果程序员的经验积累足够,是很容易看出存在潜在问题的代码的,即表面上实现了功能,但实际上是一种糟糕的做法。这在XP中被称为代码坏味道,在 Martin Fowler的《重构》一书中有详细的介绍。两个有经验的程序员同时在一起工作,看起来好像浪费了一个人的时间:但实际上的效果确实完成了更高质量的代码。程序编的不那么容易出BUG,而且代码页写得更为优雅和紧凑.
    关于结对编程,发现了一些新的受益之处。首先,它可以促进参与项目的程序员自身的提高,一对程序员工作的时候,水平较低的一方会潜移默化地受水平略高的程序员影响,学到一些新的东西。而水平高的一方同样因为不断地把自己的想法说出来而整理了自己的思路。
    其次,一定时间周期地打乱配对,让参与项目的人员相互转换位置,使得维护繁杂的文档变得不那么重要。大家分组打乱后,口头的交流很容易让所有人都熟悉每个模块,这样对于公司也很有好处,项目中万一有人离开,也不至于影响到整个项目。最后,开发过程变得更为有趣,任何人的交流变得很多,大家关系更为融洽。
    另外想补充一点的是,讲解XP的书籍上都没有提到,但是实际上却存在的一点:结对编程使得程序员被迫提高了工作效率。如果单独工作,在遇到困难的时候,并不是所有人都立刻积极地去解决问题,这时或许会上网和网友聊聊天,看看无关的网站等等。有可能因为工作的打断,大半天的时间都浪费了。看起来,程序员每天都在加班,实际有效工作时间往往还打不到6个小时。而结对编程有一种相互督促的作用,在一边工作疲惫状态不好使,另一边会起一个鼓励和激发斗志的作用。
    而且两个人共用一台电脑,略带私人性质的聊天活动都会很自觉地不去进行了。结果一天下来,新实验结对编程的程序员都会喊累,神经紧绷8个小时的工作不累才怪。
    从这个角度看,严格限制结对编程的程序员不准加班是合理的,实际上,开始每天甚至不必限制8小时工作,每天这样工作6小时队项目同样是非常高效的。
    当两个人不断的互换角色,以至于最后谁也记不清哪行代码是谁敲的;团队内循环的分组以至于分不清到底那个模块该谁负责;反而大家的感觉会不错。整个项目的代码是团队共有,而不再是个人作品了。
     
    但结对的推广与实现,会遇到极大程度客观条件的挑战,一些可能遇到的问题:
    1)结对的效率,结对之后我们发现,2个人一起工作能够完成的工作可能等于分开做的70%~80%左右,

    2)结对过程中,大家都很不愿意更换结对对象,至于结对对象的更换,最好是每个任务结束之后更换结对的对象。

    3)并不是所有功能编写都适合使用结对编程,正如第一条所说,带来一定的效率问题,老板可能不乐意了。
    展开全文
  • 结对编程就是指两位程序员使用同一台电脑,进行编程。   我认为这是一个很好形式,这样找两个实力水平差不多的人在一起工作,稍差的人可以向优秀的人学习得以成长;而优秀的人会在不断的表达中,形成自己的编程...

    结对编程就是指两位程序员使用同一台电脑,进行编程。

     

    我认为这是一个很好形式,这样找两个实力水平差不多的人在一起工作,稍差的人可以向优秀的人学习得以成长;而优秀的人会在不断的表达中,形成自己的编程风格和思想;这样都会得到成长,并且使得代码质量得到大大的提高。

     

    结对编程,并且使得我们工作效率会大大提高,这样使得我们在工作时,不会花大量的时间来处理私人问题,使得加班也会变少,其实自认为是一种利于公司,也利于程序员本身的编程方式。还有一点,不断的更换公司的结对时,使得员工对公司的业务都很清楚,这样即使某个员工离开本项目组,对项目的影响度会大大降低。这其中,对程序员本身的素质需求非常高,每个人都需要虚心的接受别人的意见;当出现分歧时,需要恰当的时机,恰当的人去处理。

     

    国内有这个大的成本么?做项目的人,只知道尽快交互项目,谁会真正的关心代码的质量呢?主要是客户不对代码质量关心,他们关心的是业务逻辑是否实现。

     

    也许做产品的公司,会非常注意这一点。希望今后自己能有机会进入这样的公司,享受到这种编码的乐趣。

    展开全文
  • 结对编程的利与弊

    1970-01-01 08:25:48
    我在Menlo Innovations的暑假课程 杰玛·埃文斯 ( Gemma Evans)在Unsplash上拍摄的照片 许多程序员对结对编程持怀疑态度:敏捷软件开发技术,其中两个程序员在一个工作站上工作。 这是我经常听到的反馈类型: “这...

    我在Menlo Innovations的暑假课程

    许多程序员对结对编程持怀疑态度:敏捷软件开发技术,其中两个程序员在一个工作站上工作。

    这是我经常听到的反馈类型:

    “这似乎完全是浪费钱,因为在不同的计算机上编写的代码是两个程序员的一半 。”

    要么

    “我是一个内向的人。 不想有不断地在工作中的合作伙伴进行互动。”

    这些是令人关注的问题。 在结对编程公司工作之前,我可能已经分享了这些观点。

    请参阅我的上一份工作-Menlo Innovations的软件开发-不允许您自己编写代码。 如果您正在处理生产代码,则需要一个合作伙伴。

    在和他们一起工作了几个月之后,我喝了这对编程的kool-aid。 我相信在许多情况下,结对编程是解决不同任务的一种了不起的方法。

    这就是为什么。

    优点

    #1:结对编程减少了知识之塔

    “知识之塔”或“最佳绩效者”是团队生产力的最大威胁。

    知识之塔就像手背一样了解整个代码库。 他们是团队在需要尽快推出功能或进行大量错误修复时需要的人员。

    塔之所以成为问题,是因为团队过于依赖它们。 由于办公大楼整日困扰着人们的问题,因此办公大楼经常在工作环境中变得痛苦不堪。 他们付出了额外的工作(即使在周末)。 一旦信号塔决定退出,它将使公司陷入困境,因为没人像他们一样知道代码库。

    知识之塔是危险的,自给自足的循环。 由于许多其他程序员都在向他们寻求帮助,因此,信息塔比任何人都有机会看到, 思考研究更多的代码库。 这进一步增加了他们在团队中的智力优势。

    Tower伤害了团队士气,因为程序员在他们旁边站不住脚。 另外,当他们请病假一天时,塔楼会使团队停滞不前。

    更糟的是,商业作家和技术作家经常引用错误的解决方案。

    当您阅读从伦乔尼(Lencioni)到泰尔(Theil)的所有内容时,他们都有战争故事,他们都在其中解雇或贬低了表现最好的演员,并立即鼓舞了他们的团队士气。 他们说,如果没有掌握的知识塔,就很难进行调整,但是团队士气更为重要。 故事结局。

    这是一个有缺陷的经营理念。 惩罚表现最佳的人以增加团队价值不仅是一种糟糕的形式,而且团队很快就会开发出新的知识塔。

    正确的解决方案是将“知识之塔”与另一个程序员配对!

    这使知识转移变得无缝。 如果您整周都有另一位程序员在塔上工作,那么塔就不会对该知识有垄断地位

    他们可能仍然是您表现最好的人 ,但是当表现最好的人请病假或决定离开另一家公司时,不会有负面影响。 塔的对编程合作伙伴将能够将关键信息传达给团队的其他成员。

    如果您每周一次将与知识塔配对在一起,那么每个程序员都将共享一些关键信息,并且对团队很重要。 从而提高团队士气。

    #2:结对编程使入门很棒

    由于在结对编程方法下知识传递是如此无缝,因此入职变得容易

    新员工不必参加长达数周的“训练营”或遵循过时的环境设置指南。

    新员工刚刚被分配了一对编程伙伴,就可以开始学习!

    在结对编程模型下,新员工有一个不变的角色模型可以工作。 他们将很快了解代码库,并更快地为公司创造价值。

    新员工经常在代码库的上下文中苦苦挣扎,但在编程知识方面却苦苦挣扎。 退伍军人在背景方面很扎实,但有时会尝试偷工减料,以更快地完成任务。

    这两个数字可以相互平衡。

    (应该说的是,新员工也常常想减少拐角。但是,退伍军人的道德水平较高,在新员工的观察下往往会加倍努力)。

    无论哪种方式,新员工在工作的第一个月都比一文不值的糟糕。 他们从公司那里吸取价值,直到他们知道代码库的上下文。 在结对编程方法下,新员工有机会在第一天开始为公司创造价值。

    #3结对编程人员产生的代码多于两倍,个人和结对的代码对性格内向的人非常有用

    坦白地说,程序员在工作中花费的大部分时间实际上并不是在编写新代码。 它是调试战略测试等。

    如果每天计算机科学家的工作是写10,000个乱码,那么可以肯定的是,将两个不同的程序员放在不同的计算机上并让他们开始打字会更快。

    幸运的是,计算机科学并非如此。

    我们在 ,我们在键盘上花费的大部分时间都不会打字。

    调试是一个指数浪费时间的事情。 如果团队中的某人知道错误的解决方案,则调试可能需要几秒钟。 如果团队中没有人知道该错误,则调试过程从几分钟几小时几天不等

    在一个工作站上有两个程序员,这意味着团队一旦遇到问题,知道如何解决问题的可能性就会增加两倍。 这也意味着程序员对寻求帮助负有更多责任。

    如果两个人必须互相征求意见,然后再寻求公司的另一对帮助,这意味着他们不会向别人索要帮助。 如果他们中的任何一个对如何进行操作都有想法,他们将尝试进行此操作,然后再调用备份。

    他们也不会寻求帮助。 当单个程序员忙于解决问题时,显然他或她应该寻求帮助。 毕竟,它们可能只是一个顿悟之外的Google搜索。 但是,如果一 程序员陷入一个问题,那么很明显,他们应该寻求帮助。

    结对编程非常适合内向的人。 Menlo的程序员中80%会自我识别为内向。 他们仍然喜欢结对编程方法。 为什么? 内向的人喜欢和他们在同一页面上的人。

    结对编程合作伙伴正在思考相同的事情,检查相同的代码,并互相问相同的问题。

    这种血缘关系不仅健康。 很有趣。 面对棘手的程序性问题,不要孤单可以提高士气。

    也就是说,结对编程并不完美。

    缺点

    #1:结对编程会使简单的任务复杂化

    如果您有一个非常简单的错误修复程序或要实现的简单功能,那么让两名程序员来完成该任务可能会很昂贵。 另外,对于两个程序员而言,可能很难对花费最少的思想处理能力的任务保持兴趣。 如果您的环境具有大型测试套件或集成过程,那么结对编程会进一步增加资源消耗。

    我认为这是结对编程最费力的地方。 通过结对编程,简单的任务可能会变得过于复杂。

    它确实确实取决于那对。 有时,在完成简单任务时,拥有一对伴侣可以提高士气。

    #2:结对编程不能完全消除知识之塔

    许多结对编程作者都夸大了结对编程对知识塔的作用。 一些人认为结对编程是消除它们的“银弹”。 我同意配对对解决这个问题有很大帮助,但是在业务上,我犹豫要不要说任何东西都是真正的“银弹”。

    在团队中,总会有人that积重要知识。 这不是恶意的,人们自然倾向于该目标。

    结对编程并不能消除人的特质。 总是会有程序员找到垄断信息的方法。

    我仍然坚持认为,将知识塔与其他队友配对是一个比小人大手大脚的更好的解决方案,后者是解决此问题的另一种流行方法

    罢免表现最好的员工可能是一个不错的短期解决方案,但从长远来看,这会阻碍员工尽力而为。

    虽然不能完全消除问题,但配对是解决知识塔难题的最佳长期解决方案。

    #3 Pair编程让员工承担超级责任,有时甚至过度负责

    在Menlo,许多员工说他们离开工作时感到“脑筋急转弯”。

    他们声称,他们在Menlo的思考比以往任何时候都要辛苦和更长的时间。

    这是因为当您有一对编程伙伴时,不可能懈怠。 拥有全天候注视着您的队友,让您超级负责。 很难切角。 在工作中很难“调整”。

    这是好是坏。

    显然,专注于工作很重要。 但是,我认为精神休息并重新评估解决方案同样重要。

    因此,在Menlo,他们确保编程对全天都在休息。 早上,Menlo员工进行一项名为“站立”的活动,他们分享当天的工作要做。 下午,他们进行了一项名为“ walkies”的活动,他们在街区周围行走。

    这些智力上的休息和活动对于成功的结对编程文化至关重要。

    如何在工作区中实现结对编程

    出售成对编程? 想要试一试? 好吧,你很幸运。

    结对编程的好处在于,它不必是全有或全无的技术。

    在Menlo,他们做出了严格的业务决策,要求每个人都成对编码。 但这不是必须的。 如果您在一家更传统的公司工作,很可能会与一位同事结对来完成一项重要任务。

    如果您在敏捷开发模型下工作,另一个想法是与另一个程序员合作进行一次迭代。

    这些对策是在不花费过多资源的情况下进行结对编程试运行的好方法。 然后,您可以将这对货币对的有效性与公司的单个结果进行比较。

    如果您要尝试其中一种措施,建议您将复杂,关键任务和冗长的任务配对,而不是简单,不重要和简短的任务。 理由是前者可以带来长期的长期收益,并且可以最佳地展示结对编程。

    如果您要尝试配对编程,请在评论中让我知道它是如何实现的! 我很想听听这种令人振奋的新开发技术的成功(甚至失败)故事!

    TwitterInstagram上关注我,以随时了解我的内容!

    From: https://hackernoon.com/the-ultimate-guide-to-pair-programming-b606625bc784

    展开全文
  • 什么是结对编程

    2019-10-05 21:05:15
    结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员...

    结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。
    在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。这样使得驾驶者可以集中全部注意力在完成当前任务的“战术”方面。观察员当作安全网和指南。结对编程对开发程序有很多好处。比如增加纪律性,写出更好的代码等。
    结对编程是极端编程的组成部分。

    展开全文
  • 结对编程总结

    2016-10-25 22:52:45
    结对编程总结 本次结对编程,我和叶佩同学主要实现了微信抢票应用的管理员登录的功能,并进行了结对编程的视频录制。 在结对编程的过程中,我们首先讨论了一下如何实现管理员的登录,需要在哪里来写代码来实现此...
  • 结对编程的好处与坏处

    千次阅读 2017-12-22 00:00:00
    0关注「实验楼」,每天分享一个项目教程 结对编程的概念已经存在很长一段时间,已经有许多公司认同这种编程方式,但也有许多公司表示他们不考虑采用。正文共:1137 字 预计阅读时间:3 分钟结对编程是软件开发过程...
  • 请停止结对编程

    千次阅读 2018-08-26 14:20:02
    这是一个风和日丽的星期天下午,Ben 和 Martin 本应该在 Costa 咖啡馆喝一杯下午茶,一起聊聊周末的计划,然而 PM 的一个微信通知打乱了这一切。原来产品出现了一个bug需要紧急修复,下班之前必须要搞定。...
  • 结对编程

    2018-04-04 14:54:00
    简介 对伙伴的代码进行审查 合作伙伴:尉安瑞 伙伴Coding 参考文章:谷歌是如何做代码审查的C++代码审---参考林锐高质量C/C ++整天说Code Review重要,你知道应该关注哪些关键点吗? - CSDN博客 ...
  • 结对编程——完工感言

    千次阅读 2018-10-14 10:08:35
    首先,来讲一讲从个人项目到结对编程的过度,我们两个人一个使用C++写的个人项目,另一个人用的是java,我们知道,就目前阶段来看,用java实现ui远比C++要简单的多,所以值得庆幸的是我们队伍中有一个...
  • 结对编程

    2011-04-11 23:22:00
    通过结合正式的和非正式的技术复查,在必要时进行结对编程,以及轮换指派修正缺陷的任务,从而逐渐达到交叉覆盖。
  • 结对编程 我在Menlo Innovations的夏季课程 杰玛·埃文斯 ( Gemma Evans)在Unsplash上拍摄的照片 许多程序员对结对编程持怀疑态度:敏捷软件开发技术,其中两个程序员在一个工作站上工作。 这是我经常听到...
  • 结对编程

    2013-01-07 11:55:41
    本文主要从提升项目质量、促进知识传递及减少项目风险等角度出发,讲述作者所在团队在结对编程实践中的一些经历,以及如何避免或减少其所带来的负面影响。  你了解结对编程吗?你尝试过结对编程实践吗?也许你还...
  • 在我做咨询工作的三年半时间里,我(跟客户)谈论结对编程的时间比其他任何话题都多。一般来讲,客户的开发人员都从来没有结对过,也根本没有这个念头。而且更糟的是,那些搞商务的总觉得两个人坐在一台机器前面是...
  • 结对编程

    2014-02-17 13:29:22
    结对编程  结对编程技术是指两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计、同一个算法、同一段代码或同一组测试。与两位程序员各自独立工作相比,结对编程往往只需花费大约一半的时间就能编写出质量更高...
  • 结对编程Pair Programming — a pair that’s greater than the sum of its parts. You may have heard about pair programming and wondered whether it was worth trying in your workplace. On the surface it ...
  • 资深Java程序员Rod Hilton 5月27日在博客文章Different Kind of Technical Interview中介绍了他们公司的做法:结对编程。此文在Reddit上引起了强烈反响。下文是CSDN对此文的翻译。(结对编程面试场景,其中两个屏幕...
  • ThoughtWorks 结对编程

    千次阅读 2017-06-04 21:51:36
    可能就是某个懒散的下午,打开电脑,不知道做什么,打开牛客看了看,随即看到结对编程,不知道是做什么的,点开看了看;页面很好,不想中国人写的; 鬼使神差的就报名了,点进去看了看,居然 还有题;而且第一道题...
  • 敏捷开发之结对编程最佳实践

    千次阅读 2011-07-12 19:26:02
    讲到结对编程,我想大家首先想到的是XP极限编程中描述的,两位程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘,同一个鼠标一起完成编码工作。这种编程方式为众多敏捷爱好者所向往,但实际工作中尝试...
  • (1)首先应该是结对编程的高效率了,结对编程的时候,两个人可以分开做不同的unit,也可以同时做相同的unit。在项目的一些简单的unit,一个人能够很简单的unit就可以分给不同的人去做;对于核心的unit,比如说此次...
  • 1. 联系结对编程,体验敏捷开发中的两人合作; 2. 两人一组,自由组合; 3. 使用一台计算机,共同编码,完成实验要求; 4. 在工作期间,两人的角色至少切换6次; 5. 使用JAVA+ECLIPSE编程。 心得...

空空如也

1 2 3 4 5 ... 20
收藏数 22,703
精华内容 9,081
关键字:

结对编程