如今,随着各种不同的编程语言的出现,许多组织已经成为数字多语言者。开源为开发者打开了一个语言和技术栈的世界,他们可以用它们来完成任务,包括开发和支持传统和现代软件应用程序。
掌握多种语言的人比只会母语的人可以与数百万更多的人交流。在软件环境中,开发者引入新语言不是为了更好地沟通,而是为了实现特定目的。有些语言非常适合一项任务,但不适合另一项任务,因此使用多种编程语言使开发者能够为工作选择合适的工具。从这个意义上说,所有开发都是多语言的;这只是事物的本质。
多语言环境的形成通常是渐进的和情境性的。例如,当一家企业收购一家公司时,它会接管该公司的技术栈——包括其编程语言。或者,随着技术领导层的更迭,新的领导者可能会将不同的技术引入进来。技术也会过时,从而扩大了组织必须长期维护的编程语言和技术的数量。
对于企业而言,多语言环境是一把双刃剑,它带来了好处,但也带来了复杂性和挑战。最终,如果情况得不到控制,多语言环境将扼杀您的企业。
棘手的技术绕口令
当存在多种不同的技术——编程语言、旧有工具和新兴技术栈时——就会出现复杂性。工程团队花费更多时间来努力改造编程语言,以适应许可证、安全性和依赖性。与此同时,管理层缺乏对代码合规性的监督,并且无法评估风险。
实际情况是,企业在编程语言质量方面存在差异,并且工具支持的可变性很高。当您被要求使用十几种语言时,很难成为一种语言的专家。精通法语和意大利语的人与可以用八种语言串联几句话的人之间,技能水平存在很大差异。对于开发者和编程语言来说,情况也是如此。
随着更多编程语言的加入,困难只会增加,最终导致数字巴别塔。
答案不是剥夺开发者工作所需的工具。添加新的编程语言可以扩展他们的技能基础,并为他们提供合适的设备来完成他们的工作。因此,您想对您的开发者说“是”,但是随着越来越多的编程语言被添加到企业中,它们会对您的软件开发生命周期 (SDLC) 造成拖累。从规模上看,所有这些语言和工具都可能扼杀企业。
企业应注意以下三个主要问题
- 可见性:团队为项目而聚集,然后解散。应用程序发布后就再也不会更新——为什么要修复没有损坏的东西?因此,当发现严重漏洞时,企业可能无法了解哪些应用程序受到影响,这些应用程序包含哪些库,甚至它们是用什么语言构建的。这可能会导致代价高昂的“探索项目”,以确保漏洞得到妥善解决。
- 更新或编码:一些企业将更新和修复功能集中在一个团队中。另一些企业则要求每个“披萨团队”管理自己的开发工具。在任何一种情况下,工程团队和管理层都要付出机会成本:这些团队没有编码新功能,而是不断更新和修复开源工具中的库,因为它们更新换代太快了。
- 重复造轮子:由于代码依赖项和库版本不断更新,因此当发现漏洞时,与应用程序的原始构建相关的工件可能不再可用。因此,许多开发周期都浪费在试图重建可以修复漏洞的环境上。
将您组织中的每种编程语言乘以这三个问题,最初看起来像小土堆的东西突然看起来像珠穆朗玛峰。就像登山者一样,没有合适的装备和工具,您将无法生存。
找到您的罗塞塔石碑
一个满足企业及其在 SDLC 中的各个利益相关者需求的综合解决方案是必要的。企业可以使用以下最佳实践来创建此解决方案
- 监控生产环境中运行的代码,并根据应用程序中使用的标记组件(例如,常见漏洞和暴露组件)的风险做出响应。
- 接收定期更新以保持代码最新且无错误。
- 使用商业开源支持来获得关于即将停止生命周期且社区不支持的编程语言版本和平台的帮助。
- 在您的企业中标准化特定的编程语言构建,以实现跨团队的一致环境并最大限度地减少依赖性。
- 根据依赖项设置何时触发更新、警报或其他类型事件的阈值。
- 为您的软件包管理创建一个单一的事实来源;这可能需要知识渊博的技术提供商的协助。
- 根据您的特定标准,获取仅包含您需要的软件包的较小构建分发包。
通过使用这些最佳实践,开发者可以最大限度地利用他们的时间为企业创造更多价值,而不是做基本的工具或构建工程任务。这将使软件开发生命周期 (SDLC) 中所有环境中的代码保持一致性。由于维护编程语言和软件包分发所需的资源更少,因此还将提高效率并节省成本。这种新的运营方式将使技术人员和管理人员的生活更加轻松。
1 条评论