经过了将近一年时间与AI的密切接触,论文研究、AI应用使用、AI应用开发,对AI逐渐有了一些自己的思考:我笃信一个原则「抛开时间来看,人能学会的,AI一定可以学会」。
这句话背后的一个核心哲学和科学思想是计算主义。计算主义认为,认知过程,包括人类的学习,可以被看作是一种信息处理过程,类似于计算机的运算。
如果我们将学习看作是一种通过处理信息、识别模式、建立联系并调整行为以适应环境的过程,那么从计算主义的角度来看,只要这些过程能够被精确地描述和编码,AI就可能实现它们。
以下关于AI的思考都是基于这个原则。
作为程序员群体的一员,距离AI是比较近的也是感受最强烈的 —— AI真的很厉害,无论是coding、设计偶尔甚至有接近阿里系P5水准的表现(单指 Claude和OpenAI)。这无疑增加了程序员的一种焦虑:我们可能会被AI替代了,近期针对外包员工一些管理动作可见一斑。
那么,程序员真的会被AI替代吗?
如果计算机技术还是在当前的体系下发展的话,虽然会剧烈的影响程序员的工作,但是我认为AI无法替代程序员。道理很简单,因为在当前的计算机技术体系下AI无法学习和预测一件事:多样性(包括人的多样性、需求的多样性、现实的多样性)。举个职场人都会心一笑的例子:
AI真的仅此而已吗?
刚刚我论证AI无法学习「多样性」的前提是在当下计算机软件应用开发体系下的,如果以后没有计算机软件应用了呢?如果新的软件形态的产生了以后没有软件应用只有数据了,程序员肯定会被直接替代掉了。用比较正式的表达:AI带来的是一种范式的变化,而不是眼前coding权的让渡和变更。
所谓范式(paradigm)就是一种基本的思维方式或行为模式,通常指在一个特定领域内,被公认的、约定俗成的、用来指导研究和实践的标准模式。计算机软件应用的范式是需求、PRD、架构设计、详细设计、研发、测试、部署、运维等。
而AI带来的范式则是 —— 「言出法随」。
举个例子,现在我们只要说一句「把数据中IPv6的数据剔除掉」,剩下交给AI即可。再也不需要去查一下RFC中IPv6格式定义,根据当前项目或者环境进行技术选型,然后设计和考虑各种corner case完成测试再发布使用。这种意义上来讲程序员必定会被AI替代掉。
20世纪出上海街头骑自行车送信的邮差,不是因为发明了有轨电车丢掉工作而是因为email等新的沟通方式被替代掉的,对程序员而言AI就只那个新的方式。
那程序员应该怎么办呢?
短期来看。就像前面分析的,如果计算机技术还是在当前的体系下发展的话程序员还不会被替代只是会让渡出去一些coding权,所以对程序员而言还是有时间。Ilya Sutskever在母校多伦多大学演讲的时候说过:「你可以不关心政治,但政治每时每刻都在关心你。同样的道理,在AI身上要应验许多许多倍。」,所以程序员要做的是尽可能的靠近AI:不要吝啬在AI上的花费(时间、金钱都算);不要放弃思考和创造(AI目前还弱于人类的地方);不要忘记自己的Plan B(个人的影响力)。
长期来看。真到了AGI言出法随的那一天,程序员能做的估计只有一件事情:做一个坚定的人类相信者,相信在人与机器的竞争中,人类一定是最后的胜利者。
面对AI的迅猛发展,我自己时常会有一种无力感:「这可咋办,AI什么都会以后还要学习吗?」
最近我看到了一段话:「物理教的不是公式,是建模思维;化学教的不是方程式,是变化思维;语文教的不是词汇,是表达思维」。
我想对于AI时代而言,学习的意义是帮助建立思维框架,它决定了能提出什么质量的问题,而问题的质量决定了AI能给出什么质量的答案。有思维框架的人用AI如虎添翼,他们知道如何精确描述需求,如何拆解复杂问题,如何验证AI的输出。没有思维框架的人用AI如盲人骑瞎马,他们只能提出模糊的需求,然后在AI的试错中消耗时间,最终沦为“提示工程师”。
就像这篇文章里提到的「如果不学习CSS有时候你都没办法描述清楚一个Bug,更不用说让AI帮你解决了」,AI时代的学习不是记住更多知识而是:
尽管AI记住和掌握知识看似远超人类,但概念化、战略思维、引人入胜的沟通和有影响力的执行等更高阶的技能仍然是独特且有价值的,面对AI我想应该超越纯粹的技术能力,认识到真正能区分个体的更深层次的能力:
「哪怕coding变得和说话一样简单,也只有少数人会演讲」。