刘伟:AI程序员来了,“码农”会消失吗?
美国初创公司Cognition日前发布了首个AI软件工程师Devin,目前虽尚未公测,但Cognition表示只需一句指令,Devin就可端到端处理整个开发项目,这再度引发“码农是否将被淘汰”的大讨论。一些IT行业资深人士在公开场合提起“编程无用论”,而很多人对此并不认同,认为“AI 时代对计算机专家和程序员的需求将更大”。
从长远来看,双方的观点似乎都有道理。一方面, AI技术的迅速发展和普及势必给程序员的工作带来冲击:传统的编码方式将显著改变,水平一般的程序员被取代的趋势或不可避免。另一方面,尽管AI可以辅助程序员快速生成代码、提高开发效率,但并不能完全取代程序员的角色,尤其是技术理解深厚、能力强大的高水平程序员。对于未来的程序员而言,掌握AI技术并应用于自己的工作流程中,与AI协同工作从而提高自己的工作效率和编码质量,是与时俱进、适应市场的必然需求。所以,AI程序员的出现并不意味着取代传统程序员,而是用市场竞争的方式刺激他们“进化”。
苏格兰哲学家大卫·休谟认为:“一切科学技术都与人性有关,对人性的研究应是一切科学技术的基础。”编程工作实际上也是一门与人类思考、决策和行为密切相关的科学技术。编程语言、算法等都是通过理解人类的思维和行为模式,实现计算机与人类的交互。那些充满人性化、个性化的软件和交互方式正是基于编程中对用户需求、行为模式和情感的理解,结合开发者的自身特色创造出来的。人性不仅存在于“开发者——用户”两个角色之间,也存在于编程团队中。对不同客户需求的理解、沟通中碰撞出的灵感火花、提升协作效率的经验,都是编程团队的宝贵财富。
程序开发的过程其实也是一个人、机、环境系统相融合的工程。在一个程序中,人负责设计、开发和维护,机器则忠实地执行代码和数据处理。程序员通过编写代码来指挥机器完成特定的任务,人机协同为一。机器的智能体现在它能够根据预设的规则和算法自主决策和行动,程序员的任务就是运用恰当的算法和技术引导机器的智能行为,并不断对其进行优化。同时,机器也在与环境进行交互,它需要自外部环境接收数据,并将处理结果输出到环境中。这种交互是机器不断适应各种情境和需求,给出相应答复的基础框架。
由此,未来一名好的程序员不应仅仅是一名技术人员,还需要具备广泛的知识和技能。他们是整个人、机、环境系统框架中的创造者,要持续创新、创造价值。具体而言,为了编写高质量代码,他们可能要精通多种编程语言;为了能按需选用合适的技术方案,他们要能迅速适应新的技术和工具;为了面对复杂问题时能抓住原因并及时分析解决,他们必须保持与团队及客户的高效沟通协作,并不断积累知识、经验,同步跟进行业技术前沿,针对具体问题设计出创新的解决方案,保障程序的稳定性和可靠性。
知识本身并不是力量,能有效将知识应用于实践才是真正的力量。同样,大量的编程知识可能是有价值的,但若不会运用、不知变通,无法解决实际问题,它就很难产生任何实质性影响。能够有效使用程序,意味着智能体正具备将知识与学习应用转化的能力。这就需要程序员具备一些编程规则之外的能力,如分析、判断、解决问题的能力等。程序员之所以能够不被取代,底气正在于其能将所学与实际情况相结合,并作出正确决策,而不是像AI程序员那样的编程工具,为了编程而编程。
总之,世界终究是一个多因、多果、多元、多维的复杂系统。在这个系统中,人类程序员常常负责处理无法编程、“杂”乱无章的方向性问题,机器(如AI程序员)则善于处理可编程的重“复”性过程问题。今天的各种应用落地场景提供了联结机器与人共同作用的“复”+“杂”平台,未来,AI负责基础重复性劳动、人类程序员负责顶层设计的模式已经初露端倪,而认为人类程序员将被AI取代、沦为提要求的“边缘人”,为时尚早。(作者是北京邮电大学人机交互与认知工程实验室主任)