当你以为一扇原本敞开的门突然在你面前关上时,会发生什么?Bobbi 克服了严重致残的伤病,继续自己的编程之路,他的故事实在了不起!
Jonathan: 大家好。我叫 Jonathan。我正在和 Bobbi Towers 一起主持一期播客。Bobbi 是我们 Exercism 社区的一员。今天他能来,我感到特别荣幸。我现在在南非的开普敦,某种意义上算是世界的尽头。Bobbi,你现在在哪?
Bobbi: 我在俄勒冈州的波特兰,荣幸的是我才对。通常要做这种事,你得是个名人或者特别成功之类的,所以我感觉自己一下子跳过了好多级。
Jonathan: 嗯,你能来真是太好了。我知道你在社区里为 Exercism 贡献了很多。据我所知你还做一些维护工作。这个你待会儿可以详细讲一讲。但我们真的很高兴你能来,也想借这个机会让你分享一点你在科技领域的经历,还有你喜欢科技的哪些地方,诸如此类。那你不妨先讲讲你的出身背景,讲讲你的故事。我们很想,我很想深入聊聊这些,然后后面也许可以再谈得更技术一些。
Bobbi: 好,我是在纽约州中部的农场长大的。我们没有养动物之类的。我爸算是个原始主义者。他经营一家公司,为伐木业做双人横切锯,就是电锯出现之前人们用的那种。不过,你知道,这也和科技有关,因为他也是最早用上电脑的那批人之一。他有一台原装的,其实是一台原版 IBM PC 的兼容机。那是为了,你知道,做家里的生意,比如数据库管理和桌面出版,用来打印产品目录。所以这台东西就传给了我。它是 1981 年发布的,正好也是我“发布”的那一年。我们还有第一台面向消费者的文字转语音设备,叫 speech thing。就是一个小装置,接到电脑的并行口上,它就能说话,全家人都围着它看。那真是有史以来最神奇的东西。
Jonathan: 嗯,所以这就是你接触,可以说,技术世界的开端,我让你继续讲。我只是对你说的这点很感兴趣。
Bobbi: 还有呃……你知道吗?我真正想要的是一台 Nintendo,但他们……他们不让。他们想让我们到处跑、搭堡垒,和街对面的牛玩,像正常的农场小孩一样。大概还得砍树。
Jonathan: 大概还得用双手锯,或者说双人锯砍树吧。
Bobbi:
Jonathan: 请继续。
Bobbi: 是啊,是啊。不过,总之,我们家有严格的禁止电子游戏的规矩,我一直搞不懂为什么。但后来,我所有的朋友都有很酷的玩具玩。我为此特别难过。所以我们在电脑上达成了妥协。某种程度上我得感谢这件事,因为它把我变成了一个想当黑客的人,而不是那种花很多时间消费媒体的人。所以我们得自己创造乐趣。
Jonathan: 这真是……
Bobbi: 而且……这个语音设备上有一个会说话的二十一点游戏,是用 BASIC 写的,BASIC 是最早真正让人们容易学会的编程语言。是 BASIC 吗?你说它是什么?BASIC。对,就是初学者通用符号指令代码。
Jonathan: 那你会说它很……基础吗?经典。不错。不错。所以就是让它对人们来说更容易上手。
Bobbi: 所以,是啊,那会儿就是这样。那时候我们还会照着杂志把计算机程序一个个敲进去。然后它跑不起来,因为你那版 BASIC 和他们用的那版略有不同。也许那很重要吧。
Jonathan: 所以版本问题就把整个程序给终结了。
Bobbi: 那时候没有互联网,所以也没有 Exercism。所以那是件大事。你遇到问题时,可不像今天这样,Google 一下,答案早就在某个地方了。你是真的卡住了。那个年代学编程很有挑战性。说实话,后来的十五年左右我有点被音乐带偏了。
Jonathan: 你说被带偏了,是什么意思?发生了什么?
Bobbi: 哦,其实我童年大部分时间都在玩磁带。而这正是我后来痴迷于捕捉、保存媒体并在事后进行创作的一个根源,这其实是一种时间旅行。
Jonathan: 有意思,我从没想过录音也可以算一种时间旅行,这真的很酷。我记得我有一台,我想是四轨的。我们有一台那种老式磁带机,如果你在恰当的时机按下暂停和播放,同时又按下录音键,它相当机械,得掌握好时机。但我记得我能做到,哇,我真的可以录下点东西,然后从另一台机器上放出来。所以我现在同时有两盘磁带了。我录到一盘上,然后不知怎么把录音弄到下一盘上,再来回倒。你说被音乐带偏了,这挺有意思的,因为我完全能感同身受。但一切都是从磁带机开始的,还有那种能算出时机的能力,这本身就是个大问题。我觉得现在我们手头有这么多工具,多少有点作弊了。不过再多跟我讲讲磁带机,讲讲它怎么,它把你带到了哪里。
Jonathan: 是啊。
Bobbi: 你知道,我有一台 Fisher-Price 的盒式录音机,我会,我记得我假装自己在做广播节目,就放音乐,录自己,你知道,就是瞎玩、说话,其实我现在还在这么干。后来还有 VHS 录像,我甚至能做特别粗糙的定格动画,因为我有一台带快照功能的摄像机。它拍的不是一帧,其实是四分之一秒一张的快照,刚好够用一种很搞笑的方式模拟出动态。
Jonathan: 太棒了。那么,在农场长大,最后你得到的是一台老 IBM 电脑,作为妥协,因为现实一点说,你想要的是 Nintendo,而那没能实现。所以其实我觉得你父母大概,做了件好事,因为那让你变得爱问、好奇,可以这么说。也许当时你并不这么觉得。
Bobbi: 是啊,从那时起我的毕生梦想其实就是写一个我自己版本的 Mario。好。而且,你知道,你有没有想过,如果你能回到过去跟自己说点什么?毫无疑问,这就是我的答案。我会回到那个正琢磨着怎么重现 Super Mario Bros. 的孩子身边。我会告诉那个孩子,你必须学数学。
Jonathan: 好。
Jonathan: 谢谢。
Bobbi: 而且,你知道,我可能真得选这个作为我愿意死守的山头。好。嗯,不过也许我们其实可以……我……
Jonathan: 嗯,不过也许我们其实可以,我也有一点同感。那,那是什么让你意识到数学对你来说特别重要?
Bobbi: 嗯,你知道,我以前从来没用过数学,虽然我是个音乐人。我以前常听人说音乐和数学之间的联系,我就笑话他们。不,这不是数学,傻瓜,这是音乐。摇滚。但直到我,嗯,三十多岁,想做出第一个程序的时候,往前跳好多年,当我开始真正学编程的时候,我说我想做的第一样东西就是某种音频、音乐合成器、音乐音序器。后来到了我不得不根据节奏,也就是每分钟节拍数,来计算音符长度的地步。那是我,你知道,除了像把菜谱按比例放大缩小之类的小事之外,这其实是我第一次真正用上数学,是为了扩展我的音乐音序器,让它能以 60 BPM 以外的速度播放,你知道,60 BPM 就意味着四分音符正好是四分之一秒之类的。
Jonathan: 所以对你来说幸运的是,也许能超过每秒 60 拍让你更能享受音乐。想象一下,如果整个音乐都被卡在 60 BPM。是啊。
Bobbi: 是啊,然后就从那里一路往下,是个永无止境往下掉的兔子洞。接着我得找出计算音符频率的公式。第一版的时候,我其实是不辞辛苦地做了一个特别荒唐的查找表,把每个音符的频率都用赫兹列出来。程序直接查表就行了,但后来我终于学会了转换 MIDI 编号的公式,中央 C 是 60,之后每个整数就是五线谱上的一个半音。
Jonathan: 哇。
Bobbi: 是啊,数学这件事,其实是我的数学老师让我重新开始编程的。你知道,我当时在得克萨斯州的奥斯汀上大学。我得修数学课。我用到了一个特别有意思的系统,叫 ALEKS,全称是 Advanced Learning Environment for Knowledge Spaces。它是通过互动练习来学数学。那其实是我第一次觉得它真的对我有效。然后我意识到,那是因为数学里有太多概念彼此依赖。它是一张巨大的图,包含成百上千,甚至上千个主题。而一个老师,在合理的课堂环境里,几乎不可能跟踪哪怕一个学生在这张图上的位置,从而知道下一个该教他什么。有意思的是,我意识到这种东西就应该用计算机来教。而这就是那个巨大的启示,真的,就是互动学习的力量,以及我们可以用技术来辅助教育过程的方式。
Jonathan: 听起来和 Exercism 想用它的学习路径达到的效果惊人地相似。
Bobbi: 我刚才想的正是这件事,因为它就是那张概念图。
Jonathan: 那么你后来上了大学。你是在纽约州北部长大的,对吧?然后你在农场生活过。你以一种非常原始的方式接触了编程,那种没有 Google、没有信息,其实根本没有互联网可以查的情况。就像你卡住了,你必须自己把它搞明白,必须真正把它拆开、弄懂。然后是音乐,以及那种对机器如何运作、你怎么把它们对上的好奇心,让你现在基本上,广义上说,走向了音乐的方向。然后你现在上了大学。你开始意识到,对你来说,也许最好的学习方式就是做练习,这某种程度上把你带进这种运动,或者说这股势头,就是边做边学,并且和世界有一个实际的连接点,可以这么说。这是不是对你在大学之前这段旅程的一个公正描述?
Bobbi: 是啊,是啊,我当时是在音频领域通过直觉来表达我作为人的创造力,而另一些人可能走了相反的路,从更抽象的东西学起,然后也许后来才去学像音乐这样的东西。那你是怎么……
Jonathan: 你个人是怎么把这两者,显然你发现了练习,它看起来是一座很自然的桥梁,可以这么说,因为它带来了一定的创造力,也带来了一种跳出框框的思维。你给我的印象是喜欢在你被给定的参数之外思考。所以你怎么看,我想我是在试着更深入地理解音乐、艺术和创造力与科学的、理性的东西之间的联系,以及那种重叠。那在你的学习过程中具体是怎么体现的,它现在又如何影响你处理问题的方式?
Bobbi: 嗯,我想想,嗯……
Jonathan: 嗯。
Bobbi: 是啊,其实,我也不太确定该怎么回答这个。
Jonathan: 这是个挺,我觉得这大概是个很探索性的问题,也许没那么,没那么界限清晰。我试着换个说法。你觉得……你学编程、学开发的经历。从创造性的角度出发,然后再试着带入结构,或者说,你觉得你更愿意反过来,就是先学结构,然后再学着跳出创造性,你懂的,走向那种更偏创造性的处理方式。
Bobbi: 嗯,我的看法是,我以前写歌,现在我写的是能干活儿的歌。好。所以这几乎就像练习,它和我喜欢叫它“柏拉图理论”的一件小事有关。
Jonathan: 好,解释一下。
Bobbi: 这要回到我第一份工作的时候,除了给我爸干活之外,我第一份在外面的工作是在当地的披萨店。一开始我洗盘子,其实洗得太久了,直到我开始吃。
Jonathan: 看时间。
Bobbi: 我做得特别好,所以我会把盘子都洗完,好去帮做披萨的师傅。我就是这样学会做披萨的。但最好玩的是他们教我和面的时候。天哪,我太喜欢了。我以前在家里老是因为把东西混在一起而挨骂。和面就有那么一种特别的感觉。所以我跟我老板说,这就像 Play-Doh。它让我想起 Play-Doh。他看着我,说,嗯,是啊,你觉得这是为了什么,图个乐子?这是在教孩子们做生意。所以是啊,就是 Play-Doh Fun Factory。这是教孩子烘焙行业的一个小把戏。
Jonathan: 真的吗?那是,那是,那只是个童话,还是说 Play-Doh 真的就是孩子们……的一种机制?
Bobbi: 柏拉图,像柏拉图和亚里士多德。对,这是柏拉图的理论。
Jonathan: 所以那其实是个理论。我是说,这太好笑了,因为我有个 18 个月大的小孩,她什么都往嘴里塞,Play-Doh 还没烤就先被吃了,然后又是一种全新的体验。哇,真酷。好,继续讲。所以你现在在这家披萨店,你把洗盘子这件事拿下了。你是洗碗专家。现在你进入下一步,开始和面、转饼。你是用手转的吗?你能学会那样做吗?
Bobbi: 是啊,特别好玩。后来我其实在一辆校车上搭了一个披萨厨房,开着它在全国到处免费送披萨。面团什么的都是我在这辆车上做的。我们有一台小小的古董烤箱。那是 1966 年吗?
Jonathan: 还是只有你一个人?
Bobbi: 披萨巴士上还有三个朋友跟我一起。我们上了报纸头版。太棒了。我得把照片发给你,因为……我们一定把它放进节目笔记里。
Jonathan: 我们一定把它放进节目笔记里,因为那……是啊。我有点觉得,是啊,所以那,抱歉 Bobbi,我刚打断你了。继续,继续。我刚刚有个想法,我……
Bobbi: 所以说,那其实就是我消失的那几年。我高中辍学,然后就是到处旅行。就是到处漂。就是那时候我干了披萨厨房那件事。我把我学到的唯一一门手艺,决定,我拿着最后一张工资,跟我老板说我要一袋 50 磅的面粉和六罐 10 号装的番茄酱,还有……
Jonathan: 然后你就出发了。
Bobbi: 她走了,把披萨带上了。
Jonathan: 是啊,那么 Bobbi,说到高中,你说你辍学了。当时是什么感觉,或者说是什么让你觉得,你知道吗,这对我来说不太行?
Bobbi: 啊,嗯,你知道,嗯……我最近才发现,我说的是最近这几个月,我很确定自己是自闭症。
Jonathan: 那这对你意味着什么,它又是怎么影响生活的?
Bobbi: 嗯,其实它让我的生活说得通了,要是我早点知道就好了。我以前真的完全不知道自闭症是什么,虽然我们上学时有个同学是,但他非常……我们不喜欢用“高功能”“低功能”这些词,因为每个人都在运作。所以我们按需求来分类。你可能需要更多额外支持,或者需要更少额外支持。就那一个例子,他叫 Joey,特别难互动。他有一台小电脑,用来打字。但那只是一个例子,直到几年前,我开始真正和一些自闭症的人交朋友,才意识到这件事的多样性……我甚至不想用“病症”这个词。它更像是一种存在方式。而我们有点……我在他们身上认出了自己的一些东西。
Jonathan: 好,那对你来说一定是一种解脱,可以这么说。我是说,那是怎么……所以这几乎就像你一直背着什么东西,自己却不知道,像个大包压在你身上,然后你认出了它,如果我说得完全离谱请一定告诉我,但感觉就像你一直背着这个东西,突然意识到它的存在,然后就像,好吧,原来一直是这么回事,那是怎样的感觉,它又怎么让你、帮助你能够走向……
Bobbi: 就像我在给自己的硬盘做碎片整理,把一生的记忆都翻出来,想着,哦,原来……原来我当初是这么想的。它是一个持续的过程,其实几乎像一次重生。
Jonathan: 真酷。太棒了。我很高兴这件事浮出了水面,可以这么说,而你也能看清它的本来面目。那么,好,现在你开着车到处卖披萨,你读完了高中,你退出了高中,因为,你说,你知道,它对你当时的状态来说不太行。然后你上了大学,对吧,在得克萨斯。那为什么是得克萨斯?因为那里离这儿挺远的。
Bobbi: 嗯,不是,其实事情是这样的,我把校车撞了。那是我人生中第一批重大的悲剧之一。我有一阵子挺挣扎的,因为之后我就只能搭便车了。但我发现,我在俄勒冈州的阿什兰这个小镇定居下来。我找到了一座犹太会堂,一个犹太社区,他们让我,其实我开始做志愿者,教孩子们音乐。这太不可思议了。不仅如此,我,我们有一个合唱团,于是我开始了我的第一次正式声乐训练。好。还学会了如何创作和改编合唱音乐。嗯,这是一种根植于《圣经》的音乐传统,用于诵读经文,希伯来文本里其实包含,你可以把它看成一种高级的标点符号,但世界不同地区口头流传下来的不同音乐传统各自创造了旋律来唱这些经文。
Jonathan: 我在大学时学过一点希伯来语。学了一年希伯来语。那是我上过的最吸引人的模块之一。我完全没听懂,说实话。差不多一半时间我根本不知道在讲什么,但我记得他们讲了很多关于“注音符号”的内容,我想我没记错的话,就是元音怎么和辅音对应,然后不同文本里的变化,它们有不同的,嗯,有相同的注音,但根据你能解读或看到的注音,可以推断出非常不同的含义。可以说,这对你怎么读经文有很大的影响。所以我就插一句,这真的很有意思。那现在你在讲文本的音乐层面,继续。
Bobbi: 哦,是吗?是啊,你知道,音乐有一种非凡的力量,能帮我们学习,帮我们记忆。但音乐不只是音乐。它是一种句法结构,你正是靠它知道文本该怎么解读,你知道,分号在哪里,把经文的两半分开。所以它有一个小小的音乐装饰音,是经文里最长的停顿。然后还有另一个,相当于逗号,以及强度不同的逗号。所以我,这让我很震撼,原来文本里竟然直接内置了这么一套原始的音乐记谱系统。所以我想尽可能多学不同的旋律。而且我其实教了一门课。这其实是我第一次在会堂里教成年人。我教了一门课,讲如何从《托拉》经卷中诵读《摩西五经》。然后先知书有另一套调子。真正深入的地方是在,有《托拉》、圣录、先知书和圣录,比如《诗篇》《箴言》和《约伯记》,它们写得更,是一种更诗意的风格,其实这些书里的诵读符号非常不同。我就想,这到底是什么?这怎么唱?于是我其实是在 Google 怎么吟唱《诗篇》的经文。然后我找到了 Rav Natanyel Frankenthal 的网站,他在以色列的耶路撒冷,在一所叫 M'Khon Meir 的犹太学舍,也就是犹太学习之家教书。
Jonathan: 好,嗯。
Bobbi: 所以我就搬到了那里。在以色列?在耶路撒冷。所以你去了?是啊。哇。是啊,我搬到了以色列,本来打算,你知道,我在做拉比研究,但它也是,我是说,那是我名义上在做的事,但我实际在做的是纯粹出于娱乐目的的民族音乐学研究。
Jonathan: 哇。那 Bobbi,你有没有,你是犹太人吗?那是你的家庭背景吗?就是说,为什么会去犹太会堂?还是只是你碰巧遇到了一个社区?还是说有一个来自犹太……的背景或语境?
Bobbi: 是啊,嗯,我们属于改革派。嗯,不是,有改革派犹太教,然后有保守派,其实那不叫这个。反正吧。
Jonathan: 谢谢。
Bobbi: 我的祖父母从俄罗斯来到这里,然后就决定自己定规矩。所以吃龙虾和虾可以,但不吃猪肉。其实那更像是一种形式上的东西。
Jonathan: 感谢观看!
Bobbi: 不理解它,我不喜欢它,嗯,其实我私下里很喜欢那些音乐。那就是,你知道,那种感染你的非凡力量。我觉得其实在基因层面上有什么东西在起作用,我们在精神上天生就会用歌声去试图接触外面可能存在的东西。
Jonathan: 嗯,那是振动,不是吗?是频率。你再想想,我们也是由水构成的,而水对声波极其敏感。甚至治疗也是,你去看理疗师,他们把那个小小的超声波装置放在你腿上,用声音打散结节。外面有一整个领域的信息,我们几乎还没探索过,但它绝对是关键。但我就是觉得音乐和科技之间的关系很迷人,因为大家都说,哦,它们是完全相反的两极。音乐,艺术的、创造性的、流动的,但其实它由模式支撑着,一致的,怎么说呢,就像在钢琴上,你有音程,所有这些东西。如果你真的真的把它归结到底,它是非常数学的。所以我就是很着迷,你最终到了耶路撒冷那个语境里。我是说,耶路撒冷,对吧?还是只是以色列?你在耶路撒冷哪里?
Bobbi: 是啊,耶路撒冷。我在耶路撒冷和萨法德学习,萨法德是卡巴拉的诞生地。
Jonathan: 好,有意思。
Bobbi: 是啊,那真的很有意思。
Jonathan: 哇。好,那我没想到,我没有,我没考虑到你可能在以色列生活过。那真酷,真有意思。那你在那里花时间研究民族音乐性。你会怎么定义民族音乐性?
Bobbi: 民族音乐学,对。我爱上了也门传统,爱到想直接采纳他们所有的习俗。他们保存了一种非常独特的犹太教形式,包括,嗯,保存得最仔细的希伯来语方言,听起来其实还像阿拉伯语。所以,我得以学到很多不同的音。哇,太棒了。而且,是啊,他们有,嗯,是犹太-阿拉伯语。它是一张非常有意思的网,因为我当时也非常喜欢一种叫 Qawwali 的苏菲音乐。苏菲是……
Jonathan: 那是伊斯兰教的神秘主义面向吗?对吗?
Bobbi: 对,对。所以我听过的最不可思议的音乐就是 Qawwali。它就是,他们用簧风琴,是一种很棒的乐器。有点像手风琴。它是一种自由簧乐器,用来吟唱。
Jonathan: 有点像那种持续低音,有那种嗡嗡的持续音。
Bobbi: 对,对。所以那是巴基斯坦的传统。我发现了阿富汗犹太人古代音乐。它让我震撼,因为他们用簧风琴。听起来像 Qawwali。于是我创建了一个叫 Kabbalah Qawwali 的项目,我把也门曲调拿来,试着用 Qawwali 音乐的风格来做。完全狂野。
Jonathan: 你是在家里用笔记本电脑和簧风琴做所有这些的吗,还是你,你是怎么录音、怎么做这些的?
Bobbi: 嗯,我其实做了一个很大胆的举动,没带乐器就搬到了以色列,我当时还想着那要怎么行得通。我以前从没离开过乐器。我要怎么表达自己?于是其实,就是从那时起我非常非常投入地写谱。在电脑上做音乐,我用的是 Lilypond 软件,它其实用的是 LaTeX 排版语言。所以这某种程度上把编程又带回来了。它让我想起当初做网页的时候。其实有点像 HTML,只不过,你标记的不是文字和图片之类的,而是五线谱上的音符。
Jonathan: 所以听起来,似乎一直发生的是,你进入音乐,最后又绕回到技术性的编程,几乎是抄写。
Jonathan: 注释、记录,大概就是,似乎这个过程一直在反复发生。那我们进到技术这一块吧,因为我觉得我们可以聊一点。所以你开始学,嗯,抄写,把那些东西都放到纸上,或者可以说是比喻意义上的纸,还是怎么说?数字地,把东西数字化地抄写下来。然后你开始学一门具体的语言了吗?我知道是因为你喜欢 Clojure。是 Clojure 吗?你怎么念?Clojure 是一门编程语言?Clojure,对。你是怎么入坑的,你现在在这段技术旅程上处于什么位置?
Bobbi: 在 Stack Overflow 的调查里,它一直稳居收入最高的技术第一名。我得承认,那是最早真正引起我注意的地方。我在图表上看到它,说,哈,嗯,这看起来就是你要的。
Jonathan: 没有……
Bobbi: 如果你想赚大钱,那就是你要学的。但后来我发现,它之所以是收入最高的语言,是因为它恰好吸引了非常有经验的开发者。Clojure 程序员的平均经验水平是 10 年。
Jonathan: 好吧哇,所以不是因为它的难度或应用,而是因为这些资深开发者做腻了你那种普通的语言,或者我不该说普通,这大概会招来一大堆批评,但你懂我意思,更流行的语言,然后他们需要新的挑战,最后就是这类人去学它,还是?是啊,跟我讲讲吧。我是说,我很好奇。
Bobbi: 嗯,它其实是一门特别好学的语言。尤其是如果你像我一样有 ADHD 式的思维,它有一个很棒的特性,有时被称为 REPL 驱动开发,或者说交互式编程,你可以,不必把你的程序想成一个只是被执行的文本文件,而是可以把它想成一小块一小块的。所以你只要,你有一个文本编辑器,连接到正在运行的程序。你把光标放在一段代码上,按一个快捷键,它就会求值那个形式,编译它,然后送进程序里。
Jonathan: 所以它几乎是一种即时反馈式的语言,意思就是你能看到自己在构建的东西一路在迭代、在生长。这也许就是它乐趣的一部分。
Bobbi: 对,对,这是我的暗黑小秘密,我其实用它,是因为我很难……在脑子里一步步过一堆东西,还要做上下文切换,而 Clojure 其实让我能想明白代码每一部分在做什么。
Jonathan: 然后你能看到它怎么影响其他部分吗?所以这几乎就像你在聚焦小碎片的同时,也能看到你在构建的整体图景。所以它几乎让两种思维方式同时运转,一边是你所做的事的高层概览,一边是盯着那些小块小块,可以说是构成它的小砖块。这是不是对它如何运作的一个公正描述?你为什么喜欢它,或者说从心理层面讲它为什么对你有用?
Bobbi: 对,对,比如今年年初,我在从新冠中恢复。我现在还在恢复。其实,它算是一次重大的人生事件,把我心理上的问题都翻到了表面,并且把一切都放大了。我意识到,嗯,就像我得重新教自己怎么思考,因为,你知道,我们,就像我有一整套应对机制搭成的纸牌屋,然后它,突然之间它们都不管用了。
Jonathan: 那你现在怎么样?你自己感觉如何?走过这过去两年,我想说,在心理上是巨大的挑战。要应对的东西太不一样了。你还好吗?
Bobbi: 就,就,就,是啊,其实我在早先写笔记的时候,你知道,就是想让自己进入状态,为这个做准备,最让我触动的是这过去几年,以及发生了这么多事。
Jonathan: 那有哪些是关键,你说到你那种纸牌屋。那是怎么,这可能是个相当私人的点,问题就是,那是怎么发生的,发生了什么,那些应对机制是怎么撑不住的,纸牌屋倒塌时是什么样子,你从那段时期走出来时想着我要专注于什么、我要优先什么、我要……
Bobbi: 嗯,我造了一个单手键盘。就在这里。就是它!哇!是啊,这是……我其实是用代码做的。天哪。CAD 软件。还有一个 Clojure 库,能把 Clojure 代码编译成 OpenSCAD。然后我就开始玩 3D 打印,因为我有一只手不太好用。这是一场发生在 2015 年的事故造成的。
Jonathan: 所以等等,你经历过披萨车事故,那是个重要时刻,然后 2015 年又一场事故,导致你的一只手不能像你希望的那样正常运作。
Bobbi: 是啊,这是又一次重大人生事件,真的改变了一切,因为,嗯,它让我,我喜欢这样想,它让我从一个以身体为导向的人,变成了一个更以心智为导向的人。
Jonathan: 哇。那太重大了,Bobbi。我是说,那太重大了。所以,那是第三次,那大概花了三到四年,就只是改变,然后新冠来了,对吧?所以你刚从重大的心理转变、身体转变中走出来,然后疫情来了,所以我能理解那会是相当一段经历。
Bobbi: 是啊,就像我们之前聊的,关于,你知道,那种连接,你当时问,我是怎么在像音乐这样直觉性的艺术和代码之间搭桥的。我就是用音乐做到的。然后,到了这个时候,我其实做了相反的事,我……算是会写代码了,但那时……我满脑子都是对自己编程能力的自我怀疑。而我应对的方式其实是学 3D 建模,因为那样,嗯,就把代码的抽象世界又桥接回你的代码实际创造出实体物品的地方。于是你得到反馈,得到确认,我的大脑还在工作。我能理解你的程序执行之间的联系。3D 打印机太好玩了。那大概是我买过的最好的东西。
Jonathan: 所以你有一台 3D 打印机,你设计东西然后打印出来。我是说那个键盘,我是说你还,你在这个键盘上做了更多的事吗,还是说这是你想进一步推进、也许稍微推出去一点的东西,因为我是说那是我第一件,那是我第一次听说单手键盘。说实话我从没想过,但我突然能看出,对于这样的东西可能有巨大的需求。
Bobbi: 当我学着,第一次真正学编程的时候,那是在我出事故之后,因为你知道,失去一只手促使我,嗯,需要用大脑,或者说用头脑而不是身体来做事情。而且,但是,你知道,一开始我得问自己一个问题,我还能不能编程,因为我不会打字?所以这是不是只是个疯狂的想法,我其实做不到?嗯,我一个学计算机科学的朋友告诉我,是有办法的。于是我去查了查,有一种,叫 Maltron 键盘。它是 70 年代做出来的,很酷,但贵得要命。贵到让人望而却步,这很让人难过,因为,嗯,它遥不可及。于是我意识到,如果我想要一个单手键盘,我就得自己做一个。于是我找那个应用,结果发现有一个按钮,你可以用它戳一下,让它到甚至一个合理的页面。这就是你拿这个产品做的事,它立刻非常有用,但为此你需要应用里的应用。然后那个应用就消失了。于是我最后加入了,嗯,为了做到那一步,我不得不往 3D 打印机和所有工具之类的东西里投了不少钱。所以整件事讽刺的地方在于,我最后花在做一个廉价版本上的钱,比我直接买一个 Maltron 还多。为了让它说得过去,我想也许我可以把它变成一门生意之类的,因为这真的让我很不舒服,他们收那么多钱,而最能用上它的人却用不起,根本没有选择。所以我想,你知道,也许这里真的有市场空白,也许是个可以填补的机会。而且,你知道,也许,也许甚至有一种我们根本没想到的单手打字市场,你知道,如果我们把价格门槛降得足够低,比如说,可能会有很多单手打字的忍者,好奇……
Jonathan: 我不这么认为。
Bobbi: 有很多你能想象到的处境,比如你受了伤,又需要保持生产力。
Jonathan: 这很有意思。嗯,我几周前和 DJ 聊过,他想要捍卫或者说誓死坚持的整个……他很显然非常推崇的一件事就是无障碍。我以前从没想过,因为就连我妻子,比如,或者我自己抱着孩子的时候,一只胳膊就废了。而你还是得时不时用那只手做点事。这只是众多例子中的一个。如果你需要……你受伤了怎么办。那似乎也是这个难题的一大块,很有意思。我不明白为什么它们会贵到让人望而却步。也许我天真,但它只有普通键盘一半大。
Bobbi: 我很想直接说这是剥削。如果是人们的保险来报销,那基本就是个敲竹杠。实际原因是,它……你应该看看这东西的照片。我们应该……发个链接给我,我也把它放进节目笔记里。对,我们应该把它放进节目笔记里,因为它看起来真的很酷,而且真的相当超前,因为现在有一整股人体工学机械键盘的热潮。它看起来像颗球。它看起来像一座疯狂的 3D 雕塑,可以摆在你的桌上,因为它是球形的。所以那大概就是它贵的原因。
Jonathan: 发个链接给我,我也把它放进节目笔记里。
Bobbi: 是啊,所以他们其实得手动焊接所有的轴。我的意思是,这听起来也许没什么大不了,但当我真的得焊的时候,这是 64 个轴,也就是 128 个连接点。
Jonathan: 嗯,我是说,如果你焊过麦克风线,焊接,或者说焊接,随便你怎么念,绝不是个快活儿。
Bobbi: 我一天能做一把键盘,但焊线一把键盘还是挺多活儿的。
Jonathan: 挺有意思。
Bobbi: 我其实正在和一位医疗设备专家聊。现在有一些讨论,想看看能不能找到一些资源来推广这个东西。
Jonathan: 嗯,不试怎么知道。所以这绝对值得探索。那 Bobbi,这算是把我们带回了一整圈,我想跟你聊一点 Exercism,问问你是怎么发现它的,怎么参与进来的,以及在那方面接下来有什么打算。好啊,来吧。
Bobbi: 是啊,嗯,我开始管自己叫 Exercism 的孩子。我其实都没想过这听起来多好笑,但是啊,因为它其实构成了我编程经验的大部分。嗯,不只是编程,还有在团队里工作。所以,是啊,从我当时的位置看,我没有教育背景,不是计算机科学的。我也没有行业经验。所以真正唯一的出路就是建立一个扎实的项目作品集。而给开源做贡献是所有人一直都在建议的事。我怎么才能迈进门槛,开始写软件?那问题就来了,嗯,哪个开源?所以我人生第一个 GitHub pull request 就是在 Exercism 网站上把自己加为导师。因为,嗯,说实话,当时我根本没资格当导师,因为我只是个学生。我完成了 Clojure 学习路径。然后我的导师说,哦,太好了,看起来你把所有的练习都做完了。他发给我一个链接,让我考虑当导师。我当时就想,天哪。我能做这个?说真的,这几乎有点危险。我不想给人们这种建议,把他们都带坏了。责任非常大。有人跟我说过,你知道,如果你是那种会为年轻人操心的人,如果你能赤手空拳……年轻人。别那样感觉。恐惧就是从这儿来的。
Jonathan: 责任非常大。
Bobbi: 那大概说明你的心态正适合教别人。如果你会认真确保自己教的东西是对的。我从最简单的练习开始,找出所有不同的解法。我记得我导师跟我说的话,然后就开始看学生的答案,说,嘿……你知道,你可以这样做,而不是那样,然后……你知道,我开始指导其他练习。那真的很棒,尤其是新冠来袭的时候。我当时那么孤立。很痛苦。而你知道,Exercism 在那个时候几乎救了我的命。哇。那是件大事。能坐在房间里,你知道,我们在隔离,还能真正帮别人学习。那是当时最好的事。太酷了。
Jonathan: 那你,抱歉 Bobbi,我刚想到一个后续问题,但我完全忘了,所以我让你继续讲,看谁先想起来我要说什么。
Bobbi: 所以说,那,我们发布了 V3,那真是太不可思议了,因为,你知道,我从没见过这么多人一起协作、构建这么大东西的过程。而那个时候,我不是唯一一个 Clojure 维护者,事情怎么变成那样的,其实有点偶然。当时有几个,我只是其中几个之一,你知道,人们有兴趣,但……我处在一个独特的位置,因为我迫切需要这些经验。我一路都在学所有东西。我其实是那个最能从中获益的人。从课程设计到把工具组装起来,比如测试运行器之类的。我突然发现自己成了唯一剩下的人。所以有点出于必要,如果我们要把这条学习路径做上线,而我以前从没写过测试运行器,那东西到底是干什么的?我不知道。我就边做边搞明白了。
Jonathan: 太棒了。
Bobbi: 其实我没把它做上线。我们发布了 v3,之后我还花了大概一周,因为我当时没有概念这东西实际上会怎么运作。我得看到它跑起来,才说,哦,原来是这样……我以为那只是……我以为我们只是写了一堆 markdown 文件。
Jonathan: 太迷人了。我想我之前那个问题,我现在想起来了,是你前几天在我们一次社区通话里说,你意识到其实教学是真正驱动你的事情之一。而你自己以前并没有真正意识到。所以我想也许把它作为我们今天最后一段来聊聊会不错。跟我讲讲吧。然后我们再看之后怎么样。不过是啊,展开说说。你说的那句话真的很有意思。
Bobbi: 嗯,你知道,教学是……我唯一觉得值得做的事。哦等等,不对,那不是,那听起来很消极,但我可以正面地说,教学是我觉得最有价值的一件事。一直以来,我多少以为我学编程是为了能给公司之类的写代码。但实际发生的是,我爱上了学编程的过程。我几乎像是从头一遍又一遍地经历这个过程,试着……从所有可能的角度去攻克它,尽量用各种错误的方式去学它。这真的很重要,因为你在教学时,学生一定会误解东西。所以老师不仅要准备好正确答案,还要准备好你能想到的各种错误答案,并且准备好应对你根本想象不到的误解方式。
Jonathan: 这很有意思,因为我觉得这是相当大的一个领悟。又一次,它像是那种重要的时刻,好吧,就是这种清晰,关于你在哪里找到价值,以及从内心层面是什么驱动你。我觉得特别酷的是,Exercism 似乎把你刚描述的所有这些不同方面都结合起来了,关于教学和帮助他人,解决问题的创造性一面,以及从不同角度攻克一个问题,全都揉进了某种东西里,让你对一切都是怎么拼在一起的有了更大的图景。对我来说,Bobbi,跟你聊天真的很酷,因为我意识到你可以从那么多不同的小角度切入一个问题。我也是个音乐人。那是我的背景。我在一家唱片公司工作。我弹吉他,也随便玩玩钢琴,还打过一点鼓,也做过录音之类的。我惊讶于编程和开发与音乐之间的交叉。我觉得这很酷,因为我和越多音乐人聊过,就越意识到他们其实能成为很出色的开发者,因为他们有那种共情的一面。不是说没有音乐背景的人就不共情,而是更多的,他们有能力把抽象的感受和情绪转化为音乐的方式,或者说真正把它记谱下来,我想这正是我意识到如此关键的地方。我想谢谢你分享这些,谢谢你在自己的故事和背景上如此坦诚。感觉我们可以一直聊到你的凌晨、我的傍晚。Bobbi,我只想谢谢你的时间,谢谢你为 Exercism 所做的一切贡献,也谢谢你的坦率和愿意参与,愿意加入这样一段和来自世界各地的人一起在团队中合作的旅程。谢谢你,非常期待在某个社区通话里见到你。我们现在就把这次对话收尾,我稍后再跟你联系,但我只想谢谢你今天,2022 年 9 月 13 日,抽出时间。谢谢你,Bobbi。我们会把所有笔记和节目笔记放在描述里给大家看。我在想着你的键盘,还有什么?也门那些东西,所有那些你分享的信息。非常谢谢你。
Bobbi: 是啊,多谢 Jonathan,这次很棒。
倾听、学习,并从我们的社区成员那里获得启发。