非典型程式人:在太平洋彼岸 看見城式的光芒

程式、還是城市? 他在紐約 看見更多的可能性

林庚遠 Ken-yuan Lin
ccClub
12 min readFeb 8, 2020

--

這是一篇專訪 ccClub 讀書會歷屆學員的文章,我們想與各位分享:
1️⃣ 過來人學習寫程式的心路歷程
2️⃣ 程式人的多元樣貌
3️⃣ ️跨領域人才的思維養成與反思

距離畢業還剩下幾個月,你想好屬於自己的未來了嗎?

前一陣子,我們收到不少關注 ccClub 的朋友來信詢問:「有沒有出國深造的 cc 校友?」、「有人待完你們的讀書會之後,出國讀程式相關科系的嗎?」、「因為有出國的打算,想知道有沒有人能分享相關經驗...」。

《非典型程式人》的初衷,是透過追蹤 ccClub Python 讀書會 畢業校友們的發展,讓大家看到程式語言在不同領域「非典型」且「多元」的一面。ccClub 自 2016 年成立以來,接觸過許許多多的學員,每一位學員都為我們帶來無盡收穫。

每一個人,都有屬於自己獨一無二的故事。有人歷史系畢業,去中研院玩文本分析有人大學念土木,後來轉戰資料科學家。只要你願意,程式能帶你看見。

為了回饋長期支持我們的朋友,同時呼應本系列的初衷,我們將在近幾期的專訪文中,分享幾位出國留學 (或即將準備出國) 的 ccClub 校友們學程式的經驗,對國外教育的看法、以及如何在異鄉結合程式與所學,揮灑出自己的一片天。

不論你是否即將畢業,也不論你是否有出國的打算,希望我們的分享都能帶給螢幕前還在尋找方向的你,更多的溫暖與能量!

目前任職於 RoDo 的蔡俊傑,大學時就讀台大生物環境工程學系,並於畢業之後攻讀紐約大學的應用都市資訊科學學程 ( New York University Urban Science and Informatics ),並曾在微軟的研發部門 ( Microsoft Research & Development) 實習。今年的第一篇專訪文,就讓我們一起來看看他的故事。

城市科學?我在跟你講coding, 你在跟我講 city?

「我所就讀的 program 並不是純粹的程式語言訓練班,我們更關注如何結合程式語言及現有的資料,針對城市規劃與都市問題,提出合理、實際的方案。是一門較為政策導向、實務應用的學程。

在我們面對專案時,程式反而比較像是輔助的工具。我們根據手中的資料,做出能解決實務問題的方案。例如:在課堂上,我們會根據紐約市(甚至是全美國) 的資料,思考如何優化都市改造計畫、對現有都市政策進行調整。有一些資訊與公共利益密切相關,如市區內的公園、共享單車、大眾運輸系統等,在網路上也找得到( 所謂的 open data )。」

俊傑所就讀的學程是由紐約大學都市資訊科學中心( New York University Center for Urban Science and Progress )所開設。如上所述,本學程不緊緊是純粹的程式語言教學,更置重於都市科學的應用。因此,課堂上的專題以及資料也多緊扣於此重心出發。不論是綠能建築、交通運輸的政策研討或是都市人口議題的探討,都有所著墨。

▍舉例來說,「程式」跟「城市」有什麼關係嗎?

那個雲阿、那個霧阿?選擇合適的方法,也許能為我們帶來不同的視野。

「如果我們想針對紐約市進行空氣品質檢測,我們會需要判讀紐約市的航空照並加以記錄。但是,我們同時需要結合當時的天氣進行通盤考量,這些在判斷上都會產生一些困難。

例如:要如何判斷高樓大廈旁的是煙霧,而不是雲朵?我們可以利用機器學習 (Machine Learning) ,透過訓練模型讓電腦學會判斷,也能應用 CNN (卷積神經網路,Convolution Neural Network)進行圖像辨識。

同樣的情形,在判斷森林大火、了解工業區氣體排放情形時也會遇到。總體來講,我們要先針對想研究的環境進行監測 ( 例如:透過紅外線判斷是否存在異常化學物質),再透過程式結合相關技術,頗析第一手資料,最後根據研究結果,判斷該區是否違反了都市環境保護法、或其他相關法規。」

▍建築與都市規劃以外,有沒有其他的可能性?

「都市環境的偵測只是應用面向的一支。我們不只關注現有資訊的解讀,也重視如何透過資料進行更全面、前端的應用。

以大家熟悉的火災為例。水火無情,火災造成的損害往往為財產與救援人力帶來莫大威脅。面對火勢蔓延,我們往往無所適從,有時投入大量的人力資源救助,效果也未必符合預期。

如果我們能預測「火勢蔓延的方向」,知道火要往哪邊燒,就可以引導消防人員前往正確的位置撲滅火勢,以最小的時間與人力成本,在最快的時間內完成救災。要實踐這個理想,必須先透過程式針對現有資訊進行判讀,並加以應用及預測;此外,救災資源的配置與最佳化也是我們要面對的課題之一。」

此外,俊傑也提到本學程在產、官學合作上有相當程度的成就。與都市計畫密切相關的政府部門與企業也提供了充沛的資源,對於有志於結合資料與都市科學這個新興領域的學子們,想必會是不錯的選擇之一。

一路走來我與它──我與程式的愛恨糾葛

▍為什麼當初會接觸到程式語言呢?

「其實在來到 ccClub 之前,我就曾在大學時學過 Java,因此也不能說是沒有程式語言的底子。來到 ccClub 之後,除了幫助我培養對 Python 的基礎能力外,對我更大的幫助是『啟發了我對程式語言的興趣』。

比起孤軍奮戰,我更傾向在在學習的過程中有人帶領著我前進。一方面能節省時間,另一方面也會更有效率。

上完一學期的讀書會,你並不會馬上成為 coding 大師, 但能了解程式語言的一些基礎應用(例如:爬蟲、使用 API...),並透過課堂所學完成一些實作。」

現今網路資源發達,線上教學平台早有滿坑滿谷的程式教學影片;不論是大學或業界的補習班,也提供了許多的實體課程供有志者進修。學習的方法也不再只是一條單向道,我們能依據自己的學習需求、可接受的成本衡量最適合自己的學習方式。

比起「學什麼、怎麼學」,也許「為何而學」更值得我們思考。畢竟,學習的誘因才是我們在面對困難時,驅使我們不斷向前最大的原動力。

除了上述的學經歷之外,俊傑也在哥倫比亞大學的程式語言訓練班 ( Columbia Engineering Coding Boot Camp)擔任教學助教。不論是對台灣、美國教育的比較,或是程式語言的學習歷程,都有一套自己的見解。

以下,我們就學員的提問,來看看俊傑針對這些問題有哪些想法吧!

▍大家常說歐美教育更先進,台灣跟美國的教育有何不同?

個體與團體主義不只是一種文化差異,也反映在彼此的教育理念之上。

「我覺得美國的教育,特別強調『每個人有自己的選擇。』

過去我們在台灣所受的教育,比較重視『群體』的概念。當我們衡量我們在一個科目的學習成果時,我們關注的是『我與群體之中的其他人比起來,是否比較優秀?』所以我們特別重視班排、校排。相對地,我也特別在乎系上 coding 最強的是誰、誰的英文成績最好。

不過,美國的教育更關注『個體』。他們想了解『你與過去的自己比起來,有什麼不同』,進而評估你在哪個項目上需要多努力、哪些科目表現亮眼。這是我認為兩種文化反映在教育理念上的不同之處。」

我們無意比較台灣與美國的教育孰優孰劣,畢竟不同的教育理念培育的人才,思維與能力必定也有所不同。但藉由思辨與比較,我們更能了解其他國家培育人才的方式與我們有何不同,同時加以反思我們過去所受的教育、學習的習慣是否能變得更好。

▍除了教育理念,程式教學上的風格也是如此嗎?

「以我自己擔任助教的經驗來看,在 Boot Camp 所受的程式訓練比較偏向『目的導向』。講白話點,就是『先能動就好』

如果你想學架構網站,你不用了解有關網站的全部知識。網頁前、後端的運作原理與背後的理論基礎,都不是你需要學的。這些東西固然重要,但卻不是現在非知道不可的。重點是:跟著教學走,循序漸進地學,你就能得到一個你想要、跑得動的網站。

這種以「解決問題為導向」 (problem-oriented) 的教學模式,讓學員們能快速完成想要的成果,同時建立成就感。教學的重點,在於「你想用多少,就學多少」, 也因為如此,你會有充足的動機去學習這件事。」

還記得最初那個 print(“hello world”) 的感動嗎 ?

▍我知道學程式很重要,但遇到困難就提不起勁... 該怎麼辦?

「要回答這個答案,我會想先了解你「學習的理由」是什麼。

我在擔任助教時,會接觸來自不同領域、專長的學員。有社工人員為了想研究與案主的訪談搞,而開始學習自然語言處理 (NLP, Natural Language Processing) ; 有企業的人資為了瞭解求職者的共通特性,踏入資料科學的世界。每個人來到這裡的目的都不同,我會想先了解他學習的目的是什麼,評估他的需求,並給予他在學習上最適切的建議。」

如同俊傑所所述,學習的動機往往決定了熱情能否延續下去。當我們在學習的過程中感到徬徨時,不妨問問自己的內心:是什麼不斷驅使我們前進?

其實不只是程式語言,每個人之所以選擇學習一項能力,答案其實都不太一樣。以學日文為例,有人為了看懂日劇、動漫而學;有人為了求職、申請交換學校需要日文檢定而學;如果你交了一個日本男 ( 女 ) 朋友,為了聽懂對方想說什麼,你也會有動力學習。每個人的學習理由不同,支撐自己的信念也迎韻而生。

下一次,當你在學習的過程中感到徬徨時,不妨問問自己:自己之所以學習的初衷,是什麼吧!

▍有什麼話,想跟初學程式的朋友們說嗎?

「在你徬徨無助之前,先幫自己定位:『你現在面對的問題什麼? 你距離你的目標還有多遠?你需要花多少時間、具備哪些能力呢?』

這是我在擔任助教時,時常幫助學員思考的方式。每個人有自己想達成的目標,作為學習上的夥伴,我的任務並不是代替他學習 ( 那是學員的任務 ) ,除了從旁協助之外,我更喜歡擔任『學習診斷者』的腳色。如果達成學習目標是 100 %,我會告訴你現在已經到 70% 了,再走幾步就能抵達終點。我來幫你定位,讓我帶著你前進!

如果階段性的目標完成之後,是否要再進一步學習呢?

此時,我覺得還是回歸根本:你最初想要的是什麼?面對有限的時間與資源,當你確定所學符合你的需求再決定也不遲。當你篤定好自己需要什麼、在哪裡之後,我相信這段學習的旅途會更加踏實、篤定。」

準備好踏上學習程式的旅程了嗎?如果還沒也沒關係,因為學習的重點不在於你多早開始、而在於你何時準備好。

試著把自己當成一個獨立個體,從群體的比較與喧囂中抽離出來,傾聽自己內心最深沉的渴望吧!相信你能更找到屬於自己的答案。

不論那份聲音是在告訴你要不要去學一項能力、是否要出國交換、是否要回應自己對人生的種種殷殷企盼,它都是你最真實的初衷。我們相信:

『我們的初衷,

能在我們通往未來的下一個十字路口時,

告訴我們最義無反顧的方向。』

結語

不論你目前是否會寫程式、對程式了解多少,ccClub 誠摯地希望能給大家不同的程式學習體驗,並從寫程式的過程當中,努力成為更好的自己。

一直以來, ccClub 持續在推廣「讓程式語言成為大家的第二外語」的理念我們相信程式不應該是少數群體的專利,而是所有人都能理解、學習,進而幫助我們實現夢想的一項工具。不論你是誰,只要掌握程式語言的能力,就能更了解我們身處的世界,為自己的生命增添更多的可能性。

就算不是資訊背景也沒關係,只要有心,程式都能為你的生活帶來改變。

🏮 關於訪者的更多聯絡資訊 🏮

如果你對出國留學、轉行有任何的疑問,我們的訪談對象也很樂意回覆各位呦!俊傑自己也有經營部落格與 Medium 帳號,大家有興趣可以逛逛。

部落格:dishtsai.com
電子信箱:dishtsai@gmail.com
Linkedin: linkedin.com/in/chunchiehtsai

🏮 延伸閱讀 🏮

❓ 學程式到底能幹嘛?有哪些事情能用程式完成呢?
來我們的 Skiwitch Talk系列專欄看看吧!
➡️
你能用程式做什麼?⬅️

📚蝦毀 ? 歷史系畢業不只能當歷史老師,還能用程式碼讀文本?
➡️
用鍵盤譜出時空的旋律 ⬅️

👷‍♂️ 土木系畢業不當建築師,跑來玩 Data?
➡️
在土與木之間 散播程式的種子 ⬅️

我們是 ccClub 團隊,致力於讓 Python 成為大家的第二外語,希望能用淺顯易懂、循序漸進的方式,帶領新手一步步跨入程式設計的世界。如果你喜歡這篇文章,請給我們 11~20 個掌聲。
如果你喜歡「Python初學」的教學系列文,或是「非典型程式人」的專訪,請給我們 31 個以上的掌聲。


Facebook: ccClub Python讀書會

--

--