您通常何时会自己编写软件模块,而不是购买现有产品?


13

我正在尝试找出您决定何时进行操作的决定依据。我很乐意提供更多背景信息,但现在我想使其更笼统。


关于选项3,“使用开源库”呢?实际上,这可能是一个折衷方案,因为您可以根据需要进行调整。
内森·朗

@NathanLong:这是一个很好的观点,但是我希望如果OP在问这个问题,那意味着只有这种情况才很有趣。而且,产品可以是开源的,但仍可以商业出售,所以我认为您的意思是“免费软件”。而且,根据许可证的类型,您不一定可以根据需要进行调整(例如,如果您打算转售,并且不兼容),那么在这条道路上要考虑很多不同的因素。(不过,不是说这是一个坏建议)
haylem 2012年

Answers:


17

我想这过于简化了,但作为一般准则,这种说法是正确的:

在个人环境中

  • 我编码很有趣吗?
  • 或者我从编码学到些什么呢?

和:

  • 我有足够的时间编写代码吗?

如果是,那么我宁愿写它也不愿购买。

在专业环境中

如果产品的总拥有成本(包括开发,测试,维护,支持或任何相关费用)高于产品成本,并且计算出的投资回报率不能抵消该成本,那么您就是最好购买并继续前进。


1
+1非常重要,偶尔可以自己编写一些东西,否则最终只会将一件事与另一件事(例如Internet Plumber)结合在一起。您还必须权衡“从中学到一些东西”,并确定是否想要/需要学习一些东西。
加里·罗

2
@GaryRowe:谢谢。必须抵制关于“ Internet Plumber”和当前Web趋势以及Web开发人员就业市场的笑话。Arggghhhh,虽然很诱人……
haylem 2012年

在专业环境中,这不仅是开发成本,而且还包括持续的维护成本和开发时间。
吉尔伯特·勒布朗克

1
@GilbertLeBlanc:没错,吉尔伯特。我的意思是端到端的成本,但是我会按照您的建议进行澄清,因为这实际上应该与产品的TCO有关。
haylem 2012年

9

决定购买还是购买的东西

  • 开发成本/维护成本与产品成本/维护合同成本:当然,这很明显,但这并不是唯一的事情。例如,如果我不仅要为自己的公司使用该软件,而且还想将其出售给他人,那么计算方式将大不相同

  • 合适产品的可用性。对于许多业务流程而言,没有标准的即用型软件可用。还是有可用的东西,但是它不合适,因为它包含100个功能,而您仅需要其中的3个功能就略有不同,而缺少其他2个重要功能。

  • 是否想从第三方供应商那里获得依赖?尤其是规模较小的供应商,总是会给您带来以下风险:供应商将来会从市场中消失,或者产品的进一步开发没有朝着您需要的方向发展。对于您自己控制的产品,您可以更好地指导开发方向。

  • 我什么时候需要特定的软件,什么时候会更快:自己开发或购买某种东西,对其进行修改,直到适合我的流程并推出为止?从货架上购买东西似乎是更快,有时更便宜的选择,但我个人也看到了一些场景,这些情况是完全根据公司的需求开发软件,适合现有的业务流程,与购买东西和教几个东西相比节省了很多时间。成百上千的用户以新的和不同的方式来做他们的工作,而开发成本却可以忽略不计。


8

与密码学有关的任何事情。有十万种方法可以解决该问题,并使您的软件面临严重的安全漏洞,而只有几种方法可以解决。为此需要高度专业的知识。



这是一个很好的观点,尽管我认为还有很多其他事情也值得落入“不要用这个螺丝钉”标签下。但是,对于个人使用(只要没有暴露并且不用于敏感数据),使用加密仍然可以自己拍摄。几年前,我重新实现了一些用于娱乐和自学的密码。有很多大问题要看,做起来很有趣,而且学到了很多东西。
haylem 2012年

我会避免购买加密货币。受信任的密码库通常是开源的或操作系统的一部分。我相信我自己的代码在大多数封闭源代码库中。我不会使用任何至少未发布有关其加密代码如何工作的清晰完整的规范的库。
CodesInChaos 2012年

@CodesInChaos相当多的商业“封闭源代码”包为您提供了源代码。
Pieter B

实际上,我认为同行评审的代码更好,并且假设攻击者不知道算法是错误的。但是,为什么还要将其链接到密码学呢?
Ramzi Kahil 2012年

0
  • 费时费力,现有的配件产品>>购买产品
  • 对技术的个人兴趣或没有符合所有要求的产品>>
    我自己发展

0

在个人层面上,我将自己想要的东西和有趣的东西结合在一起而发展起来。

在专业层面上,@ haylem给出了何时购买与何时书写的总体观点。我会说,有一个巨大的因素被忽略了:机会。我认为,对于大型公司而言,自定义编写核心业务应用程序(而不是所有业务应用程序)通常是有意义的,因为这样做会使企业更加灵活。购买软件会带来机会成本,因为这样您的企业(而不仅仅是您的IT)就被锁定在供应商查看您的域的方式中。

对于大多数事情来说,都没有关系。您的会计系统最好不要具有创造力。您的文字处理器将与其他任何人一样。但是,可能会使您内在的事情写得更好,这样它才可以适应您的业务试图实现的目标。


0

几乎所有其他答案都表明,这是一项成本效益决定:

  • 将这个项目交给内部开发人员或外部承包商进行定制开发需要花费多少工时,材料等?(通常很高;计算出他们的间接费用,加上薪水和福利,一个经验丰富的开发人员每天会花掉您大约一天的费用;根据所涉及的财务状况,可能会或多或少地花费您一点时间)
  • 我要立即购买现成的产品要花多少钱?(取决于产品;文本编辑器之类的通用程序通常很便宜,甚至是免费的,而电路路径设计产品之类的专用程序则可能要花费数百万美元)
  • 定制开发的解决方案有什么好处?(通常,自定义解决方案更适合您的业务,因此可以使更多解决方案自动化或至少将其数字化)

归结为定制开发的解决方案的成本(被收益抵消)是否小于现成产品的成本。

还需要考虑机会成本。请理解,这些成本不包括在开发与购买的实际成本中,但是在更广阔的世界中,您必须考虑它们。如果您的内部开发人员正在从事这个项目,那么他们就不在从事任何其他项目。这意味着,如果清单上还有另一个项目每天都在耗费您的资金,这可能是一个更高的优先级,导致您搁置甚至取消自定义开发并使用现成的软件包。但是,如果不执行此项目,则意味着您的内部人员坐在他们的手上,那么开发人员的成本将下降。您要支付开发人员是否在工作的报酬,因此,如果您充分利用他们的潜力,将使您的总花费减少。


0

我假设您是在专业的商业环境中询问,而我们所谈论的是系统的主要部分,而不是单个库。

制造或购买与制造或定制

在某些情况下,您的组织可以使用现成的产品。例如,很少有人会编写自己的文字处理器-他们使用MS Word,OpenOffice或其他工具。电子表格也一样。请注意,您可以使用自己的模板或宏“自定义”文字处理器,但是人们并不认为它是自定义的。正如他们所见,这只是“使用”文字处理器。

从网上商店到ERP系统,可能以相同的方式使用更复杂的系统。但是到了某个时候,您的设计师或业务开发人员将需要标准中未包含的更改。可能是重新设计了结帐页面,或者是一种计算折扣优惠的新方法。

如果您从一开始就知道,那么您的决定实际上就是Make或Customize。不再购买 Just Buy。即使现在没有这样的要求,您是否希望您的同事以后提出这些要求?

  • 除了在正确的位置上传公司徽标之外,还可以自定义系统吗?
  • 这有多难,可以由您的员工完成,还是必须将其外包给供应商?请注意,有些公司的整个商业模式是为其开发的免费软件提供优质服务。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.