2010-08-05 57 views
2

我正在寻找的信息,文章,网站,或者有什么好处意见和双方的弱点:结对编程和独奏开发商

  1. 结对编程
  2. 独奏节目(单个开发者)

为什么我们使用极限编程等敏捷方法?

对我来说最重要的问题:

什么是使用传统软件开发的难度?

+0

此问题是无题,因为它不在本网站适合的问题范围内,如[我可以在这里询问什么主题?](http://stackoverflow.com/help/on-topic )另请参阅:[我应避免询问哪些类型的问题?](http://stackoverflow.com/help/dont-ask)您可能能够在[另一个Stack Exchange站点](http:// stackexchange.com/sites#name),例如[pm.se]或[softwareengineering.se]。 – Makyen 2017-08-18 23:32:12

回答

1

这是一个非常直白的话题,所以你可以通过谷歌搜索找到成千上万的资源。但是我发布了维基百科链接,其中包含足够的信息+大量链接到其他文章。

Extreme Programming

Pair Programming

7

我的看法: 如你所知,这一切都取决于。我已经完成了很多工作,可以说当编程团队需要用复杂的业务逻辑来解决问题时,编程编程是最有效的。

结对编程

1.1你是不是浪费时间坐在Hacker News上或任何东西。这是不可能的。

1.2你在分享你学到的东西。

1.3当两个人写作时,代码变得更好。因为你坐在潜在的评论家旁边,所以更简洁易读。

1.4不需要代码审查。

1.5你从与别人坐在一起明智地和团队合作地学到很多知识。

单独编程

2.1您决定如何去做。

2.2还有更多的尝试/失败的方法可能是教育。

2.3如果我们谈论一个简单的任务,单独工作可以更有效率。

2.4你有一种拥有代码的感觉,所有与此相关的好坏。

至于网站: 它有大量的那里。我建议在parleys.com上阅读或阅读Kent Becks博客。

+0

如果我能为1.1,我会给+10。我和同伴在最近两天的表现非常好。他今天休假了(今天加上今天是星期五),我在这里徘徊。 – Amarghosh 2010-08-06 08:32:52

2

配对编程名义上减半你的生产力(你有两个人做1的工作),但支持者声称,好处(更好的质量,即时的反馈)超过这个。

一个单个开发者谁是非常称职的可以是非常,非常有成效的,因为没有沟通和协调开销或废物,但仍,项目单一的开发者可以切实解决的范围是非常有限的。如果开发人员的能力不足,那么缺乏寻求帮助的人(或者仅仅是反馈和想法)也可能成为一个问题。

为什么我们使用敏捷方法如 极限编程?

因为它们在处理不明确或不断变化的需求时比顺序处理好得多。

使用传统软件开发有什么困难?

他们遭受太长的反馈周期,尤其是在需求方面。在最糟糕的情况下,当您首次向客户展示您的软件时,您的软件已经完整并经过测试,发现几个基本假设是错误的,并且您误解了核心需求,基本上可以从头开始,浪费您的全部工作。另外,一些传统的“重量级”流程要求您花费大量时间在非生产性的东西上,比如即将废弃的设计文档和流程文档。

+1

好点,但我不确定配对编程是否真的让您的资源减半。我倾向于认为与另一个人工作时间较短,所以它可能看起来更像是60-70%的生产力。 – UpTheCreek 2010-08-05 08:43:26

+1

只有50%的生产力是无稽之谈。人们编程的案例研究表明,他们在80%的时间内仍然不动(即只是在思考)。当你有两个脑袋并行思考时,这不是100%的开销。有一些开销,但据我记忆,这更多的是15%的火花。 – hlovdal 2011-06-13 03:04:46

+0

在威廉姆斯/凯斯勒配对程序员引用的研究中,大约有一半的时间以独奏程序员的身份完成,错误数量显着减少。 如果不是单独编程(脑锁,容忍延迟,分心,中断,盲目小巷,难以发现的小错误,过度建筑等)的问题,50%的东西就是对的。 IME,它付出更多的时间往往不是。即使你在给定的时间内可能没有更快/更好/更酷,它仍然是长时间(天/星期)的净胜。你赢得的赌注比你输的多得多,损失更少。 – 2012-12-12 23:07:10

0

对于使绝对泛型语句支持任何开发方法,我有点困难。我已经看到了很多不同的方法,它们的价值通常取决于它们是否适合需求以及是否达到预期结果。

例如,您可以说敏捷方法的一个原则是所有参与者之间的沟通水平提高。另一方面,你可以找到具有非常传统方法的团队,揭露实质性的沟通。那么这是支持敏捷还是传统?

我从未见过一个团队正在使用直接从教科书中获得的开发方法“普通香草”。所有成功的团队(您选择的“成功”)都在一定程度上适应了他们选择的开发方法。

底线:我不认为其中一种或另一种方法“更好”。这取决于你在做什么。或者用简单的话来说:你可以拥有世界上最好的锤子,但为了将螺丝钉拧到一块木头上,螺丝刀可能是更好的工具。