对我而言,这听起来像是一个非常愚蠢的问题。
为什么不使用构建工具?
但是,我需要解释我的同事为什么他应该使用某种构建工具。
他正在真正意识到与更多程序员一起工作的想法,但他并不了解在构建过程中需要改变什么才能与更大的团队合作的大局; (即防御性编程/单元测试代码,拥有错误数据库,编程模块库以及使用sub-repositories to store modules in version control。
这是一个相当大的技术堆栈,我需要证明其投资回报率...所以我想我开始使用构建工具的投资回报率,而不仅仅是...说...点击编译。
答案 0 :(得分:2)
要获得有效的投资回报率,您必须承担投资成本以及投资带来的节省成本或增加的收入。
对于像Ant和Maven这样的工具(我会使用maven)你没有许可证费用,但是你需要掌握这些工具的技能,这可能会花费一些钱。
这些自动化工具的主要优点是:
对于每一个,你必须放一个价格标签。您可以争辩说,一个好的IDE将为您构建和测试。但这将从用户变为用户。让我们说,让新开发人员拥有一个有效的构建环境需要4个小时,有人正在帮助。这将花费成本X,这将通过自动化流程严重降低。再加上修复bug的成本是多少(构建过程不会避免所有错误,但假设有30%是这样)。这些都是成本。
现在将其与您的同事投入多少资金来学习该工具(这是使用此类工具的一次性成本)进行比较。但我认为困扰你的同事比担心更重要。
当您展示他们的人同意所使用的价值时,投资回报率会更高。因此,请尝试使用您过去的项目成本来执行此操作。在这种情况下,您可以比较时间而不是金钱。如果人们对不一致的构建造成伤害,项目可能会严重拖延。
答案 1 :(得分:1)
Ant在每个编程商店中都不仅仅是显然有益。您的构建过程涉及多少集成?你使用什么工具?您选择了哪个CI服务器?
简单的答案是,当Ant节省您的时间时,投资回报率很高,而且在决定节省您的时间时,只有您的情况的详细信息和经验才会相关。
在我们的例子中,我们使用Nant来构建我们的数据库,因为这样做涉及许多命令行级步骤。我们不在我们的.NET软件上使用Nant,因为VS 2010和TestDriven.Net提供了比任何其他构建解决方案更多的上下文敏感性,而我们出色的CI服务器TeamCity本身就能理解Visual Studio构建过程。
答案 2 :(得分:1)
首先, build 意味着更多而不仅仅是编译,通常涉及编译代码,编译测试,运行测试,运行质量检查,打包代码等步骤,将零件组装在一起,有时进行部署等。
其次,对我来说很明显,自动构建总是会比长期手动执行上述步骤具有更好的投资回报率(甚至没有提到人类会犯错误,您可能不希望依赖于IDE,您可能希望在另一个(可能是无头的)平台上运行构建,等等。
第三,构建自动化无论如何都是持续集成的绝对要求,众所周知,这是每个人都应该遵循的最佳实践(你想尽快得到反馈,你不想让问题进一步深入到系统直到大爆炸整合)。
所以对我来说,问题甚至不是投资回报率,而是关于理智。以防万一,这里有一个小引用(另见Three Strikes And You Automate):
如果有一个系统管理真理,那就是:没有简单的系统管理员任务是有趣的两倍以上。如果你发现自己做了两次以上的简单枯燥的任务,就自动完成它。
答案 3 :(得分: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
似乎这些场景中的构建工具将被视为一项有价值的投资。
希望这会有所帮助......