为什么进程门是你应该不惜一切代价避免的邪恶的地狱产物?

每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。

通往地狱的道路是由过程门关上的,是用最好的意图铺设的。

今天,我想谈谈领导者常犯的错误。让我们看看你是否能发现这种模式:

  • 工程部门带来了太多的错误,因此您需要一个 QA 团队来审查所有内容,然后再将其投入生产。
  • 曾经有过做出糟糕的架构决策的历史,因此您需要进行架构审查。
  • 团队一直在交付完全无法使用的 UI,因此您在任何东西可以交付生产之前添加一个设计师审查步骤。
  • 该团队在 AWS 中不断出现成本超支,因此您拥有一个控制所有基础设施代码的中央团队。
  • 人们在代码审查方面做得很糟糕,所以你添加了一组最资深的人,他们是唯一能够合并 PR 的人,他们会在所有内容发布之前审查所有内容。
  • 作为领导者,你是设计师。很多时候,您将面临需要您设计解决方案的组织挑战。您在所有这些示例中所做的事情的名称是添加“过程门”。(如果这是一个电视节目,每次你读到“进程门”这个词时,我都会播放可怕的音乐)

    过程门有什么问题?

    与任何管理技术一样,流程门是您可以使用的工具。但它们的后果往往比大多数人想象的要糟糕得多。

    过程门的问题有很多:

    1. 过程门往往会随着时间的推移而持续存在
    2. 工艺门会增加周期时间,这是一件非常非常糟糕的事情。
    3. 过程门往往会扩散成死亡螺旋(事情不正常,添加更多)

    过程门往往会随着时间的推移而持续存在

    工艺门的危险之一是它们难以去除。因为它们通常是为了应对不好的事情发生,所以移除它们会让人感到害怕。移除流程门通常被视为重新引入最初的痛苦。因此,它们会持续存在,并且随着时间的推移往往会造成微妙的损害。

    工艺门会增加周期时间,这是非常糟糕的

    大多数工程组织关注速度,但他们应该关注周期时间。周期时间是您的工程组织成功程度的主要指标。或者至少 99% 的现代基于软件的产品开发都是如此。

    这是一个重要的概念,所以如果你还不相信,请阅读我关于这个主题的帖子:空战可以教会我们关于软件项目失败的什么?

    过程门增加周期时间的原因是它们正在向过程中添加步骤。从数学上讲,它们不可能增加周期时间。所以这在实践中意味着,他们做了如下的事情:

  • 增加 PR 合并之前的时间量。
  • 增加发布前的时间量。
  • 增加基础设施更改之前的时间量。
  • 增加建筑设计获得批准之前的时间。
  • 这些周期时间的问题是它们也很难看到。它们往往会随着时间的推移而积累,而不是工程速度放缓或交付减少的明显问题。它们会导致整体效率较低、响应速度较慢的组织。

    工艺门增加周期时间的另一种方式是,它们通常会增加人员之间来回传递的次数。例如,如果您在工作投入生产之前添加一个 QA 步骤,那么您就是在添加一整套需要在发布之前来回执行的工作。虽然这似乎是可取的,但它通常完成的是创建一个在团队之间反弹的全新工作类别。这项工作有其自身的延迟,因为它可能每天只能审查一次。这可以增加几天和几天的循环时间来发布代码。

    过程门往往会扩散成死亡螺旋

    当循环时间增加时,可预测的结果是批量增加。所以这也意味着你有更大的工作块在系统中移动,而不是更小的工作块。这会减少您的整体产品开发流程,并导致整体工作质量降低、响应速度降低。

    因此,您尝试做的事情(例如,提高质量)实际上往往会因为添加质量过程门而变得更糟。

    过程门也可能存在道德风险问题。如果开发团队将他们的工作交给测试,那么他们自己对质量的关注就更少了。同样,这可能会导致事情适得其反,实际上变得更糟而不是更好。

    你应该怎么做而不是过程门?

    因此,您应该寻找替代方案,而不是流程门:

    1. 临时或狭隘的过程门
    2. 自动化和警
    3. 非门控支票
    4. 在同一个周期内进行
    5. 从失败中学到更多

    使您的流程关口暂时或狭隘地集中

    负责任地使用过程门是可能的。最好的方法是让它们暂时或狭隘地集中。

    临时流程门是您用来让人们关注事物的东西。或者您可以使用它们,这样您就可以了解可能表明您的流程更改不足的异常。

    我最喜欢的例子是迁移到服务的方法。如果您有一个将组织迁移到服务的长期计划,那么一开始使用服务可能会非常痛苦。处理服务计划最优雅的方式是组建一个完全专注于消除服务障碍的团队。他们的工作是始终致力于最妨碍人们在新项目中使用服务的事情。要添加的流程门是说所有正在计划工作的团队都需要分享任何阻碍他们将工作作为服务而不是在单体中工作的痛点。

    请注意,在此示例中,进程门非常轻量级。你让人们思考这些事情,并与从事服务工作的团队分享一些信息。但是你并没有真正建立一个流程门,因为他们没有被这个团队阻止。所以在很多方面,它甚至不是一个真正的进程门。

    另外,请注意,它本质上是暂时的。随着时间的推移,这个过程门应该变得越来越没有必要。随着服务变得更容易,这个过程门变得不那么重要了。

    还要注意,这个过程门正在帮助这个团队集中精力减少周期时间。所以它抵消了典型工艺门的许多缺点。所以这是一个很好的例子,说明如何正确地做到这一点。

    您还可以专注于使您的流程门范围非常狭窄。例如,如果您有大量有问题的 PR 被合并,您可能希望所有 PR 都经过一组经验丰富的审阅者。您可以将其翻转,使其范围更窄:人们经历几个月的试用期,其他人审查他们的 PR,然后他们毕业以便能够将它们合并为同行。

    例如,您让人们根据将导致问题的风险级别标记他们的 PR。最有经验的团队成员可以审查高风险 PR。执行这种狭窄范围的优点之一是您可以避免一些与进程门有关的问题。如果最有经验的团队成员必须审查所有内容,他们会不知所措,而且一切都会花费更长的时间。如果它的范围很窄,他们的整体负担会更小,因此周期时间的增加会更温和。

    例如,缩小 PR 流程门范围的一种常见方法是,对涉及数据库迁移的更改进行更多审查,因为当出现问题时它们可能更具破坏性。

    改用自动化和警

    避免流程门的更好方法之一是使用警 或自动化来代替流程门。

    因此,与其查看 PR 对基础设施成本的影响,不如在基础设施成本飙升时发出警 。运行自动化 QA 测试以确保功能不会中断,而不是让人类来做。考虑一下可能会有所帮助:“我怎样才能提醒这一点,而不是为此采取额外的步骤”。

    使用非门控检查

    自动化和警 是使您的检查无门控的两种方法。非门控检查是指检查发生时,但不会阻止事情向前发展。

    例如,安全团队可能会在生产中进行自动安全检查,而不是在产品投入生产之前添加一个步骤。这是非门控检查。如果安全检查发现问题,您可以快速回滚到安全检查点。或者有一个明确的方法来快速解决某个 SLA 内的问题。

    这基本上是流水线,这就是我们的计算机如此之快的原因。

    非门控检查的挑战在于,当您的工程组织中的周期时间较短时,它们的效果最好。一个能够注意到一个重大问题并在几个小时内推出修复程序的团队可以使用非门控检查比一个需要几周时间才能推出更改的团队更容易使用。因此,转向这一点往往与其他减少周期时间的努力齐头并进。

    在同一个周期内完成

    避免流程门的另一种方法是与其他工作同时进行。因此,您可以让 QA 人员与工程师并肩工作,而不是事后审查他们的工作。您可以拥有一个与团队中的任何其他成员一样工作但在运营事务方面具有专业知识的 SRE。让他们并肩工作,他们通常可以快速响应请求,甚至可以通过将代码的相同部分配对在一起。嵌入专业知识以便并行完成工作通常是绕过流程关口的有效方法。

    这种类型的同时协同工作需要一段时间才能做好。你会面临阻力,一开始感觉不自然。但这是一种值得培养的能力。让您的设计师、QA 和运营人员与您的工程团队更紧密地合作。你可能会对结果感到惊讶!

    您还可以使用点对点选项。因此,与其让一个集中的团队审查 PR 请求,不如让他们在同一个团队中的同行这样做。

    从失败中了解更多

    最后,过程门通常是对失败的响应。发生了一些不好的事情,因此您添加了一个流程门作为响应。

    这可能是避免错误和质量问题的文化的结果。有时,我发现在这些情况下尝试接受失败可能很有用,因为避免是问题的一部分。

    因此,当您遇到问题时,请尝试以好奇心而不是责备来解决它。为什么会这样?有可能再次发生吗?真的有多糟糕?

    尝试深入研究,看看是否有方法可以使这类问题不那么突出,而不需要过程门。这是针对这个人的培训吗?是不是更好的可观察性?

    有时从失败中学到的东西是你有一个不应该用这个过程来解决的问题。例如,您可能会发现您的团队中没有足够的高级工程师。

    添加流程门通常不是解决故障的最佳方法。但是失败通常是了解组织运作方式的好方法,并且凭借好奇心和想象力,您通常可以想出可以改善团队的方法。

    谢谢你

    该图片由 Ulrike Leone 在Pixabay上发布。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年8月15日
    下一篇 2022年8月15日

    相关推荐