在Urbancode,我们将此称为“Bob the Builder”反模式。好消息是鲍勃(你)想要摆脱困境。当构建人员无法去度假或生病时,如果不停止部分过程,则确实存在不可接受的问题。如果我是一个赌徒,当您开始将流程简化到“受过训练的猴子”级别时,您会想知道为什么您要花时间做这些死记硬背的东西,而实际上您很聪明并且实际上可能正在某处的价值。
我们书中“Bob the Builder”综合症的症状:
- 所有对构建或某种类型的构建的请求都通过个人或小团队进行。
- 对于开发人员来说,对这些构建请求的响应速度非常慢。如果构建团队正在吃午饭,他们会等上几个小时。
- Bob 或 Bobs 团队花费大量时间做死记硬背的任务。
- Bobs 回家一天、去吃午饭、去度假或生病会阻碍团队完成工作的能力。
我们告诉我们的AnthillPro客户将所有这些东西推到他们的自动化中。拥有两种使用不同机器、不同内部版本号等的构建类型应该不是问题。
第一步是简化流程。尽可能多地消除复杂性,以便您可以进入“训练有素的猴子”过程。一旦你有东西接近那个,用电脑代替猴子就很容易了。
我会给出更具体的建议,但除了混乱之外,我认为您没有告诉我们复杂性来自何处。有时在这种情况下,您需要攻击混乱和不良做法。您是否正在执行“源代码中的此基线以及这两个文件和这三个文件”的构建?这会很棘手,并且可能需要循环中的 CMer。想办法禁止它。将其替换为“创建一个分支,并对该分支进行特定更改”使得该猴子可以构建构建。
您应该能够将这些更改视为高风险。即使你很好,你也会有糟糕的日子,并希望尽可能地排除人为错误。同时,如果您希望更快地响应开发人员和自助服务(大概是开发和管理人员想要的),则需要使某些事情变得可自动化/可猴子化。
在此期间,拥有更好的形式可能会很好,并且使用好你的工具总是很好,但我会非常积极地解决“训练有素的猴子”问题。任何受过训练的猴子(或计算机)无法完成的事情都应该成为退出流程的候选者。一旦你把它降到“训练有素的猴子”状态,让你的构建自动化到位,这样你和开发人员都不需要成为猴子。这会将您的角色从“Bob the Builder”更改为“Bob the Build System Owner”。