近日,代码服务托管平台GitHub和知名的人工智能研究组织OpenAI推出一款AI自动编程工具Copilot。该工具可以辅助程序员生成代码和注释,被网友们称为“AI程序员”或者编程“神器”。乐观者认为,程序员从此不用再996了,而悲观者认为“AI程序员”会替代许多程序员的工作。那么Copilot或类似的AI编程工具会导致程序员丢掉饭碗吗?
为了分析和回答这个问题,我们先来看看程序是如何解决实际问题并产生价值的。计算机程序在数字化时代是非常强大的工具和生产力来源,其地位不容忽视,但是它的存在和价值建立在对现实问题的处理上。解决问题的整个过程,并不仅有程序和程序员那么简单,而是从业务问题逐级映射到计算机程序的过程。这个过程主要有以下几个重要的步骤。
首先,业务人员要对实际的问题有较为清楚的认知。例如当一款产品的效益不太理想,其原因可能有很多,如果排除了质量和功能问题(程序解决不了这些问题),发现可能是产品的定价不太合理。那么这个时候需要在业务分析师的帮助下寻求更合理的定价策略。业务分析师往往会运用到统计学和数学的知识对现有销售数据进行分析。但是销售数据量可能非常庞大,涉及多个地区和时间,这个时候需要通过程序来实现这些数据运算。而业务分析师通常只提出数据的数学计算方案,为了理解方便,我们可以理解成这些是一堆数学计算公式。计算机无法理解人类的数学公式,它只能执行各种计算指令。进一步实现这个过程需要系统分析师根据计算的需要,设计合理的计算机上的计算过程和算法。最后才是程序员根据算法的逻辑,进一步采用适当的数据结构完成操作指令的编写。当这些都完成之后,我们就可以在庞大的销售数据中进行分析和计算,并设计出更为合理的定价策略。
以上过程不光是计算机程序如何提供生产力的例子,同时也反映了程序员在该过程中的角色和作用。回到我们的话题,“AI程序员”所能够负担的工作只有最后一步程序实现当中的一部分。具体一点说,像 Copilot这样的AI自动编程工具,主要的作用是帮助程序员完成一些繁琐的代码工作。其AI能力可以更好地理解程序员代码的上下文,不仅能逐行给出分析参考意见,还能够对完整代码进行遍历。OpenAI的CTO Greg Brockman将这项工作比作“编程的最后一英里”。微软的CTO Kevin Scott也认为, Copilot不仅适用于编程老将,也能让新手更加容易上手。从该产品的价值主张和口号“Your AI pair programmer”也可以看出,该产品的主要作用是让程序员自己加上“AI程序员”完成结对编程(Pair Programming)的工作。所谓的结对编程是现在流行的一种开发方式,由两名程序员在一个计算机上共同工作,一个人输入代码,而另一个人审查他输入的每一行代码,两人也经常互换角色和工作内容。
总的来说,“AI程序员”可以帮助提高编程的效率,以前需要两个人结对完成的工作,现在大部分可以一个人完成了,因此开发进度有可能加快。至于程序员能否借此摆脱996的工作节奏,这个取决于项目管理,而不是“AI程序员”。此外,“AI程序员”无法代替程序员理解计算逻辑和算法,至少目前来看是这样的。它能够在一定程度上理解程序员编程的意图,却无法代替程序员完成编程的思考。因此对算法有深入理解的程序员只会喜欢上使用AI编程工具,而不是担心被其替代从而丢掉饭碗。技术发展的趋势是编程环境越来越智能,使得编程工作变得更加轻松。应对这种趋势,程序员想要提高自身的价值,应当尽可能往业务端延伸和扩展自己的知识面与能力。计算机程序终归是为了解决业务问题实现业务功能而存在,对业务问题有更多理解的程序员在工作当中将负担更多的设计和创造性的工作,从而被替代的可能性也会更低。