听过什么叫刷题式编程?有用吗?

2021-11-19   出处: kislayverma.com  作/译者:Kislay Verma/lukeaxu


图片来源:GeeksforGeeks

这篇文章的观点可能并不适用于每个公司或每个工科学生。但这个观点已经非常广泛地存在我的经验中,以至于我觉得有必要宣扬一番。

观点

编程竞技是锻炼编程能力的一个好工具。但对竞争性编程的极端追求与其说毫无用处,不如说比毫无用处还要糟糕。事实上,不仅学生在朝这个方向努力,公司也在朝着这个方向努力而不是去寻找兴趣广泛的工程师。

迷失—从起初的能力训练到不顾一切地痴狂

编程竞技开始是件好事。我上大学的时候,没有LeetCode或类似网站。那个时候GSoC刚刚起步,过去只有“RockStar”程序员参与其中,也或许这只是我大学里的情况。总的来说,我班上同学都没有写太多代码,更不用说在实际工作中可能遇到的那种代码了。但是,我和其他一些真正喜欢编程的人最终都能够独自完成各种各样的项目。

LeetCode和GeeksforGeeks填补了教科书和实践之间的一个重要空白。他们提供了一个方便的平台,你可以看到面试中可能提出的各种问题,并练习解决这些问题。但是,后来事情似乎开始有点不太对劲了。随着人们对这些问题的了解愈多愈深入,面试官开始在学生(以及不超过5年经验的求职者)面试中提出越来越难的问题,一轮又一轮地考察求职者如何做输入处理输出(IMO,Input Manipulation And Output)。我们把真正的能力抛在了脑后,现在已经进入了一个对编程竞技痴狂的时期。

作为一种回应,大学生们现在也痴迷于编程竞技,以保持一种所谓的领先地位。在这场针对潜在员工的怪异军备竞赛中,公司不断提出越来越难的问题,试图提高门槛。学生们则只是拼尽全力在每一个编程网站上解决每一个可以解决的问题,而其他什么都不做。

目前初级工程师的面试过程还存在严重的问题。新入职员工的逻辑、编码和算法能力差不多都是一样的。这是与入职衡量指标博弈的典型结果。为了达到能够解决复杂数据问题这个相当高而又不必要的要求,大学生们会不惜一切代价。而如果组织者直接去考虑的问题是“这个人能否成为我们公司一名伟大的工程师”,也许结果会有所不同。

在一场大型面试中,组织者往往要求能够解决典型的数据结构、算法问题。组织者通过降低数据结构类问题的过高标准,可以为学生留出空间,锻炼他们的好奇心,培养他们对独特事物的热情,例如最喜欢的技术,最喜欢的技术栈以及最喜欢的行业。这将有助于他们找到一个能够自我学习、自我激励、对技术持续保持兴趣的自己,而不仅仅是被工作同质化的又一个员工。

正途—该降低的面试要求

如果编程竞技能帮助人们成为更好的程序员,或者至少能让自己从群体中脱颖而出,那么也会挺好的,但实际情况并非如此。

在Coding Ninjas上拥有3700万颗星星的学生,在LeetCode上拥有超高级水平的学生,或者在CodeForces上拥有Uber编码领主身份的学生,面试过程也经常失败,因为他们周围的人都是和他们同一级别的!在追求这一水平的过程中,他们忽视了许多其他他们应该学习的基本知识,或者他们本可以自己探索和尝试的东西。当被问到什么样的技术让他们感兴趣时,有几个学生在过去几年里告诉我,他们只对编程题目感到兴奋,对软件工程或技术本身没有其他兴趣。

我能理解低年级大学生会遵循这一策略。假设普通学校的学生不那么聪明(事实可能不这样,但那是另一篇讨论),优秀的学生可以通过在编程竞赛方面取得的极端成就来区别于他们的同龄人。但是在更好的大学里,每个人都在做同样的事情,因此,对任何人都没有好处。

组织面试者有责任把这一点提出来,并将面试过程也专注于工程师的其他方面,对于学生而言,至少也应考察一下其他专业课程。但实际几乎总是,第一轮面试都是一个超硬核的数据结构题目,普通人是无法通过的。而后面的几轮又总是在评估那些对编程竞技有偏好的人。这个漏斗永远不会允许有不同种类的软件工程师通过。

员工绩效考核是主观的,这是业界公认的观点。由于不同的员工以不同的方式做出不同的贡献,所以大多数公司在使考核客观化方面只做了表面的尝试。这种主观性/不确定性是评估何人担任何种角色的一部分。非常不幸的是,我们把原本愉快的面试过程简化为一种计算游戏。这对任何人都没有好处,而且我们越早制止它,我们就可能越快找到优秀的工程师,而不是找到像人类一样的机器人。


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
237° /2378 人阅读/0 条评论 发表评论

登录 后发表评论