跳到内容
本文已通过AI从日语翻译
阅读日语原文
本文属于公共领域(CC0)。请随意自由使用。 CC0 1.0 Universal

流体软件时代的“全方位工程师”

众所周知,生成式AI只需接收指令,就能生成逼真的照片、插画和绘画。

同时,在商业领域,生成式AI的程序生成能力正受到广泛关注。

对话式AI由大型语言模型这一基础技术驱动,擅长以多种语言进行对话并在不同语言间进行翻译。

用于创建程序的编程语言也是一种语言。人类程序员在某种意义上,是将口头接收到的软件需求“翻译”成编程语言。

这就是为什么使用大型语言模型的对话式生成式AI,在编程方面也表现出色。

此外,编程是一项智力任务,其结果的正确性通常可以自动且即时地验证。这是因为创建的程序可以执行并自动检查其是否产生预期输出。

事实上,人类程序员在创建程序时,通常会同时编写测试程序来验证结果,在开发主程序的同时检查其是否按预期运行。

生成式AI也能以同样的方式,在测试中推进编程。如果人类提供精确指令,AI就有可能自动迭代并完成程序,直到通过所有测试。

当然,由于生成式AI编程能力的局限性以及人类指令的模糊性,许多情况下即使经过多次迭代也无法通过测试。此外,测试不充分或错误也常导致完成的程序中包含bug或问题。

然而,随着生成式AI能力的提升,人类工程师指令方法的 refinement,以及通过互联网搜索增强生成式AI编程知识的机制,自动生成适当程序的范围正日益扩大。

此外,由于商界的关注,从事生成式AI研发的顶尖公司也在大力投入提升其编程能力。

在这种情况下,可以委托生成式AI自动化编程任务的范围和数量预计将加速扩大。

有许多案例表明,从未进行过程序开发的人,利用互联网信息搭建了基础开发环境,然后依靠生成式AI进行编程,以“二人三脚”的形式共同完成了项目。

作为程序员,我自己也在使用生成式AI进行编程。一旦掌握了诀窍,我甚至可以完全不编辑程序,只需按照生成式AI的指示复制粘贴代码到文件中,就能完成软件开发。

当然,在过程中我确实会遇到很多困难。这主要是由于我的电脑或编程开发工具设置与通用配置略有不同,或是因为免费软件组件比生成式AI学习时更新,导致知识差距,又或者是我的需求略显特殊。

在没有这些细微差异或特殊情况,并且被要求创建非常普遍的软件功能时,生成式AI在大多数情况下都能生成合适的程序。

迈向流体软件时代

作为一名软件开发者,我能够发布自己创造的软件,而我们工程师发布的软件随后会被各种用户使用。

生成式AI能够让任何人进行软件开发,这种未来正是我们之前讨论的延伸。

然而,这不仅仅是软件开发方面的变化;用户方面也将迎来重大变革。

通过口头指令生成式AI来自动添加或修改软件功能,不仅可以在软件发布前的开发阶段进行,也可以在软件使用过程中进行。更重要的是,这些操作可以由软件用户自己完成。

软件开发者可以定义哪些范围可修改、哪些不可修改,然后发布具备生成式AI驱动定制功能的软件。

这样一来,用户就可以请求生成式AI修改软件中一些 minor 的不便之处或屏幕设计偏好。

此外,用户还可以添加其他应用程序中的实用功能,将多个操作组合成一键执行,或者在一个显示屏上查看所有常用的屏幕。

对于软件开发者而言,赋能用户进行此类定制带来了显著优势:它消除了自行实现功能请求的繁琐,并且通过避免因可用性问题而产生的负面评价和不满,有助于提升软件的受欢迎度。

当用户能够以这种方式自由更改屏幕和功能时,这一概念就与我们传统上所称的“软件”大相径庭了。

更恰当地说,我们应该称之为“流体软件”(Liquidware),它比软件(已比硬件更灵活)更具流动性和适应性,能完美贴合用户需求。

功能曾一度完全由硬件实现。随后,可互换的软件出现,使得功能可以通过硬件与软件的结合来实现。

由此,我们可以预见流体软件的出现,即那些可由生成式AI修改的部分。因此,整体功能将通过硬件 + 软件(开发者提供) + 流体软件(用户修改)的组合来实现。

在这个流体软件时代,用户的修改创意将呈爆炸式增长。

某个用户发明的一个突破性的修改创意,可能会在社交媒体上引发热议,吸引其他人模仿并修改各种流体软件应用程序。

此外,能够整合处理各种软件应用程序的流体软件也可能应运而生。这意味着用户可以在一个应用程序中查看来自多个不同社交媒体平台的时间线,或者搜索结果可以整合来自众多平台的内容。

通过这种方式,在流体软件普及的世界中,包括电脑和智能手机在内的各种设备,将提供完美契合我们每个人生活和活动的功能。

一个正在发生的现象

对于像我这样的软件工程师来说,至关重要的是要明白“流体软件”并非未来概念,也不是数年之后的话题。

这是因为即使是非常简单的流体软件,现在也已经可以实现。

例如,假设我是一名工程师,正在为公司的电子商务网站开发一个网络应用程序。

这样的网络应用会在公司内部管理或通过云服务合同租用的服务器上拥有数据库、销售管理系统和产品发货系统。当用户进行购买时,这些系统会联动起来处理收款和商品派发。

像这些核心业务系统和数据库是不能随意修改的。

然而,面向用户的电商网站网页屏幕设计,可以根据 individual 用户的习惯进行修改,而不会造成太大问题。当然,如果一个用户的修改影响到其他用户的屏幕,那就会有问题,但 individual 用户专属的定制是没有问题的。

例如,可以设想各种修改:放大文本、将背景改为暗色调、将常用按钮 reposition 到左手操作更方便的位置、在列表屏幕上按价格排序,或并排显示两个商品的详细信息。

从技术上讲,这些修改可以通过更改在浏览器中显示屏幕的 HTML、CSS 和 JavaScript 等配置文件和程序来实现。

从安全角度来看,这些文件最初在网络浏览器上运行。因此,精通网络应用程序的工程师可以修改的部分,只处理那些可以安全修改的功能和数据。

因此,在电商网络应用的服务器端,可以创建一个机制,为每个登录用户单独存储这些文件,添加一个与聊天AI对话的界面,然后根据用户的请求修改该用户在服务器上的 HTML、CSS 和 JavaScript 文件。

如果将这段文本以及现有电商网络应用的配置信息和源代码呈现给生成式AI,它很可能会提供添加此类功能的步骤和所需程序。

如此看来,流体软件已然是一个当前的话题;它现在就作为一种正在发生的现象,也毫不令人惊讶。

全方位工程师

即便在AI驱动的自动化编程范围不断扩大、流体软件时代已经到来之际,软件开发仍不能完全由生成式AI独自完成。

然而,软件开发中编程所占的比重无疑将大幅下降。

此外,为了顺利开发软件,需要具备广泛的知识和工程技能,从通用编程到云基础设施、网络、安全、平台、开发框架和数据库——涵盖整个系统栈,以确保整个系统正常运行。

拥有此类知识和技能的人员被称为全栈工程师。

传统上,少数全栈工程师负责整体设计,其余工程师则专注于编程,或专注于系统栈中非编程的特定领域,从而进行角色分工。

然而,随着生成式AI承担编程任务,软件开发成本将大幅降低,从而催生出各种新的软件开发项目。

因此,在每个开发项目中,仅仅能编写程序的工程师将变得 largely 不必要;取而代之的是,对大量全栈工程师的需求将增加。

更重要的是,在这种情况下,仅仅拥有全栈知识和技能是不足够的。这是因为各种开发项目所需的软件类型将多样化,这意味着开发请求将不再总是使用相同的系统栈。此外,对需要多个系统栈的复杂系统的需求无疑也会增加。

例如,网络应用的系统栈与业务系统或核心系统的系统栈不同。因此,全栈网络应用工程师不能被委托负责核心系统开发项目。

同样,网络应用、智能手机应用和PC应用也各有不同的系统栈。在物联网(IoT)等嵌入式软件领域,每个嵌入式设备的系统栈都会完全不同。

然而,随着编程比重的降低和整体软件开发成本的下降,结合这些不同系统栈的复杂软件的开发可能会增加。

虽然此类开发需要召集多位不同的全栈工程师,但能够统揽全局并处理基本设计的工程师将扮演关键角色。

这意味着市场将对那些拥有跨越众多系统栈的“全方位”知识和技能的工程师产生需求,他们能够超越 individual 系统栈的界限。

这类工程师很可能被称为“全方位工程师”。

正如生成式AI将导致仅能编程的工程师需求下降一样,一个仅限于单一系统栈的全栈工程师需求也将减少的时代终将到来。

如果你希望在那个时代继续作为一名IT工程师活跃,你必须立即开始朝着“全方位工程师”的方向努力。

全方位工程师的角色

未来将开发的编程语言、平台和框架多种多样。

然而,全方位工程师无需精通所有这些,因为他们也可以获得生成式AI的协助。

如果你将任务交给生成式AI,即使是你从未用过的编程语言、平台或框架,只需通过口头指令就能生成出来。

当然,这存在引入bug或安全漏洞的风险,或者积累技术债务,从而使未来的修改变得困难。

为了识别和减轻这些风险,对特定语言或库的知识是必要的。然而,这些知识也可以从生成式AI中获取。全方位工程师只需能够扎实地构建检测和预防这些问题,或在问题发生后处理它们的程序和机制即可。

这些程序和机制并不会因系统栈的不同而发生 drastic 改变。如果将预防bug和安全漏洞、确保未来可扩展性的程序和机制规范化,那么其余的工作就可以交给生成式AI或专注于这些特定领域的工程师。

全方位工程师无需拥有每个 individual 系统栈的详细知识或长期经验。

全方位工程师的主要职责之一是设计功能如何分配,以及多个在不同系统栈上协同运行的复杂软件系统如何相互协作。

此外,考虑如何开发和管理整个软件也是全方位工程师的关键角色。

全方位软件

让我们来思考一下,什么样的软件开发需要“全方位工程师”。

前面我举了开发电商网络应用的例子。

在公司高层指示下,由负责刷新此电商网络应用的 executive 主导,企划团队可能会提出以下需求:

用户社区平台整合:这意味着不仅提供专门的电商应用或网站,还要提供一个平台,供用户就产品本身及其使用方式进行互动交流。目标是提高用户留存率、口碑效应、通过用户贡献丰富内容,并将(积极和消极的)反馈整合到产品开发、新产品规划和营销中。

全设备兼容:这使得用户社区和产品信息可以从各种设备访问,不仅包括网络应用,还包括智能手机应用、语音助手、可穿戴设备和智能家居设备。

全平台兼容:这不仅包括公司自己的用户社区平台,还包括例如在综合电商网站上展示商品和分享评论、与社交媒体集成,以及与各种AI工具的功能和信息联动。

业务系统刷新:在暂时与现有销售管理和产品配送系统联动的同时,这也涉及到刷新这些系统。刷新后,计划包括实时销售数据聚合和需求预测,以及与库存管理系统集成。此外,与配送公司提供的区域分布式库存系统以及承运商侧的配送服务也将分阶段联动,要求信息系统相应地逐步调整其集成。

流体软件兼容:所有面向用户的界面,当然都将与流体软件兼容。此外,用于产品开发和规划(例如信息聚合和反馈)、系统运营部门以及管理层的报告等内部用户界面,也将全部转化为流体软件。

如果提出这样一套复杂软件的开发计划,传统的软件开发团队很可能不会立即接受。或者,通过系统规范的讨论,他们会逻辑地论证需要 enormous 的开发成本和时间,从而促使大幅削减规范。

然而,如果生成式AI能够自动化大部分编程工作,并且所提议的系统栈中超过一半的部分团队中有人已经具备经验呢?如果团队在生成式AI的协助下,从零开始成功推出了新的系统栈、平台和框架呢?如果你作为一名全方位工程师,已经踏上了这条道路并打算继续走下去,那又会怎样?

从这个角度来看,这应该是一个非常有吸引力的项目。你将能够与一个带来高层雄心勃勃提案的企划团队合作,以及一个有可能成长为全方位软件开发团队的开发团队。

还有现有系统带来的安心感。这也是一个可以通过 agile 开发流程逐步发展的项目,从快速见效、高影响力的功能开始,并从早期 adopter 用户那里收集反馈,逐步发展壮大。

综合考虑所有这些,开发这种全方位软件应该会是一个非常有吸引力的项目。

结论

随着生成式AI驱动的自动化编程,流体软件和全方位软件开发已然成为当前的现实。

在此背景下,IT工程师越来越需要超越全栈,并致力于成为“全方位工程师”。

除此之外,他们的职责范围将进一步扩大,超越IT系统领域,涵盖“全方位业务工程”——通过连接客户、内部员工和AI来设计组织活动本身——以及“全方位社区工程”。

再往更远看,我预见一个名为“全方位社会工程”的领域将会出现,旨在全面改善社会。