感谢您的提问!回复很长,很晚,但希望值得一读。
约定
我将这些临时工具称为“脚手架”,类似于建筑行业,在制造业中,它们通常被称为“夹具和固定装置”,如果您更喜欢学术上听起来更响亮的名称,它是“工具和生产技术”。
“正确的方式
似乎可以通过简单的成本效益分析来确定是否投资脚手架的决定(正如项目管理科学所拥有的那样):估计开发成本,与预测的收益进行比较,以及脚手架的价值是否更大比建造它的成本有一个好处:
COST BENEFIT
Spec £500 Time saved over 2 years £3000
Development £2000 Savings on training £600
Total: £2500 £3600
好吧,但是如果一个类似的工具已经现成可用,但没有提供完全所需的功能,因此没有提供相同水平的好处怎么办?该分析得到了一个额外的维度“购买与构建”(请注意,对于许多社区工具,它只是免费的许可成本,许多其他费用仍然适用,因此这些工具需要在“购买”类别下进行评估):
COSTS BENEFIT
BUILD Spec £500 Time saved over 2 years £3000
Development £2000 Savings on training £600
Total: £2500 £3600
BUY License £500 Time saved over 2 years £1000
Setting up £500 Savings on training £300
Total: £1000 £1300
显然,现成的工具更便宜。然而,它的投资回报率 (ROI) 仅为 30%,而对于自己动手的解决方案则为 44%。
好吧,如果事情就这么简单就好了,因为在现实生活中,实际成本和收益很难提前识别和量化。您如何量化开发人员在脚手架上工作而不是项目可交付成果的机会成本?或者在脚手架中包含一些生产知识的好处,这样新的初学者就不必花时间学习手动构建或发布过程?或者任何人都能够在不到半小时的时间内一步构建任何版本的软件,而不是高级开发人员花费大部分时间来完成任务的好处?
此外,预测数据和实际数据之间不可避免地会存在一些差异,预期差异(也称为“风险”)越大,您就越不能依赖这些数据来实现。风险为我们的分析提供了第三个维度,并且考虑到一些成本和收益完全取决于整个成本收益情况,它们真的开始失控了。
实用方法
我相信有更简单的方法。与其尝试将脚手架视为一项资本投资并量化未来几年的成本和收益,不如尝试评估当前情况并采取更灵活的方法,即:
如果有任何答案为“否”,那么您最有可能在脚手架上进行投资会更好。
一些笔记
还有一些事情要记住:
脚手架是高度特定的、临时的,有时甚至是一次性的。避免以与处理应用程序或组件相同的方式进行开发的陷阱,脚手架本质上更接近工作原型。请记住,编写一个涵盖相同功能的应用程序将花费大约 10 倍于脚手架脚本的资源,而编写一个通用组件将花费 10 倍于应用程序的工作量。Benji Smith 在他的创造性爆发“我为什么讨厌框架”中对这一点做了一个精彩的说明。工具应该作为实现目标的手段,但本身并不是目标。
脚手架应与应用程序分开;它并不是真正的可交付成果,在大多数情况下不应替换旨在维护和配置的应用程序部分。
拥有定制脚手架在竞争中具有真正的优势:
加快发展。
避免重复工作。
减少对准确性和魔法超能力的需求,这些超能力通常供不应求且非常昂贵。
减少人为错误。
提供结果的一致性。
赋予以所需的确切方式做事的能力(与现成的工具相反)。
有助于在团队中保存知识(它永远不会退出,并且总是可以进行逆向工程)。
提高士气,因为开发人员不必将时间花在平凡的任务上。
通过粗略的非关键解决方案脚手架可以作为新工具、技术、技术、想法的试验场,这些工具后来可以成为杀手级应用程序的基础(FogBugz是最初开发的内部工具的一个很好的例子测试 FogCreek 创始人关于处理软件问题的正确方法的假设,因为他们坚信必须以任何 COTS 工具都不支持的精确方式完成。众所周知,后来脚手架被利用成为独立旗舰产品)。通过搭建脚手架,您可以创造知识产权。
Test Driven Development (TDD) is a notable and practical way of building scaffolding for testing. TDD provides some excellent guidelines on “when enough is enough” that can be extended on other bespoke tools.