开发人员开发了很多有价值的软件,但涉及到自己的工作时却成了 “鞋匠的孩子没鞋穿”。
我们生活在开发工具的黄金时代。 软件正在吞噬着世界。现在,每个公司都是软件公司。每个软件公司都需要开发人员和开发工具。由构建开发工具的公司组成的生态圈正在蓬勃发展。
每一个编写代码的公司都已发现(或正在发现)软件开发真的很棘手。世界需要更多的软件,但这并不是雇佣更多的开发人员就能解决的问题。开发软件并不能轻易地实现规模化或并行化。顺序依赖和不可预见的复杂性使我们严重低估时间节点和预算,进而导致糟糕的商业产出甚至是严重的生存危机。
为了解决大规模软件开发中的效率问题,越来越多的公司正在自建和购买开发工具。不只是 Google、Facebook、Microsoft 和 Amazon,其他公司也在为此投入大量资金。
为了满足这种日益增长的需求,由构建开发工具的企业组成的新型行业正在飞速发展。像 GitHub、GitLab 和 HashiCorp 这样的平台已被大众所知,其所在的领域正逐步进入大众视野。
过去这十年,开发工具市场发展速度之快令人难以想象。当我和奎因(Quinn)在 2013 年创办 Sourcegraph 时,我们很快发现“开发工具”这个词根本就入不了投资者的法眼。投资者承认开发工具很有价值,但是认为其中的大多数只是单打选手的工具(例如,JetBrains、Sublime Text),而这并不能获得足够的收益,另外一些是为满足大型科技公司特定需求的内部工具(例如 Google Code Search),还有一些是开源项目,这些项目没有人买单,只能通过出售服务和提供支持来赚钱。投资者告诉我们,只有一家十亿美元的公司卖给了开发者——Red Hat,但这只是个特例。
开发人员开发了很多有价值的软件,卖给了其他伙伴——销售人员、市场营销人员、设计师等。但涉及到自己的工作时,却成了 “鞋匠的孩子没鞋穿”。TechCrunch 中的一篇文章感叹道:“研发开发工具的创业公司能找到投资者吗?”
但是,在过去七年中,情况发生了一些变化。这种变化体现在估值上:GitHub被微软以75亿美元收购,GitLab估值60亿美元,HashiCorp估值50亿美元,JetBrains估值70亿美元,这份清单还在继续。
但是,尽管这带有一串零的数字吸引了人们的眼球并成为新闻的头条,但他们也只是推动软件构建方式巨大变革潜在因素的副产品。 以下是一些潜在因素:
· 大型科技公司:大型科技公司和技术驱动的创业公司之间的竞争已经蔓延到各个行业,这导致每个公司都优先发展软件,并将其作为核心竞争力。
· 海量代码(Big Code):全世界的代码量正在飞速增长,越来越多的公司已经达到了一个临界点,以前这个临界点只有最大的科技公司才会遇到。
· 企业级 OSS: “云”作为一个建立在开源软件(Linux 和 Kubernetes)之上的软件平台,与旧的软件平台相比,后者是垂直集成的专有生态系统(例如,Windows+.NET+Visual Studio)。
未来发展充满不确定性,但有一点确定的是:几乎每一个有价值或者快速成长的公司都在开发软件,而且大多数都意识到他们需要优秀的开发工具来在竞争中保持优势。
这是一个激动人心的消息。 传统意义上来说,“科技”是经济中一个独特的分支,只有有限的几家大型科技公司具有高效开发大规模软件的能力。现在,各个行业的公司都明白,代码已经成为公司 DNA 的核心组成部分。这意味着代码和软件的影响力扩大了。 不再只有“技术公司”才能提供软件产品或技术服务——参与经济运行的各个公司都在学习如何凭借自己的力量研发优秀的软件。
随着越来越多的经济组织尝试开发软件,这个进程仍在加速。很大程度上,因为代码的原因,对未来的幻想——治疗癌症、救命药、大规模个性化交通工具、火箭飞船等等将更快地成为现实。长期以来,软件一直被认为是技术进步的助推器。 而开发工具是技术进步的二阶助推器(助推器的助推器)。这是一个巨大的机会。
如何更好地抓住这个机会?
你可以在以下三个地方进行开发工具的研发。(可能还有更多,但为了简洁起见,我们将重点介绍这些。)
首先是大型非开发工具公司。许多从事软件开发的大公司都在内部工具的研发上投入重金。 大型公司内部有很多优秀的开发工具,很多这些工具促进了外部类似工具的诞生。 Blaze 是 Google 的构建系统,它促使了其他构建系统的诞生,比如 Pants 和 Facebook 的 Buck,后来它自己被开源为 Bazel。大公司也提供了丰厚的、稳定的工资福利。缺点是你工作的直接影响力很可能会被局限于一个组织内部。你的作品有一天可能会变成开源项目,但没有人能保证这一点,而且这需要花费几年的时间去获得法律允许和官方机构的批准。 当然,就算这个工具得到广泛使用,你也不会直接获得经济上的回报。
其次是开源项目。 开源项目的工作经历可以使你获得更多的认可,并且项目不存在和甲方讨价还价的烦恼。 如果你的主要目标是用户使用量,开源项目具有很强的吸引力。许多广泛使用的开发工具(Git、Linux、Emacs、Vim 等)都是开源项目。当然,缺点就是缺少收入。许多开源项目的作者和维护者都有其他收入来源(通常是大型科技公司)。Patreon 和 GitHub 的赞助者很多,但可能只有很小一部分开源项目的作者能够仅靠赞助就过上舒适的生活。 你能够获得的收入来源限制了你可以投入到开源项目上的时间。
再次是研发开发工具的公司。得益于过去几年开发工具市场的迅猛增长,大多数此类公司都是创业公司。 开发工具公司能提供的好处是:使用者、客户、以及团队成员通常都是同一群人。 如果你开发了一个很棒的工具,你的用户会很快乐,你得到报酬,你也会很快乐,你和你的同事都能使用这个工具,于是你获得了双倍的快乐! 开发工具的创业公司还能给你金钱上的额外回报(如果你的部分薪酬是公司股权)。这种回报可能会很惊人。我个人认为,开发工具市场目前还处于发展初期。我相信将来有一天,高质量、广泛使用的开发工具造成的影响将远远超过广告驱动的网络搜索、PC 操作系统和社交媒体。也就是说,总有一天,开发工具公司的市值会超过当今最有价值科技公司的总和。
当然,初创公司也有风险。 公司极有可能无法实现其崇高目标,裁员甚至倒闭。 没有一种适合所有人的工作。 就我个人而言,我遵循的原则是“收益最大化,风险最小化”,其中“收益”和“风险”的定义取决于你自己。
不管选择大型公司,开源公司还是开发工具创业公司,你仍然面临着一个问题:如何评估这个机会和工具是否值得你的付出。 为此,需要综合运用你的直觉和价值观进行评判,接下来我们将进行讨论。
杰米·扎温斯基(Jamie Zawinski)曾经说过:“世界上最有效的激励手段就是满足自己的需求。”(the best motivator in the world is scratching your own itch) 他谈的不就是开发工具吗,他说得对。很多开发工具起源于程序员碰到一个难题,然后想出通过软件自动化解决问题的方法,并通过代码实现它。为自己开发软件意味着你需要同时在产品经理、工程师和客户这些不同角色间进行切换。如果想为自己和其他处于相同困境的人创建真正有用的东西,这真是一个绝妙的主意。当你评估企业开发工具的前景时,很大程度上依赖于你的直觉:痛点在哪,哪个产品能提供有效的解决方案。
但是,你也会希望将直觉与软件开发方式结合起来——不同公司和部门间的共同点是什么,你要服务的细分市场有哪些不同点和特殊之处。 重要的是你需要明白你的需求在整个软件开发拼图中的位置,以及其他人的需求在他们开发拼图中的位置。
软件的开发方式因组织而异,甚至因人而异,但是有一个通用的“软件开发生命周期”模板:
1. 制定计划并描述软件目标(例如,实现某个功能或修复某个错误)
2. 阅读并理解要修改的代码
3. 编写、运行和调试新代码
4. 测试代码
5. 评审代码
6. 部署代码
7. 监控生产环境并对事件做出反应
这个生命周期也会有很多的变体:
理解通用流程和客户的具体实现非常重要。 了解你要加速的生命周期——个人的、团队的、组织的,或者上述的某种组合——也很重要。只卖给个人开发者本身并没有什么问题,但很多最成功的开发工具创业公司都把产品卖给团队和组织。向团队推销意味着要说服代表团队利益的人——可能是开发经理、总监或者开发人员效率部门的主管 。而这个人可能不会每天编程。
在评估哪些开发工具和公司值得你花时间时,你可以考虑他们的客户是团队还是个人,他们怎样向不同的客户表达自己的价值理念,以及你构建的工具将如何适应客户的软件开发生命周期。
让我们了解下以下开发工具创业公司位于软件开发生命周期的什么阶段。
软件工程中的许多术语也可以从它们对软件开发生命周期的意义方面来考虑。通过这种方式可以帮助我透过炒作,看清它们的真正含义:
需要说明的是,这个分析只是我个人的观点。上面讨论的公司可能对它们的价值理念以及如何影响软件开发生命周期有不同的说法。 如果你想了解更多他们的信息,尝试下他们的产品,并将他们融入你自己的开发版图中。
谁知道呢? 也许对这类公司进行足够的调查,并对个人经历进行反思,你就会发现新的工具或公司可以满足你的需求并给予你机会。 你也可能会得出结论,最适合你的不是加入任何现有的开发工具创业公司,而是创建自己的开发工具——但这是另一个主题了。
过去几年间,开发工具市场的发展经历了一个分水岭。 软件开发渗透到了经济的各个领域,甚至“非技术”公司现在也雇佣了数百万的程序员,在持续增长的开源代码库中工作。现在开发工具的研发是个潜力无限的市场。好的开发工具能提高我们的技术水平,成为技术进步的二阶加速器。全球经济向前发展的节奏和鼓点将是“开发人员,开发人员,开发人员”,因此,构建开发工具正是时候了。