← Dwarkesh Podcast

Uncle Bob: 罗伯特·马丁:代码的长臂

Uncle Bob - The Long Reach of Code

第2020-11-28期2020-11-28简体中文

嘉宾:Uncle Bob

收听本集00:00 / 45:50
阅读设置
按你的习惯阅读
正文字号
下载播客精读
把这一篇,带走慢慢读

中文 · 精读 · 当前版本

下载功能还未开放

全文文稿 · 按对话顺序保留完整内容,深入理解上下文。

本篇目录1 章节§01编程的未来与程序员的养成

§01编程的未来与程序员的养成

00:00好,今天我对话的是 Robert Martin,他不需要介绍。那我们就从编程的未来谈起。GPT-25 能自动化编程吗?二十五年后我会不会没工作?什么是 GPT-25?那是什么?GPT-3 是 OpenAI 刚发布的程序,它似乎能做点基本的东西、写点基本的方法,比如做一个回文,

00:24因为他们刚在一堆 GitHub 仓库上做了深度学习。所以 AI 的未来基本上就是能自动化编程?不。答案很直接。这背后有一个根本原因。要真正复制编程,如果你想要一台像人一样编程的机器,那台机器就必须具备人类意识。而我们离那种机器还非常非常远。为什么需要人类意识?因为必须有人来规定程序将如何工作。而那份规定,实际上就是程序。

01:10任何别的规定都不够。所以一个业务用户过来,他写出一份粗略的规定,但依赖程序员的人类直觉和人类智能,去填满业务人员省略掉的所有可怕的小空白。我们程序员是细节管理者。我们处理所有混乱。正是我们去应付「文本文件有时用反斜杠 n 结尾、有时用反斜杠和反斜杠结尾」这种事,原因

01:51可以追溯到五十年前,因为电信打字机、Unix、DOS 以及所有这些破事。也正是我们写那些愚蠢的小 if 语句,去处理没有哪个业务人员愿意想一想的古怪小例外。如果我们试图造一台能处理所有这些的深度学习机器,我们最后会得到一台 HAL 9000,某种具有人类智能的东西。而我们离那太远了,

02:22所以「某台深度学习机器终将接管所有程序员的工作」这个前景,一点都不让我担心。那我很高兴听到这个。但这个可能性呢:开发环境和程序员的工具会变得非常先进,几乎像一种共生的结对编程,你是在与机器一起写代码,而不是在机器上写代码?当然。我是说,在编程的整段历史里我们一直就是这样。我们一直在这么做。最初的程序是用二进制写的。图灵在自动计算引擎上工作时,真的用二进制写东西,因为当时没有语言。然后我们最终造出了汇编器。你能想象汇编器相对二进制的收益吗?那些你不得不做的可怕的二进制算术,再也不用做了,你可以用符号形式写代码。那已经是巨大的

03:24优势。然后 John Backus 带着 1953 年的 Fortran 规范出现。相对汇编语言那是多么巨大的优势。ALGOL 很快跟上。到 1966 年,Ole-Johan Dahl 和 Kristen Nygaard 发明了对象。这是图灵用二进制编程二十年之后,你有了第一个面向对象语言。C 在 68 年出现,两年后……C++ 在十二年后出现。我们有了这一连串对程序员帮助极大的进展。然后在九十年代后期,我们的工具里开始出现那些疯狂的东西:IntelliSense、重构工具、检查器、重复代码查找器。

04:16所以一个现代 IDE 就是一座工具宝库,让程序员能做远比过去复杂的事。是的,我希望机器学习继续让我们的工具更强大。但那永远不会消除「程序员必须在场监督这些工具」的需要。我是个飞行员。我开飞机。飞机有漂亮的自动驾驶仪。我可以打开它,飞机会自己飞到我的目的地。

04:53而我像鹰一样盯着那东西,因为它是台机器,它会在最不该出错的时候出错。所以我坐在那里盯着那个自动驾驶仪,每次它该做某件事时,我确保它做了那件事。仍然是我说了算,不是它。但一旦有了这些先进工具,编程的未来会不会看起来跟现在的编程机器完全不同?

05:21你写过,图灵写第一批程序的方式,和我们今天写程序的方式并没有那么不同。这种连续性是我们未来也该期待的吗?还是界面会被彻底改造?嗯,我是说,自图灵以来界面已经被彻底改造了,但编程这一行为仍然是顺序、选择、迭代。是的。程序员仍然把程序组织成顺序、选择、迭代的小单元。我们会继续这样吗?嗯,我觉得这是个非常有意思的问题。

05:58而且我们已经有了一些关于其它可能性的线索。比如,如果你用 Prolog 编过程,你会看到顺序、选择、迭代被转换成某种别的东西,同样细致,但不再是顺序、选择、迭代了。它是声明式的真。我不打算深入讲 Prolog,但如果你想掰弯自己的脑子去理解一个不熟悉的概念,就花几天学 Prolog。但最终,我们会不会走到类似我那个自动驾驶仪的局面:我在工具里设定一些参数,然后看着这个工具开始开发一个程序。

06:46然后我作为程序员,一边看它在做什么,一边在外面开始微调参数,说:不不,不是那个,不是那个,这个,这个,往这个方向走。我能做到那样吗?能,我会说这大概在未来二三十年里的某个时候非常可能——我们给计算机编程的方式会更像训狗:在合适的情况下奖励它,在别的情况下惩罚它。我们看看会怎样。我们看看会怎样。但无论如何,都不会出现

07:25没有程序员参与的情况——那个人具备你我今天同样的技能,深度分析型,是个细节管理者,盯着机器毫无头绪、也毫无策略去应付的所有愚蠢的小陷阱。我很高兴听到这个。程序员团队比单干的个人更缺创造力吗?程序员团队远比单干的个人更有创造力,但它们同时会朝很多不同方向走。所以你需要一个领导者。团队必须有一个领导者。我们在敏捷社区遇到的一个问题是,有一派敏捷信徒认为不该有领导者,认为整个团队是同质的、平等的,处在一个人人相同的大众平均主义社会里。而我的经验

08:21是,那根本行不通。团队需要一个领导者。然后团队疯狂地产生想法。团队产生想法。而领导者是那个像 Jean-Luc Picard 一样的人:要这个,不要那个。有意思。现在,我们谈谈如何教育未来的程序员。我看过一段 Linus Torvalds 的访谈,他表达了一种担忧:生态的复杂度增长太多,他不确定像他那样位置的人

08:52还能不能做出那样宏大的创新。他们没有一块岩石可以抓住,去在那么早的年纪获得那种水平的专业能力。你也有这种担忧吗——生态已经发展得太多,年轻人更难到达前沿?现在需要更长时间,因为有太多冗余的东西要趟过去。我年轻时,我用的机器最初是 PDP-8。我这儿就摆着一个 PDP-8 的小模型。

09:26它大概是经历了一次断电,因为它现在不按我平常让它做的方式动作了。但那是台非常简单的机器。它是 4K 内存、12 位字长、半兆赫兹时钟。而且没有库、没有框架、什么都没有,对吧?如果有什么东西在那台机器上执行了,那是因为你写了它。那时的程序员可以了解这台计算机的一切。而且花不了很长时间。花几个月,最终就到了你什么都懂的地步。

10:01那些日子早就过去了。现在不可能指着某个计算机系统说:好,我了解我的 MacBook Pro 的一切。不,你不了解。里面杂物太多了。所以要变得像我们这些五十年前入行、边工作边爬树的人那样熟练,学习曲线要长得多。另一方面,它还不像当医生。如果你想当医生,你必须专科化。在医学里不专科化就没法往前走。

10:45如今连全科医生都是专科医生,因为他们必须排除掉所有其它他们做不了的东西。而我们还没到那一步。一个程序员在五年里,比如说,可以变得擅长 GUI 编程、中间件编程、数据库编程、电信编程、线程。所有这些东西都能在一个有五年经验的程序员身上被治好。十年更好,对吧?所以它不像当医生或律师那样,你必须专科化,把焦点收窄到像剃刀一样。程序员

11:30仍然可以当真正的全科医生。明白了。我们谈谈那些「制造程序员的工厂」,也就是大学。如果只能改一件计算机科学在大学里的教法,你会改什么,怎么改?我不会在大学里教它。真的?我不觉得这是大学该管的那类东西。再说一次,这是一门只有七十年历史的学科。里面没那么多东西。冗余之物远多于真正的知识——真正的、扎实的、可教的知识。而程序员需要的绝大部分技能是手艺型的技能,不是教育型的技能,对吧?不是大学那类技能。如果你想当电气工程师,你必须

12:24上大学。那里有大量东西你必须学。如果你想当医生,你要上的远不止大学。但要成为程序员,而且要成为好程序员,这是一门你可以在社区学院或职业学校用一年、也许一年半学会的技能,然后找一份有好导师的好工作,从那条路学,那样学。我认为对年轻程序员来说,这是好得多的成为程序员的路径——不要上大学。它不值四年教育。你在这四年教育上花的钱,不会值

13:04你得到的那些编程知识。它也许值一大堆别的知识。但它不值你将得到的那些编程知识。如果你想当程序员,而你刚高中毕业,我会去看技校项目,某种职业学校、训练营之类。有些训练营不太好,所以我在这点上会很小心。但某种那样的项目,让你花几个月学一门像 Java 或 C# 这样的语言,

13:35然后转到一份有导师制或学徒制的工作。我现在正在大学学计算机科学,所以我希望两年前就听到这个。但不管怎样,你能解释一下,为什么我们这个行业——从教育门槛上看,入行并不那么难——你至少需要的东西不多。也许有些特质比较罕见。但入行并不那么难。需求一直增长得很快。那为什么人们还在去当公司律师?明明有一份薪水很好、不需要那么多教育、又能很快入行的工作。这个均衡该怎么解释?我要小心地解读一下这个问题。当我还是年轻程序员时,我以为任何人都能干这个。那是我的

14:26基本假设:任何人都能学会这个。不过是一和零。我是说,一和零能有多难?我花了很长时间、犯了好几次非常昂贵的招聘错误,才意识到不是人人都能干这个。而事实上,能干这个的人比我最初以为的少得多。这不是稀缺天赋,但也不是极其常见的天赋。而这个天赋要求好几样东西,对吧?需要深度分析。需要能专注,能在很长时间里专注于非常狭窄的东西。而有些人就是做不到。这不在他们的心智接线里。他们做不到。但有些程序员能,或者说有些人能,他们可以成为程序员。

15:25所以你问,为什么我们在产出公司律师?嗯,他们有非常不同的兴趣和心智。虽然他们也分析、也能专注。他们专注在不同种类的东西上。我们程序员专注布尔判断、一和零、黑与白。律师呢,他们看的是人。人比计算机复杂得多。那是非常不同的心智。如果你要估计一下,你觉得人口中有多大比例具备成为程序员所需的那套素质?哦,这问题难。人类人口中有多大比例具备编程天赋?我想现在世界上有一亿程序员。这只是猜的,但我觉得大致对。那大概是人口的八十分之一?

16:28所以我们有一些证据表明,至少 1% 的人具备这种能力,接近 1%。也许高到 5% 到 10% 也有可能。可能真有那么高。我自己有过不少次尝试教别人编程的经历,大概十分钟之后就没法继续了。你知道,他们的脑子就飘到别的地方去了。他们做不到。而这似乎比另一种天赋常见得多——另一种是,你想教的那个人会兴奋起来,跟你一起钻进去。

17:12而那种情况要罕见得多。那么,如果上大学对想成为程序员的人来说不是最好的选择,假如有人想解决高度技术性的问题,他会想:嗯,看起来我得受良好的教育才能做这件事,我需要懂很多数学。那你会建议他去上大学、拿一个数学学位,好让自己有技术背景吗?我以前是这么认为的。我确实雇过一个人,因为他拿了数学硕士学位。我当时想,好吧,数学硕士,那你应该能这样思考,应该能专注,应该能做这件事。结果我发现自己对这个人的编程成长方式非常失望。当然,他最终成功了。但那并不是……

17:57……并不是我预期的那种快速成功。要让这个人的思维模式从数学思维转成编程思维,花了大量功夫,也经历了大量失败。所以这两者是有区别的。那么,作为程序员,懂数学值不值得?当然,在某些领域确实值得。我是说,如果你要做任何跟物理有关的工作,比如你要为粒子加速器写代码,那大概得懂点数学,对吧?如果你要做非常深入、有意思的金融工作,比如去交易所当量化分析师之类的,那大概需要懂点过硬的数学,对吧?但另一方面,如果你只是个普通的程序员,给……我也说不好……

18:50也许是……挺好的。是啊。我刚说“普通的”,Siri 就冲我吼了一声。比如你要写运行在我冰箱里的代码,我冰箱里的机器控制软件,那大概不需要大量数学。高中代数学好,大概就够了,

19:14也许再加一点微积分预备。大概就够了。我不认为那类东西需要很深的数学理论。就算是做游戏的人,虽然那涉及很重的物理,但那些物理都已经在物理引擎里了。所以多数时候,我觉得你不需要那么多数学。那么,程序员了解自己要进入的那个行业重要吗?答案是重要的,对吧?

19:41如果你进入保险业,你最好懂保险业务。如果你要去电话公司当程序员,你最好理解电话公司。所以,在一个公司的师徒制项目里,程序员早期教育中有很大一部分其实讲的是这家公司,而不是编程。这是我们的专长领域,这是我们做的事,这是保险理赔,这是其他这些东西,这是我们看待它的方式。

20:12这样你才能把业务知识有效地用到写代码这件事上。这就绕回原点了,因为你一开始问过我,你说:我们最终不是会有那些能写代码的机器学习东西吗?答案大概是不会,因为正是对所从事行业的直觉性知识,让你能做出那些业务人员不愿意做的底层决策。那么由此是否可以推出:如果你想成为一名非常称职的程序员,你应该试着专攻某个特定行业,因为在那里编程的应用最……

20:53……还是说,你应该先发展广泛的经验和专长?其实两者都要。当你接下一份工作时,你要在 N 年里专攻你所在的这个行业,N 是多少不好说,可能是两年,可能是三年,大概也就这么短。然后去了解那个行业。接着看看能不能换到另一个业务领域,在那里待两三年。然后再试一个领域,待两三年。到那时候,你就有了一片相当宽广的业务领域。

21:31这会让你能够推断其他业务领域,因为业务领域之间有相似也有差异。但一旦你脑子里装了三四个领域,你就可以开始三角定位了。那么,当你考虑雇一个程序员,而对方没有多少经验,你没法只靠别人推荐,他能做些什么,来向你释放信号,表明他会成为一名称职的程序员?

21:58这问题真有意思,我自己也为它纠结了很长时间,好几十年了。我发现没有可靠的测试。我以前会让人……那时候我以为关键是数学,我以前会让人解牛顿法求平方根。我就在黑板上画出来,画一条抛物线,

22:23然后说,好,这是斜率,它是这个函数的导数。现在,想出一个算法。我让他们用任何想用的语言。我当时觉得这是个相当不错的办法。然后我发现有些人这方面非常擅长,却做不了别的事。于是我想,好吧,那我来描述埃拉托斯特尼筛法,那个找质数的漂亮算法,对吧?我用简单的说法描述它,让他们写点伪代码,向我证明他们真的能写双重嵌套循环,对吧?那也不可靠,虽然比前面好一些,但仍不可靠。所以我现在得出的结论是:没有简单的测试。你需要做的是花相当多时间和一个人相处,

23:17观察他在一段时间里学得怎么样,把学到的东西运用得怎么样,能多专注,能不能用分析的方式处理问题。而这段时间大概是几周。所以我现在更愿意做的那种面试——顺便说,我已经不招人了,我现在就是我自己,但我认识一些在招人的人。他们的一种做法是请对方加入一个学徒项目。在这个学徒项目里,会给学徒一系列难度递增的挑战,其中并不全是编程挑战。有些是写作挑战,有些是演讲挑战,有些是演示挑战,但总之是一连串……

24:11……难度不断上升的挑战。到最后,所有和他谈过的人一起做评估,然后决定给不给他工作机会。有些情况下这个学徒项目有津贴工资,有些没有。有意思。你觉得成为程序员所需的那些特质,是在童年、在早年经历中形成的,

24:39还是说在高中、初中形成的?又或者有些人在某种程度上就是天生如此?很难说。我认为有一定程度就是神经连接方式的问题,某种性格缺陷让你成为程序员,而不是所有人都有。不过,我见过完全没兴趣的人在不同的人生阶段产生了兴趣,也获得了这种才能。

25:14比如我儿子,他现在是程序员,而且非常出色,可他在小学低年级时一点兴趣都没有。我自己是 12 岁产生兴趣的,所以我当时想,哦好吧,大家都会在 12 岁产生兴趣。结果我儿子一直到离家、快离家的时候——高中后期、大学初期——才表现出兴趣,然后带着这份兴趣和技能回来了。我女儿刚满 30 岁,突然非常感兴趣,也正在获得相当多的技能。所以我见过这种情况……

25:54……在不同阶段发生。那个开关打开了。忽然之间,他们就有了所需要的全部动力、专注力和分析能力。所以我不知道。这对我来说是个很深的谜。那么,早点学这些东西、早点掌握这些技能有优势吗?还是晚一点学能获得更成熟的视角?如果你 20 年前问我这个问题,我会说教小孩子显然有优势。我是说,如果能让小孩子沉浸在计算机里,他们显然会成为好得多的程序员。

26:35现在我不那么确定了。反例就是大量的编程玩具,它们跨越了很长的时间跨度。如今有乐高 Mindstorms 之类的,还有一大堆其他工具,都想鼓励年轻人成为程序员,比如 12、13、14 岁的孩子。早期我们发明过一些语言,想帮年轻人成为程序员。比如 Logo 语言,它的全部内容就是让一只小机械乌龟在地上走,让它抬笔在纸上画画。

27:25孩子们就给它下命令:前进 10,右转 90 度,前进 10,在纸上画出正方形和圆形。而在这么长的时间里,我们试图做出吸引孩子的工具,结果发现它并没有产生深刻的影响。有一大群孩子会坐下来开着乌龟转一会儿,然后就失去兴趣,从来没发展出更进一步的技能——把东西放进变量、调用函数。那些就没发生。乐高 Mindstorms 之类也是同样的情况。当然,也有……

28:10……有些孩子确实抓住了它,你能看出他们想成为程序员。但问题就来了:他们本来不也会抓住吗?为什么需要这个工具?这些教育道具到底是真的激励了更多人成为程序员,还是只是帮了那些本来就会成为程序员的人?这个问题的答案我不知道。我现在是持怀疑态度的。有意思。所以你对初中高中的必修编程课并不看好?我认为每个人都该有……每个人都该体验一下。我明白了。大概,你知道,用四周或六周时间,每个人都该做一点基础的编程,或者 Ruby 编程。不过这里我得小心点,因为把人变成 Ruby 爱好者,然后……你知道,那语言深入进去是很复杂的。

29:12但是,你知道,也许一点点编码、一点点脚本,一点点什么,让你基本知道它是怎么回事。除此之外,我不认为有任何必要去推一整年的课程。我觉得那没必要。我认为有兴趣的人自己会去做。对,对。让我问问你程序员随着时间发展出的那种品味感。这和人们所说的、难以捉摸的“作家的耳朵”有关系吗?就是作家随着时间……

29:40……发展出的对散文和文体的感觉。那种感觉和编程中发展出的感觉是相关的吗?Michael Feathers 20 年前造了一个词,叫“设计感”(Design Sense)。这 20 年来他一直威胁要为它写本书。我还没见他写出来。但基本意思是:确实存在这样一种感觉,是程序员在很长时间里发展出来的——一段代码、一个系统的设计、一个系统的架构,在某种程度上让你觉得“对”。这是一种难以捉摸的感觉。

30:29这是对美的判断力。就像:哦,美的东西。这里就该用“美”这个词,因为确实有美的设计。有美的架构。有美的函数,而它们之所以能被描述为美、被理解为美,只因为看的人有那份经验,能看一眼就说:天哪,太美了。我昨天在 Netflix 上看了一个剧……

31:01叫《后翼弃兵》,新出的。讲一个女孩成为国际象棋大师的故事。其中有人问她:你为什么对国际象棋这么感兴趣?她往后一靠说:它很美,或者说它可以是美的。我觉得软件也是一样。Christopher Hitchens 以文笔出色著称,他曾在某个时候猜想,写作的感觉受到了某种关于节奏和文句的音乐智力的调节。

31:32你觉得音乐智力会影响你把代码写得好、写得美的能力吗?确实有——这一点人们早就知道——程序员和音乐家之间有非常强的相关性。学过音乐、演奏过乐器、或者发展出音乐感的人,常常会成为程序员。为什么这样,我不知道。可能是节奏感,可能是音阶的数学排列。谁知道呢。如果你看一首乐曲、看一份乐谱,它就是一个程序。它有 if 语句,有 while 循环,有顺序,什么都有。所以也许就是类似这样的东西。我不知道。

32:19但确实存在相关性。有意思。那我们来谈谈你的想法,你的主张——我们需要在软件工程内部有某种机构,来判定谁具备继续当程序员所必需的伦理和技术能力。我不知道你是否改变了看法,我先请你详细说说你的意思。但对此感到担忧的人可能会说:

32:44这正是其他行业已经发生的事——职业执照制度把人挡在行业之外,让劳动力池被人为缩小,从而有利于已经在行业内的人。而且还有一层麻烦:如今要求审查、取消文化的呼声越来越高,我们可以想见,这个机构本身可能变成一种工具,用来清除那些挑战正统观念的人。你怎么回应这些质疑?问题在于,编程已经成为我们社会得以存在的一项完全必要的工作职能。没有程序员,人类社会已无法存在。

33:34而这种依赖正以指数速度增长。你往这屋子里看一圈,就能看到几十上百个小电子设备,里面跑着代码,让生活变得可行。而我们过去依赖的、里面没有代码的所有东西,现在里面都有代码了。你的微波炉、冰箱、汽车、电话、电视,里面都跑着代码。没有程序员,我们的社会已经无法存在。

34:06而对程序员却没有任何约束,要求他们行为合乎伦理、遵守任何标准、遵守任何纪律。所以这是个不稳定的局面,不能一直这样下去。我们怎么解决?我们需要类似 AMA(美国医学会)那样的东西,为医生提供执业许可吗?还是需要别的什么?也许需要一种行会结构?也许是一整套小组织,各自用不同的标准、伦理和纪律来为自己的程序员发执照,然后让市场来决定:哦,那帮人比那帮人做得好,我们雇他们。我不知道最后会落在哪里。我担心的是,在我们想出这个方案之前,

35:02政府就会把它强加给我们。我希望我们能在政府把小手伸进来、把它彻底搞砸之前想出这个方案。已经有若干公司在做这件事了。你往外看,尤其是软件咨询公司,有些软件咨询公司就是以一套原则、伦理和纪律为基础建立起来的,它们也这样对外宣传。我认为这种会越来越多。

35:35所以我觉得这个行业大致会朝这个方向走,至少我希望如此。我也希望我们能在政府把脚伸进来、把我们全踹进地狱之前做到。我也希望如此。我想问你,为什么在所有行业里,科技似乎特别政治化——具体某些公司似乎有明确的政治倾向。在很多其他工作领域里,这似乎并不成立。你觉得这是为什么?不。

36:10嗯,是也不是,我想。这一直是个很深的谜。我们换个角度看。如果你从地理上看政治倾向,对吧,美国有明确的政治倾向分布。你有两侧海岸,两侧海岸往往是自由派、蓝州。城市往往更自由派,乡村地区往往更保守。

36:40中西部往往更保守。如果你去堪萨斯城的一家公司,那里有 100 个程序员,那这些程序员多半是保守派。这就是地理倾向造成的。去旧金山,那里的程序员多半是自由派。这也只是地理倾向。还有别的吗?

37:10在软件行业里,有什么东西把人推向某个政治方向?嗯,也许有。结果是,成为程序员很容易。我们之前谈过这个。你其实不需要上大学,你其实不需要接受完整教育,对吧?你不需要很多经验就能成为程序员。而且因为这个行业一直在发明新东西,对吧,有些人可以很早就跳进这些新东西里。比如 HTML。HTML 是 20 年前发明的。忽然之间一大堆高中生就非常擅长 HTML 了。当然,他们出去找工作,没受过多少大学训练,什么都没有。所以这是……

38:08……很容易的。早期准入门槛很低。而我认为这带来了一件好事:一批边缘群体的人,住在边缘社区的人,很容易就进来了。他们积累经验、发展技能,这也是好事。然后我认为——这只是我的猜测——我认为他们运用那种技能和技术,那给了他们一个声音,而这个声音被转向了,有时转向非常有破坏性的方向。我不想对每个边缘群体都泼脏水,但我注意到有些群体忽然发展出非常响亮的声音,而在很多情况下,他们最终在推动取消文化。就,就,你知道,那种看起来的样子……

39:15……从我,你知道,从我中年的视角看,不,我不是中年。我现在其实老了。从我那个年老的、保守的、白人的偏见看,对吧?在我看来就是这样。有意思。让我问问你关于配额的事。我觉得你在博客里有一个很好的论证,说明为什么配额不一定能帮到你想帮的群体。你提出的那个论证——我先请你解释一下——是否也适用、并可以推广到其他实行类似做法的地方,比如大学?我认为适用。我认为永远适用。我是说,配额背后的想法总是很善意的,对吧?有一个边缘群体,他们没有受到恰当的服务,我们需要为这个群体放宽准入门槛,

40:07让更多他们的人能进来。很善意,你知道,每个人都想要最好的。但最终结果是什么?结果是降低标准。标准必须降下来,而这伤害整个行业。而且,用低标准把人放进来、却指望高标准出去,这对边缘群体也没有帮助。因为那样你就会看到失败。我们在大学里看到这一点,在就业中也看到这一点:辍学率或失败率更高。这没有帮助。我曾经和一位女士坐在一起,一位非常有成就的女士,我们在一场会议上。我在做主题演讲,她也在做主题演讲。我们就聊到这个问题。她看着我说:我真希望他们请我做这场主题演讲,不是只因为我是女人。

41:05你知道,我能感受到那种焦虑——她的演讲能力被贬值了,因为她只是作为“一个女人”被请来的。所以她的恐惧是,她被一个她甚至不知道是否存在的配额制度贬值了。我认为总的来说,处理这类问题的唯一办法就是完全按能力来。如果你要当程序员,我很乐意雇任何人。我不在乎你的政治倾向、性取向、种族状况。这些我都不在乎。只要你能写代码,我就乐意和你共事。我不想忽然,或者说我不想放宽立场……

41:59……去照顾某个特定子群体。我认为那对任何人都不公平。这只是我的看法。是啊,我完全同意。Malcolm Gladwell 曾参加一场辩论,我其实很喜欢 Malcolm Gladwell,但他一开口就说:首先,我认为这个台上一个女性都没有,这是丑闻。

42:16这话有它的道理,但后来我想到,请想象一下那位刚刚上台的女性,她上台只是因为 Malcolm Gladwell 想要一个女性。你懂我意思吧?就像,想象一下处在那个位置上。总之,最后我想问你,你会给一个想成为程序员的 20 岁年轻人什么建议。好,在我们这个时代,成为程序员还不太难。某个时候可能会难,但现在不难。

42:45如果你觉得自己想当程序员,也觉得自己有这个天赋,现在上 YouTube,或者上其他各种网站学编程,简单得离谱。而且不需要花很多力气。如果你有台笔记本,如果你手边有台电脑,如果你能上 YouTube 或任何其他网站,找个网站带你走一遍最初的 Java 程序,然后就尽可能多地去试验它。学会写这些代码。读别人的代码。上 GitHub,下载他们的代码,读它,理解它。会很难。但没关系。

43:28你知道,你能做到。外面有一大堆书,成吨成吨非常好的书,你可以从简单的书开始,比如《Java 的乐趣》,或者《10 天学 Java》,或者《21 天学 C》。这些书里任何一本都会极大地帮到你。找个导师,找个已经干了一阵子的人。他们大多数会非常高兴有人可以教、可以一起工作、可以帮。如果你能进一所编程的职业学校,那很好。

44:09不是必需,但会很好。如果你有钱上大学,也愿意花大学现在要的那种荒唐的钱,为此背上大半辈子的可怕债务,好吧,你也可以那么做。我不会拦你。你会在那里学到一堆非常酷的东西,其中有些你以后职业生涯里还真用得上。但如果你没那个条件,如果你没钱上大学,那也没关系。我是说,你能获得这些技能。你可以用最少的投入成为程序员。只要找些人在旁边指导你。

44:52找一家愿意雇新手的公司。这样的公司很多,因为现在需求极高,而且会长期保持很高。想办法进去。没那么难。这就是我的建议。疯狂地读。读。能吸多少吸多少。疯狂地学。看视频,做练习。把这些东西塞满你的脑子。之后应该就简单了。太好了。非常感谢你今天和我聊。这非常有意思。

45:31哦,是我的荣幸。我非常享受。嘿,如果你喜欢这档播客,请考虑分享给朋友,在社交媒体上发一发。对这样一档新的小播客来说,口碑极其宝贵。感谢收看。

— 读到这里,多懂一点。 —