以下是 @nmivan 的亲身经历(为更具代入感,本文将以第一人称叙述)。
我是一名技术面试官,一直都在负责公司的技术面试,有一套虽非原创、但简约有效的招聘流程:先对应聘者进行一轮面试,再让其做一些编程笔试——是真的“笔”试,就像在大学里考试一样,应聘者需要在纸上写下解决问题的代码。
事实证明,这个招聘流程很合理:我们所聘用的所有程序员都成为当地 IT 社区的重要专家,其中一半以上还在各个领域建立了自己的 IT 业务。这般成绩令我有些“迷失”了。在我看来,能招到这些优秀人才完全归功于我这个技术面试官所制定的招聘流程,而为了跟上时代发展,我决定在原本基础上进行一点改变。
“为什么要让他们在纸上乱写乱画,这方式仿佛停留在古代。”考虑到我自己也快忘了在没有 IDE、上下文代码、调试等现代开发工具的帮助下编写代码是什么感觉,我改变了技术面的方式:从“笔试”变为“机考”,即应聘者无需再手“写”代码,改为在电脑上敲代码。
我的做法是,跟应聘者说明编程任务后,给他/她一台电脑,要求其在半个小时到一个小时内完成——在此期间,我会离开处理一些其他工作。等我回来后,迎接我的就是一个现成且完整的解决方案,不仅代码漂亮,性能优化得也很好。天真如我的第一反应是:当代人竟如此热爱技术,编写代码对他们来说就像呼吸一样简单!
因此毫无疑问,我雇用了这些人,他们最初也确实不负期望。对新员工来说,一般入职的头几个月是一个挑战,因为他们忙于学习任务编码,无法独自承担工作。意外的是,我在那批通过“机考”招聘进来的程序员身上,完全没有看到这类问题。他们总是轻而易举地完成我下达的简单任务,甚至还在没有寻求帮助的情况下独自处理了复杂任务——那时我再次天真地感慨:看看这正在成长的一代,多么美好啊!
当时,我以为永远都会这样,他们将一直保持着目前生产力的增长速度持续提升。可几个月之后,我逐渐意识到不对劲。
准确来说,应该是 3-6 个月后,他们的生产力集体达到了一个“平台期”,再也无法增长。更不幸的是,疫情也在那时爆发了,所有人都开始远程办公。在那段远程办公的日子里,他们的生产力从未提高,始终停留在实习生水平,导致我一直在群里疯狂催进度。在我看来,这个问题应该归咎于远程办公,他们可能缺乏动力、缺乏现场交流,隔着屏幕我也无法施展我的个人魅力。
因此当我的上司向我质问“因为远程工作,导致了生产力的增长停滞不前?”时,我十分笃定地回答:是的,只要我们一回到办公室,生产力就会飙升!打脸的是,等到八月份回办公室工作后,我绝望地发现:生产力还是完全没有增长啊!为了解决这个问题,我亲自下场,尝试对他们提供帮助:这个任务不会处理?你看好,我来给你演示一遍,下次你要记住……
但很快,我就意识到这个方法效率太低,所以我决定回到处理问题的根源:技术面试。依旧还是“机考”,但不同的是,这一次我不会离开了,而是坐在他们旁边。本来我的打算是,对他们进行一系列测试,先从基础开始,再逐步提高难度。离谱的是,这个计划在基础阶段就结束了——他们之中,只有十分之一的人了解如何使用基本实体、类型;更糟糕的是,甚至只有 2-3 人在使用内置帮助和上下文代码补全的情况下才勉强完成得不错。
我对这个结果十分震惊:他们根本就找不到属性和方法,更别说使用了,他们甚至连最基本的任务都做不了,可之前的优越表现是怎么回事?直到有一个人在测试期间问了我一句:“我能谷歌一下吗?”——那个瞬间,我这个“白痴”终于顿悟了。
3.他们在不了解基本结构的情况下进行编码……不对,或许应该说是下载或复制了代码,反正他们一点都不知道怎么写。
是我傻,我没有看清他们这一代人习惯遵循的行为方法,也没有意识到这些习惯存在所导致的“肤浅”及其严重性。
能在 2000 年代初学习,我觉得我很幸运,我因此养成了从书本中找到问题答案的习惯——一切问题,想要解决就必须看书。相比之下,“谷歌”程序员就显得没那么幸运了,因为他们随时随地都可以获取任何信息。
书上曾说:“大脑形成最重要的是,它精确加强了一个人使用的那些神经连接。”这句话也就是说,如果你不断地编写代码,你就会做得越来越好;如果你经常在网上寻找信息,你就可以掌握这项技能;如果你一直从网上复制代码,你就会成为这方面的大师。
或许在某些情况下,“谷歌”程序员会超越普通程序员,尤其在解决标准任务方面。但对我来说,他们真是非常糟糕的混蛋。
“小公司可能需要这种程序员,但作为在大公司专攻一个领域的大牛,确实不太行。”