大模型时代,如何面试程序员

过去一年,Open AI将通用大模型训练的结果通过ChatGPT的应用形式带到大家面前,意味着发展了大半个世纪的人工智能领域正式步入了广泛意义生产力提升的新纪元。

在AI大模型的加持下,程序员现有的编程范式将会遭到怎样的冲击?面向全新的AI应用时代,开发者的思维、开发方式、工具又该做出怎样的改变?

不管我自己创业,还是入职新公司,未来半年都会需要招聘大量的程序员,本文将从考察程序员的角度,和大家交流一些思考。

AI辅助编程已是大势所趋

在 AI 目前能做的各种任务中,编程任务是完成得最好的,AI 编程工具也是所有 AI 工具中和工作场景结合得最好的。

目前最成功的 GPT 应用是 GitHub 为开发人员推出的 Copilot,甚至于这个单词成了系列 AI 应用的代名词。所以说,大模型在软件研发中的应用实际上已经开始了。

AI 现在对程序员影响到什么程度,将来对其他岗位就也会影响到什么程度。只要是用电脑当生产工具的岗位,早晚就都会被 AI 影响到。

编程助手能够简化程序员的工作,提升生产效率,将开发者的精力释放出来,从而能够做更多的具有创造性的工作。"这也将是程序员们的不被取代的核心能力所在。

用过 Copilot 后愿意付费的达到了惊人的 69.2%。程序员群体是以抠门、善于找免费资源、理性消费而著称的,但愿意为一个工具每月自掏腰包 10 美元来提升工作效率,说明工具是真的香透了。

有两种情况下 AI 编程可以提升效率:

  • 你懂相关技术,知道该怎么做。此时使用 AI,代码能写得飞快,各种边界条件覆盖得很全。会有少许不如意,自己再做调整。比如,我再也不用自己写正则表达式了
  • 你懂相关技术,但要在新平台、新语言或新框架等新环境里用,缺少直接经验,甚至无从下手。AI 可以帮你直接完成大量工作。你把经验平移过来,大概也能判断出它做得靠谱不,问题可能发生在哪。过程中自己也逐渐对新环境熟悉起来。

这两种情况的前提,都是「你懂相关技术」。

两种 AI 无法提效,甚至起反作用的情况:

  • 你完全不懂相关技术,只会用文字下指令让它做。它可能也做得出来,跟着一步步操作,甚至能跑起来,能用。但这只是短期效率的提升,会挖下很多坑,不堪大用。
  • 你需要考虑系统架构、长期维护、性能优化、安全风险等方面的问题。AI 只能给出局部最优解,面对全局表现就很差了。

所以,用好 AI 的前提是你得懂,而且在大局观上比它更懂。细节上可以不如它懂,但一定不会被它骗。

AI 的出现,也是一次对人的筛选。能用好 AI 的,才能在这场横向比较的筛选中胜出。

岗位边界的重新划定

大模型出现后,好几个产品经理问我,是不是他们用 AI 编程,就可以不再低三下四地求程序员做需求了?看完前面的内容,答案显然不是。

如果产品经理想靠自己的力量从需求直接做到上线,那是还是得学些技术才行的。但要学的,比以前少多了,主要是加强技术判断力。具体编码可以大量依赖 AI。

另一边,很多程序员想做独立开发者,但因为不懂产品设计,不懂市场营销,不懂用户体验,不懂商业模式,不懂运营,不懂融资,不懂法律,不懂人事,不懂财务,不懂......所以,还是只是程序员。

现在,AI 可以帮助程序员解决这些问题里相当大的一部分。程序员代替产品经理的门槛,也降低了。

所以,产品经理和程序员,谁替代谁,都有可能,得看个体情况。程序员在这个过程里,相对更占优势。

用程序员做例子,可以清晰地看到,AI 的出现,会让岗位在两个方向上发生变化:

  • 横向发展,会用 AI 的人,抢走不会用 AI 的同行的饭碗
  • 纵向发展,借助 AI 工具抢上下游岗位的饭碗

纵向的发展,会完全打乱现在的岗位分工,一人分饰多角。甚至推到极致,一个人干了所有事情,也不是不可能的。真正的超级个体,出现了。

这个过程,可能很快。因为每个岗位的核心都是技能+认知两件事,构成入行门槛。

技能的门槛有高有低。但不管你高低,AI 最擅长的就是拥有多种技能,且都能达到专家级水准。于是 AI 把跨岗位的技能门槛给拆了。

认知的门槛,说高也高,说低也低。高是因为形成新认知很难,低是因为很多认知是固化在工具里的,用就好了。

对于AI编程的边界究竟在哪里,通过GPT-4技术报告和微软研究院的报告发现,AI大模型在多数情况下超越了人类的编程能力,但是其距离顶尖程序员还有很大的差距。

AI编程肯定会超越Coding编程,因为现有的ChatGPT、GPT-4大模型工具的能力覆盖到了代码补全、翻译代码、解释代码、DeBug等多个维度。未来,这些工具必将覆盖到设计、搜索、迁移、运营等多流程中。

研发效能提升

软件工程领域有一个大家比较认可的定义,即软件开发是人类历史上最复杂的脑力协作。

"脑力"给我们带来了工作量度量的麻烦,我们没法像控制肢体运动一样控制思考;"协作"当然也不是免费的,要让另外一个人按照你的想法来做事情,沟通和理解的成本很高。

这两年由于数字化的深化,整个社会全产业对于软件的依赖性提升很快,客观上就推动了软件研发团队和组织的快速扩大。

人多了自然效能管理就更重要了,但软件本身的"人月神话"等悖论,明确告诉我们用传统方式一定是越管越慢。虽然类似 DevOps、CloudNative 这些运动在向着正确的方向推动我们对效能度量和效能管理的认知,但实际上我们还是缺乏一些本质上的治理手段。

所以当 ChatGPT 出现后,在不同的技术社区就开始发酵,大家看到了这一波基于大模型的 AIGC 技术带来的可能性。

我们以前从来没有思考过的效能提升视角也逐渐浮现出来,比如研发团队不同专业之间的知识管理问题,之前我们还是在不停地鼓励和训练大家换位思考、高效沟通,现在出现了一个可以包容各类专业知识的大模型,这个"超级队员"之前是不存在的。

而这个超级队员的出现,必然会给我们带来新的效能提升思路和方式。大模型这个"超级队员"的加入,实际上让我们更加容易进行端到端的度量,很多协同工作是可以通过大模型来自动完成的,自然就形成了更为完整的过程数据。

很多企业管理着希望能够"看见",所以开始建立效能方向的指标体系。但这种通过指标体系来管理的方式也容易走上治标不治本的道路,软件开发过程中处理的复杂度很难通过指标来说明问题。

本质上研发团队和专业人员的能力提升才是核心,不要因为建立了指标反而忽视了效能治理的关键命题。目前看大模型的出现也并不能替代研发专业人员,而未来的应用和系统因为大模型的加入会变得更加复杂。

目前最大的挑战实际不在于大模型本身,而在于人员能力的提升。大部分研发人员开始时都是单一问题的 0-shot prompt,不能够很好的和模型互动,由此得到的生成结果也不尽如人意。

另外一个挑战就是很多企业认为只要有了大模型,每个人跟模型提问互动就是应用了。

对程序员的新要求

软件研发本身是隐式知识的显式化过程,通俗讲就是用户开始说不清楚要什么,之后通过产品一轮又一轮的迭代慢慢清晰。

从这点出发,我认为大模型在软件研发过程中最大价值是知识管理,因为这个"超级队员"的知识存储能力超过了任何人类个体和团队。

一旦大模型真正有效成为了知识的管理员,我们软件研发的专业分工就要发生变化。这种变化还不仅仅是我们现在可以看到的"全栈工程师的复兴",而是真正意义上的角色重新定义。

当然这并不意味着我们专业人员变少了,相反新的专业分工可能出现,比如维护大模型的工程师、测评大模型的分析师等等。

我们已经无法预测未来的发展趋势,但我想在开放的心态下,我们应该躬身入局,建立自己的感知网络,从而能够持续进化。

程序员需要更加关注原则和设计。大模型自动生成代码和应用只会日趋完善,但生成的质量仍然是需要程序员来判断,一些关键问题,如性能和安全,更是需要程序员来负责。所以程序员需要更多思考一些原则和本质的东西,这样才能支持有效的判断。

大模型是生成式的 AI,生成内容的质量很大程度取决于问题的质量,也就是我们现在经常谈的 prompt engineering(提示语工程)。

目前很多模式正在被提炼和总结出来,每个程序员都应该持续学习。但即使有了问题的模式,问题的内容仍然是程序员个体决定的。

这就像使用 TDD 的高手,面对复杂需求总能够庖丁解牛一般找到合理的任务拆分。同理,能够通过 prompt 一步步引导大模型生成高质量的内容本身就是一项关键能力,而这个能力跟程序员的设计思考是密切相关的。

只有善于设计的人,才能够和大模型进行有效的互动。

那么在大模型时代下,我们能做些什么呢?有啥法子不被淘汰,有啥法子可以乘上地板抬升的顺风车,能力大概有五项要求:

  • 能提出好的问题
  • 有好的价值判断逻辑与方法,以及,好的审美
  • 知道如何清晰地表述自己的想法和目标,并确认对方理解的和你表达的误差不大
  • 意识到自己是否处于信息茧房中,并时刻去探索新的领域
  • 有意愿与能力去创造和选择新的东西

总结

技术的演进所经历的阶段宛如一个轮回,回顾2011年,全球化移动应用市场大门打开之际,掘金海外还是瞄准国内市场、专注iOS还是Android亦或者是HTML5跨平台开发等都成为开发者抉择的方向。

12年后,开发者再次站在选择的十字路口,正如技术社区三倍速定律所彰显的那样,"一个技术要进入到真正的生态应用里,首先是在学术界被大家认可,接着进入到工程界,最后才进入大众视野。因此技术社区的动向往往能反映出未来的技术趋势"。

我们可以明显感知到GPT正在以前所未有的速度成为人工智能时代的Windows,AI发展也正处于iPhone 4时刻。

工业革命解决了重复体力劳动的事情,人工智能未来解决重复脑力劳动的事情。对话式人工智能已经到来,人类最终会与AI「共生」,让机器做机器擅长的事情,让人类发挥人类的特长,让人工智能拓展人类智能。

"大模型不是洪水猛兽,对于程序员来说它是一个好帮手,好工具。"

对于想要加入这场AI浪潮的开发者,我建议:首先要去学表达,学会善用Prompt;第二要学英文,因为前沿技术的英文资料更新速度更快;第三,发挥想象力,开始行动。

个人的努力和主观意愿固然重要,但是一个人无论如何努力,永远也赶不上时代的步伐,只有汇聚一群人、一个团队一起奋斗,才有可能摸到趋势的尾巴。

因此,选择一个靠谱的team和平台极其重要,欢迎大家关注我:一个在外企写过操作系统,在国内互联网做过web全栈开发和深度学习推理引擎的资深码农。

最后,跟我一起喊:未来不是属于 AI,而是属于掌握了 AI 的新程序员。

相关推荐
程序猿进阶1 小时前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
LCG元8 小时前
【面试问题】JIT 是什么?和 JVM 什么关系?
面试·职场和发展
GISer_Jing12 小时前
2025前端面试热门题目——计算机网络篇
前端·计算机网络·面试
m0_7482455213 小时前
吉利前端、AI面试
前端·面试·职场和发展
TodoCoder14 小时前
【编程思想】CopyOnWrite是如何解决高并发场景中的读写瓶颈?
java·后端·面试
Wyang_XXX15 小时前
CSS 选择器和优先级权重计算这么简单,你还没掌握?一篇文章让你轻松通关面试!(下)
面试
liyinuo201718 小时前
嵌入式(单片机方向)面试题总结
嵌入式硬件·设计模式·面试·设计规范
代码中の快捷键19 小时前
java开发面试有2年经验
java·开发语言·面试
bufanjun0011 天前
JUC并发工具---ThreadLocal
java·jvm·面试·并发·并发基础
Zhu_S W1 天前
Java web的发展历史
面试·职场和发展