很久以前,我是一名技术面试官,在一家公司负责招聘程序员。我有一套简单、清晰、聪明的招聘计划(虽然这不是我原创的)。首先,候选人需要先回答一大堆问题,然后再做一些编程任务。他们在一张纸上写代码,就像我们在大学里做的那样。
现在回想起来,我发现这个招聘流程真的很有效。我们招的候选人都成为了当地 IT 界有名的专家。他们中超过一半的人很早以前就在各个领域建立了自己的 IT 业务。
但也正是这种辉煌的经历让我开始膨胀了。我决定对招聘计划做出一些改变,我认为这一切都是我个人的成就。我是一个很棒的技术面试官!
改变
我做了一个非常简单的改变——让候选人在电脑上写代码,而不是在纸上。我想:“为什么他们要坐在那里在纸上涂鸦,就好像在古老的修道院里写手稿一样?”我自己已经忘记了在没有 IDE、上下文提示、调试工具的情况下写代码是什么感觉。
于是,我给了候选人一台电脑,并交给他们一个编码任务,让他们在半小时到一小时内完成。等我回来时,就看到了已经完成的解决方案,而且非常棒——代码写得很漂亮,优化得很好。这让我大吃一惊——现在的程序员如此崇拜技术,以至于对他们来说写代码就像呼吸一样!
我录用了这些人。
最初的表现
一开始,一切都很顺利。我对他们的工作生产力进行跟踪,他们掌握新技能的速度连连另我感到吃惊。在过去,新工作的前几个月对新员工来说都是一个挑战——他们能够为学习任务写一些代码,但几乎无法应对真实的工作任务。但对于我招进来的这些人,我没有看到他们有这样的问题。
他们轻松地完成了简单的任务,然后我给他们安排了更复杂的任务——那些需要一年经验的人才能完成的任务。你猜怎么样?他们在没有帮助的情况下完成了这些任务!我既震惊又兴奋。新一代程序员正在成长!
我以为会一直这样。我的意思是,我希望他们的生产力能保持目前的增长速度。但事实是,我想多了!
平台期
3 到 6 个月后,他们的工作生产力进入了平台期。不幸的是,由于新冠疫情的影响,他们都开始远程工作。我也待在家里,仿佛被吓坏了。
时间流逝得飞快,一个月又一个月,但他们的生产力始终没有提升,就好像他们永远无法突破实习生的水平。他们有时会出现生产力极值,但这很容易解释:大量简单、单调、相似的任务。我在跟他们沟通的时候一直抓狂,大喊大叫。
我认为这跟远程工作有关,因为我很难对他们施展我的个人魅力。他们可能是因为缺乏动力,缺乏现场交流,甚至是因为没有人偶尔把他们胖揍一顿。此外,高管们也似乎跟我有同样的看法,问了我诸如此类的问题:“生产力增长停滞是因为远程工作吗?”当然,我回答是的。等我们回到办公室,生产力就会直线上升!
回到办公室
我们在 8 月份回到了办公室。我们有很多事情要做,唯一缺的是时间(在我们远程工作时,很多任务都没有完成)。我看了看绩效——没有增长……该死!我不得不撸起袖子,亲自着手解决这些问题。
我开始为他们提供帮助。解决不了问题?让我来。我会走过来坐在你的椅子上帮你完成任务。你就坐在我旁边看着我怎么做。
然而,他们有很多人,而我只有一个。我意识到这行不通,我必须解决问题的根源。我决定回到源头——技术面试。
重新面试
我不再要求他们在纸上写代码——我只是坐在他们旁边,给他们一个任务,让他们试着去实现。我曾计划进行一系列测试,从最基础的开始,然后逐步提高难度等级,但最后只停留在基本的任务上。
事实证明,只有十分之一的人知道如何使用基本的实体、类型,并知道它们的属性和方法。更糟糕的是,只有 2 到 3 人在使用了内置的辅助工具的情况下才完成了任务。他们就是找不到属性和方法,更不用说使用它们了,他们甚至连最基本的任务都完成不了。
只有一个人敢问我:“可以用谷歌吗?”就在那时,我——这个白痴——终于醒悟了。
“谷歌”程序员
就像有人用一袋面粉砸了我的头,我花了两天时间来消化这种疼痛感。这怎么可能呢?他们在第一次面试时给我看的那些漂亮、优化良好的代码来自网上。最初几个月生产力的爆发式增长是因为他们在网上搜索解决方案。这些家伙给出的神奇答案是在网上找到的。
他们写代码不求甚解,连最基本的结构都不去了解一下。不,他们没有写代码,只是下载了。不,他们甚至连下载都没有,下载代码起码要运行“npm i”之类的命令。他们只是复制粘贴了代码,却不知道为什么要那么写。
这就是让我感到恼怒的地方。我理解你们到网上去弄清楚新技术的工作原理,或者当你们需要使用一些奇特的特性时不希望让不必要的信息造成认知负担。但是,你怎么能无脑地从网上复制粘贴最基本的代码呢?
你想知道他们说了什么吗?他们说:“这有什么大不了的?”这让我感到痛苦万分,或许修道院才是我的归宿。我消停了一下,不再和他们说话。我蜷缩进了自己的世界里,并开始反思。当然,我知道这与他们无关,我自己才是问题所在。
他们只是在遵循他们自己世界里的法则。是我傻,我没有看到这些法则——我不了解它们,没有意识到它们的严重性。这就是肤浅要付出的代价!
肤浅的代价
在我上大学的第一天,我们聚集在学院的大堂里。一位兼任副院长的老副教授告诉我们:“大学不教你们知识,而是教你们如何自己获得知识。”
我很幸运,我是在 2000 年左右上的大学。我从图片上了解互联网。如果你想了解 C++,那就坐下来,这里有学习 C++的材料。如果你想写一篇关于表面粗糙度测量的论文,就去图书馆看书,然后开始写你的论文。如果你想做一场关于历史的演讲,那就去读期刊吧。是的,你需要一本接一本地读,直到找到需要的文章。
不幸的是,“谷歌”程序员没有那么幸运。他们随时随地都能获得任何信息。他们已经学会了如何快速找到这些信息——无论是卖饼干的商店地址、打折的裤子还是生成查询代码。
书上说:大脑会形成并强化人们经常使用的神经元连接。如果你一直写代码,就会做得越来越好。如果你经常在网上查找信息,就会掌握这项特殊技能。如果你一直从网上复制代码,就会成为这方面的大师。
然而,并不是所有的代码都会被开源出来,所以就会出现平台期。“谷歌”程序员的生产力并不是对编码技能的衡量,而是对从网上复制代码技能的衡量。就像下载速度一样。大约 15 年前,你要看电影必须先下载,而如今,只有老一代人会这么做。
有时候,“谷歌”程序员可能会超过普通的程序员,至少在解决普通标准的任务时是这样。但与此同时,我们也会形成使用基本对象、类型和编程语言构造块的神经元连接。
这对我来说是一件很糟糕的事,可耻的人是我。
另外,请重新面试你的程序员吧!
评论