关于java:为什么编程语言社区没那么多初创公司呢

28次阅读

共计 4491 个字符,预计需要花费 12 分钟才能阅读完成。

几周前我主持了一个小组讨论,会上有人问道:“为什么编程语言社区没那么多初创公司呢?”

这个小组会议的主题是职业门路,是编程语言设计和实现(PLDI)会议的一个环节。那人问的是为什么咱们没有看到很多一流的编程语言和软件剖析技术走向商业化。

程序员待解决的苦楚显然有很多。但为什么咱们没有看到更多“深层”技术从实验室走向行业,从而实现技术转移,是我从大学开始就始终在思考的事件——过后我决定用我的毕生来让程序员的生存变得更好。从机器人技术到数据库,其余许多畛域都有更加清晰的商业化门路。

但对于新生的编程语言或软件剖析技术来说,就算技术实现了转移,转移门路也往往长达几十年。我是一名编程语言博士生的时候就在思考这个问题,而后当了传授,当初又成为了 Akita 的创始人——这是一家以 API 为核心的可察看性公司,旨在将软件剖析技术利用于 API 流量——我的思考并未停下来过。

但在小组讨论会上我只是主持人,所以我必须关注那些实际上是为小组成员筹备的问题。上周,我开了一个 Twitter 话题 征求这个问题的答案。这篇文章是对这个探讨串的具体阐明。只管开发工具失去的投资和销量正在增长,但“深度技术”工具并没有播种本人的增长份额,我要探讨的就是这种景象背地的成因。咱们能够做很多事件来解决这个问题——我很乐意与大家一起改变现状。

在这篇文章中,我将重点探讨为什么咱们没有看到更多高成长的初创公司专一于来自 PLDI 社区(编程工具的“深度技术”侧)的各种语言和工具。在其余畛域还有很多类型的开发工具造就了许多高成长的初创公司。胜利的技术转移路径也还有不少(大公司、开源我的项目),这里我就不提了。

1、软件团队正在购买工具

有一种风行的说法是公司并不会为开发工具付费,但这种观点越来越站不住脚了。甚至在几年前,人们还在议论风险投资反对的开发工具公司所面临的挑战,以及 围绕开发工具建设大型企业的难度有多高。

对于开发工具销售状况的一个风行观点

到了 2021 年,人们普遍认为开发工具有钱途可言了。在过来的几年里,咱们看到 Salesforce 以 2.12 亿美元收买了 Heroku,微软以 75 亿美元收买了 GitHub。现在,私营公司 Postman 的估值达到了 20 亿美元,HashiCorp 的估值有 51 亿美元。一些开发者优先的公司也上市了,体现不错:New Relic 的市值超过 40 亿美元;Datadog 的市值超过 320 亿美元。

然而人们并没有为基于新生编程语言和技术的货色慷慨解囊,尤其是那些旨在帮忙人们编写有更多保障的代码的技术。2020 年,整个动态剖析市场规模预计为 7.481 亿美元,预计到 2027 年也才达到 20.02 亿美元。编程语言的开发次要由大公司反对,例如 Go 和 Python 的例子;或者是一群能源十足的开发人员寻找其余形式来反对本人,汇聚成一个个开源社区,例如 Ruby、Elm 和 Julia。

程序员的苦楚显然是存在的——其中一些新生语言和工具恰好能够解决这些苦楚。那么到底出了什么问题呢?

2、程序员正在用他们的估算投票

难道工程领导人所抉择的工具在违反开发人员的志愿吗?很多人持这种观点。

对于开发工具销量的一个常见问题

但数据并不反对这一点。依据 2017 年的开发世界状态考察(来自 SlashData),77% 的开发者当初在工具抉择方面有发言权。他们抉择将这些工具估算花在让他们的工作更轻松的产品上,而不是花在让他们的代码品质更高的工具上。不管怎样,这两个关注点并不是一回事儿。

值得一提的是程序员的欲望和程序员的需要是不一样的。我心愿在我家后院装一个鸟舍,在那里我能够豢养宠物猫头鹰。然而我当初须要做的就是写一些电子邮件和吃午饭。相似地,程序员心愿按时交付无谬误的代码,心愿这些代码的运行速度能始终与和测试时一样快。但他们须要的是解决眼前迫在眉睫的事件,而后在路线图上找中央把进度赶回来,这样能力尽快将布局的个性公布进来。

如果有人提到一种能够神奇地将谬误缩小到零的工具,软件开发人员可能会很感兴趣,但好高鹜远的软件开发人员晓得其实他们的用户仿佛对某些谬误有很高的容忍度。软件开发人员可能会在周末用这种闪闪发亮的研究型语言来发泄一番,但他们内心深处晓得,在他们凌乱的工作代码库中采纳它并不是推动职业生涯的最佳门路。

那么为什么开发人员会抉择花钱购买某些工具呢?这些工具相比其余工具来说有什么益处?

3、干活儿的开发人员不会购买“奢侈品”

有些人会说,更高级、更深层次的技术失去宽泛采纳只是工夫问题。集体高见:编程语言社区目前持有的一些假如是与程序员的需要不统一的。

以下是一些不合乎 PL 世界观的程序员需要例子:

  • 零谬误:往往不是首要任务 。语言设计和软件剖析的一个独特指标是“健全性”:如果呈现了一个谬误,工具会发现它。如果你正在建造一艘宇宙飞船,其中一个谬误就意味着几条人命和数百万美元的代价,那么用细齿梳来查看可能存在的谬误确实是有意义的。然而,对于常见的 web 利用来说,修复谬误和交付个性之间存在很大的衡量空间。Web 利用开发人员通常须要一些货色来帮忙他们疾速构建软件,同时又不就义太多的正确性——而不是相同。
  • 人们不想搞清楚他们所有的问题 。我常常看到“花哨的”技术假如开发人员想晓得零碎中存在的所有谬误。你最受人欢送的敌人会总是通知你所有可能出错的中央吗?人们不想搞清楚他们所有的问题,尤其是思考到并非所有问题都那么重要的时候。如果你想让开发人员快乐起来,请给他们一个优先级列表,列出下一步要做什么,而不是给他们一个充斥着潜在问题的列表,让他们把你的音讯间接静音掉。
  • 技术栈是有机进化的生态系统,而不是集中布局的实体 。当初的问题是为什么没有哪种编程语言或框架会统治世界。在所有畛域,现实中的银弹解决方案都很有吸引力,做梦设想一种真正完满的语言也挺乏味。但大多数具备肯定成熟度的零碎都会再去抉择第二种语言,而后是第三种语言。技术栈的不同档次会采纳各自的语言和技术。这并不是因为组织呈现了凌乱,或者没有思考周全。语言在倒退,零碎的需要在倒退,下一代程序员也在提高。

从退职开发人员的角度来看,零谬误的理念、足够让你解决所有谬误的时间表以及对技术栈的齐全管制看来都是不可能领有的奢侈品。

编程语言社区始终在开发的技术并没有坏掉,但它们须要适应退职开发人员的需要!在下一节中,我将探讨如何做到这一点。

4、工具须要适应开发人员的日常生活

为了适应开发人员的生存,编程工具创建者须要依据预期的开发体验来倒推具体的计划,而不是从咱们想要构建的技术去正推后果。为了做到这一点,咱们须要接触一个技术人员常常视为恶浊词汇的学科:设计。

我常常看到漠视设计的编程工具,但我置信这是因为人们误会了设计的含意。特地是在编程工具中,设计意味着缩小摩擦以帮忙开发人员达到他们须要去的中央,而不是装璜外观或点缀用户体验的小玩意儿,例如可恶的谬误音讯或光明模式。

以下是我从用户钻研和与设计师单干的过程中学到的一些经验教训,它们能够帮忙咱们打包现有技术,让它们间接助力开发人员的工作:

  • 工具解决的问题比什么都重要 。在技术编程语言社区中,我常常看到人们更多地强调他们正在构建的是什么货色而不是他们正在解决哪些问题——而且给用户一个含糊的、假设性的图景往往也不被认为是什么小事。例如,我常常看到函数式编程爱好者出于与软件团队当下面对的高优先级问题无关的技术起因(更多保障;优雅)而发动争执,辩论说他们的语言更适宜开发人员。如果人们不采纳这些技术,可能并不是因为他们没有“明确”这项技术有多酷,而是因为他们不晓得它是怎么帮忙他们解决最重要的问题的。
  • 适应工作流程比技术“惊叹”更重要 。特地是对于“深度技术”工具来说,这些工具的开发者往往在乎的是本人做的事件是不是够新够酷。在对开发人员进行了几十次用户钻研考察后,我开始理解各款工具在生态系统中的作用。当我问开发人员为什么采纳工具 X 或 Y 时,答案通常是它适宜他们的编程语言或基础架构,或者它有他们想要的 Slack/GitHub/Jira 集成。我看到的许多“深度技术”工具都假如开发人员会切换到全新的工具链,只是为了取得绝对较少的益处。对于大多数软件团队来说,这是不可能的。
  • 包装往往比技术解决方案更重要 。如果你是一名开发人员,只是为了证实某件事物是可行的而去跑上它几次,那么它的输入不那么难看也没关系,并且你也不在乎去查查材料或者手工丑化它一下以加深了解。如果你要日复一日地应用某款工具并与你的团队共享后果,那么如果它能花工夫抚平毛糙边缘,让你很容易看到你须要看到的输入,并让你轻松地对后果做你想做的事件,就会是很不一样的体验。

正如我在 Akita 所经验的那样,在构建深度技术的同时采取面向设计的视角是相当艰难的——我看到大公司从属的钻研实验室在这方面做的不错,毕竟那里有简直有限的资源。但我的确置信这在初创公司中是有可能做到的,尤其是咱们当初看到开发工具公司在晚期就能取得相当大的资本反对,我很想看到更多初创公司采纳这种理念。

5、后退的路线

咱们正在迈入开发工具的黄金时代——我很乐意看到“深度技术”开发工具能分得一杯羹。我来到了学术界,因为我感觉本人能够利用编程语言和软件剖析方面的专业知识为开发人员解决很多外围问题。另外我写这篇文章的很大一部分动机是因为这个工作对于一个团队来说累赘太大了!我坚信,只有咱们将正确的技术与正确的问题相结合,就能够让软件开发过程比当初更加顺畅,甚至更令人愉悦。

从编程工具一侧来看,为了取得更宽泛的采用率,工具须要做到以下指标:

  • 更多地满足开发人员的需要、适应工具所在的工作流程
  • 与现有开发工具的互操作性更强
  • 更多实用于现有内容的增量改良
  • 更多合乎开发者优先级程序的设计‍
  • 缩小对 100% 保障的关注‍
  • 缩小对构建“新世界”的关注

如果你是编程工具的消费者,心愿取得更好的工具,你也能够做些力不从心的事件!为了让“深度技术”编程工具在生态系统中更受欢迎,我认为开发人员须要做到以下几点:

  • 承受更多边缘有点毛糙的工具——人们很难为齐全新生的事物发明良好的开发体验!
  • 承受更多、复杂性摸索工具
  • 提供更多对于你想应用某些工具 / 工具类来解决问题的反馈
  • 不要那么期待“银弹”
  • 不要幻想“有一种语言来解决所有”
  • 对连累开发人员生产力的流程少些急躁,尤其是在影响业务(更容易修复)的层面

显然,这说起来容易做起来难!我曾经在 Akita 走过了多年的旅程——并且还在很多事件上寻找答案。但咱们议论这个话题越多,开发者工具爱好者可能团结起来的心愿就越大,咱们就更可能利用最前沿的技术让开发者的生存更加美妙!

原文:https://www.akitasoftware.com…\
作者:Jean Yang\
起源:InfoQ 架构头条 \
译者 | 王强,策动 | 晓旭

近期热文举荐:

1.1,000+ 道 Java 面试题及答案整顿 (2021 最新版)

2. 别在再满屏的 if/ else 了,试试策略模式,真香!!

3. 卧槽!Java 中的 xx ≠ null 是什么新语法?

4.Spring Boot 2.5 重磅公布,光明模式太炸了!

5.《Java 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

正文完
 0