非典型程式人:在土與木之間 散播程式的種子

讓他來為你建一座橋樑 通往資料科學的世界

林庚遠 Ken-yuan Lin
ccClub
Dec 8, 2019

--

上一篇專訪文裡,我們透過品傑的歷史之眼,了解到史料與程式碼碰撞所激盪的火花竟是如此的精彩。每一個領域都有屬於自己的魅力,當我們透過程式語言來重新詮釋時,往往能帶給我們更多的啟發。

目前在 AImazing 擔任資料分析師的簡書廷,曾是 2018 年 ccClub Python春、秋季讀書會的學員。就讀台大土木所的他,畢業後選擇投入資料科學的領域,並藉由自己擅長的資料處理與分析能力,幫助企業提供給零售、餐飲業者的更具品質的商業營運介面(Business Intelligence Dashboard),藉此提升更有效率地監控營運狀況。

本期的專訪文,就讓我們一同來了解這位「資料愛好者」的學思歷程吧!

資料分析師?我只聽過學分精算師耶?

所謂的資料分析(data analysis), 就是有目的地收集、整理、與解讀資料,並且從龐大的資料集當中提煉出對我們而言有意義的資訊。

以書廷的服務領域為例,透過資料分析,企業就能夠更順利地擷取所需要的數據,並加以儲存,比如:便利超商的營運人數、總銷售金額,或是金融機構之間的流通帳款金額,都可能是企業關注的資訊。

土木所畢業的書廷,對於資料科學領域有一套自己的想法。

「我的任務是擷取客戶需要的資訊,並進一步對資料進行解讀與分析。

除了目前工作上的需求外,我在就讀土木所時,也曾針對高鐵的營運狀況與區域發展進行研究。有時候,牽涉到交通運輸與地理區域的相關資訊,如果能透過程式語言,便能更便捷地收集資料。相較於一般的資料處理方式,省了很大一番功夫。

當時,由於我還無法善用程式這項工具,只能土法煉鋼地複製貼上,花了好大一番功夫才完成。後來想想,如果具備程式語言的能力就能輕鬆抓取高鐵網站的營運資訊,在工作上也會更有效率。除此之外,收集來的資料如果能藉由不同套件,也能呈現視覺化的效果,讓我在敘述與判讀上更加游刃有餘。」

除了資訊的處理與採集之外,在書廷的土木工程專業中,其實也埋藏了許多程式的種子。

除了應用程式語言進行資料爬取、統計分析及資料視覺化之外,土木工程中的諸多領域,也能藉由程式語言加以輔助與學習。

「在工程力學的計算上,程式語言也能派上用場。尤其面對高維度矩陣的運算,還是需要透過電腦才能加以處理。」

▍土木系畢業,不是應該當建築師巴布嗎?

不同於多數土木系的學生畢業後投入建築或營造產業,個性直率、不愛受拘束的書廷,選擇投入了資料分析的世界。除了熟悉的交通運輸領域,書廷也喜歡突破既有的專業分野,藉由資料分析在不同領域進行點與點之間的連結。

「我喜歡系統性的量化方式。能用科學方法來分析一個議題是一件很酷的事。」

「結合資料科學的分析思維,從議題來發想」,書廷相信如此能為我們勾勒出嶄新的視野。

以運輸議題為例,藉由資料分析,我們了解到交通運輸並不只是龐大機械在物理上的移動,這中間還牽涉到地理空間的分配,同時又跟經濟情勢的消長、人們的心理息息相關。「不同議題的背後,往往有著相似的脈絡,並持續在進行著交互作用,不斷地改變彼此。」

不論是運輸議題或是最近正夯的金融科技,甚至是音樂、文學、政治,書廷相信只要有資料科學的引入與探索,都能為我們拓展不一樣的視野。

從搭台鐵到投出神聖的一票,生活中許多事情背後都能從資料科學的角度加以檢視。

「就拿最近很夯的 2020 大選當例子吧,不同立場的單位做出的民調結果往往大相逕庭。這中間除了政治因素之外,統計的抽樣及資料解讀的方式不同,也會影響判讀的結果。

即便民調分析早已並非了不起的大發現,但從這個例子當中,我們仍能發現:許多現象的背後,往往與資料數據的量化與分析息息相關。而分析的方式有很多種,程式語言就是其中之一。」

因此,如果想提升自己解讀與整理資訊的能力,掌握好程式語言無疑是必要的關鍵。

「當後端工程師處理完原始資料、並匯入資料庫之後,我們會透過正規表達式(regular expression)擷取我們需要的關鍵字詞。除此之外,要進行統計分析之前的資料清理(data cleaning)也是重要的環節。看似只是單純處理資料,其實需要耗費相當大的心力。要能完成這些任務,就得能對程式語言有基礎的掌握。」

▍技術以外,那些更重要的事情

會寫程式難道還不夠嗎?

「不論是想篩選數據,或是因應工作所衍生的需求而要對數據做分析,我們都要了解如何尋找對應的套件來解決問題。

除了技術層次之外,對各個特定領域的內涵有所掌握也是必要的。例如:我們在進行文本相似度的分析時,確實可以透過程式的技術,了解文本之間的相似度是否符合我們的預期。但若要解讀與進行行為決策,在缺乏背景知識(Domain knowledge)的輔助思考之下,便無法產生更高層次的洞見。」

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

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

「我最一開始接觸的程式語言是 R,它在統計分析上幫了我很多忙。後來接觸程式的時間愈來愈長,漸漸了解到不同語言原來有自己的強項,沒有什麼是『最好的語言』,只要能幫助我們有效解決問題,都是值得我們花時間學習的工具。」

以近幾年討論度高的 Python 為例,由於 Python 在機器學習、資料視覺化及資料分析等領域應用普及,加上適合初學新手們學習,因而廣受歡迎。

Python 儼然成為近年來火紅的程式語言。

談到自己跟 Python 的緣分,書廷回想起了自己就讀土木工程研究所時的課堂經驗:

「『運輸最佳化模型』是讓我接觸 Python 的第一堂課,同時也是我進土木所的第一堂課。課程規劃對線性規劃、運輸成本等技術的訓練十分扎實,同時以程式語言作為基底,讓我們能利用程式實踐課堂所學,在幫助土木專業的學生建立基礎觀念上有很大的幫助。舉例而言,當時的教授要我們去計算如何用最小的成本,遊覽美國 50 州。此時,程式語言的應用便成為不可或缺的利器。

然而,這堂課著重於實作,沒能滿足我「追根究柢」的學習慾。同時,當時的我沒能完全理解程式執行背後的邏輯,也沒有受過完整的程式學習經驗。抱持著想「從頭重新了解」的願景,我開始尋找學習資源,也在因緣際會之下接觸到了 ccClub,那是我重新系統化地學習Python的起點。」

如何處理龐雜的資訊量,是我們現代人時常需要面對的問題。只要輸入關鍵字,各式各樣的資源與教學平台應有盡有。不論你想學什麼、想用什麼方式學,身處在這個時代的我們要擔心的不是沒素材,而是如何挑選適合自已的資源。

「讀書會以初學者為主軸的課程安排,不論對新手或想重新打底的朋友都非常友善。翻轉教室跟課程資源都很豐富,影片跟教材透過淺顯易懂的方式讓我們能迅速掌握程式的基本觀念。」

▍學習的內在、外在動機

不過,讀書會只能盡力提供一個學習的平台,讓懷抱不同理想的學員們能藉此進入程式的世界。每個人想學程式的動機不一樣,願意付出的時間與心力也就不同。除了剛開始接觸程式時一定會遇到挫折之外,因為每個人心中對事情的排序都不同,願意付出的時間也就有所差別。

聊到學習動機,書廷似乎有一套自己的想法:

「不論學什麼,我認為動機往往由這兩者組成的:一個是自己願意付出程度的多寡,另一個則是外界逼迫你學習的力道。如果自己的學習動機不強烈,我們通常就需要外界幫我們推一把。不過,學習的最終成果仍然掌握在我們自己身上。」

愛怠惰的心魔太強大,就讓讀書會來推你一把吧 >: )

▍最珍貴的,是大家一起成長的喜悅

當然,沒有任何學習媒介能直接帶我們無痛成為 coding 大師。速成的方法是不存在的,不論是學校授課、參加讀書會、或是線上自學,我們都要付出對應的時間與精力,才有機會見到種子萌芽。

「讀書會只是一種學習程式的途徑,除了翻轉教學、共同討論之外,最珍貴的莫過於大家能一起學習、一起成長、一起分享寫程式的喜悅!

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

「如果我做得到,你也一定可以。好好把讀書會的資源都使用過一次吧!我相信這樣做,一定會有意想不到的收穫。

當你的心定了,你的行為就會跟上。現在的你,會覺得前方彷彿有座高牆阻擋你向前行,這其實是因為你還沒準備好面對這個新的挑戰,心裡就像產生了抗體。但當你意識到這點時,你其實已經跟過去的自己不一樣了。

其實,永遠沒有『準備好的一天』。不要想著『我要準備好後再去做』,如果覺得可行,就先試試看吧!不要不敢去問,身為學員的我們沒有什麼好失去的。用心體會身邊的學習環境,努力吸收、成長,才能讓自己成為一個更好的人。」

結語

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

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

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

延伸閱讀 📄
學程式到底能幹嘛?有哪些事情能用程式完成呢?
來我們的 Skiwitch Talk系列專欄 你能用程式做什麼?看看吧!

--

--