📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Why "Dumb" CS Students Get FAANG Offers

Aman Manazir19:43

Transcription

看,我要告诉你一些可能听起来很疯狂的事情。[音乐] 你计算机科学专业里最聪明的学生,可能不会是最成功的。事实上,他们很有可能 burnout(精疲力尽),过度思考导致瘫痪,或者花太多时间完善他们的个人项目,[音乐] 以至于错过了所有的实习截止日期。与此同时,那些普通的学生,他们只是出现,每周三次刷 leetcode(编程练习平台),并且真正去申请工作,他们才是那些拿到微软、谷歌以及介于两者之间所有初创公司 offer 的人。而且,这才是最疯狂的。斯坦福大学的研究人员研究了学生多年,发现那些学生,不是最优秀的学生,而是那些相信自己可以进步的学生,他们拥有所谓的成长型思维模式。而这些人比那些聪明但认为自己的智力是固定不变的学生表现更好。想想看。那些依靠成为班级里聪明孩子的人,实际上表现比那些仅仅相信自己可以通过努力和付出变得更好的人更差。所以,如果你正坐在那里想着,“我没有足够的聪明来获得这个学位,或者我没通过 APCS(美国大学先修课程计算机科学),或者我在所有这些软件工程面试中都失败了。” 剧透一下,我也没通过 APCS 考试,只得了五分之一的分数。我的第一个大学计算机科学项目得了 C,但即便如此,我在这里。六次实习和多个六位数 offer 之后。这个视频是关于如何通过掌握过程,而不是仅仅依靠智商的遗传彩票,来获得你的软件工程学位并在科技行业找到一份高薪工作的蓝图。[音乐] 让我们来分解一下。现在,这是我们都被告知的根本性谎言。计算机科学的成功需要天生的才能。要么你天生就有编程基因,要么就没有。那个周末就学会 Python 的孩子注定要伟大,而我们其他人注定要在数据结构中挣扎并祈祷我们能通过。但研究实际表明的是:最聪明的孩子不一定是最成功的。为什么?因为他们过度思考一切。芝加哥大学和密歇根州立大学的一项研究,让学生们处于高压情境下,比如在时间限制下做决定,或者在压力环境下解决问题。他们发现的结果令人震惊。那些工作记忆容量更高的学生,也就是那些聪明的孩子,在压力下解决认知挑战性任务时,表现反而更差。为什么?因为他们的大脑会遍历所有可能的解决方案,所有边缘情况,所有优化,然后他们会因为试图选择完美的答案而冻结。这被称为分析瘫痪。这就是为什么你那个能在睡梦中解释递归的才华横溢的同学,在六个月后还没有开始他的副项目。与此同时,[音乐] 普通学生,他们看到两个解决方案,选择一个,然后发布。它完美吗?不。但它完成了。而完成总是胜过完美。约克大学进行了一项关于智力与完美主义之间关系的研究。他们发现,智商得分更高的学生在多个领域表现出明显更强的完美主义倾向,包括学术工作、个人项目,甚至他们的日常活动。研究表明,这些学生在任务上花费的时间呈指数级增长,通常是同龄人的两到三倍,试图达到一个不可能的标准。结果很简单。他们完成的项目更少,经历的 burnout(精疲力尽)更多,而且讽刺的是,最终结果并没有更好。这些学生痴迷于每一行代码,每一个可能的优化,而且他们从未完成。他们还在打磨第 47 行代码,而其他人已经部署到生产环境了。这里还有另一项研究。行为经济学研究人员研究了不同智商水平的投资决策,他们发现了一些反直觉的事情。那些智商更高、能够用多个变量模拟复杂场景的投资者,其表现往往不如那些使用更简单决策框架的普通智力投资者。这些高智商投资者会识别出 15 个不同的风险因素,构建复杂的心理模型,然后什么都不做。他们对所有可能出错的事情都了如指掌,以至于他们陷入瘫痪并错失了机会。以下是如何将此应用于你的职业生涯。最聪明的计算机科学学生会过度思考应该申请哪家公司,应该学习哪种技术栈,哪个实习足够有声望。与此同时,普通学生只是开始申请。他们被拒绝 20 次,从中学习,然后真正获得面试和 offer。认为成功需要拥有非凡智力的根本信念,就是我所说的“申请者谬误”。你认为你需要成为被选中的那一个才能成功,但世界并不选择原始的编程智商。世界选择的是对游戏的掌握。而游戏不是写出最优雅的算法。游戏是你能否达到被动战术面试的最低标准?你能否建立人脉并获得推荐?你能否向招聘人员传达你的价值?以及在困难时你能否保持一致?这就是游戏。而普通人可以赢得这场游戏。这里有一个没有人想听到的真相。如果你只依靠动力和智力,你就会失败。你看,动力是情绪化的。它是短暂的。你看完一个 YouTube 视频后会感到兴奋。到了周二,你没有去刷 leetcode 和申请工作,而是又躺在沙发上刷 TikTok。你需要的不是动力。你需要的**是一个系统**。一个无论你是否想做都能运行的系统。一个在你疲惫、精疲力尽或确信自己不够好时支撑你的系统。让我告诉你为什么系统每次都胜过天赋。研究人员对参加在线课程的大学生进行了一项随机对照试验。他们将学生分成两组。一组独自学习,另一组被分配到三到四人的小型学习小组,他们定期会面。他们发现的是:学习小组中的学生,特别是那些学术准备不足和基础动力较低的学生,他们的学业表现明显优于独自学习的学生。但关键是,这些小组中的学生也报告了更高的归属感,并且更有可能完成课程。为他人出现的责任感,不想让团队失望,这让他们不得不表现得更好。这与智力无关。这与系统有关。这就是我所说的“系统是天才”的意思。让我再给你一些证据。第一个例子是我弟弟 Adel。Adel 非常聪明,我不是说他不够聪明,但他不是那种百年一遇的数学天才。当他开始面试量化职位时,他被彻底击败了,完全谦卑了。但他没有放弃。他建立了一个系统。他 grinded(努力练习)了 60 次面试,被拒绝了 59 次。他之所以被拒绝,不是因为他不行。他被拒绝是因为他还没有掌握游戏。但到了第 60 次面试,他已经掌握了流程、模式、问题、沟通思路的方法。最终,他在 Jump Trading 公司获得了一份价值 60 万美元的 offer。这不是天赋,这是系统。另一个例子是在奥运滑雪板的世界里。《波士顿环球报》研究了奥运选手的日常作息。这些滑雪板选手黎明即起,伸展身体,观看前一天的比赛录像,直到午餐时间都在滑雪场上,然后去上课,进行更多的体能训练,吃晚餐,然后学习一个半小时。他们每天只有大约 1 小时的自由时间。这些人早在参加奥运会之前就成为了冠军。他们之所以成为冠军,是因为他们每天练习并遵循一个可重复的系统。长期的坚持胜过天赋。另一个例子是 Angela Duckworth 关于“毅力”的研究。Angela Duckworth 是宾夕法尼亚大学的一位教授,她花了她的职业生涯研究她称之为“毅力”的东西,即在追求长期目标时结合了激情和毅力。这是她从研究各行各业的顶尖人才中得出的公式:天赋 x 时间 x 努力 = 技能。技能 x 努力 = 成就。注意,努力出现了两次。天赋只出现一次。你可以天赋平平,但如果你付出两倍的努力,你将超越那些得过且过的天才。斯蒂芬·金,有史以来最成功的作家之一,他说得很完美。天赋比食盐便宜。区分有天赋的人和成功的人的是大量的努力。那么,你的系统是什么?这是我在大学时期的系统。也是我推荐的。相信我,我绝不是我班上最聪明的人。事实上,我是比较笨的那几个之一。但通过这样的系统,我能够获得六次软件工程师实习机会,并在 Shopify、亚马逊和 HP 等公司获得多个六位数 offer。我的第一个原则是,我组建了一个 leetcode 俱乐部。你可以这样做:找到三到六个和你一样认真的人。你们想每周在校园里见面两次,分享你们解决了什么问题,进行一点竞争,并互相监督。哈佛大学学术资源中心称之为“身体倍增效应”。当你身边的人专注于他们的目标时,这会让你更专注于你的目标。关于 leetcode 的另一个建议是,你想固定你的练习日期。如果你开始像对待健身房一样对待 leetcode,你会意识到你一个月去一次健身房是不会练出好身材的。你至少要每周去三到四次。leetcode 也一样。你想选择你的日期,固定下来,并建立一个系统。最后,你想直观地跟踪你的进度。所以使用 GitHub 贡献图、Notion 追踪器、带有 X 的日历, whatever works(任何有效的方法)。那些绿色的方块会让你上瘾,你不会想打破连胜纪录。当动力消退时,系统会支撑你。你不是天才,系统才是。好了,我们来谈谈你如何真正学习,因为考前临时抱佛脚并祈祷不是一个系统。那只是在赌博。这是你需要理解的范式转变。先练习,后学习。大多数普通学生会阅读课本,观看讲座,然后尝试做题。这完全是颠倒的,而且不是你的大脑真正运作的方式。你的大脑学习新内容的方式是这样的:你想先解决问题,挣扎一下,卡住,然后查找理论或解决方案。为什么?因为你的大脑在被挣扎所激发时学习得更好。你不是被动地吸收信息。你是在主动地寻找它,因为你需要它。你可以将此应用于 leetcode 的一个简单方法是,如果你正在学习一种新的数据结构,例如在学习二叉树之前,我会去尝试解决两到三个简单的二叉树 leetcode 问题。看看我是否能解决这个问题。也许不能。但如果我在查找算法和观看相关视频之前这样做,我的大脑就会学会编码这些信息,因为它确实有用。如果你在没有需求的情况下消费知识,你就不会记住它。所以,在学习材料之前,总是先从问题开始。这是一个关于“费曼技巧”的绝佳例子。理查德·费曼是一位诺贝尔奖得主物理学家。但让他与众不同的是:他不是一个死记硬背公式并在考试中复述的人。他是一个能够向街上的普通人解释量子力学,让他们真正理解的人。他的哲学很简单。如果你不能用简单的术语解释某件事,你就没有真正理解它。他围绕这个想法建立了一整套学习方法。这被称为费曼技巧,研究人员实际上测试了它是否有效。菲律宾的一项研究在小学、初中和高中(四年级、七年级和十一年级)的学生中测试了这种方法。他们随机将学生分配到两个学习小组。一个小组使用传统的学习方法,如阅读、高亮、做笔记,而另一个小组使用费曼技巧。使用费曼技巧的学生在后测中得分明显更高,并且学习收益比对照组大得多。而且它在所有年龄组和所有学科中都有效。这就是它有效的原因。教学迫使你识别你知识中的差距。当你试图大声解释某件事时,你不理解的部分会立即显现出来。你会磕磕绊绊。你会使用行话,因为你不知道如何简单地解释它。那就是你的信号。那就是你需要填补的差距。所以,这是你的做法。第一步是选择一个你正在学习的概念。比如我之前提到的二叉搜索树或二叉树。第二步是打开一个空白文档或拿一张纸。现在,想象你在教一个 10 岁的孩子,然后解释它。不要使用行话和技术术语,除非你能用简单的语言定义它们。第三步,当你卡住时,当你意识到你正在使用一个你无法真正解释的词,或者你不确定某件事为什么有效时,那就是你的差距。圈出并高亮它。第四步是回到你的课本、笔记或谷歌或 ChatGPT,你想学习那个特定的部分,而不是整个章节,只是你缺失的那一部分。然后第五步是用新的理解重写你的解释。第六步是重复,直到你能用简单的术语流畅地解释整个概念而不会卡住。我用这个技巧学习了所有东西,数据结构、系统设计,甚至是我学习如何创业时的商业概念。每一次,它都暴露了我以为我理解但实际上没有的东西。费曼技巧不仅仅是一个学习技巧。它是一个思考工具。如果你掌握了它,你的学习速度将超过 90% 的同学。另一个令人难以置信的原则,它极大地缩短了我的进步过程,并让我能够超越比我聪明得多的学生,就是所谓的 80/20 原则或帕累托原则。你看,并非所有主题都生而平等。在计算机科学和软件工程面试中,80% 到 90% 的问题来自一小部分主题。数组、哈希、树、图和基本的动态规划。你不需要掌握课本中每一个晦涩的算法。你需要精通基础知识。所以,这是你的策略。确定你的课程或面试准备中那些投资回报率高的话题。反复练习它们,直到它们成为你的第二天性。那个能解决 200 个 leetcode 中等难度问题的普通学生,将胜过那个卡在理解只出现在不到 1% 面试中的高级图论问题的天才。你想专注于掌握基础知识。通过这样做,你将赢得这场比赛。我们来谈谈计算机科学课程。说实话,有些 CS 课程的设计就是为了摧毁你。操作系统、算法、编译器,这些课程之所以有这样的声誉是有原因的。以下是如何不仅在这些课程中生存下来,而且征服它们。我在课程中经常使用的一个原则叫做“120% 原则”。这并不是要比别人更聪明。这是关于付出更多的努力,并争取远高于最低水平的表现。如果作业周五到期,你想在周三完成。如果需要 70% 的及格率,那就争取 90%。为什么?因为生活总会发生意外。bug 会出现。你会生病。你的笔记本电脑会坏掉。当这些发生时,缓冲就会救你。但更重要的是,追求更高的目标会迫使你更深入地理解材料。你不仅仅是达到标准,你是在精通它。这引出了我称之为“战略性办公时间”的东西,这是我用来掌握我的计算机科学课程的另一个原则,即使我不是班上最聪明的学生。你看,办公时间是一个了不起的资源,因为你可以一对一地接触到深刻理解主题并能清晰地向你解释的教授或研究生。但关键是,你不想带着你可以谷歌或 ChatGPT 就能找到答案的问题去参加办公时间。例如,“如何在 C 语言中声明一个变量?”不是一个战略性问题。你想做你的功课。使用人工智能和课本来达到 95% 的理解。然后带入那 5% 的差距问题,那些微妙的边缘情况问题,这表明你具有智力上的好奇心或参与度。为什么这很重要?因为教授会记住那些准备充分的学生。那些学生会获得强有力的推荐信、研究机会和关于实习的内部建议。我大学里的一位教授,因为我一直去他的办公时间并问好问题,他直接告诉我一家正在寻找实习生的初创公司。这就是游戏的玩法。现在,这很简单。你可以拥有世界上所有的知识。你可以理解每一个算法、数据结构、每一个设计模式。但如果你不执行,不应用,不发布,不坚持到底,这一切都没有意义。让我为你描绘两种学生。学生 A 非常聪明,真的非常聪明。他能写出比大多数同学都好的代码,但他从不完成他的副项目。他开始做五件事,放弃了四件。他谈论申请实习,但从不真正提交申请,因为他在等待他的简历变得完美。他因为害怕面试而回避招聘人员。毕业时,他有很高的 GPA,但除此之外没有太多东西。学生 B 很普通,扎实,但不突出。但他会完成他开始的一切。他申请了 50 个实习,被拒绝了 45 个,但获得了五个面试机会,并把其中一个转化成了 offer。他建立了一个已完成项目的作品集。也许它们不是开创性的,但它们有效并且已经部署。他会去参加社交活动,即使他感到尴尬。他会练习模拟面试,直到他能流畅地解释他的思路。你认为谁能找到工作?学生 B 每次都能找到。因为事情是这样的,招聘游戏假设你是有能力的。一旦你达到了“你能写代码”的门槛,区分因素就是其他一切。你能否在面试中解释你的思路?你能否在团队中工作?你能否接受反馈而不产生防御心理?你能否与非技术利益相关者沟通?你能否真正地发布代码?这才是区分平庸的 CS 专业学生和 CS Gigachad(技术大神)的地方。你看,平庸的 CS 专业学生抱怨 leetcode 不公平,系统被操纵,面试不测试真正的技能。你知道吗?也许他们是对的,但他们也失业了。CS Gigachad 接受游戏的规则,努力提升技术技能,并掌握人脉。他们不抱怨系统,他们在系统内获胜。这里有一个应该让你警醒的统计数据。50% 的入门级软件工程师职位是通过实习填补的。一半。这意味着你的实习表现比你的 GPA 重要 10 倍。所以,把你的实习当作一次延长的面试。努力工作,交付高质量的工作,建立关系,并寻求反馈。因为即使他们不给你 offer,你的经理也会为你写一封很棒的推荐信,这将为你打开所有其他机会的大门。还有另一个统计数据。3.0 的 GPA 对大多数公司来说已经足够了。说真的,一旦你达到了这个门槛,公司就更关心你的项目、你的经验和你的沟通技巧,而不是你是否在操作系统课程中得了 A 或 B。所以,别再为达到 4.0 而烦恼了。拿到 3 到 3.5 的 GPA,然后把所有精力都投入到构建东西、建立人脉和面试上。现在,如果你想获得来自 Fangle(Facebook, Apple, Netflix, Google, Amazon)级别招聘人员的软件工程实习帮助,我指的是来自亚马逊、彭博社的招聘人员,以及来自亚马逊、Meta、微软和谷歌等公司的软件工程师,请查看软件工程加速器。这是一个我专门为像你一样的学生设计的项目,他们不一定是世界上最好或最聪明的人,但他们想遵循一个经过验证的系统来缩短过程,并在科技行业获得令人难以置信的实习和工作。即使你没有 4.0 的 GPA,或者简历上没有成百上千的项目。你可以花几年时间自己摸索,或者在短短几个月内,与专家合作,缩短过程,并保证获得一份令人难以置信的实习或工作。所以,如果你有兴趣了解我们如何帮助了数百名计算机科学学生和毕业生在软件工程领域获得令人难以置信的工作,请查看描述中的顶部链接。现在,这里有一件事没人告诉你。即使是天才孩子也会感到自己是骗子。这是一项对所有经验水平的软件工程师进行的调查。初级、中级、高级,甚至谷歌和 Meta 的资深工程师。想知道有多少比例的人会受到冒充者综合症的困扰吗?96%。96% 的工程师至少每月一次感到自己是冒充者。86% 的人经常感到。所以,如果你正坐在那里想着,“其他人知道他们在做什么,而我只是在假装。”你并不特殊。你很正常。Stack Overflow 对冒充者综合症在软件工程中如此普遍的原因进行了研究。他们发现的是:技术发展如此之快,总有你不了解的东西。每次你学会一个新框架,就会出现三个新的。每次你掌握一门语言,有人就会告诉你它已经过时了,你应该学习其他东西,比如 Rust。这是一个跑步机,而且它从不停歇。这是关于聪明的阴暗面。你学得越多,你就越意识到自己不知道的东西有多少。这被称为邓宁-克鲁格效应。但关键是:成功的人不是那些什么都知道的人。他们是那些在感觉自己不知道的情况下仍然坚持下去的人。托马斯·爱迪生在发明灯泡的过程中失败了数千次。J.K. 罗琳在《哈利·波特》被出版前被 12 家出版社拒绝。迈克尔·乔丹被高中篮球队淘汰了。这些人中没有一个人像我们浪漫化天才那样天生就具备天赋。他们是坚持不懈的。这就是你需要做出的转变。停止问,“我够聪明吗?”开始问,“我够坚持吗?”因为我向你保证,每天写代码 30 分钟的人,将胜过那些一个月写代码 4 小时的人。坚持会复利,而天赋不会。现在,如果你想要我掌握 leetcode 的终极指南,请点击这个视频。如果你需要我在人脉方面帮助你,请点击这个视频。感谢大家的观看,我们下期视频再见。