Transcription
好的,今天我将与罗伯特·马丁(Robert Martin)进行对话,他无需介绍。那么,让我们开始谈论编程的未来。GPT-25 是否能够自动化编程?25 年后我是否会失业?什么是 GPT 25?那是什么?GPT3 是 OpenAI 刚刚发布的程序,它似乎能够做一些基本的,编写一些基本的方法,比如制作回文,因为它们刚刚对大量的 GitHub 存储库进行了深度学习。所以,人工智能的未来基本上将能够自动化编程。答案非常直接。这背后有一个根本原因。为了最终复制编程,如果你想要一台能够像人类一样编程的机器,那台机器必须拥有人类的意识。而我们离那种机器还非常非常非常遥远。为什么我们需要人类意识?因为必须有人来指定程序将如何工作,而那个规范实际上就是程序。没有其他规范可以替代。所以,一个业务用户来了,他创建了一个粗略的规范,但依赖于程序员的人类直觉和人类智能来填补业务人员遗漏的所有那些可怕的小空白。我们程序员是细节的管理者,我们处理所有的混乱。我们是处理文本文件有时以反斜杠 n 结束行,但有时以反斜杠 n 和反斜杠 r 结束行的人,原因可以追溯到 50 年前,因为电传打字机和 Unix 和 DOS 以及所有这些乱七八糟的东西。我们是编写那些愚蠢的小 if 语句来处理那些业务人员甚至不想考虑的奇怪小例外情况的人。如果我们试图制造一台能够处理所有这些东西的深度学习机器,我们最终会得到一个 HAL 9000,一个拥有人类智能的东西。而我们离那还太远了,以至于我一点也不担心某些深度学习机器最终会取代所有程序员的工作。我很高兴听到这个,但是关于这个潜在的可能性呢?就是说,程序员使用的开发环境和工具将变得如此先进,以至于它们几乎就像一种共生式的结对编程任务,在那里,你知道,你正在与机器一起编写代码,而不是仅仅在机器上编写。当然,我的意思是,我们已经有了这个,在我们编程的整个过程中,我们一直在这样做。最初的程序是用二进制编写的,对吧?所以艾伦·图灵在自动计算引擎上工作时,他实际上是用二进制编写东西的,因为当时没有语言。然后,我们最终制造了一个汇编器。你能想象汇编器比二进制的优势吗?所有那些你不得不做的可怕的二进制数学,你现在不必做了,你可以用符号形式编写你的代码,这已经是一个巨大的优势了。然后,约翰·鲍克斯在 1953 年带来了 Fortran 规范,这比汇编语言是一个巨大的优势。Algol 很快就出现了,到 1966 年,你有了 Oleo Handle 和 Christian Nygard 发明了对象。这比艾伦·图灵进行二进制编程晚了 20 年,你有了第一个面向对象的语言。C 语言在 68 年出现了,两年后 C++ 出现了,12 年后,我们有了这个巨大的进步,为程序员提供了巨大的帮助。然后在 90 年代末,我们的工具开始出现一些疯狂的东西:智能感知、重构工具、检查器和重复查找器。所以,现代 IDE 是一个工具宝库,允许程序员做比我们过去能够做的更复杂的事情。所以,是的,我希望机器学习能够继续使我们的工具更强大,但这永远不会消除程序员在那里监督这些工具的必要性。我是一名飞行员,我驾驶飞机。飞机有一个漂亮的自动驾驶仪。我可以打开它,飞机就会自己飞到我的目的地。我像鹰一样盯着它,因为它是一台机器,它会在最错误的时间做最错误的事情。所以我坐在那里,盯着那个自动驾驶仪,每次它应该做某事时,我都会确保它做了那件事。我仍然在掌控之中,它不是(笑声)。但是一旦你有了这些先进的工具,那么编程的未来看起来就会与现在编程机器的样子截然不同。你写过关于图灵编写第一个程序的方式与我们现在编写程序的方式并没有太大区别。这种连续性是我们应该在未来期望的吗?还是界面将完全被修改?嗯,我的意思是,自从你提到以来,界面已经被完全修改了。但是,是的,编程仍然是序列、选择和迭代。程序员仍然将程序组织成序列、选择和迭代的小单元。我们会继续这样做吗?嗯,我认为这是一个非常有趣的问题,我们已经得到了一些关于其他可能性的提示。例如,如果你曾经用 Prolog 编程过,你会发现序列、选择和迭代被转化为其他同样详细的东西,但它不再是序列、选择和迭代了。它是声明性的真理。我不会深入研究 Prolog,但如果你想让你不熟悉的概念绕过你的大脑,就研究几天 Prolog。但最终,我们会达到一个类似于我的自动驾驶仪的情况吗?我可以设置一些参数,然后看着工具开始开发程序,然后我作为程序员,看着它在做什么,开始调整外部的参数,说不,不,不是那个,不是那个,这个,这个,朝这个方向走。我能做到吗?是的,我可以说,在未来几十年里,我们编程计算机的方式可能会更像训练狗,在适当的情况下奖励它,在不适当的情况下惩罚它。我们会看看情况如何。我们会看看情况如何。但无论如何,都不会没有程序员参与。一个拥有今天你我所拥有的技能的人,一个深刻的分析者和细节管理者,并且警惕着机器完全不知道也没有解决策略的所有那些愚蠢的小陷阱。我很高兴听到这个,我们的团队和程序员比单独编程的个人更具创造性。程序员团队比单独编程的程序员更具创造性。但他们也同时朝着许多不同的方向前进。所以他们需要,需要一个领导者。一个团队必须有一个领导者。我们过去在敏捷社区遇到过的一个问题是,有一部分敏捷主义者认为不应该有领导者,整个团队是同质的、平等的,在一个大众平等的社会里,每个人都一样。我的经验是,那根本行不通。一个团队需要一个领导者,然后团队就像疯了一样产生想法。团队产生想法,而领导者就是那个像让·卢克·皮卡德一样的人,不是那个。有趣。现在,让我们谈谈教育未来的程序员。我看了林纳斯·托瓦兹的一次采访,他担心生态系统的复杂性已经增长得如此之大,以至于他不确定像他这样的人是否还能做出如此宏大的创新。他们只是没有一个可以依靠的基石,在这么早的年龄就达到那个专业水平。你是否担心生态系统已经发展得如此之大,以至于年轻人更难进入前沿领域?现在需要更长的时间,因为你必须克服更多的杂乱。当我还是个年轻程序员的时候,我当时工作的机器最初是一台 PDP-8。我旁边有一个 PDP-8 的模型。它一定经历了断电,因为它没有像我通常那样工作。但那是一台非常简单的机器,它是一台 4k 机器,12 位字,半兆赫时钟速率,而且没有库,没有框架,什么都没有。如果它在机器上执行了什么,那是因为你写的。那个时代的程序员可以了解计算机的一切,而且不会花很长时间,只需要几个月就能了解一切。那些日子早已一去不复返了。现在不可能指着一台计算机系统说,好吧,我了解我的 MacBook Pro 的一切。不,你不知道,里面太多的杂乱了。所以,要成为像我们 50 年前开始的那些人一样熟练的程序员,需要更长的学习曲线,而我们当时还在努力工作。另一方面,这不像当医生。如果你想成为一名医生,你必须专业化。在医学领域没有专业化就无法前进。即使是全科医生现在也是专家,因为他们必须排除所有其他他们无法做的事情。而我们还没有到那一步。一个程序员,比如说在五年内,可以熟练掌握 GUI 编程、中间件编程、数据库编程、电信编程、线程等等。这些都可以在一个有五年经验的程序员身上得到很好的掌握。十年更好,对吧?所以,这不像当医生或律师那样,你绝对必须专业化并缩小你的焦点。程序员仍然可以是真正的全科医生。明白了。让我们谈谈制造程序员的工厂,也就是大学。如果你必须改变大学教授计算机科学的一件事,那会是什么?你会怎么改变?我不会在大学里教。真的。我不认为这是大学该做的事情。再说一遍,这是一个只有 70 年历史的学科。里面没有那么多东西。里面有太多的杂乱,而不是实际的知识。实际的,你知道的,扎实的,你知道的,可教授的知识。而程序员所需的绝大多数技能是贸易技能,而不是教育技能。或者不是大学技能。如果你想成为一名电气工程师,你必须去大学,你必须学习很多东西。如果你想成为一名医生,你必须去大学之外的很多地方。但是要成为一名程序员,一名优秀的程序员,这是一项你可以在社区大学或职业学校学习一两年就能掌握的技能。找一份好工作,有导师指导,然后学习。这条路,就这样学。我认为这是年轻程序员成为程序员的更好方式,而不是去大学。不值得四年教育。你在四年教育上花费的钱不会值得你获得的编程知识。它可能值得很多其他知识,但不值得你获得的编程知识。如果你想成为一名计算机程序员,并且你刚刚高中毕业,我一直在看一些职业学校或训练营之类的职业项目。其中一些训练营不是很好,所以我对此非常谨慎。但是像这样的某种项目,你可以花几个月学习一门语言,比如 Java 或 C#,然后进入一个有导师或学徒计划的工作。我的意思是,大学现在正在学习计算机科学。我希望我两年前听到这个消息,但无论如何,你能向我解释一下,为什么我们有一个行业,进入这个行业并不难,就教育而言,至少可能有一些稀有的特质,但进入并不难,需求却在快速增长?为什么人们还在成为公司律师,而有一份薪水很高、不需要太多教育就能进入的工作,而且可以很快进入?你如何解释这种不平衡?我将尝试仔细解释这个问题。当我还是个年轻程序员的时候,我认为任何人都可以做到。这是我的基本假设。任何人都可以学会。这只是一和零。我的意思是,一和零有多难?我花了很长时间,并且犯了很多昂贵的错误来雇佣人,才意识到不是每个人都能做到。事实上,能够做到这一点的人比我最初想的要少得多。这不是一种稀有的才能,但也不是一种非常普遍的才能。而且这种才能需要很多东西,对吧?需要深刻的分析能力,并且需要能够长时间地专注于非常狭窄的事情。有些人就是做不到。这只是他们的思维方式,他们做不到。但是有些程序员可以,有些人可以,他们可以成为程序员。所以你问,为什么我们要培养公司律师?他们有非常不同的兴趣和思维方式。虽然他们很分析,而且他们可以专注于,但他们专注于不同类型的事情。我们程序员专注于布尔决策,一和零,黑白。律师你知道,他们关注的是人。人比计算机复杂得多。这是一种非常不同的思维方式。如果你必须估计,你认为人口中有多少比例的人拥有成为程序员所需的技能?这是一个很难回答的问题。你认为有多少比例的人有编程天赋?我认为现在世界上有 1 亿程序员。这只是一个猜测,但我认为差不多是这样。这将是人口的八十分之一。所以我们已经证明,至少有百分之一的人拥有这项技能。接近百分之一。可能高达百分之五到百分之十。可能那么高。我知道我有很多教人编程的经历,但十分钟后就无法继续了。你知道,他们的大脑就飘走了,他们做不到。而且,这似乎比另一种天赋更普遍,那就是你试图教的那个人变得兴奋,并与你一起专注于。这要稀少得多。所以,如果去大学不是想成为程序员的人的最佳选择,如果想解决高度技术性问题的人认为,嗯,似乎我需要良好的教育才能做到这一点,也许我需要了解很多数学。你会建议他们去大学获得数学学位,以便他们拥有技术背景吗?我曾经认为这是真的,我实际上雇佣了一个人,因为他获得了数学硕士学位,我想,好吧,你知道,数学硕士学位,你将能够这样思考,你将能够专注于,你将能够做到这一点。我发现自己对这个人成为程序员的方式非常失望。现在,他最终成功了,但那不是我期望的快速成功。他花了很多努力和很多失败才让这个人的思维方式变成了编程思维方式,而不是数学思维方式。所以那里有一个区别。现在,作为程序员,了解数学是否值得?是的,在某些领域当然值得。我的意思是,如果你要做任何类型的物理工作,你知道,你将为粒子加速器编写代码,可能需要一点数学。如果你要做非常深入有趣的金融方面的事情,将成为一家股票交易所的量化人员或类似的人,可能需要了解一点数学。另一方面,如果你是一个普通的程序员,为,哦,我不知道,也许,是的,Siri 刚刚因为我说“普通的”而对我大喊大叫。如果你要编写运行在我冰箱里的代码,例如,我冰箱里的机器控制软件,你可能不需要大量的数学。良好的高中代数可能就足够了。也许一点点预科课程就足够了。我不认为你需要深奥的数学理论来做这类事情。即使是那些做游戏工作的人,虽然那是非常重的物理学,但所有那些物理学都已经在物理引擎中了。所以大多数时候,我认为你不需要那么多数学。程序员了解他们所从事的业务是否重要?答案是肯定的。如果你进入保险业,你最好了解保险业。如果你要在电话公司当程序员,你最好了解电话公司。而程序员在一家公司的早期教育,在导师计划中,很多时候实际上是关于公司,而不是关于编程。这就是我们,这是我们的专业领域,我们就是这样做的,什么是保险索赔,什么是所有这些其他东西,我们是如何思考的。这样你就可以有效地将业务知识应用于编写代码的问题。这就把我们带回了原点,因为你最初问我,你说,嗯,我们最终不会有那些能够编写代码的机器学习吗?答案可能是不会,因为正是对你所处的业务的直观了解,才让你能够做出那些业务人员不想做出的低级决策。由此是否可以得出结论,如果你想成为一名非常称职的程序员,你应该尝试专门从事一个特定的行业,或者应用程序编程在那里得到最好的锻炼,还是你应该先发展广泛的经验和专业知识?实际上两者都有。所以,当你承担一份工作时,你希望在你所在的业务中专业化一段时间,比如 N 年,无论 N 是多少,可能是两年,可能是三年,但可能很短。然后了解那个业务,然后看看你是否可以转移到另一个业务领域,在那里花费两三年,然后尝试另一个业务领域,在那里花费两三年。到那时,你就会拥有一个不错的广泛业务领域,这将使你能够推断出其他业务领域,因为你知道业务领域有相似之处和不同之处。但是一旦你脑子里有了三个或四个,你就可以开始进行三角测量了。现在,当你考虑雇佣某人作为程序员,而他们没有太多经验时,所以你不能仅仅,你不能仅仅找人来担保他们。他们能做什么来向你表明他们会成为称职的程序员?这是一个非常有趣的问题,我为此苦苦思索了很长时间,几十年来。我没有找到可靠的测试。我过去会让人,所以,当我曾经认为那是数学的时候,我过去会让人解决牛顿方法来计算平方根。我会在黑板上画一个抛物线,说,好吧,这是斜率,你知道,它是函数的导数。现在想出一个算法,我让他们用任何他们想要的语言,我,你知道,我认为那是一个很好的方法。然后,然后我发现有些人非常擅长那个,但不能做其他事情。然后我想,好吧,我将用简单的术语描述埃拉托色尼筛法这个寻找素数的优美算法,让他们写一些伪代码,向我展示他们实际上可以构建一个双重嵌套循环。那也不可靠,尽管它更好,但它不可靠。所以,我现在得出的结论是,没有简单的测试。你需要做的是花相当长的时间与某人相处,并观察他们在一段时间内的学习效果如何,以及他们如何应用这些学习效果,他们如何专注于,他们如何分析性地处理问题。而这段时间可能是几周。所以,我更喜欢现在进行的面试类型,顺便说一句,我不再雇佣人了,我现在只是我一个人。但我认识一些雇佣人的人,他们的一种方式是让他们加入学徒计划。在这个学徒计划中,他们将面临一系列越来越大的挑战,其中并非所有挑战都是编程挑战。其中一些是写作挑战,一些是演讲挑战,一些是演示挑战,但一系列不断增加的挑战。然后,在最后,由所有与他们交谈过的人进行评估,然后他们就会得到一份工作,或者不得到。在某些情况下,学徒计划有津贴工资,在其他情况下则没有。有趣。你是否怀疑成为程序员所需的特质是在童年时期通过早期经历或初高中时期培养的,还是有些人天生就具备某种程度的特质?很难说。我认为有一点是天生的神经线路,你知道,某种性格缺陷导致你成为程序员,而并非所有人都有。然而,我见过一些人,他们根本不感兴趣,在人生的不同阶段获得了兴趣和才能。例如,我的儿子,他现在是一名程序员,而且非常成功,他在早期小学时根本不感兴趣。我感兴趣的时候是 12 岁,对吧?所以我想,哦,好吧,每个人在 12 岁都会感兴趣。现在我的儿子直到离家,成为或接近离家,高中晚期,大学早期,才表现出任何兴趣,并带着这种兴趣和技能回来。我的女儿,刚刚满 30 岁,突然非常感兴趣,并且正在获得大量的技能。所以我见过这种情况在不同阶段发生。开关打开了,突然他们有了所有他们需要的动力、专注的精力以及分析能力。所以,我不知道。你知道,这对我来说是一个深刻的谜团。尽早学习这些材料并掌握这些技能是否有什么好处,还是晚点学习会获得更成熟的视角?如果你 20 年前问我这个问题,我会说,显然教小孩有好处。我的意思是,如果你能让小孩沉浸在计算机中,显然他们会成为更好的程序员。而我现在不那么确定了。所以,反例是大量的编程玩具,它们跨越了很长的时间。所以现在你有像乐高积木和或者 Mindstorm 以及其他许多工具,它们试图鼓励年轻人成为程序员,你知道,12、13、14 岁的孩子。早期,我们发明了能够帮助年轻人成为程序员的语言,例如 Logo 语言,它就是关于在地上驾驶一个小的机械乌龟,让它抬起笔,在纸上画画。孩子们,你知道,他们会给它发出命令:前进 10,右转 90 度,前进 10,在纸上画正方形和圆圈。我们通过所有这些,通过所有这段时间试图制造吸引孩子的工具,发现它并没有产生深远的影响。有很多孩子会坐着玩一会儿乌龟,然后失去兴趣,再也不会发展出更重要的技能,比如将东西放入变量和调用函数。那些东西就消失了,没有发生。我们现在也看到了乐高 Mindstorms 的情况。有一些孩子抓住了它,你可以看出他们想成为程序员,但问题是,他们难道不会自己抓住它吗?他们需要这个工具吗?这些教育道具真的能激励更多人成为程序员吗?还是它们只是帮助那些本来就会成为程序员的人?我不知道答案。我对此持怀疑态度。有趣。所以,你对强制性的初高中编程课不看好?我认为每个人都应该有一个,每个人都应该获得经验。我看到,可能,你知道,一个四到六周的时间,每个人都应该做一点,你知道,基本的编程或 Ruby 编程,或者其他什么。我得小心点,因为把人们变成 Ruby,然后你知道,它是一门非常复杂的语言,当你深入研究它的时候。但是,你知道,也许一点点编码,一点脚本,一点什么,这样你基本上就知道它是关于什么的了。但除此之外,我认为没有必要进行一年的课程。我认为那是不必要的。我认为那些感兴趣的人会自己去做。对,对。让我问你关于程序员随着时间发展起来的风格感。这与所谓的难以捉摸的作家风格有关吗?作家随着时间发展出散文和风格感。这种感觉与编程中培养的感觉有关吗?迈克尔·费瑟斯(Michael Feathers)在 20 年前创造了一个术语,他称之为“设计感”。他威胁要写一本关于这个的书,已经 20 年了,我还没看到他写出来。但基本思想是,是的,程序员随着时间的推移会产生一种感觉,即一段代码或一个系统的设计或一个系统的架构感觉是对的。这是一种难以捉摸的感觉。这是对美的判断。你知道,就像哦,一个美丽的东西。而且“美丽”这个词应该在这里使用,因为有美丽的设计,有美丽的架构,有美丽的功能,这些都可以被描述为美丽,并且只有那些有经验的人才能理解和欣赏,他们可以看着说,我的天哪,这太美了。我昨天在 Netflix 上看了一个节目,叫做《女王的棋局》,是一个新的节目,是关于一个年轻女孩成为国际象棋大师的。其中有人问她,你为什么对国际象棋这么感兴趣?她靠在后面说,它很美,或者它可以很美。我认为同样的事情也适用于软件。克里斯托弗·希钦斯(Christopher Hitchens)以其出色的写作而闻名,他曾怀疑写作感是通过一种关于节奏和散文的音乐智力来调节的。你认为音乐智力会影响你出色或优美地编码的能力吗?是的,而且这已经为人所知一段时间了。程序员和音乐家之间有非常强的相关性。学习音乐或演奏乐器或发展音乐感的人经常成为程序员。为什么会这样,我不知道。可能是节奏感,音乐的数学布局,谁知道呢?如果你看一首音乐作品,如果你看乐谱,它就是一个程序。它有 if 语句,有 while 循环,有序列,它有所有东西。所以也许是这样的。我不知道,但肯定有关联。有趣。那么,让我们谈谈你关于我们需要在软件工程中设立一个机构来决定谁拥有成为程序员和保持程序员的道德和技术能力的想法。我不知道你是否改变了看法,或者我,我将让你详细说明你的意思。但是,一个关心这个问题的人可能会说,这正是其他行业发生的事情,职业执照阻止人们进入行业,从而人为地减少了劳动力池,有利于已经在这个行业里的人。而且,随着对审查制度和取消文化的呼声越来越高,我们还可以预期这个机构本身可能会成为一种清除挑战正统观念的人的工具。你如何回应这些挑战?问题在于,编程已经成为我们社会存在的一个完全必要的工作职能。人类社会不再没有程序员就无法存在,而且这种依赖性正在呈指数级增长。所以,你知道,你环顾四周,你会看到几十个运行着代码的电子设备,它们让生活变得可行。而我们过去依赖的所有没有运行代码的东西,现在都有代码在运行了。所以你的微波炉、你的冰箱、你的汽车、电话、电视都有代码在运行。我们的社会没有程序员就无法存在了。而且,没有对程序员行为的约束,没有标准,没有纪律。所以这是一个不稳定的局面,不能这样下去。我们如何解决这个问题?我们需要类似于美国医学会的东西吗?美国医学会为医生提供执照。或者我们需要别的东西吗?我们需要一个行业协会结构吗?也许是一整套组织,它们根据不同的标准和道德规范来许可自己的程序员,然后让市场来决定。那些家伙做得比那些家伙好。我想我们会雇佣他们。我不知道结果会怎样。我担心它会在我们开发出解决方案之前就被政府强加给我们。我希望我们能在政府插手并彻底搞砸之前开发出解决方案。已经有一些公司开始这样做了。所以,你看看外面,特别是软件咨询公司,有一些软件咨询公司基于一套原则、道德和纪律来建立自己,并以此进行宣传。我认为会越来越多。所以,这大概是我认为行业将走向的方向,至少我希望它能这样发展,我希望我们能在政府插手并彻底搞砸之前做到这一点。我也希望如此。我想问你,为什么在所有行业中,科技似乎如此政治化?也就是说,特定的公司似乎有明确的政治倾向,而在许多其他工作领域似乎并非如此。你是否知道这是为什么?嗯,不是,也不是。我想,这是一个深刻的谜团。如果我们这样来做,如果我们从地理上看政治偏见,在美国确实存在明显的政治偏见。你有两个海岸,它们倾向于自由派,每个海岸的蓝色州。城市倾向于更自由,农村地区倾向于更保守。中西部倾向于更保守。如果你去堪萨斯城的一家公司,你会发现一家有 100 名程序员的公司,他们很可能是保守派。这只是地理偏见。软件中还有什么会驱使人们走向某个政治方向吗?也许很容易成为程序员。我们之前也谈过,对吧?你真的不需要去大学,你真的不需要获得完整的教育。你可以成为一名程序员,而不需要太多经验。而且,由于我们的行业不断发明新的方案,所以有很多人可以很早就进入这些方案。例如,HTML,你知道,20 年前就发明了 HTML,然后一大群高中生突然在 HTML 方面变得非常出色。当然,他们去工作了,没有太多大学培训,没有太多任何东西。所以很容易,很容易接受。这导致了一件好事,那就是很多边缘化的人,来自边缘化社区的人,很容易进入,他们获得了经验,他们发展了技能。这也很棒。然后我认为,这是我的猜测,我认为他们利用了这项技能和这项技术,这给了他们一个声音,而这个声音以一种有时非常不利的方式被运用。现在,我不想诽谤每个边缘化社区,但我注意到有些社区突然发出了非常响亮的声音,在很多情况下,他们最终推动了取消文化。你知道,从我,你知道,我中年,我现在不是中年了,我已经老了,从我老保守派白人的偏见来看,这就是我看到的样子。有趣。让我问你关于配额的问题。我认为你在你的博客上提出了一个很好的论点,说明为什么配额不一定能帮助你试图帮助的群体。你提出的论点,我将让你解释一下,是否适用于其他地方,比如大学?我认为是的,我认为总是如此。我的意思是,配额背后的想法总是出于好意。有一个边缘化群体,他们没有得到应有的服务。我们需要放宽这个边缘化群体的准入门槛,以便更多的人能够加入。出于好意,每个人都想要最好的。但最终结果是什么?最终结果是降低了标准。标准必须降低,这会损害整个行业,而且让边缘化的人在低标准下进入,对他们没有帮助,但却期望在退出时达到高标准。因为那时你会看到这种失败。我们在大学里看到了,在就业中也看到了。那就是辍学率或失败率更高。这没有帮助。我曾经和一个非常有成就的女人坐在一起,我们在一个会议上,我正在做主题演讲,她也在做主题演讲,我们正在谈论这个问题。她看着我说,我希望他们不是因为我是女人才让我做这个主题演讲。你知道,我能感觉到那种焦虑,她做主题演讲的能力被贬低了,因为她被邀请只是因为她是女人。所以她的恐惧是,她被一个配额系统贬低了,她甚至不知道是否存在。我认为总的来说,处理这类问题的唯一方法就是完全基于功绩。如果你想成为一名程序员,我们就会,你知道,我很乐意雇佣任何人。我不在乎你的政治偏见、性偏见、种族、种族状况。我不在乎那些东西,只要你能写代码,我就乐意和你一起工作。我不想突然或者我不想为某个子群体放宽标准。我认为这对任何人都不公平。就我而言,是的,是的,我完全同意。马尔科姆·格拉德威尔(Malcolm Gladwell)曾经进行过一场辩论,我实际上非常喜欢马尔科姆·格拉德威尔。他开始说,首先,我认为舞台上没有人是女性,这是令人震惊的。这一点很重要,但然后我仔细考虑了一下,我意识到,想象一下那个因为马尔科姆·格拉德威尔想要一个女人而上台的女人。你知道我的意思吗?就像,想象一下处于那种情况。无论如何,最后我想问你关于给一个想成为程序员的 20 岁年轻人的建议。好吧,在当今时代,成为一名程序员并不特别困难。也许将来会,但现在不会。如果你认为你想成为一名程序员,并且你认为你有天赋,现在在 YouTube 或许多其他网站上学习编程简直太简单了。而且不需要太多努力。如果你有一台笔记本电脑,如果你有一台电脑可用,如果你可以在 YouTube 或其他网站上找到一些网站,它们会引导你完成一个初步的 Java 程序,然后尽可能多地尝试。学习如何编写代码,阅读别人的代码,去 GitHub 下载他们的代码,阅读它,理解它。这会很难,但没关系。你知道,你可以做到。有很多书,成千上万本非常好的书,你可以从简单的书开始,比如“Java 的乐趣”或“10 天学会 Java”或“21 天学会 C”。任何一本这样的书都会极大地帮助你。找一个导师,一个已经做了很长时间的人。大多数人都会很高兴有人可以教导和合作。如果你能进入一个编程职业学校,那将是很好的,不是必需的,但会很好。如果你有能力去上大学,并且你想花现在大学令人难以置信的钱,并背负一辈子的可怕债务,好吧,你也可以这样做,我不会阻止你。你会在那里学到很多很酷的东西,其中一些你甚至可以在以后的职业生涯中应用。但是如果你没有这个能力,如果你没有能力去上大学,那也没关系。我的意思是,你可以做到,你可以掌握这些技能,你可以以最低的投资成为一名程序员。找一些人指导你,找一家愿意雇佣初学者的公司,它们有很多,因为现在的需求非常高,而且在很长一段时间内都会保持很高。找到一条进入的途径,这并不难。所以,这就是我的建议:疯狂地阅读,尽可能多地阅读,疯狂地学习,观看视频并做练习,你知道,让你的大脑充满这些东西,然后之后应该很简单。(笑声)太棒了,谢谢你今天和我谈话,这非常迷人。我很享受。如果你喜欢这个播客,请考虑与你的朋友分享,并在社交媒体上发布。口碑对于一个新播客和小播客来说非常宝贵。谢谢观看。(音乐)