返回社群

戰勝癱瘓,列印單手鍵盤

當你以為一扇敞開的門突然在你面前關上時,會是什麼感覺?Bobbi 克服嚴重削弱身心的傷勢,繼續他程式設計之路的故事,真的很了不起!

在 Youtube 上觀看
長度 01小時 04分鐘

Jonathan:嗨,大家好。我叫 Jonathan。我和 Bobbi Towers 一起主持一檔 podcast。Bobbi 是我們 Exercism 社群的一員。今天很榮幸能請到他。我人目前在南非的開普敦,某種意義上來說是世界的盡頭。Bobbi,你現在在哪裡?

Bobbi:我在奧勒岡州的波特蘭,這是我的榮幸。通常要做這種事,你得有名或是超級成功之類的,所以我覺得我好像直接跳過了好多關。

Jonathan:嗯,很開心你能來。我知道你在社群裡對 Exercism 貢獻很多。據我所知你也有做一些維護的工作,這部分你等等可以再稍微詳細講一下。但我們真的很開心你能來,也正好趁這機會讓你分享一下你在科技領域的歷程,還有你喜歡科技的哪些地方之類的。所以,不如你就先跟我們聊聊你的背景、你的故事吧。我很想,我們會很想稍微深入了解一下,之後也許可以再聊得更技術一點。

Bobbi:好啊,我是在紐約州中部的農場長大的。不過我們沒養動物之類的。我爸算是個原始主義者。他經營一間公司,專門為伐木業製作一人用和兩人用的橫切鋸,就是電鋸出現之前他們用的那種。但你知道,這就接上科技了,因為他也是很早就開始用電腦的人。他有一台原版的,嗯,其實是原版 IBM PC 的複製品。那是用來做他自家生意的工作,像是資料庫管理和桌上排版,好把產品目錄印出來。所以這台東西就傳到我手上了。它是在 1981 年推出的,正好也是我「推出」的同一年。我們還有一台最早期的消費級文字轉語音裝置。它叫 speech thing。那是一個小小的玩意,可以接上電腦的並列埠,然後它就會講話,全家人都會圍在這東西旁邊。那真是史上最神奇的東西了。

Jonathan:所以那就是你接觸,可以說是技術世界的開端,接下來就交給你繼續說。我只是對一件事很好奇……

Bobbi:然後,呃……對啊,你知道嗎?我真正想要的是一台任天堂,但他們……他們不准。他們希望我們到處跑、蓋堡壘,像正常的農場小孩一樣跟對街的乳牛玩。想當然耳,還得砍砍樹吧。

Jonathan:想必也得用雙手鋸或雙人鋸來砍樹吧。

Bobbi:

Jonathan:請說。

Bobbi:對啊,對啊。總之,我們家嚴格規定不准玩電動,我一直搞不懂為什麼。但後來,我所有朋友都有酷玩具可以玩,我超難過的。所以我們就折衷,選了電腦。某方面來說我得感謝這件事,因為它差不多把我變成了一個一心想當駭客的人,而不是一個花大把時間消費媒體的人。我們得自己找樂子。

Jonathan:這是個……

Bobbi:所以呢……這台語音裝置裡有一個會講話的二十一點遊戲,是用 BASIC 寫的,那是第一種真正讓人容易上手的程式語言。是 BASIC 嗎?你說的是哪個?BASIC。對,就是 beginner's all-purpose symbolic instructional code。

Jonathan:你會說它很……basic 嗎?經典。不錯。好,好。所以就是讓大家容易上手。

Bobbi:對啊,就是那樣。那還是我們會照著雜誌把電腦程式打進去的年代。然後它跑不起來,因為你的 BASIC 版本跟他們用的稍微有點不一樣。這大概很重要吧。

Jonathan:所以版本問題就把整個程式搞砸了。

Bobbi:那時候沒有網路,所以當年也沒有 Exercism。這可是件大事。當你遇到問題時,不像今天你可以 Google 一下,某個地方早就有人回答過了。你是真的卡住了。在那個年代學寫程式是很有挑戰性的。老實說,接下來大概有十五年左右,我算是被音樂分了心。

Jonathan:你說被分了心,是什麼意思?發生了什麼事?

Bobbi:喔,其實我童年大半都在玩錄音帶。而這就是我後來瘋狂著迷於擷取、保存媒體,然後再事後加以創作的根本原因,那其實是一種時光旅行。

Jonathan:有意思,我從來沒想過把音樂錄下來是一種時光旅行,這真的很酷。我是說,我記得我有一台,我想是四軌的。我們有那種舊式的錄音帶機器,如果你在對的時機按下暫停和播放,再同時按下錄音鍵,要弄對其實挺機械式的。但我記得我可以這樣,喔哇,我真的可以錄下東西,然後從另一台錄音帶機播回來。所以我同時有兩捲帶子。我錄到其中一捲,然後想辦法把錄音弄到另一捲上,再來回過帶。你提到被音樂分了心,這挺好笑的,因為我完全可以體會。但這一切都是從錄音帶機開始的,還有就是能琢磨出東西的時間點,這本身就是個大問題。我覺得現在我們有這麼多工具可用,好像有點作弊了。不過再跟我多聊聊那些錄音帶機,還有那是怎麼,它把你帶向了哪裡。

Jonathan:對。

Bobbi:嗯,你知道,我有一台 Fisher-Price 卡帶錄音機,我會,我記得我會假裝自己在做廣播節目,放放音樂,錄錄自己,你知道,就是胡鬧、講講話,其實我到現在還在這樣做。然後還有 VHS 錄影帶,我甚至能做出很粗糙的定格動畫,因為我有一台有快照功能的攝影機。它拍的,不是一格,其實是四分之一秒的快照,這樣剛好足以用一種很滑稽的方式模擬出動態。

Jonathan:太棒了。所以,你在農場長大,後來因為一個折衷方案,最終把重心放在一台舊的 IBM 電腦上,因為你實際上想要的是一台任天堂,而那並沒有成真。所以其實我覺得你父母可能做了件好事,因為他們讓你變得愛追根究柢、充滿好奇,某方面可以這麼說。也許當時不覺得是好事吧。

Bobbi:對啊,從那時起我的人生夢想其實就是寫出我自己的瑪利歐版本。好。而且,你知道,你有沒有想過,如果你能回到過去跟自己說句話,會說什麼?這絕對就是我的答案。我會回到那個只是在想辦法重現《超級瑪利歐兄弟》的小孩身邊,然後告訴那個小孩:你必須學數學。

Jonathan:好。

Jonathan:謝謝。

Bobbi:而且,你知道,我可能真的得把這件事當成我死也要堅持的點。好。嗯,不過也許我們其實可以……我……

Jonathan:嗯,不過也許我們其實可以……我自己也有一點。所以,是什麼讓你對數學有了這樣的體悟,特別是對你而言?

Bobbi:嗯,你知道,我其實從來沒真正用過數學,即使我是個音樂人。我以前常聽到人家講音樂和數學之間的關聯,我都會笑他們。不,那不是數學啦,傻瓜,那是音樂。搖滾樂。但直到我,嗯,三十幾歲,試著做第一個程式的時候,這裡我們一下跳了好幾年,當我開始真正認真學寫程式的時候,我第一個說想做的東西是某種音訊、音樂合成器、音樂編曲器。做到某個程度,我必須根據節奏、每分鐘的拍數來計算音符的長度。而那,你知道,除了像把食譜份量放大縮小這類小事之外,這其實是我第一次真正用到數學,就是為了擴充我的音樂編曲器,讓它能在每分鐘 60 拍以外的速度播放,你知道,那樣的話四分音符剛好就是四分之一秒之類的。

Jonathan:所以算你幸運,也許能突破每秒 60 拍,讓你更能享受音樂。想像一下,如果整個音樂世界都卡在每分鐘 60 拍。是啊。

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:我洗得非常好,所以我會把所有盤子洗完,這樣就能去幫那個做披薩的人。我就是這樣學會做披薩的。但最好玩的是他們帶我學怎麼做麵團。天啊,我超愛的。我以前在家裡老是把東西混在一起,然後惹上麻煩。就是揉麵團這件事特別吸引我。所以我跟我老闆說,這就像培樂多。它讓我想起培樂多。他看著我,說:嗯,對啊,你以為這是幹麼的,就只是玩玩遊戲嗎?這是在教小孩做生意的。所以沒錯,那就是培樂多 Fun Factory。它是用來教小孩烘焙業的一個小把戲。

Jonathan:真的嗎?那是,那是,那只是個童話故事,還是說真的,培樂多就是那種讓小孩……

Bobbi:柏拉圖,就像柏拉圖和亞里斯多德。對,這是柏拉圖的理論。

Jonathan:所以那其實算是個理論。我是說,這太好笑了,因為我有個 18 個月大的小孩,她什麼都往嘴裡塞,培樂多在烤之前就被吃掉了,然後那又是另一番全新的體驗。哇,這真的很酷。好,那繼續說。所以你現在在這間披薩店,你把洗盤子這件事做到了完美。你是洗碗專家。然後你接著進入下一階段,開始做麵團、甩麵團。你是在手上甩的嗎?你有辦法那樣學會嗎?

Bobbi:對啊,真的很好玩。後來我其實在一輛校車上打造了一間披薩廚房,開著它環遊全國,免費送披薩。麵團什麼的都是在車上做的。我們有一台小小的古董烤爐。所以那是 1966 年嗎?

Jonathan:還是只有你一個人?

Bobbi:披薩巴士上還有三個朋友跟我一起。我們上了報紙頭版。太驚人了。我得把照片寄給你,因為……我們一定要放進節目筆記裡。

Jonathan:我們一定會放進節目筆記裡,因為那……對。我感覺,對,所以那,抱歉 Bobbi,我剛打斷了你。繼續,繼續說。我剛有個想法,我……

Bobbi:所以對,那其實就是我消失的那幾年。我高中輟學,然後就只是到處旅行。我就只是到處遊蕩。那時候我做了披薩廚房這件事。我帶著我學會的那一門手藝,決定,我拿了最後一張薪水,跟我老闆說我要一袋 50 磅的麵粉,還有六罐 10 號的番茄醬,然後……

Jonathan:然後你就出發了。

Bobbi:我就走了,帶著披薩一起。

Jonathan:對,那 Bobbi,就差不多在那個高中時期,你說你輟學了。那是什麼感覺,或者說是什麼讓你覺得,你知道嗎,這對我來說行不通?

Bobbi:啊,嗯,你知道,呃……我最近才發現,我是說就在過去幾個月,我很確定我有自閉症。

Jonathan:那對你來說意味著什麼,又怎麼影響你的生活?

Bobbi:嗯,其實它讓我的生命變得說得通,要是我早知道就好了。我以前完全不知道自閉症是什麼,儘管我們學校有個這樣的同學,但他非常……我們不喜歡用「高功能」「低功能」這種詞,因為每個人都是有功能的。所以我們是依據需求來分類。你可能有多一些的額外需求,或少一些的額外需求。就那一個例子,他叫 Joey,他很難互動。他有一台小電腦,他會在上面打字。但就那一個例子,直到幾年前,我開始真正和一些自閉症者交朋友,才意識到那個……我甚至不想用「狀況」這個詞。它比較像是一種存在的方式。而我們有點……我在他們身上認出了自己的一些部分。

Jonathan:好,所以那可以說應該是相當大的解脫吧。我是說,那是怎麼……所以這幾乎像是你一直背著某個你其實不知道自己背著的東西,像一個掛在你身上的大袋子,然後你認出了它,如果我說的話聽起來完全荒謬,請務必告訴我,但感覺有點像是你一直背著這東西,突然之間你意識到了它,然後幾乎就像是,好吧,一直是這麼回事,那是什麼感覺,而它又如何讓你,或幫助你能夠走進,或……

Bobbi:這就像我在重組自己的硬碟,把這輩子的所有記憶一一回想起來,然後想著,喔,原來……原來我會那樣想是因為這個。這是個持續不斷的過程,其實幾乎像是一次重生。

Jonathan:那真的很酷。太棒了。我很高興這件事能浮上檯面,可以這麼說,而你也多少能看清它是怎麼回事。那接下來,好吧,所以你現在開著車到處帶著披薩、賣披薩,而你高中也念完了,你從高中輟學是因為,你知道,你說過,那對你當時的狀態來說行不通。然後你去了大學,對,在德州。那怎麼會是德州?因為離那裡挺遠的。

Bobbi:嗯,不對,其實是這樣,我撞了那輛校車。那是我人生中頭幾件重大的悲劇之一。我有好一陣子過得挺辛苦,因為那之後我就只是搭便車。但我找到了,我在奧勒岡州一個叫 Ashland 的小鎮安頓下來。我找到一間猶太會堂,一個猶太社群,他們讓我,其實我一開始是去當志工,就是教小孩音樂。這太不可思議了。不只如此,我們有個合唱團,於是我開始接受我第一段正式的聲樂訓練。好。我也學會了怎麼譜寫和改編合唱音樂。嗯,那是一項根源於聖經、用來吟誦經文的音樂傳統,希伯來文文本裡其實含有,你可以把它看成某種升級版的標點符號,但世界各地不同地區各自口耳相傳的不同音樂傳統,創造出他們自己的旋律來唱這些經節。

Jonathan:我在大學時學過一點希伯來文。我修了一年的希伯來文。那是我修過最迷人的課程之一。老實說,它完全超出了我的理解範圍。大概有一半的時間我根本搞不清楚在幹麼,但我確實記得他們講了很多關於母音標記的事,我想我這樣說沒錯,也就是母音的音如何對應到子音,然後不同文本之間有差異,它們有不同,嗯,有相同的母音標記,但你可以根據你能解讀或看見的母音標記,推斷出非常非常不同的意思。可以說,那對你怎麼讀經文有相當大的影響。所以我就插句話,那真的很有意思。那你現在講到文本的音樂面向,繼續說。

Bobbi:喔,真的嗎?對啊,而且你知道,音樂有一種非凡的力量能幫助我們學習、幫助我們記憶。但音樂不只是音樂。它是一種句法結構,讓你藉此知道文本該怎麼解讀,你知道,哪裡是分隔經節兩個半句的分號。所以那會有個小小的音樂裝飾音,是整節經文裡最強的停頓。然後還有另一個,類似逗號,以及不同強度的逗號。所以我就,這讓我大開眼界,竟然有一套原始的音樂記譜系統就內建在文本裡。於是我想要盡可能多學不同的旋律。我其實還開了一門課。這其實是我第一次在猶太會堂教成人。我開了一門課,教人怎麼依著妥拉卷軸吟誦摩西五經。然後先知書有不一樣的調子。接著真正深入的地方是,嗯,有妥拉、聖卷、先知書和聖卷,像詩篇、箴言和約伯記,它們是用比較詩意的方式寫成的,而在那些書卷裡,吟誦記號其實非常不同。我就想,這到底是什麼?這要怎麼唱?於是我其實 Google 了怎麼詠唱詩篇的經節。我找到了 Rav Natanyel Frankenthal 的網站,他在以色列的耶路撒冷,在一所叫 M'Khon Meir 的猶太經學院裡教書。

Jonathan:好,嗯。

Bobbi:所以我就搬過去了。在以色列?在耶路撒冷。所以你去了?對。哇。對,我搬到以色列,本來打算,你知道,我在做拉比的研習,但那同時也是,我是說,那是我名義上在做的事,但我實際上做的,是純粹為了消遣而研究民族音樂學。

Jonathan:哇。那 Bobbi,你有,你是猶太人嗎?那是你的家庭背景嗎?就是,那是,所以為什麼是猶太會堂?還是只是你剛好偶然遇到一個社群?或者是有某種來自猶太……的背景或脈絡?

Bobbi:對啊,嗯,我們是改革派的。嗯,不是,有改革派猶太教,然後有保守派,或者其實不是這樣叫的。總之。

Jonathan:謝謝。

Bobbi:我的祖父母從俄羅斯來到這裡,就決定自己訂規矩。所以吃龍蝦和蝦子沒關係,但豬肉不行。其實那有點像是形式上的。

Jonathan:感謝收看!

Bobbi:那時我不了解它,我不喜歡它,嗯,其實我私下很享受那些音樂。那就是,你知道,那種感染你的非凡力量。我覺得其實在基因層面上有什麼在運作,我們在某種精神層面上被設定成會用歌曲來試圖接觸可能存在於外的什麼。

Jonathan:嗯,那是振動,不是嗎?是頻率。如果你想想我們也是由水構成的,而水對聲波的反應非常強烈。甚至連療癒也是,你去看物理治療師,他們把那個小小的聲波儀器放在你腿上,用聲音把氣結打散。外面有一整個資訊的領域,是我們幾乎還沒探索過的,但它絕對是關鍵。不過我只是覺得音樂和科技之間的關係很迷人,因為大家都說,喔,它們是兩個極端。音樂,藝術的、創造性的、流動的,但其實它底下是由種種模式支撐的,一致的,怎麼說,就像在鋼琴上,你有你的音程,諸如此類。如果你真的、真的把它化約到最根本,它其實非常數學。所以我只是覺得很著迷,你最後落腳在耶路撒冷這樣的情境。我是說,耶路撒冷,對吧?還是只是以色列?你在耶路撒冷的哪裡?

Bobbi:對,耶路撒冷。我在耶路撒冷和采法特研習,采法特是卡巴拉的發源地。

Jonathan:好,有意思。

Bobbi:對,那真的很有意思。

Jonathan:哇。好,我沒想到,我沒,我沒料到你可能在以色列住過。那真的很酷,很有意思。所以你在那裡花時間研究民族音樂性。你會怎麼定義民族音樂性?

Bobbi:是民族音樂學,對。我愛上了葉門的傳統,愛到我想要把所有的習俗都採納過來。他們保存了一種非常獨特的猶太教形式,包括,嗯,保存得最仔細的希伯來語方言,它其實聽起來還是很像阿拉伯語。所以我有機會學到很多不同的聲音。哇,那太棒了。而,對,所以,他們有,嗯,那是猶太-阿拉伯語。那是一張非常有趣的網,因為我同時也非常投入一種叫卡瓦力的蘇菲音樂。蘇菲是……

Jonathan:那是伊斯蘭的神秘面向嗎?我這樣說對嗎?

Bobbi:對,對。而這是我聽過最不可思議的音樂,就是卡瓦力。它就,他們用簧風琴,那是一種很棒的樂器。有點像手風琴。它是自由簧樂器,用來吟唱。

Jonathan:就像那種持續低音、嗡嗡作響的聲音。

Bobbi:對,對。所以那是巴基斯坦的傳統。然後我發現了阿富汗猶太人的古老音樂。它讓我大開眼界,因為他們也用簧風琴。而且聽起來就像卡瓦力。於是我創作了一個叫 Kabbalah Qawwali 的企劃,把 Yeminiyat 的曲調拿來,試著用卡瓦力的風格來做。那完全是狂野的。

Jonathan:這些你都是在家裡用筆電加上簧風琴做的嗎,還是你只是,你是怎麼錄音、怎麼完成這些的?

Bobbi:嗯,其實我做了一個很大膽的決定,搬到以色列,卻沒帶任何樂器,我還想過那要怎麼辦。我以前從沒有過身邊沒有樂器的時候。我要怎麼表達自己?所以其實,就是那時候,我非常非常投入地寫起樂譜。在電腦上用音樂,我當時用的是,你知道,LilyPond 軟體,它其實用的是 LaTeX 排版語言。所以那其實又把寫程式帶回來了。它讓我想起以前做那些早期網頁。其實有點像 HTML,只不過你標記的不是文字和圖片之類的,而是譜表上的音符。

Jonathan:所以聽起來,一直不斷發生的事情是,你走進音樂,最後又繞了一整圈回到技術性的寫程式,幾乎可以說是在「抄寫」。

Jonathan:註解、記錄,大概就是,看起來那似乎是一直不斷發生的過程。那我們就來談談技術這一面吧,因為我想我們可以稍微聊一下。所以你開始學著有點像抄寫,把所有那些東西放到紙上,或者可以說是比喻上,不然你會怎麼說?數位地,用數位方式抄寫東西。然後你開始學某個特定的語言了嗎?我知道因為你喜歡 Clojure。是 Clojure 嗎?你都怎麼念?Clojure 是一種程式語言?Clojure,對。你是怎麼接觸到它的,而你在這個時間點在技術旅程上又走到哪裡了?

Bobbi:在 Stack Overflow 的調查裡,它一直相當穩定地名列最高薪技術的第一名。我必須承認,那就是它第一次真正吸引我注意的時候。我在圖表上看到它,然後說,嗯,看起來那好像就是你想要的。

Jonathan:沒有……

Bobbi:如果你想賺大錢,那就是你想學的。但後來我發現,它之所以是最高薪的語言,是因為它剛好會吸引非常有經驗的開發者。Clojure 程式設計師的平均經驗是十年。

Jonathan:好,哇,所以不是因為它困難或它的應用,而是這些資深開發者做你們那種平庸的語言會覺得無聊,還是,我很不想說「平庸」,這大概會招來一堆批評,但你知道我什麼意思,比較熱門的語言,然後他們某種程度上需要新的挑戰,於是就變成是這種人最後投入其中,還是?對,跟我聊一點吧。我是說,我很有興趣了解。

Bobbi:嗯,它其實是一種極其容易學的語言。尤其如果你是像我這樣有 ADHD 思維的人,它有一種很奇妙、有時被稱為 REPL 驅動開發或互動式程式設計的特性,你可以,不必把你的程式想成一個只是被執行的文字檔,而是可以把它想成一小塊一小塊的東西。所以你就,你有一個連接上你正在執行的程式的文字編輯器。你把游標放在某段程式碼上,按個快捷鍵,它就會對那個形式求值、編譯,然後送進程式裡。

Jonathan:所以它幾乎是一種即時回饋型的語言,也就是說你可以看到自己在打造的東西一邊疊代、一邊成長。而那可能也是它有趣的一部分。

Bobbi:對,對,我的暗黑祕密就是,我其實用它,是因為我很難……在腦中一步步推演一堆東西、還得做脈絡切換,而 Clojure 其實讓我能搞懂每一段程式碼在做什麼。

Jonathan:那你也能看見它如何影響其他區塊嗎?所以這幾乎像是當你專注在小片段上時,同時也能掌握你在打造的東西的全貌。所以它幾乎讓兩種思維模式同時運作,一方面是對你在做的事有高層次的概觀,同時又留意那些小碎片、小磚塊,可以說,構成它的那些小東西。這是它運作方式的貼切寫照嗎?你為什麼喜歡它,或從心智的角度來看它為什麼對你行得通?

Bobbi:對,對,像今年年初,我在從 COVID 中復原。我到現在還在復原。其實,那有點算是個重大的人生事件,把我心理健康的問題掀到檯面上,還把所有事情都放大了。我意識到,嗯,這就像我得重新教自己怎麼思考,因為,你知道,我們,這就像我有一棟由因應機制搭成的紙牌屋,然後它就,突然之間它們再也不管用了。

Jonathan:那你現在過得怎麼樣?你自己感覺如何?度過這過去兩年,我會說那在心理上是個巨大的挑戰。要面對的事真的很不一樣。你還好嗎?

Bobbi:就,就,就,對,其實我,我剛才在寫筆記的時候,你知道,就是為了讓自己的腦袋進入狀況來做這件事,最打動我的就是這過去兩年,還有發生了那麼多事。

Jonathan:所以有哪些關鍵的,你說你談到你有點像紙牌屋那件事。像是那是怎麼,這可能是個相當私人的點和問題,就是那是怎麼發生的,事情是怎麼演變的,那些因應方式都怎麼樣了,紙牌屋崩塌是什麼樣子,然後,你從那段時期走出來時,心裡想著我想要專注在、我想要優先處理、我想要……

Bobbi:嗯,我做出了一個單手鍵盤,就在這裡。就是這個!哇!對,所以這是……我其實是用程式碼做出來的。我的天。CAD 軟體。還有一個能把 Clojure 程式碼編譯成 OpenSCAD 的 Clojure 函式庫。所以我開始玩 3D 列印,因為我有一隻手不能動。而這是 2015 年發生的一場意外造成的。

Jonathan:等等,你發生過披薩車的意外,那是個重要的時刻,然後在 2015 年又發生另一場意外,也導致你有一隻手無法如你所願地正常運作。

Bobbi:對,所以這又是另一個真正改變一切的重大人生事件,因為,嗯,它把我帶上一條,我喜歡這樣想,它讓我從一個偏向身體導向的存在,轉變成比較偏向心智導向的存在。

Jonathan:哇。那很巨大,Bobbi。我是說,那太重大了。所以,那是第三次,那大概花了三到四年才慢慢轉變,然後 COVID 就來了,對吧?所以你才剛從一次重大的心智轉變、身體轉變中走出來,然後疫情就爆發了,所以我能理解那會是多麼不容易的一段經歷。

Bobbi:對,就像我們稍早談到的,關於,你知道,那個連結,你問我,我是怎麼在像音樂這種直覺性的藝術和程式碼之間搭起橋樑的。我當時是那樣做的,你知道,用音樂。然後,所以在這個時候,我其實做了反過來的事,我……算是懂得怎麼寫程式了,但後來……我滿腦子都是對自己寫程式能力的自我懷疑。而我應對的方式,其實是去學 3D 建模,因為那樣就是,嗯,從抽象的程式碼世界,搭回你的程式碼實際創造出一個實體物件的地方。於是你就得到回饋,得到確認,證明我的腦袋在運作。我可以理解你程式執行的結果之間的連結。3D 印表機真的太好玩了。那大概是我買過最棒的東西。

Jonathan:所以你有一台 3D 印表機,你設計東西然後印出來。我是說那個鍵盤,我是說你,你有對那個鍵盤做進一步的東西嗎,還是那是你想要更進一步發展、也許稍微推出到外面的東西,因為我是說那是我第一件,那是我第一次聽說單手鍵盤。老實說我從來沒想過,但我突然能看出,那樣的東西其實可能有非常、非常龐大的需求。

Bobbi:當我開始學,第一次真正認真學寫程式的時候,這是,這是在我意外之後,因為你知道,失去一隻手促成了我,嗯,需要改用我的腦,或者該說用我的心智,而不是用身體來做事。但,你知道,我一開始得問自己這個問題,我還能有辦法寫程式嗎,因為我不能打字?所以這會不會只是一個我其實根本做不到的瘋狂念頭?嗯,我有個朋友是電腦科學家,他跟我說有幾個選擇。所以我研究了一下,有一個。它叫 Maltron 鍵盤。它是 70 年代做出來的,真的很酷,但它們貴得要命。貴到讓人卻步,這真的很讓人難過,因為,嗯,那是我負擔不起的。於是我意識到,如果我想要一個單手鍵盤,我就得自己做一個。所以我去找了那個 app,結果有個按鈕你可以用它戳出一個還算合理的頁面。那就是你對這個產品做的事,它立刻非常有用,但你得靠 app 裡的 app 才能做到。然後那個 app 就消失了。所以我最後加入了,嗯,為了做到這件事,我得投入相當多的錢買 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:那大概就意味著,你的心態擺在對的地方,適合去教人。如果你會認真留意,確保自己教得正確。我一開始只從最簡單的練習著手,找出所有不同的解法。我記得我的導師跟我說過的話,就開始看學生的答案,然後說,嘿……你知道,你可以這樣做,而不是那樣,然後……你知道,我開始帶其他練習的導師。那真的很棒,尤其是 COVID 爆發的時候。我當時好孤立。那很痛苦。而,你知道,Exercism 幾乎可以說在那個時候救了我一命。哇。這是件大事。能夠坐在那個房間裡,你知道,我們被隔離,卻能夠真正幫助別人學習。那是當時最棒的事。那太酷了。

Jonathan:然後是,抱歉 Bobbi,我剛有個後續的問題,但我完全忘了,所以我讓你先繼續,看我想不想得起來本來要說什麼。

Bobbi:所以對,那是,我們推出了 V3,那太不可思議了,因為,你知道,我從沒真正見過這麼多人一起合作、打造出如此龐大東西的過程。而在那個時候,我並不是唯一的 Clojure 維護者,那件事怎麼發生的,其實有點是意外。當時有,我只是少數幾個人之一,你知道,大家有興趣,但……我處於一個獨特的位置,因為我極度需要那份經驗。我一路都在學所有東西。我才是那個真正能從做這件事裡獲益最多的人。從課程設計到把工具兜起來,像是測試執行器之類的。我突然發現,只剩下我一個人了。所以就有點是出於必要,如果我們要把這個學習軌道完成,而我以前從沒寫過測試執行器,那到底是在幹麼?我不知道。我就一邊做一邊摸索。

Jonathan:太棒了。

Bobbi:其實我沒能把它完成。我們推出了 v3,之後我還花了大約一個星期,因為我當時對那東西實際會怎麼運作沒有概念。我得看到它實際跑起來,然後說,喔,原來它是這樣……我以為那只是……我以為我們只是在寫一堆 Markdown 檔案。

Jonathan:太迷人了。而我想我剛想到的那個問題是,你前幾天在我們其中一場社群通話裡說過一句話,說你意識到,教人其實是真正驅動你的其中一件事。而你之前並沒有真正意識到這點。所以我想,也許把這個當作我們今天的最後一個段落來聊聊會不錯。就跟我稍微講講這個。之後我們再看看狀況如何。不過對,多說一點。你那句話真的很有意思。

Bobbi:嗯,你知道,教學是……差不多是唯一一件我覺得值得做的事。喔等等,不對,那,那聽起來真的很負面,但我可以用正面的方式表達,就是說教學是我覺得最有價值的活動。一直以來,我多少都以為我學寫程式,是為了能替某間公司之類的寫程式。但真正發生的是,我算是愛上了學寫程式的過程。我幾乎就像是,一遍又一遍地從頭經歷這個學習的過程,試著……盡可能從每個角度去攻克它,盡可能用各種錯誤的方式去學它。這真的很重要,因為當你在教人的時候,學生一定會誤解一些東西。所以老師不僅要準備好正確答案,還要準備好你能想到的盡可能多的錯誤答案,並且要準備好它會被以你根本想像不到的方式誤解。

Jonathan:那很有意思,因為我覺得那是一個相當重大的體悟。再一次,那似乎就是那種重要的時刻之一,好吧,就是那種對你在哪裡找到價值、以及從內在角度來看是什麼驅動你的清晰認識。我覺得很酷的是,Exercism 好像把你剛才描述的那麼多不同面向都結合在一起了,關於教學和幫助別人、解決問題的創造性面向、從不同角度來解決問題,全部揉合進某個東西裡,讓你對一切如何拼在一起有更宏觀的認識。對我來說,Bobbi,光是可以跟你聊,就已經非常棒了,因為我意識到,你可以從好多不同的小角度去切入一個問題。我也是個音樂人。那是我的背景。我在一家唱片公司工作。我彈吉他,也加減玩玩鋼琴,還打過一點鼓,我做過錄音,諸如此類的事。我對寫程式和開發跟音樂之間的那種交叉、那種關聯感到驚奇。我覺得這真的很酷,因為我跟越多音樂人聊過,就越意識到他們其實是了不起的開發者,因為他們有那份同理心的一面。不是說沒有那種音樂背景的人就沒有同理心,而是說,他們更有能力把抽象的感受和情緒,實際轉譯成一種音樂性的方式,或是在記譜上的方式,而我覺得,我現在意識到這其實正是關鍵所在。我只想謝謝你分享這些、謝謝你這麼坦誠地談你的故事和背景。我覺得我們可以一路聊到你那邊的凌晨,聊到我這邊的下午。Bobbi,我只想謝謝你撥出時間,謝謝你對 Exercism 的所有貢獻,也謝謝你的坦率,願意投入,願意踏上這段和一群來自世界各地的人一起在同一團隊裡合作的旅程。謝謝你,也非常期待在某一場社群通話上見到你。我們現在要把這場對談收尾了,我等一下會再跟你聯繫,但我只想謝謝你今天撥出時間,在這 2022 年 9 月 13 日。謝謝你,Bobbi。我們會把所有筆記和節目筆記放進說明欄,讓大家看得到。我在想你那個鍵盤,還有什麼?葉門那些東西,所有這些,你分享的所有資訊。非常謝謝你。

Bobbi:對,非常謝謝你 Jonathan,這太棒了。

更多來自我們社群的故事

聆聽、學習,並從我們的社群成員身上獲得啟發。