众所周知,生成式AI能够根据指令生成图像,包括逼真的照片、插图和绘画。
同时,在商业领域,生成式AI的代码生成能力正受到广泛关注。
基于大型语言模型的对话式AI,精通多种语言的交流和翻译。
用于创建程序的编程语言也是一种语言。从某种意义上说,人类程序员将口头表达的软件需求“翻译”成编程语言。
因此,使用大型语言模型的对话式生成式AI也精通编程。
此外,编程是一种智力工作,其输出的正确性通常可以自动、即时地验证。这是因为运行创建的程序可以自动确定是否产生了预期的结果。
实际上,人类程序员在创建主程序的同时,也经常创建测试程序,以验证主程序是否按预期运行,并在开发过程中检查其行为。
生成式AI也可以在测试的同时进行编程,这使得在人类提供精确指令的情况下,AI可以自动迭代并完成程序,直到其通过测试。
当然,由于生成式AI编程能力的局限性和人类指令的模糊性,许多情况下即使经过多次迭代也无法通过测试。此外,测试可能不充分或不正确,常常导致已完成程序中存在错误或问题。
然而,随着生成式AI能力的提高,人类工程师改进了他们的指令方法,并通过互联网搜索增强了生成式AI的编程知识,自动生成适当程序的范围日益扩大。
此外,在商业界的关注下,进行生成式AI研发的顶尖公司也致力于提高生成式AI的编程能力。
在此情况下,可以委托生成式AI进行自动编程的领域和数量预计将加速扩张。
许多从未开发过程序的人,根据互联网信息建立了基本的开发环境,然后让生成式AI处理编程,以协作的方式完成了程序。
我自己作为一名程序员,也使用生成式AI进行编程。一旦掌握了窍门,我就可以在不编辑程序的情况下完成软件,只需根据生成式AI的指令将程序复制到文件或进行剪切粘贴。
当然,我也会遇到很多困难。这主要是由于我的计算机或编程开发工具的设置与典型配置略有不同,或者免费软件组件比生成式AI学习时更新,导致知识差距,或者有时我请求的内容有点不寻常。
在大多数情况下,如果没有这些细微的差异或特殊情况,并且我指示它创建一个非常常见的软件功能,就会生成适当的程序。
迈向液态软件时代
作为一名软件开发者,我可以发布我开发的软件。而我们工程师发布的软件,则被各种用户使用。
通过生成式AI,任何人都可以进行软件开发,这种未来是前面讨论的延伸。
然而,这不仅仅是软件开发方的变化。用户方也将发生重大变革。
通过口头指示生成式AI自动添加或更改软件功能,不仅可以在软件发布前的开发阶段完成,也可以在软件使用过程中进行。此外,这还可以由软件用户自己完成。
软件开发者只需定义允许和不允许更改的范围,然后发布具有生成式AI驱动的定制功能的软件。
这将允许用户请求生成式AI更改细微的可用性问题或屏幕设计偏好。
此外,还可以添加其他应用程序中的便捷功能,通过单击一次执行多个操作的组合,或者在一个显示屏上查看常用屏幕。
从软件开发者的角度来看,启用这种用户定制功能具有显著优势。它消除了他们根据用户请求添加功能的需要,并且考虑到这可以通过避免负面反馈和对可用性不满来提高软件的普及度,这是一项重大胜利。
当用户能够以这种方式自由更改屏幕和功能时,这个概念就与我们传统上所称的“软件”大相径庭了。
称之为“液态软件”(liquidware)将更为恰当,因为它比软件(与硬件相比更具灵活性)更加流畅和适应性强,并且完美地契合用户。
过去,功能完全由硬件实现,但后来出现了可替换的软件,使得功能可以通过硬件与软件的结合来实现。
由此,我们可以设想液态软件的出现,它指的是可以由生成式AI修改的部分。因此,整体功能将由硬件 + 软件(开发者提供)+ 液态软件(用户修改)来实现。
在这个液态软件时代,用户端的修改想法将呈爆炸式增长。
一位用户创造性的修改想法可能会在社交媒体上成为热门话题,导致其他人效仿并修改各种液态软件。
此外,能够整合和处理各种类型软件的液态软件也必然会出现。这将允许用户在一个应用程序中查看来自多个不同社交媒体平台的时间线,或者整合来自众多平台的搜索结果。
通过这种方式,在液态软件普及的世界中,包括个人电脑和智能手机在内的各种设备将提供完美契合每个个体生活和活动的功能。
正在发生的现象
对我这样的软件工程师来说,重要的是“液态软件”并非未来概念,也不是数年之后的事情。
这是因为非常简单的液态软件已经可以实现。
例如,假设我是一名工程师,正在为公司的电子商务网站开发一个Web应用程序。
这类Web应用程序通常在公司管理或委托云服务的服务器上拥有数据库、销售管理系统和产品发货系统。当用户进行购买时,这些系统会联动起来,进行收款和发货。
这些操作的核心系统和数据库不能随意更改。
然而,如果根据每个用户的方便来修改用户所看到的电子商务网站的设计,通常不会造成太大问题。当然,如果一个用户的更改影响到另一个用户的屏幕,那就会有问题,但针对单个用户的定制是没有问题的。
可以设想各种修改:放大文本、将背景更改为深色调、将常用按钮移动到左手易于操作的位置、在列表屏幕上按价格排序商品,或者并排显示两个商品的详细信息。
从技术上讲,这些修改可以通过更改在浏览器上显示屏幕的HTML、CSS和JavaScript等配置文件和程序来实现。
从安全性角度来看,这些文件最初在Web浏览器上运行,因此熟悉Web应用程序的工程师可以修改它们。因此,它们只处理可以安全修改的功能和数据。
因此,在电子商务Web应用程序的服务器端,可以为每个登录用户单独存储这些文件,添加一个与聊天AI对话的屏幕,并创建一个机制,根据用户的请求在服务器上修改该用户的HTML、CSS和JavaScript文件。
如果您将这段文本以及现有电子商务Web应用程序的配置信息和源代码提供给生成式AI,它很可能会提供添加此类功能的步骤和必要的程序。
通过这种方式,液态软件已经是一个当前的话题;它成为一种正在发生的现象不足为奇。
全方位工程师
即便AI驱动的自动化编程范围不断扩大,液态软件时代已经开启,软件开发目前仍无法完全由生成式AI独立完成。
然而,可以肯定的是,编程在软件开发中的比重将大幅下降。
此外,为了顺利开发软件,所需的知识和工程技能范围广泛,不仅包括通用编程,还涵盖了云基础设施、网络、安全、平台、开发框架和数据库——自上而下覆盖整个系统。
拥有此类知识和技能的人员被称为全栈工程师。
到目前为止,少数全栈工程师负责整体设计,而其余工程师要么专注于编程,要么专注于系统栈中非编程的特定领域,以此方式分工协作。
然而,随着生成式AI承担编程部分,软件开发成本将大幅降低,从而催生出各种新的软件开发计划。
因此,每个开发项目将只需要极少数能够单纯编写代码的工程师;相反,将需要大量的全栈工程师。
此外,在这种情况下,仅仅拥有全栈知识和技能是不足的。这是因为各种软件开发项目将要求多样化的软件类型,这意味着开发将不总是局限于同一系统栈内。而且,对需要多个系统栈的复合系统的需求必然会增加。
例如,Web应用程序的系统栈与业务或核心系统的系统栈不同。因此,不能将核心系统开发项目委托给Web应用程序的全栈工程师。
此外,Web应用程序、智能手机应用程序和PC应用程序的系统栈各不相同。在物联网等嵌入式软件领域,系统栈会根据所嵌入的设备而完全改变。
然而,如果编程的重要性降低,软件开发的总成本下降,那么结合不同系统栈的复合系统开发应该会增加。
虽然这将需要召集多个不同的全栈工程师进行开发,但能够统揽全局并进行基本设计的工程师将占据关键位置。
这意味着对拥有跨越多个系统栈的“全方位”知识和技能的工程师的需求将增加,他们能够超越单个系统栈的界限。
这类工程师很可能被称为“全方位工程师”。
正如生成式AI将导致仅能编程的工程师需求减少一样,最终也将出现一个时代,届时局限于单个系统栈的全栈工程师的需求也会减少。
如果您希望在那个时代继续作为IT工程师活跃,您现在就必须开始努力成为一名全方位工程师。
全方位工程师的角色
将要开发的编程语言、平台和框架多种多样。
然而,这并不意味着必须学习所有这些。这是因为全方位工程师也可以获得生成式AI的帮助。
如果委托给生成式AI,即使是从未亲自使用过的编程语言、平台或框架,也只需通过口头指示即可生成。
当然,这存在引入错误或安全漏洞的风险,或者积累技术债务,从而使未来的修改变得困难。
为了识别和缓解这些风险,需要了解特定语言或库的知识。然而,这些知识也可以从生成式AI中获取。全方位工程师只需要能够彻底构建检测和预防这些问题或事后处理它们的程序和机制即可。
这些程序和机制不会因系统栈的差异而发生显著变化。如果能够将抑制错误和安全漏洞的引入、并确保开发过程中未来可扩展性的程序和机制规范化,那么其余的工作就可以委托给生成式AI或在这些特定领域有技能的工程师。
全方位工程师无需掌握每个独立系统栈的详细知识或长期经验。
此外,全方位工程师的主要角色之一是设计在跨多个不同系统栈协同操作的复杂软件中,功能如何分布以及它们如何协同工作。
此外,考虑整个软件应如何开发和管理也成为全方位工程师的重要角色。
全方位软件
让我们来思考一下,什么样的软件开发需要全方位工程师。
之前,我举了开发电子商务Web应用程序的例子。
在公司高层管理人员的指示下,负责该电子商务Web应用程序的执行主管可能会指示规划团队提出以下要求:
用户社区平台转型。 这意味着不仅仅是一个电子商务专用应用或网站,而是提供一个平台,让产品用户可以就产品本身及其使用方式相互交流。目标是用户留存、口碑效应、通过用户贡献丰富内容,并将产品开发反馈(包括积极和消极的)与新产品规划和市场营销相结合。
全设备兼容性。 这使得用户可以通过Web应用、智能手机应用、语音助手、可穿戴设备、智能家电以及所有其他设备访问用户社区和产品信息。
全平台兼容性。 这不仅包括公司自己的用户社区平台,还包括例如在通用电子商务网站上展示产品和分享评论、与社交媒体集成,以及与各种AI工具的功能和信息联动。
业务系统更新。 在暂时与现有销售管理和产品配送系统关联的同时,这些系统也将得到更新。更新后,设想实现实时销售数据聚合、需求预测以及与库存管理系统的集成。此外,随着与区域分布式库存系统和配送公司提供的产品配送服务逐步集成,信息系统也必须相应地逐步集成。
液态软件兼容性。 当然,所有用户界面都将与液态软件兼容。此外,所有内部用户界面,例如用于产品开发和规划、系统运营部门以及管理报告的信息聚合和反馈界面,也将转换为液态软件。
如果提出这样复杂的软件开发计划,传统的软件开发团队很可能不会立即接受。或者,在细化系统规范的过程中,他们会从逻辑上证明需要巨大的开发成本和时间,并推动大幅削减规范。
然而,如果生成式AI能够自动化大部分编程工作,并且团队中有人熟悉所提出系统栈的一半以上,并且团队之前有在生成式AI的协助下从零开始成功引入新系统栈、平台和框架的经验呢?如果你作为一名全方位工程师,已经走上了这条道路并打算继续走下去,那又会怎样呢?
从这个角度来看,这应该是一个非常有吸引力的项目。你将与在规划领导的指导下提出雄心勃勃的提案的规划团队合作,以及一个有潜力成长为全方位软件开发团队的开发团队。
现有系统也带来了保障。这也是一个允许敏捷开发流程的项目,可以快速构建高影响力的功能,并且系统可以通过早期采用用户的反馈逐步发展。
考虑到这一点,这个全方位软件的开发应该是一个有吸引力的项目。
结束语
得益于生成式AI的自动编程,液态软件和全方位软件开发正逐渐成为现实。
在这种情况下,IT工程师越来越需要超越全栈,致力于成为全方位工程师。
再进一步,他们的职责范围将扩展到全方位业务工程(通过连接客户、内部员工和AI,超越IT系统的范畴,全面规划组织活动)和全方位社区工程。
甚至更远,我相信一个名为“全方位社会工程”的领域将会出现,旨在全面改善社会。