【问题标题】:What's the ROI of using a build tool like ant or nant?使用 ant 或 nant 等构建工具的投资回报率是多少?
【发布时间】:2010-05-28 19:22:14
【问题描述】:

对我来说,这听起来是一个非常愚蠢的问题。

为什么不使用构建工具?

但是,我需要向我的同事解释为什么他应该使用某种构建工具。

他真正开始考虑与更多程序员一起工作的想法,但他不了解构建过程中需要更改哪些内容才能与更大的团队合作。 (即防御性编程/对代码进行单元测试、拥有错误数据库、编程模块化库以及使用sub-repositories to store modules in version control

这是一个相当大的技术堆栈,我需要证明......的投资回报率,所以我想我会从使用构建工具的投资回报率开始,而不是仅仅......说......点击编译。

【问题讨论】:

  • +1 有些程序员不了解这样做的好处真是太疯狂了。他的职业生涯是在自己的地下室里度过的吗?
  • @Byron,是的,这很好,而且都在批评我的同事,但这并不是每个人的答案。哦,我有没有提到我无法控制他选择不选择的工具......我试图通过写一些东西来说服他。 :-/
  • 不,这不是答案,这是我说的评论,因为这些工具是优秀的程序员。

标签: build-process build-tools roi


【解决方案1】:

要获得有效的投资回报率,您必须了解投资成本以及投资将带来的节省成本或额外收入。

对于像 Ant 和 Maven(我会使用 maven)这样的工具,您无需支付许可费,但您需要在工具上积累技能,这可能会花费一些钱。

这些自动化工具的主要优点是:

  1. 加快团队成员的加入;
  2. 记录构建过程;
  3. 通过自动化测试提高质量;
  4. 确保构建一致;

您必须为每一项都贴上价格标签。您可以争辩说,一个好的 IDE 将为您完成构建和测试。但这会因用户而异。假设让一个新开发人员拥有一个有效的构建环境需要 4 个小时,并且有人正在提供帮助。这将花费 X 成本,而自动化流程将大大降低成本。再加上修复错误的成本(构建过程不会全部避免,但假设是 30%)。这些东西就是成本。

现在将其与您的同事学习该工具所需的投资进行比较(这是使用此类工具的一次性成本)。但我认为困扰你的同事的更多是恐惧而不是理性。

当您向他们展示的人同意所使用的值时,投资回报率会更高。因此,请尝试使用您过去的项目成本来做到这一点。在这种情况下,您可以比较时间而不是金钱。人们可能会因构建不一致的版本而严重延迟项目。

【讨论】:

  • 一致性构建是什么意思?
  • 我喜欢这样的一点:“项目可能会因为人们对不一致的构建而大打出手。”
  • 一致构建是根据完善的流程构建的构建。比如集成、编译、测试、打包。如果您让每个人根据他们的 ID 手动构建并推送到测试环境,您可能会遇到难以捕捉的错误、不稳定的版本以及难以重现的问题。
  • 恐惧是什么意思?担心他会被自动解雇?
  • 不是害怕失去工作,而是害怕失去意义或重要性。人们不喜欢变化和他们不理解或无法控制的事情。如果是这样的话,一个漂亮的投资回报率不会让他信服。这里的所有答案都指向同一个方向,人们普遍认为这些工具是有利的。所以如果他抗拒他们,那可能是对其他方面的一些不安。
【解决方案2】:

Ant 不仅仅显然在每个编程商店都有益。您的构建过程涉及多少集成?您正在使用什么工具?你选择了哪个 CI 服务器?

简单的答案是,当 Ant 为您节省时间时,投资回报率很高,在决定它将为您节省多少时间时,只有有关您的情况的详细信息和经验才会相关。

在我们的例子中,我们使用 Nant 来构建我们的数据库,因为这样做涉及到许多命令行级别的步骤。我们没有在我们的 .NET 软件上使用 Nant,因为 VS 2010 和 TestDriven.Net 提供的上下文敏感性比任何其他构建解决方案都要高得多,而且我们出色的 CI 服务器 TeamCity 本身就理解 Visual Studio 构建过程。

【讨论】:

  • 没有 CI 服务器。据我所知,它是 Mercurial 和 VS2005。可能还有其他我不知道的事情,但它们可能不是标准的。
  • Doxygen,嗯...除了 VS2005...(如果您认为它是构建工具)我真的没有在堆栈中看到构建工具。
  • 我确实读到过两个类似于 ANT 的工具:NANT 和 MSBuild。
【解决方案3】:

无论是你自己的事业还是为别人工作,我都是这么想的。如果该工具至少可以为您节省购买该工具所花费的钱,那么这是一项值得的投资。请记住,省钱可能与花费的时间有关

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

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

回到您的问题的基础...例如,如果构建工具是 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

似乎这些场景中的构建工具将被视为值得投资。

希望这会有所帮助...

【讨论】:

    【解决方案4】:

    首先,build 意味着更多不仅仅是编译,通常包括编译代码、编译测试、运行测试、运行质量检查、打包代码等步骤,将零件组装在一起,有时部署等。

    其次,在我看来,从长远来看,自动化构建总是比手动执行上述步骤具有更好的投资回报率(更不用说人类会犯错误,你可能不想依赖于IDE,您可能希望在另一个可能无头的平台等上运行构建。

    第三,构建自动化无论如何都是持续集成的绝对要求,众所周知,这是每个人都应该遵循的最佳实践(您希望尽快获得反馈,您不想让问题进一步深入系统直到大爆炸整合)。

    所以对我来说,问题甚至不在于投资回报率,而在于理智。以防万一,这里有一点引用(另见Three Strikes And You Automate):

    如果有一个系统管理真理,那就是:没有一个简单的系统管理任务比两次更有趣。如果您发现自己做了两次以上的简单枯燥任务,请将其自动化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      • 2017-04-14
      相关资源
      最近更新 更多