关于AI编程能力对程序员的职业影响
如今对于AI的很多媒体炒作(包括自媒体),在技术方面是有根本性错误的,例如,最近经常有人在嘲笑"老一辈说洗衣机不如手洗,这一辈说AI编程不如手写代码"之类的。这种行为的麻烦之处在于他们对问题本身都描述得不清楚,还要再加上几个自以为是的,不伦不类的比喻,根本是在搞乱一个旧问题的同时,制造一个新问题(制造不必要的对立)。在Twitter/X或微博上,我们确实经常会看到有人在不懂装懂嘲笑别人不了解人工神经网络,然后自己没有半个推文在科普这方面知识的,基本上是在炒作概念。贩卖焦虑。
那么在技术方面上,我们该如何分辨一个人所说的话是在炒作概念还是科普技术呢?较为简单的方法是:
- 如果这个人说话,是在让你热血沸腾,很激动或很焦虑,不是想创业就是想放弃,wow,xxx时代来了,xxx要过时了,xxx要被淘汰了,这大概率是在炒作。
- 如果这个人说话,能让你顺着他的用词一个一个查,且越查越知道自己要学啥,他通常是真的懂这项技术,并且在做科普。
另外,如果有人跟你说,他常常和一堆大牛线下聊AI技术。大概率情况不外乎两种:一,这堆人中只有一个大牛,他讲课来的。二,这堆人中至少有一个投资,其他人是创业找钱来的。一堆技术大牛在一起,聊啥都比聊技术可能性大。说真的,技术就不该让人热血沸腾。
对于文科生或对编程逻辑不太熟悉的人来说,学点vibe coding,确实能在产品设计阶段更好地和开发沟通,减少沟通成本,这是值得鼓励的。但作为技术人员,整天折腾提示词和大模型客户端,就敢出来炒概念、贩卖焦虑,这就太离谱了。靠几句 prompt 就想代表"AI编程能力",这不是创新,是偷懒。技术不是拿来表演的,别把不学无术当成新趋势。
具体到技术上来说,现在大家所说的AI,大多数都属于大语言模型(LLM),这基本上是一种以自然语言处理(NLP)技术为核心的产品。虽然这类产品如今得到了多模态的扩展,多模态的模型可能在某程度上整合了自然语言处理、计算机视觉及语音处理等方面,但它在编程领域所能做到的只是将自然语言"翻译"成编程语言,而不是直接编译程序或进行解释执行。更精确地说,它所做的工作是一种统计式的语义生成,而非具备程序语义理解的编译过程。所以,它能否编程,实际上取决于自然语言是否足以描述一个产品级程序。那这可行吗?显然是不行的。在编程领域,自然语言所能起到最大的作用,是描述一个产品的需求,设计的idea。而且即便如此,也要求描述者至少要了解程序的架构,例如C/S,MVC。这些都是架构师的活,
换而言之,我们怎么能幻想让一个核心功能为NLP的系统学会如何构建软件架构?它最多只能把一个初步的设计翻译成一个demo罢了。即使是科幻,阿西莫夫也在他的小说中反复强调,机器人三大定律用自然语言来描述只需要三句话,但在机器人的正子脑中,对应的是数以亿计的量子决策分支,更何况如今的计算机离他所描述的正子脑还远得很。浪漫和信仰都可以理解,但做技术,不能哗众取宠,取悦流量,图个热闹和自嗨。
说真的,无论媒体或者那些网红把LLM吹成什么样子,作为技术人员,我们至少要始终清楚,这类产品聚焦的只是以NLP技术为核心的领域,这只能让机器"听懂"人类的idea,但不等于它能系统性地解决人类的问题。在我个人看来,AI编程能力在可以预见的短期未来,给程序员带来的直接影响大约有三个方面。
- 大幅度增加提示词工程师职位,用于产品的最初设计以及demo开发。
- 大幅度增加测试岗位,用于产品的质量保证以及快速迭代。
- 大幅度增加维护岗位,用于应对更为陡峭的新产品维护曲线。
最后,我想说的是:AI的编程能力不只是对不懂编程的新人不友好(如果只会一些提示词的话),对一堆想依赖ai创业的人会更不友好。因为,AI的编程能力目前最大的作用其实是把一个idea快速变成demo,但是从demo变成真正的产品,恐怕门槛是提高了,而不是降低了,因为由LLM所生成的编程语言编码通常缺乏可维护性、稳定性和架构一致性,导致后期的重构成本上升。如果创业者迷信AI,意识不到这些,他的投资是有很大风险的。