2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

构建开发工具正当时

  • 2021-03-07
  • 本文字数:5689 字

    阅读完需:约 19 分钟

构建开发工具正当时

开发人员开发了很多有价值的软件,但涉及到自己的工作时却成了 “鞋匠的孩子没鞋穿”。

 

我们生活在开发工具的黄金时代。 软件正在吞噬着世界。现在,每个公司都是软件公司。每个软件公司都需要开发人员和开发工具。由构建开发工具的公司组成的生态圈正在蓬勃发展。

 

每一个编写代码的公司都已发现(或正在发现)软件开发真的很棘手。世界需要更多的软件,但这并不是雇佣更多的开发人员就能解决的问题。开发软件并不能轻易地实现规模化或并行化。顺序依赖和不可预见的复杂性使我们严重低估时间节点和预算,进而导致糟糕的商业产出甚至是严重的生存危机。

 

为了解决大规模软件开发中的效率问题,越来越多的公司正在自建和购买开发工具。不只是 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. 监控生产环境并对事件做出反应

 

这个生命周期也会有很多的变体:

 

  • 个人开发者在开发个人软件时会使用自己的编辑器来读写代码,使用简单的单元测试框架来测试代码,以二进制文件的方式来发布应用程序,并通过小型的问题跟踪软件来接受反馈和管理 bug。

  • 开发小组会使用更复杂的问题跟踪软件来制定项目计划,使用代码搜索工具理解代码,使用各种不同的编辑器来编写代码, 利用 AWS 或 Google 云上的 CI(持续集成)服务如 Buildkite 或 CircleCI、Docker 实现软件部署,采用一个简单的日志聚合器来监控软件运行和错误监测。

  • 大型组织中,可能会有整个团队或部门来负责开发环境、CI / CD 服务维护,计算资源配置,发布应用程序到生产环境、监测和定位关键生产问题以实现第一时间响应。

 

理解通用流程和客户的具体实现非常重要。 了解你要加速的生命周期——个人的、团队的、组织的,或者上述的某种组合——也很重要。只卖给个人开发者本身并没有什么问题,但很多最成功的开发工具创业公司都把产品卖给团队和组织。向团队推销意味着要说服代表团队利益的人——可能是开发经理、总监或者开发人员效率部门的主管 。而这个人可能不会每天编程。

 

在评估哪些开发工具和公司值得你花时间时,你可以考虑他们的客户是团队还是个人,他们怎样向不同的客户表达自己的价值理念,以及你构建的工具将如何适应客户的软件开发生命周期。

 

开发工具创业公司的一些简单示例

 

让我们了解下以下开发工具创业公司位于软件开发生命周期的什么阶段。

 

  • Sentry 可对生产环境中的错误发出告警,并帮助你快速定位需要修改的代码位置。对于将大部分时间花在软件开发生命周期第 1 - 5 阶段的应用程序开发人员来说,它旨在使得第 7 阶段(“监控和反应”)更易于操作 。 它也能做到在问题到达第 7 阶段之前在模拟环境中捕获问题。

  • Honeycomb可以检测生产环境的错误和异常, 让你钻取到“无限宽的数据表”,从而获取到足够的上下文信息来找到问题的根源。  与其他第 7 阶段工具使用“monitoring”或“APM”标签不同,Honeycomb 定位于可观察性(Observability)——一种有效管理第 7 阶段的思想理念。

  • Pulumi 允许你用最擅长的编程语言以编写代码的方式来描述架构。 通过实例化对象(如 TypeScript 语言)来定义你的发布方式,Pulumi 负责将它映射到生产环境。 对于那些擅长第 1 - 5 阶段的开发人员来说,它使得第 6 阶段操作更简单。

  • YourBase是一个测试运行服务,可以并行运行和优化你的构建服务。 它检查系统调用并执行语句分析,以推断程序构建的依赖结构,可降低大型代码库的构建时间。 它加快了阶段 4 的运行速度,该阶段对很多团队都是致命的瓶颈。

  • Tilt用来为多服务应用程序构建最佳的开发环境。 像 Kubernetes 这样的技术使得多服务应用程序的部署更加容易,但是多服务应用程序的开发环境还需要自行搭建。 它解决了阶段 3 中的痛点,这些痛点是由于阶段 6 的创新引入的。

  • Caddy是一个 web 服务器和反向代理服务器,它强调好的开发体验、可扩展性和自动使用 https 等好的默认设置。 它在阶段 6 中使用,对于花费大部分时间在阶段 1 - 5 中的开发人员来说非常有必要。

  • Wasmer构建一个运行在服务器上的 WebAssembly 虚拟机(在 web 浏览器之外)。 它有可能影响阶段 2 和 3 (Wapm 可实现不同语言源代码间的相互依赖),但是它最大的价值是在阶段 6,为大量的服务端应用程序提供高性能、易于使用和安全的部署环境。

  • Codestream是一个代码讨论工具,可以在代码编写环境下进行沟通和信息交换。它的目标是将代码评审(第 5 阶段)中发生的大量交流“左移(shift left)”到第 2 和第 3 阶段。

  • Sourcegraph(我作为联合创始人的公司)是一个代码搜索工具,可以在你的代码库中发现模式、反模式、符号、引用和错误消息。 它可以让你更容易深入到不熟悉的代码中,并对代码的工作原理以及与其他代码的依赖关系有一个快速的理解。 我们的核心产品定位是阶段 2,但是因为查找和阅读代码贯穿软件开发生命周期的整个阶段,所以集成了编辑器(阶段 3)、代码评审工具(阶段 5)、代码覆盖工具(阶段 4)和监控工具(阶段 7)。

 

软件工程中的许多术语也可以从它们对软件开发生命周期的意义方面来考虑。通过这种方式可以帮助我透过炒作,看清它们的真正含义:

 

  • DevOps 包含两件事:一是让 Ops 对开发者更友好(即让将大部分时间花在阶段 1 - 5 的开发者更简单地操作阶段 6 - 7)。二是通过软件自动化减少系统管理员的手工工作,让系统管理员角色变得更像开发人员(让阶段 6 - 7 变得自动化)。代码即是架构是 DevOps 的一个方面,它使用开发人员熟悉的语言来定义部署阶段,从而实现部署过程的自动化。

  • Shift left(左移)意味着在软件生命周期的早期阶段捕捉 bug 和问题。 普遍接受的规则是,软件生命周期中,下一个阶段修复 bug 的代价是上一个阶段修复代价的 10 倍,如果是在阶段 4 而不是阶段 7 中捕获问题,那就意味着在时间、精力和金钱方面的付出要减少 100 - 1000 倍。

  • Microservices 通过调整软件在阶段 6 的部署方式,来解决阶段 1 - 5 的瓶颈问题。 编写代码时简单,部署时就会复杂(但希望早期的好处大于后期的坏处)。微服务和单体应用(monoliths)之间的争论主要在于如何处理复杂性。有一些通用的规则可以帮助你选择,但是更多取决于软件团队成员自身的能力,有多少经验在 ops 阶段(6 - 7),有多少是在 dev 阶段(1 - 5),以及对有利于减轻各阶段复杂度工具的熟悉程度。

 

需要说明的是,这个分析只是我个人的观点。上面讨论的公司可能对它们的价值理念以及如何影响软件开发生命周期有不同的说法。 如果你想了解更多他们的信息,尝试下他们的产品,并将他们融入你自己的开发版图中。

 

谁知道呢? 也许对这类公司进行足够的调查,并对个人经历进行反思,你就会发现新的工具或公司可以满足你的需求并给予你机会。 你也可能会得出结论,最适合你的不是加入任何现有的开发工具创业公司,而是创建自己的开发工具——但这是另一个主题了。

 

过去几年间,开发工具市场的发展经历了一个分水岭。 软件开发渗透到了经济的各个领域,甚至“非技术”公司现在也雇佣了数百万的程序员,在持续增长的开源代码库中工作。现在开发工具的研发是个潜力无限的市场。好的开发工具能提高我们的技术水平,成为技术进步的二阶加速器。全球经济向前发展的节奏和鼓点将是“开发人员,开发人员,开发人员”,因此,构建开发工具正是时候了

 

原文链接:

https://beyang.org/time-to-build-dev-tools.html

2021-03-07 16:143320

评论

发布
暂无评论
发现更多内容

“囤菜新宠”预制菜,会是生鲜电商的破局点吗?

易观分析

自助洗车设备全套多少钱?有了解的吗

共享电单车厂家

自助洗车机价格 自助洗车加盟 自助洗车设备多少钱

无人自助洗车机多少钱一台?不是自动

共享电单车厂家

自助洗车机多少钱 自助洗车加盟 无人自助洗车机

不再单调!快来自定义你的专属背景~

优麒麟

Linux 开源 操作系统 优麒麟 用户登录

零信任访问控制下企业ABAC的实施问题

极客天地

AliPLC 智能丢包补偿算法,提升弱网环境的通话质量

阿里云CloudImagine

音视频 音频 视频云 音频算法 丢包补偿

crontab命令详细介绍教程,快来围观

CRMEB

eBPF Cilium实战(2) - 底层网络可观测性

北京好雨科技有限公司

Docker Kubernetes PaaS cilium

俄乌战争下的国产数据库替换思考-墨天轮

墨天轮

数据库 oracle 达梦 gbase8a

大咖说|阿里巴巴副总裁陈龙:数字技术将在绿色低碳转型中发挥关键作用

大咖说

阿里巴巴 数字化 碳中和

如何设计帮助中心才能真正地帮助客户解决问题?

小炮

帮助中心

SAE 联合乘云至达与谱尼测试携手共同抗疫

阿里巴巴云原生

想开一家24小时的自助洗车店要多少钱

共享电单车厂家

自助洗车机多少钱 24小时自助洗车店 开自助洗车店多少钱

6元自助洗车怎么样?想加盟自助洗车

共享电单车厂家

自助洗车加盟 6元自助洗车 自助洗车怎么样

@所有高校师生,2022全国大学生物联网设计竞赛火热开启,限量礼品等你来拿!

HarmonyOS开发者

HarmonyOS 物联网设计竞赛

RDP是什么意思?有什么用?

行云管家

运维 网络协议 RDP

盘点近期虎符交易所上线的项目

区块链前沿News

虎符交易所

Tapdata PDK 生态共建计划启动!MongoDB、Doris、OceanBase、PolarDB等十余家厂商首批加入

MongoDB中文社区

在Rainbond上部署高可用Apollo集群

北京好雨科技有限公司

Docker 实战教程之从入门到提高(一)

汪子熙

Docker Kubernetes 容器 镜像 4月月更

在Linux环境下安装SQLserver2017

春风十里

数据库 Linux SqlServer

杭州等保测评公司有哪些?分别叫什么?如何能查到?

行云管家

等保 等级保护 等保测评 杭州

PHP项目微信提现功能代码详解

CRMEB

重磅!百度安全参编的国家标准《信息安全技术 术语》正式发布

百度开发者中心

易周金融观点 | 数字人民币试点扩大带动增量场景需求

易观分析

金融 数字化人民币

24小时无人洗车加盟!就自助洗车加盟

共享电单车厂家

自助洗车机多少钱 自助洗车加盟 24小时无人洗车加盟

ETL 和数仓建模的设计思路!

五分钟学大数据

4月月更

百度荣获 “2021年中国网络安全产业联盟数据安全工作委员会突出贡献奖”

百度开发者中心

如何通过Password Vault的XSS漏洞窃取用户密码信息

喀拉峻

网络安全 XSS

首届物联网数据基础设施案例大赛结果出炉,与 EMQ 和英特尔共同见证物联网的无限可能

EMQ映云科技

物联网 IoT intel emq

构建开发工具正当时_文化 & 方法_Beyang Liu_InfoQ精选文章