使用构建工具如ant或nant的投资回报率是多少?

3
对我来说,这听起来是一个非常愚蠢的问题。
为什么你不使用构建工具呢?
然而,我需要向我的同事解释为什么他应该使用某种构建工具。
他非常热衷于与更多的程序员一起工作的想法,但他并没有理解在构建过程中需要改变什么以便能够与更大的团队合作;(即编写防御性编程/单元测试代码,拥有错误数据库,编写模块化库,并使用子存储库将模块存储在版本控制中
这是一个相当庞大的技术堆栈,我需要证明它的投资回报率...所以我想从使用构建工具的投资回报率开始,而不仅仅是...比如说...点击编译。

+1 真是太疯狂了,有些程序员竟然不理解这个的好处。他难道一直在地下室里自己编码吗? - Byron Whitlock
@Byron,是的,批评我的同事很好,但这并不是一个确切的答案。哦,我是否提到我无法控制他选择什么工具...我正在尝试通过编写一些东西来说服他。 :-/ - leeand00
1
不,这不是一个答案,这只是我的评论。我之所以这样说,是因为好的程序员会使用这些工具。 - Byron Whitlock
4个回答

2
为了获得有效的投资回报率,您必须考虑投资成本以及投资带来的节省成本或增加的收入。
对于像Ant和Maven这样的工具(我会使用Maven),您不需要支付许可费,但需要在这些工具上建立技能,这可能需要一些费用。
这些自动化工具的主要好处是:
1. 加快团队成员的入职速度; 2. 记录构建过程; 3. 通过自动化测试提高质量; 4. 确保一致的构建;
每个好处都需要一个价格标签。您可以争辩说一个好的IDE将为您构建和测试。但这将因用户而异。假设需要4小时才能使新开发人员拥有有效的构建环境,并且有人在帮助。那将花费X,通过自动化流程可以大大减少这种成本。再加上修复错误的成本(并非所有错误都可以通过构建过程避免,但假设30%可以)。这些就是成本。
现在将其与您的同事学习该工具所需的投资成本进行比较(这是使用此类工具的一次性成本)。但我认为您的同事更多是出于恐惧而不是理智的考虑。
当您向他们展示ROI时,如果您展示的价值被接受,ROI就更有意义。因此,请尝试使用过去项目的成本来进行比较。在这种情况下,您可以比较时间而不是金钱。人们在不一致的构建上浪费时间会严重延误项目。

什么是一致的构建? - leeand00
我喜欢这句话: "由于人们在不一致的构建上碰壁,项目可能会受到严重延误的影响。" - leeand00
1
一致的构建是按照既定流程构建的构建。例如集成、编译、测试、打包等。如果每个人都在其ID上进行手动构建并推送到测试环境,可能会遇到难以捕捉的错误、不稳定的版本和难以重现的问题。 - Thomas
你说的恐惧是什么意思?害怕他的工作会因自动化而消失? - leeand00
不是害怕失去工作,而是害怕失去重要性或影响力。人们不喜欢改变和他们不理解或控制的事物。如果是这种情况,美丽的投资回报率也无法说服他。所有答案都指向同一个方向,即这些工具是有优势的共识。因此,如果他抵制它们,可能是对其他方面感到不安。 - Thomas

1

Ant不仅在每个编程工作室中显然是有益的。你的构建过程涉及多少集成?你在使用哪些工具?你选择了哪个CI服务器?

简单的答案是,当Ant节省您的时间时,ROI很高,只有关于您的情况的详细信息和经验才与决定它将为您节省多少时间相关。

在我们的情况下,我们使用Nant来构建我们的数据库,因为需要执行众多的命令行级步骤。我们不在我们的.NET软件上使用Nant,因为VS 2010和TestDriven.Net提供比任何其他构建解决方案更多的上下文敏感性,而我们优秀的CI服务器TeamCity天生就理解Visual Studio构建过程。


没有CI服务器。据我所知,使用的是Mercurial和VS2005。可能还有其他我不知道的东西,但它们可能不是标准的。 - leeand00
Doxygen,额...除了VS2005之外...(如果您认为它是一个构建工具),我真的没有在堆栈中看到一个构建工具。 - leeand00
我确实了解到两个类似于ANT的工具,它们分别是:NANT和MSBuild。 - leeand00

1
首先,构建的含义远不止编译代码,通常还包括编译测试、运行测试、运行质量检查、打包代码、组装部件等步骤,有时还需要部署等。
其次,我认为自动化构建在长期内总会比手动执行上述步骤具有更好的投资回报率(更不用说人会犯错误,您可能不想依赖于 IDE,您可能希望在另一个可能是无头的平台上运行构建等因素)。
第三,构建自动化无论如何都是持续集成的绝对要求,后者被认为是每个人都应该遵循的最佳实践(您希望尽快得到反馈,您不希望让问题一直延伸到系统中心,并在大爆炸集成前引起注意)。
对我来说,问题甚至不在于投资回报率,而在于理智。以防万一,这里有一个小引语(也请参见Three Strikes And You Automate):
如果有一个系统管理真理,那就是:没有比简单的系统管理员任务更有趣的事情了。如果你发现自己在重复执行一项简单而枯燥的任务超过两次,就应该把它自动化。

1

我认为,无论是自己的业务还是为他人工作,如果一个工具能够至少节省你购买该工具所花费的资金,那么它就是值得投资的。请记住,节省资金可以与以下时间相关:

  • 规划(软件或其他)
  • 设计/开发
  • 保留记录(例如,跟踪错误/源代码/业务管理的时间)
  • 工具可以执行的单调任务(备份?)
  • 让工具为您解决问题。

不要忘记,工具通常需要初始培训/学习,这也是一种成本。因此,如果该工具只使用一次,您可能需要权衡学习成本是否超过了工具成本。

回到您的问题的基础...... 以构建工具为例,价格为1000美元,您的时间价值为100美元/小时。我们将忽略工具培训成本,因为我们打算多次使用构建工具。

如果您需要花费0.5小时使用工具创建最终构建环境,则计算如下:

使用工具的成本= 1000美元+(0.5 x 100美元)= 1050美元

如果您需要花费12个小时手动设置构建环境

没有工具的成本= 12 x $100 = $1200

或者,也许更现实的例子是,您可以看到6个即将到来的项目。每个项目使用构建工具设置需要0.5小时,否则需要3小时。

使用工具的成本= $1000 +(6 x(0.5 x 100))= $1300 没有工具的成本= 6 x(3 x 100)= $1800

在这些情况下,构建工具似乎是值得投资的。

希望这有所帮助...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接