去年秋天我面了一家做工业软件的中厂,技术面过了三轮,最后HR笑眯眯地让我等总监面。总监进来坐下,没看我的简历,先喝了口茶,问我:“说说你最大的缺点吧。”我脑子一抽,脱口而出:“我讨厌写简历。”他愣了两秒,然后笑了,说:“巧了,我也讨厌看简历。”那天下午我们聊了四十分钟,从简历的起源聊到招聘系统的荒谬,最后他问我:“那你觉得我该用什么来判断一个人能不能写代码?”我说:“给他一台没网的电脑,一个周末,让他把你们产品的一个小模块从零实现一遍,然后一起code review。”他不说话了,沉默了一会儿说:“我年轻的时候,我们就是这么招人的。”
我知道很多人会说我傻,面试嘛,说缺点当然要说“我太追求完美”、“我容易过度投入工作”,那些是安全牌。但我想说的是,那些安全牌恰恰是面试里最危险的东西——因为你说出来的时候,面试官也在同时判断你是不是一个只会背答案的人。我在前一家公司做过两年面试官,见过太多候选人把“我太较真”说成缺点,然后当被追问“举个具体例子”时,开始编一个跟项目复盘有关的套话。说实话,如果一个人连自己的缺点都不敢真实地暴露,那我怎么敢把线上数据交给他?我更愿意招一个会拍桌子说“这个技术方案就是狗屎”的人,至少他敢把真实问题摆到台面上来。
但这里有个很微妙的矛盾。你展现真实,可能被当成情商低;你表演完美,可能被当成没深度。我前同事就因为这栽过跟头——他面阿里,说了自己曾经因为技术债导致线上事故,结果被面试官评价是“稳定性意识不够”。而另一个朋友,把同样的经历包装成“我主动推动重构,最终提升了系统可用性”,就过了。你说这是不是讽刺?我们一边在面试里大谈“诚实守信”,一边用淘汰机制惩罚诚实的人。所以后来我自己面试,如果候选人愿意讲一段翻车经历,我一定会追着问细节,问他在凌晨三点看着报警短信时手指是凉的还是抖的,然后我会在评价表里写:此人能区分“真实”和“修饰”。
说到底,面试这场游戏,双方都在演。公司想看你的技术上限,你想看公司的管理下限。而大多数人把时间花在背诵“JVM内存模型”和“Redis持久化策略”上,却忘了问一句:这个团队怎么处理意见冲突?线上出bug了,是先复盘流程还是先找人背锅?我那次跟总监聊到最后,他说他其实很烦那些把“精通K8s”写在简历第一行的候选人,因为真正写过生产环境的人都知道,K8s这东西,你越用越觉得自己懂的是皮毛。他最后问我:“如果试用期第一个月,我让你去修二十个遗留bug,你愿意吗?”我说:“我愿意,但前提是让我看完所有历史提交记录。”那天我们没聊薪资,但我知道我会被录用——因为他说了句:“你比你的简历有意思。”
写这篇文章的时候,我还在那家公司。前几天我负责面一个八年经验的候选人,他简历上写了一堆“主导”“优化”“极致”,但我问他“你上一次为什么跟同事吵起来”,他支支吾吾说“我们很和谐”。我大概知道结果了。我越来越觉得,面试不该是一套标准化的压力测试,而应该是一次人与人之间关于技术价值观的交锋。你用一个模板化的答案去应付,就会招来一个模板化的人生。而模板化的人生写不出好代码,只会复制粘贴. // 是的,连这句总结都带着一点懊恼。