别再刷 LeetCode 了

转眼又是一年的金三银四,对大多数程序员来说,跳槽前刷 LeetCode 背八股文已经是不用思考的肌肉记忆了,但是刷 LeetCode 这种行为存在的问题,却没有多少人仔细思考过。当然如果你是把刷 LeetCode 当成爱好的,这篇文章你可以不用看了。

image

投入产出比极不对称

有句调侃:“一杯茶一根烟,一道 LeetCode 刷一天”。LeetCode 的学习曲线非常陡峭,前期需要花费大量时间去熟悉常见的解题套路,熟悉完后要花大量的时间刷题练习,有时遇到一些题,就算找遍了所有相关的教程或者讲解视频也不能够理解,因为每个人对于强逻辑的东西都会按自己的方式去构筑逻辑链,别人的想法只是在指明一条正确的路,但是却没有告诉你如果你走错路了要怎样走出来(现在有 AI 了好很多)。这个刷题过程会耗费非常多的时间和意志力,而你获得的只不过是对你工作和生活都毫无帮助的奇技淫巧罢了。你有这些时间,干点什么不好?

没有帮助

上面说到 LeetCode 对工作和生活都没有帮助,可能有些人有不同的意见,事实上 LeetCode 涉及的那些经典算法你在现实的 CRUD 工作中基本不会用到,你觉得应该要用到了反而可能是你思路出现了问题,业务代码需要引入这个级别的复杂度吗?当然那些经典算法对于构筑程序员的计算机思维还是非常重要的,只不过不用使用 LeetCode 这种方式来学习。实际工作中需要掌握的编码能力根本不是能从 LeetCode 中学到的,关于如何写好代码,可以看看我的一篇blog 控制复杂度的艺术:如何写出好代码 和 piglei 的 入行 14 年,我还是觉得编程很难

沦为筛选工具的 LeetCode

有没有觉得上面的两个缺点似曾相识?是的,这也是应试教育的显著缺点。网上有一个听起来很俏皮的观点:「学数学没啥用,买菜难道还用得上微积分?」,或者「学英语没啥用,买菜难道还用得上英语?」,初高中逻辑思维不严密的时候还觉得挺有道理,实则应试教育关心的不是你学的知识有没有用,规则制定者只是把这些知识当成了筛选工具,谁在特定阶段对特定知识掌握得最好谁就获得了对这个社会最好教育资源的掌控权。LeetCode 现在也基本成为了面试过程中的筛选工具,你 LeetCode 刷了一千题,对你在实际工作中的 CRUD 或者切图有什么用?但是你只要在面试过程中的刷题环节表现好,你就获得了一些工作资源的掌控权。

不能创造价值的行为

「内卷」这个词刚流行的时候,我第一个想到的就是刷题这种行为,内卷「指一类文化模式达到了某种最终的形态以后,既没有办法稳定下来,也没有办法转变为新的形态,而只能不断地在内部变得更加复杂的现象」,根据上面的表述,刷题既对实际工作没有帮助,又只是面试过程中的筛选工具,但很多人却还是在这个过程中耗费大量时间,让面试刷题的达标门槛变得越来越高,大家花了这么多的时间精力,却没有创造任何有用的价值,这值得吗?面试者付出大量时间精力,招聘方招了一群只会刷题的候选人,受益人只有每个月收会员费的 LeetCode。好不容易逃离出应试教育的深坑,如果可以选,还是把自己的时间多花在能创造价值的事情上吧。

后记

文章有感而发是因为最近经常能看到说刷了八百一千题却找不到工作的帖子,我无法想象这些人刷了这么多题要耗费多少时间精力,行业领军的大公司要用这种方式筛选候选人,也说明这行真的是红海了,这些时间精力还不如拿去创造真正有用的价值。AI 浪潮下,LeetCode 就算是作为筛选工具的作用也是开始式微,希望 LeetCode 早日退出历史舞台。