代码之家  ›  专栏  ›  技术社区  ›  BЈовић

敏捷最佳实践列表[结束]

  •  28
  • BЈовић  · 技术社区  · 14 年前

    我试图定义我们将要使用的敏捷实践,而且我很难定义敏捷最佳实践列表。我希望我的列表更多地从技术角度(工程师的角度)出发,并且应该定义软件工程师应该如何进行开发。清单应尽可能与管理层有关。

    找到许多最佳实践是相当容易的,这是我迄今为止设法形成的列表:

    1. 重构
    2. 小释放周期
    3. 集体所有制
    4. 计划游戏
    5. 整个团队
    6. Scrum每日会议
    7. 测试驱动设计
    8. 行为驱动的发展
    9. 持续集成
    10. 规范和设计评审
    11. 文件迟交
    12. 设计模式的广泛使用

    我们已经在使用列表中的一些实践。有些是我们不会用的。

    如果需要的话,我可以添加一些实践的小描述。

    正如我所说,我们已经在使用一些敏捷实践(大多数实践证明是最好的):

    1. 持续整合-这是非常好的做法。获取最新签入的快速反馈非常有用。因为有人破坏了一个建筑而停工是非常令人沮丧的,尤其是如果它持续的时间更长。
    2. 系统隐喻-它帮助不大,因为有描述性的类和函数名有助于更好地理解代码
    3. TDD—在开始编码之前,我们设置了环境来轻松创建单元测试,但直到最近我们才开始采用TDD原则。几年前我亲自试过,结果不太顺利,但现在我喜欢了。不幸的是,并不是所有的团队成员都这么做-只有一半的团队。
    4. Scrum每日会议-我们试过每日会议,但效果不太好。和我以前的工作一样,每天的会议通常会变成30多分钟的讨论。我想我们错过了优秀的scrum大师(或者领导者,怎么称呼?)
    5. 重构-我们确实进行了重构,但前提是团队中有人创建了更改请求。我们不是故意这样做的:“让我们现在就坐,减少我们的技术债务”。
    6. 小的发布周期-现在我们有巨大的发布周期(6个月),对于下一个版本,我们计划将周期分解为4-6个内部发布。
    7. 文件迟了-我们是为了这次发布才这么做的。只有必需的文档意味着编写文档的乐趣越来越少。开发人员很喜欢它:)
    8. 使用设计模式-我们已经在适当的地方使用设计模式。

    此外,现在我们只有4个软件开发人员,每个都保持大约80 kLoc和工作新的东西。因此,我们不能做例如成对编程,或集体所有权。

    9 回复  |  直到 6 年前
        1
  •  20
  •   Justin Niessner    14 年前

    首先,去读 Twelve Principles of Agile Software .

    其次,从你知道的事情中找出如何实现对你来说最重要的原则。

    这不是它的本意。你已经列出了15个“最佳实践”,这让我有点害怕。不要太认真,也不要想得太多。如果你发现你漏掉了什么…在下一个迭代中得到它。

        2
  •  17
  •   BЈовић    13 年前

    This text 总结所有敏捷最佳实践(带有链接):
    要求
    -产品愿景/愿景宣言
    -产品积压

    -用例
    -使用场景

    -计划扑克
    需求优先级

    -架构峰值/峰值解决方案
    -领域驱动设计
    -应急设计/进化设计

    -合同设计
    -系统隐喻
    建筑
    -编码方式/编码指南/编码标准
    -测试驱动开发
    -行为驱动的发展
    -配对编程/配对
    -重构
    -集体代码所有权
    -每日生成/自动生成/十分钟生成
    -持续集成


    -源代码管理/版本控制

    -配置管理

    测试
    -烟雾测试/建造验证测试
    -集成测试
    -系统测试
    -探索性测试

    -故事测试/验收标准/验收测试
    过程
    时间装箱/固定冲刺/固定迭代长度
    -发布计划
    -迭代计划/计划游戏/冲刺计划

    -任务委员会
    -完成/完成的定义

    -速度
    -Sprint回顾/迭代演示

    -根本原因分析/5个为什么
    -烧毁图表/烧毁图表

    -回顾/反思研讨会
    组织
    -小团队

    -自组织团队/Scrum团队
    -协同团队/坐在一起/共同工作区

    -Scrum管理员
    -可持续的步伐

    -灌木丛

        3
  •  14
  •   Greg Gauthier    14 年前

    我正在读《敏捷的成功》。在第二章中,迈克·科恩提出了一个可怕的警告:不要建立任何形式的“最佳实践”:

    他接着引用丰田的大野泰一的话:

    “……有一种叫做标准工作的东西,但标准应该不断改变。相反,如果你认为标准是“你能做的最好的”,它就结束了。。。[如果我们建立一个尽可能好的方法,改善(持续的渐进改进)的动力就会消失。”

    Succeeding with Agile: Software Development Using Scrum, Mike Cohn, 2010

        4
  •  4
  •   sjt    14 年前

    您可以添加一些非常重要的内容:

    1. 自我管理的团队-指“最佳架构、需求和设计 从自组织团队中脱颖而出”

    2. 为了更有效,然后调整和调整 相应的行为”

    3. 简单的设计解决方案,使完成的工作最小化

        5
  •  4
  •   Don Roby    14 年前

    列出一个最佳实践列表看起来像是敏捷转换的BDUF。如果你想变得敏捷,试着以敏捷的方式达到目的。

    你现在的流程最糟糕的问题是什么?你能改变什么来解决这个问题?试试看效果如何。

    冲洗并重复。

    作为一个团队完成所有这些。

    编辑:

    有些东西很难在评论中合理地表达出来,所以我将在这里进一步介绍一些评论:

    我认为问题是有些人拒绝编写单元测试,但在我看来,单元测试提供了更大的安全网。不知道该怎么办。

    如果您的测试覆盖率不高,那么您可能交付的软件存在缺陷,或者在不引入缺陷的情况下进行更改是困难和耗时的。这些都是问题。

    如果人们拒绝编写测试,要么他们不相信有问题,要么他们不相信编写单元测试可以解决问题,要么他们不在乎。

    最好的办法就是和你的团队聚在一起,决定问题所在,并就需要改进的地方达成一致。

    如果你的团队成员对改进不感兴趣,那是一个更大的问题。你还是应该试着把它作为一个整体来处理,但这很困难,你可能需要一些管理方面的帮助。

    正如我已经提到的,我们已经成功地使用了一些敏捷实践,但是也许有一些新的更好的方法来做事情。我想做的是重新评估我们是怎么做的。

        6
  •  2
  •   sleske    14 年前

    我相信你的名单相当完整。您可以为每个迭代添加“清晰和固定的范围”,这是我在实践中经常看到的问题——尽管有人可能会说这只是“小发布周期”的一部分。

    另外,我会把“小的发布周期”和“重构”列为单独的点——它们是相当独立的。

    无论如何,我不会过分担心敏捷的“缺失”部分。敏捷方法的一个重要特性是,它们不是全部,也不是什么都不是——你可以先从一个对你很有用的部分开始,然后逐步提高。有些实践确实相互依赖(例如重构和集体代码所有权),但大多数都可以独立使用。

        7
  •  2
  •   JB King    14 年前

    还有一些想法需要补充,尽管有些想法可能是你在其他实践中隐含的:

    记住,每一个都可以按照自己的方式定制,这是一个重要的方面,因为如果一个练习对你的情况没有帮助的话,那么太过虔诚地遵循它未必是件好事。


        8
  •  0
  •   rownage    14 年前

    Scrums 每个给定的时间段(每天、每周等)以及由此产生的冲刺。

    不含糊,但无论如何值得一个解释的链接。

        9
  •  0
  •   Dafydd Rees    14 年前

    “敏捷”或“敏捷软件开发”不是单一的方法。这是一个总括性的术语,涵盖了你可能选择持有的一系列“价值观”。两种不同的方法都可以是“敏捷”的,但是当涉及到你应该或者不应该做的实践时,它们会相互冲突。

    “敏捷”没有一个明确的定义,所以不可能列出一个明确的“敏捷实践”清单。

    a definitive list of the basic Extreme Programming Practices

    也有一些你必须做的事情去做Scrum(尽管那不是很有用,因为它 完全没有提到具体的工程实践 .)