制约理论

2023 年底,我的团队开始了最重要的项目。我担任项目领导,组织项目、协调会议、发布流程等。在最初的几个月里,项目进展顺利,我们做出了一些艰难的决定,验证了几个概念,并开始了第一阶段的推广。

然而,我总觉得自己拖了团队的后腿,成为了整个团队的瓶颈。在与该区域负责人一对一会面时,我向他诉说了我的沮丧,他给出了这样的回答:

是的,你成为了团队的瓶颈,但这并不一定是坏事。

我试图与他争论,因为我不明白成为瓶颈怎么会不好,然后他向我介绍了约束理论。最后,他推荐了 Eliyahu M. Goldratt 的一本书,名为《目标:持续改进的过程》。因此,我想在这里分享我从中学到的东西。

指标

在理解约束理论之前,我们需要知道公司的主要目标是什么。我们可以说公司试图改善世界,或者他们提供更好的服务,但这不是他们的主要目标。他们的重点是赚钱,如果这是每家公司的最终目标,那么我们所有的注意力都应该集中在实现这一目标上。

因为赚钱是一个普遍的目标,所以作者给了我们三个要关注的目标。它们是:

生产:公司如何赚钱;

存货:公司为赚取更多利润而投资的资金;

运营费用:将库存转化为生产所花费的资金;

从这个意义上讲,我们应该努力提高产量,同时减少库存和运营费用。此外,所有指标都必须对公司的目标产生影响。

推而广之到软件工程领域,我们有:

  • 生产:功能、产品以及所有可以出售给客户的东西;
  • 库存:服务器、云、硬件以及产品的所有部分;
  • 运营费用:程序员、P.O、主管;
  • 因此,我们需要提供更多的功能和产品,同时减少硬件和人员的数量。

    概念

    现在我们有了明确的目标,我们可以谈谈 ToC。简而言之,这是一个持续改进的过程,旨在找到系统的制约因素并解决它们。重要的是要明确,没有限制的系统是不存在的。它们将永远存在,最重要的是,它们规范交付流程。

    让我们回到让我读这本书的最初观点,约束本质上没有好坏之分!限制是存在的,有时,它们是必要的。一个很好的例子就是信号量,因为它们可以调节汽车流量和某些街道的速度。同样,它们不是坏事,它们只是存在而已。在软件开发过程中,我们也有一些被认为必不可少的约束,比如代码审查和编写测试。两者都会减慢我们的速度,但它们可以确保更高的质量。

    然而,值得一提的是,唯一重要的能力是约束,因为系统永远无法提供超过约束所能提供的东西。ToC 旨在了解您有哪些约束,以及如何通过遵循系统性方法解决甚至消除这些约束。

  • 识别系统的约束或限制;
  • 探索如何与他们合作;
  • 避免生产超出约束处理能力的产品,换句话说,绕过约束;
  • 通过新的投资来提升系统的限制或扩大其容量;
  • 如果制约因素已经消除,则返回第 1 阶段并重新开始。如果流程有所改善,则要做好制约因素转移到另一点或出现新制约因素的准备;
  • 正如我所说,您还可以向系统添加约束以确保持续交付流程。例如,在软件工程中,您可以开始进行代码审查。但它们并不是唯一的约束!我还可以列出数据库、API 的速率限制、团队能力、结对编程以及我们在构建软件时可以处理的其他无数约束。

    结论

    尽管这本书是一部浪漫小说,并且发生在一个行业中,但它可以与我们在软件开发团队中的日常生活相提并论。需要注意的是,我们的工作是一个更大系统的一部分,您应该了解它及其限制,以构建有效且持续的交付流程。在进行任何优化之前,请确保验证所有假设。确保您正在提高效率,并且确实在提高瓶颈的性能。

    总结一下我从这本书中学到的知识:

    生产力和职业不是同义词。工作只有让你更接近目标时才是有成效的。如果不是,也许你正在做一些不那么重要的事情;

    瓶颈是系统的主要部分!要提高整体效率,必须提高约束条件的效率;

    每次在非瓶颈处的改进都是过早的优化,不会提高整体效率。局部最优并不会让你更接近优化的系统;

    要确定你的限制,请应用科学方法。提出一个假设,如果结果为真,就会发生一些事情。如果不是,你可以放弃它并验证一个新想法;

    优化总是持续的。当出现新的瓶颈时,再次应用系统方法。它总是会出现新的限制和新的改进机会;

    最后,我更多地了解了我在小队和项目中的角色。现在,我对我的工作方式以及如何减少瓶颈的影响有了更好的理解。这就是约束理论,对于那些喜欢它的人,我建议阅读这本书!