返回社群

誤打誤撞成為程式設計師!

我們從沒想過,在 Exercism 上解練習題,對許多人來說竟然是一種療癒!透過引導而產生的人際互動,以及那份成就感,似乎有著強大的影響力,我們在最近與 Thelma 的對談中深入探討了這一點!

在 Youtube 上觀看
長度 34分鐘

Jonathan:大家好,非常歡迎收聽 Exercism 社群 podcast。我是 Jonathan,來自南非開普敦。現在是下午 5 點,我很榮幸邀請到 Thelma,就我所知她目前住在威斯康辛州。今天非常榮幸能訪問她,多了解一些她的故事,以及科技和她的故事如何交會。Thelma,希望你先簡單自我介紹一下,談談你怎麼走到今天這個位置,也許我們晚點可以再聊聊科技之類的話題。歡迎你。

Thelma:是的,先生。恐怕這一切都是誤打誤撞。我去了商學院,因為我不想解剖那個騙局。在商學院,我主修經濟。我不是那種會對事情特別感興趣的人,但顯然我表現得還不錯,我的教授們……覺得我應該去申請研究所。於是我進了布朗大學,主修經濟。幾乎是立刻,我就認識了我先生,6 週後我們就結婚了。6 週,哇。我先生是物理學家,對經濟學沒什麼敬意。所以……當時的頭號偶像 Milton Friedman,他把整套著作全攤了出來。我先生用一次聚會的時間把它推演出來,又在另一次聚會的時間把它整個推翻。我沒有續領我的獎學金,我先生對此不太高興。

Jonathan:是啊,我相信。

Thelma:在那之後,我就這樣飄蕩了一陣子。完全不知道要做什麼,我還會去旁聽一些數學課,而那些課其實難得不得了。

Jonathan:嗯。

Thelma:那時候我們已經搬到威斯康辛了。我先生正在寫一個很長的 Fortran 程式,配著一疊打孔卡片,他變得非常挫折,因為……他只要一交出程式,就得等上一整晚。在那個年代,要等一整晚才能拿到結果,而結果至少有一半的時候,是他把逗號放錯了位置。所以他拿到的不是空白的輸出,就是一堆垃圾。於是我就開始從他肩膀後面看,幫他把漏掉的逗號補上,還有那些拼錯的字,到後來我決定去修一門 4chan 的課。所以我修了一門 Fortran 的課,課程結束後,教授打電話給我說:「我要離開大學,開一家軟體顧問公司。你要不要來替我工作?」

Jonathan:哇。

Thelma:這就是我開始寫程式的開端,我最早學的就是 Fortran。他請我寫的第一個程式……是保齡球記帳程式,不是算分數,而是幫我老闆的個人保齡球聯盟記錄成績。後來那份工作裡我寫了不少程式。我女兒開始跟她朋友說,媽媽的工作是在殺牛,因為我寫的其中一個程式……是要計算該餵乳牛吃什麼,我拿到的是重量,得在各種穀物和其他東西之間做最低成本的分配,以滿足營養需求。另外還有總量的要求。要在滿足所有這些需求的前提下,把成本壓到最低。而這是在一台記憶體只有 48k 的機器上完成的。所以你可以想像,要寫一個做這種事的最低成本程式會是什麼樣子。有一天一位農夫打電話給我:「你叫我餵我的牛吃 10 磅的鹽。」顯然這樣滿足了所有的營養需求,於是它去找最便宜的總量來源,結果就是 10 磅的鹽。就是這樣。因為我當時能用的空間太小,我沒有……很多上限,各種東西的上限。我設了幾個,但不知怎麼的,鹽就是沒被設到。後來我又寫了一個硬體庫存程式,還有一些關於濕度的東西。我對那件事最記得的是,他們有一台 PDP 機器。好。我當時會帶著那種很大的 PVP 硬碟,從我住的地方搭公車到玉米磨坊。

Jonathan:好,還真重。

Thelma:最後他關掉了軟體部門,因為他開始做 Apple 的經銷商,而那比軟體好賺多了。

Jonathan:我相信。哇。所以你就是這樣走到……也許那算是初期階段。所以軟體部門結束、你被裁員之後呢?別擔心,別擔心,沒關係。

Thelma:我接到很多騷擾電話。

Jonathan:那一定一整天都很煩人。所以那時候,軟體顧問公司結束之後,你已經有下一份工作了嗎?還是你只是覺得,好,接下來會怎樣?

Thelma:我對確切的時間點有點模糊……。我只知道我以志工的身分去了醫學院。有位生理學教授拿了一份用 C 寫的程式給我,希望我把它翻成 FORTRAN。我就是這樣學會 C 的。

Jonathan:好。那你可以稍微跟我說說 Fortran 嗎?我個人對它不太熟。我還沒那麼懂技術,但我很想多了解一點 Fortran。

Thelma:我也不算特別懂技術。它是最早的……程式語言之一之類的。它有一些,我不知道。你得問我更具體一點的問題。

Jonathan:沒關係,完全不用擔心。我只是想大致了解一下,它在現有這麼多不同的語言裡大概落在什麼位置。不過這不是我的,技術這塊不是我的強項。完全沒問題,我們可以回到說故事上。我想那可能更合我的胃口,可以這麼說。回到剛才,所以你開始在這所醫學院當志工,過程中學會了 C。對,然後呢?

Thelma:對,然後我發現……之前在我先生任職物理學家的 UWM 負責 IT 系統的人,現在在醫學院管 IT,我跟她談了之後,就得到了一份替她做資料庫相關工作的工作。那大概是有史以來寫得最糟的資料庫,幸好我不記得它叫什麼名字了。我在那裡學了一點資料庫。但對我來說,在醫學院最棒的事,而這其實只是故事的一部分,技術方面的部分是,他們有個很棒的超大更衣室,讓我可以在騎完 9 英里腳踏車之後沖澡。

Jonathan:哇,所以你每天騎 9 英里過去,再騎 9 英里回來。

Thelma:謝謝。我從來沒有全職工作過。我對職涯沒興趣。我只是在自娛。沒關係。

Jonathan:對、對。那我稍微往回退一點,回到學生時期。你說你念的是經濟,而且幾乎可以說是誤打誤撞走上了經濟這條路。對。有沒有什麼原因讓你當時就這樣選擇?我的意思是,在學校你通常可以選,好,我要念英國文學或藝術之類的。另外還有明顯偏理科的那一邊,而經濟學或許可以說比較偏向理科那一邊。有什麼原因讓你被吸引過去嗎?還是只是覺得,喔,那時候看起來滿有趣的?

Thelma:對。我念的是商學院。我對商業沒興趣,對行銷也沒興趣。經濟學在那所學校裡算是比較菁英的選擇。這就是吸引了你的地方。

Jonathan:好,你說過你其實,職涯對你來說並不是重點。如果我說錯了請糾正我,我只是想把事情拼湊、歸納一下。聽起來你幾乎是誤打誤撞開始寫程式的,你說過從你先生肩膀後面看,把 C 翻成 Fortran,嗯,有沒有哪個時刻,天哪。

Thelma:我想這一定又是同一通電話。好,我正在試著接上。

Jonathan:抱歉。完全沒關係。有沒有哪個時刻,某件事對你突然通了,讓你覺得,其實我挺擅長的。這不只是嗜好或興趣。有沒有哪一刻你覺得,其實這是我想主動去成長、去深入的東西。這有發生過嗎?你有過這種念頭嗎?

Thelma:我一開始從我先生肩膀後面看,就上鉤了。我立刻就被迷住了。我真的覺得這有點像填字遊戲。

Jonathan:好,所以是這個過程裡解決問題的本質,在處理那些逗號的時候引起了你的注意嗎?

Thelma:我不算特別擅長。我真正喜歡的是,你、或者我,會寫出一些完全湊不起來的東西。然後你把它丟進編譯器,編譯器就會指出你的一堆錯誤。對我來說這一直是互動式的,就是我和 Fortran 這個編譯式語言之間。我不知道你知不知道那是什麼意思。對,我懂。好,而且在那個年代,那些錯誤訊息……

Jonathan:對,我懂。

Thelma:編譯器給的錯誤訊息相當可怕,那又是另一個要解開的謎題,得搞清楚它們到底說哪裡錯了。我覺得這方面他們已經進步很多了。

Jonathan:好,知道這點很好。知道這點很好。

Thelma:但那就像是有人牽著我的手,我真的很喜歡那樣。

Jonathan:好,你說過你先生做完那些打孔卡片之後,會抓狂,然後還得等一整晚才能知道有沒有成功。那只是因為東西要花……

Thelma:他對寫程式一點興趣都沒有。他感興趣的只是結果。他是物理學家,他要的是物理的結果。

Jonathan:這才是夥伴關係,很棒的夥伴關係。快轉幾年之後,你是怎麼接觸到 Exercism 的?Exercism 有什麼讓你特別喜歡的地方?

Thelma:唉!我退休之後,我已經退休很久了。我做過一些志工工作,一些滿有趣的志工工作。後來那些結束了,我變得很難找到志工工作。於是我打開電腦。我第一個找到的是 Udacity。你知道 Udacity 嗎?

Jonathan:嗯,聽過,但不太熟。好,它……它……好,它是線上的……課程,我很早就發現它了。他們現在變得商業化了。那時候課程是免費的,一次 15 分鐘,然後就給你一個問題去做。我在那裡上過一門 Python 課,非常喜歡。

Thelma:在那之後……我做了些別的事。我為我先生寫了一個……線性代數的模組,用 C++ 寫的,我超討厭 C++。你得操心那一堆記憶體配置。對。所以我老是因為這樣而陷入困境。對。後來我把它翻成 Python,感覺超棒,因為在 Python 裡所有記憶體的事都幫你處理好了。對。

Jonathan:我相信那省下了很多功夫和時間。

Thelma:不過,喔,我忘了自己為什麼要講這個。我本來心裡有個東西想說。

Jonathan:喔,是關於 Exercism。你是怎麼接觸到 Exercism 的?你當時在玩 Udacity。

Thelma:所以在 Python 之後,我四處找事情做,完全找不到。後來我就到處晃,然後找到了 Exercism。你們的平台對我來說再完美不過了。我是說……你可以,嗯……愛多自由就多自由。你可以做那些學習練習。你也可以決定我不需要這些學習練習。而這裡的引導更是棒透了。很酷。你根本沒辦法……

Jonathan:謝謝你。

Thelma:當然,現在我還有額外超棒的引導。我說服我兒子加入了。我兒子現在正在用 JavaScript 引導我。

Jonathan:太棒了,太棒了,太好了。

Thelma:他在這個平台上待了一個星期,就已經開始抱怨了,你見過他的。

Jonathan:對,沒錯,完全就是。那 Thelma,你目前在寫程式這方面,每天大概都是什麼樣子?你只是享受解決問題的那個部分嗎?寫程式在你生活中還是占很大一部分嗎?這一切是怎麼湊在一起的?

Thelma:它是我生活中很大的一部分。我完全不會做像看電影這種事。我先生 7 年前過世了,所以我現在寡居,一個人住。我盡量多出門。今年騎車已經結束了,氣溫降到我不行了。不過我以前在 Johnson Controls 上班的時候,華氏 8 度我照樣騎車。

Jonathan:華氏,讓我確認一下。對,因為攝氏 8 度還撐得住,但華氏 8 度,我覺得那是另一個層次。那非常冷。所以我沒辦法再那樣了。所以我想我待在家裡的時間會比我想要的還要多。

Thelma:寫程式是讓我不至於發瘋的原因,因為我不能做很多別人用來娛樂自己的事。而有引導這件事,對我來說是一種互動。我有一些朋友,越來越多人似乎會跟我說他們在看心理師。想買串珠材料,請上 Beadaholique.com!現在好像很流行有心理師。所以我開始跟別人說,喔對,我前幾天跟我的心理師談了很棒的一次,而我真正的意思是,我找了 Exercism 的一位導師。

Jonathan:他們真的很棒,非常有療癒效果,而且你還能從中學到東西,這也很方便。對。太棒了,太厲害了。那 Thelma,我很好奇,在 Exercism,我們一直想盡可能詳細了解的一件事是,你會給想學寫程式的人什麼建議?投入這件事的人範圍可以很廣,而每個人學習和理解事情的方式都獨一無二。不過有沒有哪些具體的行為、模式或事情,是你會強烈建議正在學習的人去嘗試的?有沒有哪些習慣,是你覺得大家真的應該試著建立起來,好讓自己學得更好?

Thelma:我覺得,這說來有點感傷。我接觸新東西的方式,其實跟別人不一樣。比如最近有串討論,有個人在抱怨練習附的教學不夠多。而對我來說,教學那部分反而會讓我覺得有點無聊。所以如果你把一個練習放在我面前,我第一個想知道的就是那個模組,或者做這類練習會用到什麼。我會去問 Google,好吧,這個要怎麼做?嗯。直到我看到需要,我才會去學。我很難投入。我讀不下手冊。我讀不下手冊,我跟你說。

Jonathan:你今天早上很受歡迎喔。我是說,我一定是那個……電話又打來了。

Thelma:我不知道這是怎麼回事。我平常不會接到這種東西。

Jonathan:喔,不會,完全別擔心。好,所以對你來說,也許你會給學習者的一個建議就是,去做一些在真實生活中有意義的事。就是這個意思。這是我理解的。就如何變得上手、或如何學會一門程式語言本身而言,你會把賭注押在這上面。

Thelma:對。我注意到我有一些朋友,在讀完所有文件、對它有些感覺之前,什麼都不碰。他們大概比我厲害。

Jonathan:嗯,我是說,這大概因人而異,有不同的方式。就我個人來說,我知道慢慢地、有系統地走,照著一套有結構的東西走對我有幫助,但把它切成小塊來應用也很有幫助,而不是被壓垮、想一次把整個東西全部做完。我想你建議的其實就是經驗,在真實生活情境中累積經驗才是關鍵。那 Thelma,我想問你一個問題。這是你跟整個 Exercism 社群分享一個建議的機會。什麼都可以。可以是去吃點壽司,可以是試著學一門新的程式語言,也可以是去騎趟腳踏車。你想講什麼都可以。不過你這週想給整個 Exercism 社群什麼建議?基本上,只要合理,你想說什麼都行。

Thelma:嗯,就現在來說。我被我兒子引導,得到莫大的樂趣。他們跟……溝通有困難。你知道,家裡都還好嗎?吼,那就讓他們進入一段引導關係吧。

Jonathan:看看會發生什麼事。那很棒,好好享受。我其實也很想提到……

Thelma:在我這段不算職涯的過程裡,我做了很多不同的事。我去了一家叫 Johnson Controls 的公司,開始接觸模擬軟體。

Thelma:好,哇。我甚至做過當時百事可樂瓶底的設計,那個瓶底平衡得不太好。我也替一位研究黎曼猜想的數學家朋友寫過程式,就像世界上幾乎每個數學家一樣。我幫他做了一些 Python 的東西。我不知道,我做過很多有趣的事。我也想讓這些被大家知道。

Jonathan:對,很酷。我相信其實有很多東西可以好好聊。我相信……你說你不一定知道要講什麼,但我覺得裡面有很多東西,你哪天可以再掏出來講。不過 Thelma,我只想非常謝謝你給我們……我知道時間不多,沒辦法真的深入很多細節和微妙之處,但我想謝謝你分享了你自己人生經驗的一小段,特別是它跟寫程式、開發的關聯。我們做這個 podcast 的希望,是它能鼓舞世界各地、各種膚色、背景、種族等等的人真的去動手……把他們在這些 podcast 裡聽到的東西拿去應用。所以人生故事,聽你聊一點自己的事,我相信會在某個地方鼓舞某個人動手試試、去實驗一下。所以我只是想為此謝謝你。我相信我們之後會在論壇上看到你,也會看到你去引導別人。我很高興你在這裡。

Thelma:不!我沒有在引導任何人。不過我很想以貢獻者的身分參與,而不是當導師。

Jonathan:好,那就太好了。如果你願意貢獻,我們可以找時間聊聊。但就先謝謝你分享了關於你生活的一些小洞見,還有那些冒出來的事情。我非常感謝。你現在就先別掛電話。不過 Thelma,謝謝你。如果有人想聯絡你,我相信你多少會願意。我不會把你的 email 給全世界。但如果有人想聯絡 Thelma,傳訊息給我,我們再從那裡談。非常謝謝你撥出時間。能聊一聊是我的榮幸,你先別掛,我們再聯絡。

Thelma:謝謝你。

更多來自我們社群的故事

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