140K的代码线:为什么我们构建了自己的许可系统

2021-06-13 00:38:32

你有0个在本月剩下的另一些文章。加入Leaddev.com免费阅读无限文章。

令人难以置信的工作已经进入了这些产品,但在他们身后,对局外人来说是看不见的,通常在内部系统和“支持”项目中埋葬了很多代码。

在这里,这对我们来说是什么样的:我们的产品'Tower'是Git的桌面GUI。它有助于苹果,亚马逊等公司在100,000多个用户使用Git Version Control系统的高效工作。单独的MacOS版本的Codebase具有超过300,000行代码。

但在背景中,我们有另一个主要的内部“产品”:我们的许可系统。它可以控制许可证,计划和订阅的一切折扣,销售优惠和自定义订单。它'公平地说,这140,000行代码对于我们的业务至关重要 - 但在局外人面前是不可见的。

差不多十一年前,当我们开始开发塔时,我们立即看到了这一许可系统的需求。但我们花了很长时间来决定我们是否应该建造或购买。最后,正如你已经知道的那样,我们继续建立自己的自定义系统。

选择第三方系统。市场,那时,没有提供太多选择。只有几个系统做了我们想要的,它们似乎非常昂贵。

现有技能。我们知道我们拥有与自己的团队建立它的所有必要技能。我们不会为此学习新技术或雇用新人。

可管理的努力。我们非常相信我们' D能够建立自己的定制系统,没有太多的努力。

不言而喻,建立这种复杂系统的现实有一些惊喜。

任何人'' S的一部分略大的软件项目可能会在我的天真希望“可管理的努力”中咯咯地笑:“快速而简单”的项目在软件开发中不存在!当然,我们的许可系统也不例外:至今,我们在系统中投入了大约三个人。对于一个拥有九个团队成员的公司(过去甚至更少),这是真正的投资。

时间又一次,我们相信该系统很快就会“完整”。完毕。完成的。 Finito!但是,新的要求远离我们自己的销售和支持团队。只有最近我们终于明白,系统会随着我们自己的商业模式演变 - 因此可能永远不会结束!

当我们开始时,我们认为我们即将重新创建一个相当标准的软件;它将负责许可证和激活,其中一些软件产品常见。但我们开始意识到大多数系统都非常习惯我们如何做事,我们自己的软件如何工作,以及我们的内部工作流程是如何设计的。

今天,十一年后,有很多经验教训,有一个有趣的问题:“我们会再做一次并建造而不是买?'

不,因为巨大的时间投资。根据我们的业务本身是否改变,发展和维护系统所需的时间变化了很大的变化。但在很高的时候,我们经常努力腾出时间,因为这里的所有努力都是我们的产品开发。

不,也是,因为建立自己的系统经常诱惑你用你(思考你)需要的功能过度。如果我们已经使用了标准解决方案,从第三方供应商那里购买或租用,我们必须满足于系统所提供的功能。如果您'修改自己的,天空'是您自己的团队内部的极限和其他要求永远不会停止。

是的,因为开发了这样一个重要的系统,我们自己确保我们'重新锁定到第三方产品中。一般来说,我们是没有建造自己的东西的大粉丝;那里有很多伟大的工具和服务!但对于我们业务的这种重要组成部分,令人难以控制。第三方产品出于业务或进入错误的方向会对我们公司产生严重影响。

是的,也是因为我们很难处理许多用标准软件系统的请求。例如,我们的许多更大客户正在通过“经销商”购买其许可证。与自己购买塔的客户相比,购买过程在这种情况下是完全不同的。我们自己的系统允许我们尽心尽力地设计这个过程。

您的项目的细节很重要,这使得难以给出一般性答案。那个'为什么有'只有我敢于给予的一些建议。

1.尽量不要建立自己!在大多数情况下,购买是更好的决定。通常只是为了财务原因,因为大多数项目往往更复杂,需要更多的时间和资源而不是最初的想法。而且,因为它让你更难专注:而不是给你的核心产品你所拥有的所有关注和资源,你开始传播自己薄。

只有当有问题的系统密切相关时才与您的业务模式密切相关 - 它的进化 - 可能是建立自己的意义。

2.如果您决定建立,请确保可以将其粘在一起!当我们做出决定建立时,我们估计了准确的初始版本的努力。但我们绝不准备该项目将培养自己的生活,持续持续工作。因此,如果您决定构建某些东西,请确保您有资源保持很长时间。