博客横幅

你的业务应该支持多少种编程语言?

从1到100之间选一个数字

当涉及到对编程语言的支持时,每个组织都面临着一个困境。一方面,标准化的愿望是可以理解的——一组被认可的语言可以帮助控制维护成本和长期的生存能力。但同样地,我们中的许多人也认识到使用开发人员认为能够最有效地表达自己的语言的好处。

这是一个有个人因素的困境。一些开发人员想要尝试他们所能尝试的每一种新语言——通常是出于真正的好奇心和学习的渴望,而另一些开发人员可能只是想润泽他们的就业前景。对于一些人来说,学习的乐趣在于深入学习一门特定的语言,为了成为一名专家——或者他们对学习新语言没有信心。

本文探讨了决定您的组织应该支持多少种编程语言的方法。虽然没有适用于所有组织的单一答案,但我相信有可能找到最适合你的方法。

用一种语言统治一切

我们经常会遇到客户和开发人员,他们相信在语言方面确实有一个最佳选择。在不久的过去,看到组织将自己描述为Java或c#公司是很常见的。最近,我们看到Node.js到处都在使用这种模式——用React进行服务器端渲染;用Kubernetes和Docker来编排微服务;或者使用Node.js实现无服务器。

对于拥有通用的工具和工作流,我们有很多要说的,尤其是在维护和支持成本方面。我们已经看到许多大型、复杂的组织从标准化中受益。我们也看到一些初创公司通过让他们的开发者在一个共同的生态系统中工作来加速他们的发展。即便如此,标准化也有其局限性。

只有一种语言似乎太自我限制了。在Th188bet宝金博app下载oughtworks,我们一直是多语言编程理念的积极支持者——我们认为选择合适的工具可以显著提高工作效率。

通用vs特殊情况

就像多语言编程的批评者喜欢指出的那样,选择不施加任何限制会导致混乱。毕竟,您的一流程序员可能已经用Clojure为您编写了最精致的系统,但如果她是唯一知道该语言的人,那么她将在维护上浪费时间,而不是在下一个大项目中工作。而且由于有许多不同语言的系统,您的支持成本将会螺旋上升。

那么,多少种语言算太多?



在Th188bet宝金博app下载oughtworks,我们的许多开发人员通晓多种语言——我们为各种客户服务,所以拥有精通多种语言的开发人员对我们来说非常有用。但是对于我们的客户来说,拥有一种自己喜欢的语言或者一组用于通用应用程序开发的语言可能更有意义。

这样的选择确实会导致妥协。对于一些大型企业来说,他们默认的语言选择可能会使单个业务单位的开发变得更加困难和昂贵。

在与我们合作的一个客户中,有一些开发人员因为他们发现的技术堆积而抓狂。他们确信,通过转换到不同的开发模式,我们可以提供更好、更快、更便宜的解决方案。他们很可能是对的。但我们的开发人员,工作在这个大型企业集团的一个部门,可能没有意识到的是:客户可以通过标准化实现的成本节约远远超过了一个项目的成本。

尽管如此,仅仅因为你标准化了,并不意味着你必须排除特殊情况下的实验。以嵌入式系统或数据科学为例。

在这种情况下,你对语言的选择会对现实世界产生影响。虽然你可以用几乎任何通用语言来构建物联网解决方案——这些东西毕竟是图灵完备的——但这并不意味着你应该这么做。使用Rust之类的工具(它是嵌入式系统的理想选择),在内存管理和功耗等方面具有巨大的优势,而这些都可能决定物联网解决方案的成败。

在数据科学方面,情况也类似。为什么不使用Python或R?在处理复杂的数据项目时,与这些语言相关联的库使得使用其他任何库都存在问题。

我们认为还有其他特殊情况。在语言选择方面,我们发现很多客户都放弃了他们的标准语言,因为他们认为这样可以增加他们招到人才的机会。通过展示您可以提供一条职业道路——对于Clojure开发人员来说——您可以使自己成为一个更有吸引力的雇主。毫无疑问,你知道吸引最有才华的程序员是很困难的。竞争是激烈的。所以,表现出你是一个有远见的雇主,会给开发人员提供有趣的工作,这真的很有帮助。

因此,在这种情况下,每个组织都应该考虑哪些类型的应用程序应该属于通用用途领域之外。您可以允许进行实验,并且您可能希望将函数式语言添加到您的组织正在使用的语言表中。

这些不是简单的选择。你需要征求采煤方和领导层的意见。你需要现实一点:无论你最终的决定是什么,总会有妥协。

在Th188bet宝金博app下载oughtworks,我们相信构建您自己的技术雷达可以帮助您通过这个决策过程——一个旨在评估现有和新生技术的风险和回报的活文档。

创建技术雷达的行为需要将组织中不同的团队聚集在一起,并就技术进行对话。这些对话经常会出现一些你可能会错过的东西,你可能会发现真正有用的工具,这些工具正在企业的口袋中使用。也许它将使您能够发现堆栈中您没有注意到的问题。如果你想了解你应该支持什么语言,这是一个很好的开始。

免责声明:本文所表达的声明和观点仅代表作者个人观点,并不一定反映Thoughtworks的立场。188bet宝金博app下载

跟上我们最新的见解

Baidu