敏捷最佳实践列表[已关闭]

我正在尝试定义我们将要使用的敏捷实践,并且我很难定义敏捷最佳实践列表。我希望我的列表更多地从技术角度(工程师的角度来看),并且应该定义SW工程师应该如何处理开发。该清单应尽可能与管理层相关。 如果重要,我们用c ++编程。 找到许多最佳实践相当容易,这是我迄今为止设法形成的列表: 重构 发布周期小 编码标准 集体所有权 系统隐喻 刨游戏 整队 Scrum每日会议 结对编程 测试驱动设计 行为驱动的发展 持续集成 代码和设计评论 活跃的利益相 文件迟到了 广泛使用设计模式 我们已经在使用列表中的一些实践。有些我们不打算用。 是否有可以添加到列表中的良好敏捷实践? PS我可以根据要求添加一些小的实践描述。 编辑 正如我所说,我们已经在使用一些敏捷实践(主要是被证明是最好的实践): 持续集成 - 这是非常好的做法。获得有关最新签到的快速反馈非常有用。因为有人打破了构建而导致停工时间非常令人沮丧,特别是如果它持续时间更长。 系统隐喻 - 它几乎没有帮助,因为具有描述性的类和函数名称有助于更好地理解代码 代码标准 - 我们在进入编码之前创建了编码标准。使用统一的代码样式是很好的,因为任何人都可以使用另一个代码并像它自己一样处理它。 TDD - 在开始编码之前,我们设置环境以便轻松创建单元测试,但直到最近我们才开始采用TDD原则。几年前我亲自尝试过它,并没有那么顺利,但现在我喜欢它。不幸的是,并非所有团队成员都这样做 - 只有半个团队。 Scrum每日会议 - 我们每天都在尝试会议,但是他们并没有那么顺利。除了我以前的工作,每天的会议通常会变成30多分钟的讨论。我想我们错过了好的scrum大师(或者领导者,怎么称呼?) 重构 - 我们进行了重构,但仅限于团队中的某个人创建了更改请求。我们并没有故意这样做:“让我们坐下来,减少我们的技术债务”。 小的发布周期 - 现在我们有很大的发布周期(6个月),而对于下一个版本,我们正计划将周期分解为4-6个内部版本。 代码和设计评审 - 我们进行了初步的设计评审(如5年前),并且在此期间很少有设计评论一些次要子组件。我们对某些课程进行了代码审查 文件迟到 - 我们为此版本做了。只需要的文档就意味着编写文档的编码越来越少。开发人员喜欢它:) 使用设计模式 - 我们已经在适当的地方使用了设计模式。 由于我们组织的结构,我们不能使用其他做法,但正如您所看到的那样,列表很长,而且您无法选择所有内容。 此外,现在我们只有4个软件开发人员,每个开发人员维护大约80千万卢比并开发新东西。因此,我们不能做例如结对编程或集体所有权。     
已邀请:
首先,阅读敏捷软件的十二原则。 其次,从你所知道的如何实现对你最重要的原则中找出答案。 人们经常犯错误,希望敏捷开发成为一个Silver Bullet或一套严格的流程,您需要遵守这些流程才能使您的软件开发成功。 这不是它的意思。您已经拥有15个“最佳实践”列表这一事实让我感到有些害怕。不要太认真,不要过度思考。如果你发现你错过了什么......在下一次迭代中得到它。     
本文总结了所有敏捷最佳实践(包含链接): 要求 - 产品愿景/愿景声明 - 产品积压 - 用户故事 - 用例 - 使用场景 - 角色 - 规划扑克 要求优先顺序 设计 - 建筑尖峰/尖峰解决方案 - 领域驱动设计 - 紧急设计/进化设计 - CRC卡 - 按合同设计 - 系统隐喻 施工 - 编码样式/编码指南/编码标准 - 测试驱动开发 - 行为驱动的发展 - 配对编程/配对 - 重构 - 集体代码所有权 - 每日构建/自动构建/十分钟构建 - 持续集成 - 代码评论/同行评审 - 软件指标/代码指标&分析 - 源控制/版本控制 - 问题跟踪/错误跟踪 - 配置管理 - 频繁交付/频繁发布 测试 - 单元测试 - 烟雾测试/构建验证测试 - 集成测试 - 系统测试 - 探索性测试 - 测试自动化 - 故事测试/验收标准/验收测试 处理 - Timeboxing / Fixed Sprints / Fixed Iteration Length - 发布计划 - 迭代计划/计划游戏/ Sprint计划 - Sprint Backlog - 任务委员会 - 完成/完成的定义 - 每日站立会议/每日Scrum - 速度 - Sprint评审/迭代演示 - 价值流图 - 根本原因分析/ 5为什么 - 烧毁图表/烧毁图表 - 大型可见图表/信息散热器 - 回顾/反思研讨会 组织 - 小团队 - 跨职能团队 - 自组织团队/ Scrum团队 - Colocated Team / Sitting Together / Common Workspace - 现场客户/产品负责人 - Scrum Master - 可持续发展 - 让人们四处移动 - Scrum的Scrum     
我现在正在阅读“成功与敏捷”。在第2章中,Mike Cohn对建立任何类型的“最佳实践”提出了可怕的警告: “当转换到Scrum时...收集最佳实践是危险的。就像警报器从岩石中向我们唱歌一样,最佳实践诱使我们放松并停止对Scrum必不可少的持续改进的努力......虽然团队成员应该总是看为了分享他们新发现的良好工作方式,他们应该抵制将它们编成一套最佳实践的冲动......“ 他继续引用丰田的Taiichi Ohno: “...有一种称为标准作品的东西,但标准应该不断改变。相反,如果你认为标准是'你能做到的最好',那就完全...... [如果我们确定了最好的东西]可能的方式,改善[持续增量改善]的动机将会消失。“ 归因:成功应用敏捷:软件开发使用Scrum,Mike Cohn,2010     
您可以添加的一些非常重要的事情是: 自我管理团队 - 指“最佳架构,要求和设计 从自组织团队中脱颖而出“ 回顾 - 指“团队定期反思如何 变得更有效,然后调整和调整 相应的行为“ 简单的设计解决方案,最大限度地减     
列出最佳实践似乎是BDUF的敏捷过渡。如果你想变得敏捷,试着以敏捷的方式去那里。 您当前流程的最严重问题是什么?你可以改变什么来解决这个问题?试一试,看看它是如何工作的。 冲洗并重复。 并以团队的形式完成所有这些工作。 编辑: 有些事情在评论中很难理解,所以我将在这里扩展一些评论:   我认为问题是有些人拒绝编写单元测试,但在我看来,单元测试提供了更大的安全网。不知道可以做些什么。 测试覆盖率差实际上是一个负面的解决方案而不是实际问题。 如果您的测试覆盖率不佳,那么您可能会提供带有错误的软件,或者在不引入错误的情况下进行更改很困难且耗时。这些都是问题。 如果人们拒绝写测试,或者他们不相信存在问题,他们不相信编写单元测试会解决它,或者他们不关心。 最好的办法是与你的团队聚在一起,决定问题是什么,并就试图改进的事情达成一致。 如果您的团队成员对改进不感兴趣,那就是一个更大的问题。您仍然应该尝试将其作为一个整体团队来解决,但这很困难,您可能需要一些管理帮助。   正如我已经提到的,我们已经成功地使用了一些敏捷实践,但也许有新的更好的方法。我想要做的是重新评估我们的工作方式。 好。这基本上就是我建议你应该做的事情,但是作为一个团队来做,并专注于解决已发现的问题,而不是试图列出最佳实践。     
我相信你的清单相当完整。您可以为每次迭代添加“清晰且固定的范围”,因为我经常在实践中看到问题 - 尽管有人可能认为它只是“小发布周期”的一部分。 另外,我会将“小发布周期”和“重构”列为单独的点 - 它们相当独立。 无论如何,我不会过分担心“缺少”敏捷的一部分。敏捷方法的一个重要特性是它们不是全有或全无 - 你可以从一个适合你的部分开始,然后逐渐增加。有些实践确实相互依赖(例如重构和集体代码所有权),但大多数可以独立使用。     
要添加的其他一些想法,尽管有些想法可能隐含在其他实践中: 烧掉图表 故事板 Sprint评论 产品积压 请记住,每个都可以按照自己的方式进行定制,这是一个重要的方面,因为如果对您的情况没有用,那么对于练习过于虔诚并不一定是好事。 Sprint评论与Sprint Retrospectives不同,至少在我看来。审核是向其他人(通常是利益相关者)展示sprint中完成的内容,以获取反馈并使用可能来自产品的新项目更新产品待办事项。回顾展是团队开会讨论什么进展顺利以及下一个冲刺可以改进的地方,这与我的想法略有不同。     
Scrums每个给定的时间段(每天,每周等)和结果发生的冲刺。 不是很模糊,但无论如何都值得链接到解释。     
“敏捷”或“敏捷软件开发”不是一种单一的方法。这是一个总括性术语,涵盖了您可能选择持有的“价值”集合。两种不同的方法既可以“敏捷”又可以在你应该或不应该做的实践中相互冲突。 没有一个明确的“敏捷”定义 - 所以不可能制定一个明确的“敏捷实践”清单。 有一个基本的极限编程实践的明确列表(即你必须做的事情,以满足“做XP”的基本定义。) 做Scrum还需要做很少的事情(虽然这不是很有用,因为它对于特定的工程实践完全没有任何意义。)     

要回复问题请先登录注册