您的位置:首页 > 编程语言

项目管理---敏捷开发--结对编程

2014-04-07 17:32 232 查看
首先接触这个词是从师哥的博客中学习到了(看博客的好处啊),由于在人事系统优化过程中一直在敏捷开发的思想下指导开发,学习到了很多新的理念、开发方法、指导思想等等,都是值得在项目的开发中深刻的去体会和运用的,毕竟这个思想大公司(特别是外企)都在使用,可见其在项目的管理中起着很重要的作用,今天和大家一起分享一下---结对编程。



故事情节:

前段时间徒弟在调试遇到的问题:一个人研究了一天了还是基本上没有什么进展,主要是提示不出来,不知道错误在哪?时间有点长了,我和响去帮助他们俩来调试,当我和他一起调试的时候,发现很简单,一会就解决了,主要是徒弟经验不足吧,断点的位置不对,造成了一个问题花费了一天多的时间没有解决,自己也有点厌烦了,按捺不住了,做着没有意思了,针对这个故事情节,我联系到了敏捷开发思想---结对编程。



结对编程技术是指两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计、同一个算法、同一段代码或同一组测试。与两位程序员各自独立工作相比,结对编程往往只需花费大约一半的时间就能编写出质量更高的代码。



结对编程技术是一个非常简单和直观的概念,能达到事半功倍的工作效果。但是,人与人之间的合作不是一件简单的事情——尤其当人们都早已习惯了独自工作的时候。实施结对编程技术将给软件项目的开发工作带来好处,只是这些好处必须经过缜密的思考和计划才能真正体现出来。而另一方面,两个有经验的人可能会发现配对编程里没有什么技能的转移,但是让他们在不同的抽象层次解决同一个问题会让他们更快地找到解决方案,而且错误更少。

两个程序员具有相同的缺点和盲点的可能性很小,所以我们当我们采用结对编程的时候会获得一个强大的解决方案。而这个解决方案恰恰是其它软件工程方法学中所没有的。

在我们平时的编程当中,如果遇到一个非常难解决的问题(困难到对该项目产生厌烦的态度),那么你势必会希望录求帮助,无论是从信息量庞大的网上,还是从身边的技术大师那里,你都会努力去解决(前提是你有对计算机知识的热爱)。这个时候不妨采用结对编程试一下,其它的不说,可能感觉就不同。

优点

程序员互相帮助,互相教对方,可以得到能力上的互补。
可以让编程环境有效地贯彻Design。
增强代码和产品质量,并有效的减少BUG。
降低学习成本。一边编程,一边共享知识和经验,有效地在实践中进行学习。
在编程中,相互讨论,可能更快更有效地解决问题。

贾琳师哥博客的几句话

1、结对编程,拓宽思路,避免一个人钻入死胡同。所谓,当局者迷,旁观者清。



2、增加了解决问题的耐心,如果一个人遇到棘手的问题,迟迟不能解决,脾气容易暴躁,容易放弃。如果有人作伴,可以更有耐心,可以在互相调侃中解决问题。



3、结对编程,在解决未知领域问题时,有奇效。最好是两个人有一定技术积累,至少一个人已经有所研究。切忌两个新手一起从零开始。



4、结对编程可以使知识互补,让人学到新东西,在解决问题中体会快乐。







弊端:

对于有不同习惯的编程人员,可以在起工作会产生麻烦,甚至矛盾。
有时候,程序员们会对一个问题各执己见(代码风格可能会是引发技术人员口水战的地方),争吵不休,反而产生重大内耗。
两个人在一起工作可能会出现工作精力不能集中的情况。程序员可能会交谈一些与工作无关的事情,反而分散注意力,导致效率比单人更为低下。
结对编程可能让程序员们相互学习得更快。有些时候,学习对方的长外,可能会和程序员们在起滋生不良气氛一样快。比如,合伙应付工作,敷衍项目。
面对新手,有经验的老手可能会觉得非常的烦躁。不合适的沟通会导到团队的不和谐。
新手在面对有经验的老手时会显得非常的紧张和不安,甚至出现害怕焦虑的的精神状态,从而总是出现低级错误,而老手站在他们后面不停地指责他们导致他们更加紧张,出现恶性循环。最终导致项目进展效率低下,并且团队貌合神离。
有经验的人更喜欢单兵作战,找个人来站在他背后看着他可能会让他感到非常的不爽,最终导致编程时受到情绪影响,反而出现反作用。

8.在公司中,结对编程也是需要的,毕竟老人需要带新人嘛,但是对项目的开发成本上会有一定程度的上升,这个需要适度就好了。

是否使用结对编程,需要具体问题具体分析,不可盲目。任何事手都有他的好与坏,结对编程也不例外,只有知道了好与坏,你才能更好的利用它,提高我们的开发效率。

最后,需要我们记住的是,人才是软件开发中最核心,也是最需要花时间去关注的事情;结对编程是个大学问,里面有很多知识需要学习,在以后的项目开发中不断的体验吧。



参考资料博客:

陈勇的博客 - Scrum

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: