最近面试了一位候选人,他能在白板上完美写出二叉树反转,却无法解释为什么要设计这样的功能。这让我想起了《人月神话》里那句经典:『好的程序员和差的程序员之间,生产力差距可达10倍以上』。但传统的技术面试,真的能识别出这10倍的差距吗?
在Vibe Coding逐渐普及的今天,AI能帮我们生成大部分基础代码,就像计算器帮我们做四则运算一样自然。这时候,如果面试还在考察『手写快速排序』,就像在考司机时要求他们手动计算燃油混合比一样不合时宜。
记得去年我们在重构一个微服务系统时,有位资深工程师提出了一个有趣的观点:『现在的代码更像是可执行的需求文档,真正重要的是背后的设计意图和业务逻辑』。这句话点醒了我——在AI编程时代,工程师的价值正在从『写代码』转向『定义问题』和『设计系统』。
那么,什么样的面试才能真正评估工程能力呢?我认为应该从三个层面来设计:
首先是系统思维测试。给候选人一个真实的业务场景,比如『设计一个支持百万用户同时在线的协作文档系统』,观察他们如何划分模块、设计接口、考虑扩展性。这比让他们背诵Redis的八种数据结构有意义得多。
其次是意图表达能力。在Vibe Coding中,清晰的提示词就是新时代的架构文档。可以给候选人一个模糊的需求,看他们能否用精确的语言向AI描述实现方案。这其实是在测试他们的需求分析和抽象能力。
最后是工程素养评估。包括代码审查能力、技术选型思路、性能优化意识等。比如展示一段有问题的代码,看他们能否指出问题并给出改进方案。这比单纯考察算法实现更能反映实际工作能力。
谷歌在2013年就发现,传统的编程面试与实际工作表现的相关性其实很低。而在AI辅助编程的今天,这种脱节会更加明显。我们需要的是能理解业务、设计系统、把握质量的工程师,而不是人肉编译器。
说到底,技术面试的目的不是筛选出最会做题的人,而是找到最能解决问题的人。当AI帮我们卸下了代码实现的负担,工程师的真正价值——创造力、系统思维和工程判断力——才显得更加珍贵。
下次当你设计技术面试时,不妨问问自己:这个测试是在评估候选人的记忆能力,还是在评估他们解决实际问题的能力?在Vibe Coding时代,也许我们应该重新思考什么才是真正的『技术能力』。
