我正在寻找有关两者的好处和弱点的信息,文章,网站或意见:
为什么我们使用极端编程等敏捷方法?
对我来说最重要的问题是:
使用传统软件开发有什么困难?
答案 0 :(得分:8)
我的意见: 如你所知,这一切都取决于。我已经做了很多,并且可以说当你在一个需要用复杂的业务逻辑来解决问题的团队时,结对编程是最有效的。
结对编程
1.1你不是在浪费时间坐在黑客新闻或任何东西上。这是不可能的。
1.2你正在分享你学到的东西。
1.3当两个人写作时,代码变得更好。更简洁,更容易阅读,因为你坐在潜在的评论家旁边。
1.4减少代码审查的需要。
1.5你可以通过与代理人明智和团队合作来学到很多东西。
独奏编程
2.1你决定它会是怎样的。
2.2更多的尝试/失败方法可能具有教育意义。
2.3如果我们谈论的是一项简单的任务,单独工作可能会更有效率。
2.4你有一种拥有代码的感觉,与之相关的好处和坏处。
至于网站: 那里有大量的东西。我建议你去parleys.com或者阅读Kent Becks博客。
答案 1 :(得分:2)
结对编程名义上将你的工作效率降低一半(你有2个人做1的工作),但是支持者声称这些好处(更好的质量,即时反馈)超过了这个。
非常称职的单一开发人员可以非常高效,因为没有沟通和协调开销或浪费,但是,单个开发人员可以实际解决的项目范围非常有限。如果开发人员不是非常称职,那么缺乏寻求帮助(或仅仅是反馈和想法)的人也是一个问题。
为什么我们使用敏捷方法 极端编程?
因为在处理不明确或不断变化的要求时,它们比顺序过程要好得多。
使用传统软件开发有什么困难?
他们的反馈周期太长,特别是在需求方面。在最糟糕的情况下,当您第一次向客户展示并且发现几个基本假设是错误的并且您误解了核心要求时,您的软件已经完成并经过测试,您基本上可以从头开始,浪费您的全部精力。
此外,一些传统的“重量级”流程要求您花费大量时间在非生产性的东西上,比如即将淘汰的设计文档和流程文档。
答案 2 :(得分:1)
这是一个非常直接的主题,因此您只需通过Google搜索即可找到数千种资源。但我发布的维基百科链接包含足够的信息+一大堆链接到其他文章。
答案 3 :(得分:0)
我有点挑战绝对通用陈述,支持任何开发方法。我已经看到了很多不同的方法,它们的价值通常取决于它们是否符合需求以及是否达到了预期的结果。
例如,您可以认为敏捷方法的原则之一是所有参与者之间的沟通水平提高。另一方面,您可以找到具有非常传统方法的团队,这些团队可以进行大量的沟通。那么这有利于敏捷还是传统?
我从未见过一个直接从教科书中使用“普通香草”的开发方法的团队。所有成功的团队(您选择的“成功”)都在某种程度上调整了他们选择的开发方法。
结论:我不认为一种或另一种方法本身更好。这取决于你在做什么。或者简单来说:你可以拥有世界上最好的锤子,但是为了将螺丝拧成一块木头,螺丝刀可能是更好的工具。