非典型程式人:在土與木之間 散播程式的種子
讓他來為你建一座橋樑 通往資料科學的世界
我們希望藉由這篇專訪 ccClub 讀書會歷屆學員的文章,與各位分享:
1️⃣ 過來人學習寫程式的心路歷程
2️⃣ 程式人的多元樣貌
3️⃣ ️跨領域人才的思維養成與反思
在上一篇專訪文裡,我們透過品傑的歷史之眼,了解到史料與程式碼碰撞所激盪的火花竟是如此的精彩。每一個領域都有屬於自己的魅力,當我們透過程式語言來重新詮釋時,往往能帶給我們更多的啟發。
目前在 AImazing 擔任資料分析師的簡書廷,曾是 2018 年 ccClub Python春、秋季讀書會的學員。就讀台大土木所的他,畢業後選擇投入資料科學的領域,並藉由自己擅長的資料處理與分析能力,幫助企業提供給零售、餐飲業者的更具品質的商業營運介面(Business Intelligence Dashboard),藉此提升更有效率地監控營運狀況。
本期的專訪文,就讓我們一同來了解這位「資料愛好者」的學思歷程吧!
資料分析師?我只聽過學分精算師耶?
所謂的資料分析(data analysis), 就是有目的地收集、整理、與解讀資料,並且從龐大的資料集當中提煉出對我們而言有意義的資訊。
以書廷的服務領域為例,透過資料分析,企業就能夠更順利地擷取所需要的數據,並加以儲存,比如:便利超商的營運人數、總銷售金額,或是金融機構之間的流通帳款金額,都可能是企業關注的資訊。
「我的任務是擷取客戶需要的資訊,並進一步對資料進行解讀與分析。
除了目前工作上的需求外,我在就讀土木所時,也曾針對高鐵的營運狀況與區域發展進行研究。有時候,牽涉到交通運輸與地理區域的相關資訊,如果能透過程式語言,便能更便捷地收集資料。相較於一般的資料處理方式,省了很大一番功夫。
當時,由於我還無法善用程式這項工具,只能土法煉鋼地複製貼上,花了好大一番功夫才完成。後來想想,如果具備程式語言的能力就能輕鬆抓取高鐵網站的營運資訊,在工作上也會更有效率。除此之外,收集來的資料如果能藉由不同套件,也能呈現視覺化的效果,讓我在敘述與判讀上更加游刃有餘。」
除了資訊的處理與採集之外,在書廷的土木工程專業中,其實也埋藏了許多程式的種子。
「在工程力學的計算上,程式語言也能派上用場。尤其面對高維度矩陣的運算,還是需要透過電腦才能加以處理。」
▍土木系畢業,不是應該當建築師巴布嗎?
不同於多數土木系的學生畢業後投入建築或營造產業,個性直率、不愛受拘束的書廷,選擇投入了資料分析的世界。除了熟悉的交通運輸領域,書廷也喜歡突破既有的專業分野,藉由資料分析在不同領域進行點與點之間的連結。
「我喜歡系統性的量化方式。能用科學方法來分析一個議題是一件很酷的事。」
「結合資料科學的分析思維,從議題來發想」,書廷相信如此能為我們勾勒出嶄新的視野。
以運輸議題為例,藉由資料分析,我們了解到交通運輸並不只是龐大機械在物理上的移動,這中間還牽涉到地理空間的分配,同時又跟經濟情勢的消長、人們的心理息息相關。「不同議題的背後,往往有著相似的脈絡,並持續在進行著交互作用,不斷地改變彼此。」
不論是運輸議題或是最近正夯的金融科技,甚至是音樂、文學、政治,書廷相信只要有資料科學的引入與探索,都能為我們拓展不一樣的視野。
「就拿最近很夯的 2020 大選當例子吧,不同立場的單位做出的民調結果往往大相逕庭。這中間除了政治因素之外,統計的抽樣及資料解讀的方式不同,也會影響判讀的結果。
即便民調分析早已並非了不起的大發現,但從這個例子當中,我們仍能發現:許多現象的背後,往往與資料數據的量化與分析息息相關。而分析的方式有很多種,程式語言就是其中之一。」
因此,如果想提升自己解讀與整理資訊的能力,掌握好程式語言無疑是必要的關鍵。
「當後端工程師處理完原始資料、並匯入資料庫之後,我們會透過正規表達式(regular expression)擷取我們需要的關鍵字詞。除此之外,要進行統計分析之前的資料清理(data cleaning)也是重要的環節。看似只是單純處理資料,其實需要耗費相當大的心力。要能完成這些任務,就得能對程式語言有基礎的掌握。」
▍技術以外,那些更重要的事情
會寫程式難道還不夠嗎?
「不論是想篩選數據,或是因應工作所衍生的需求而要對數據做分析,我們都要了解如何尋找對應的套件來解決問題。
除了技術層次之外,對各個特定領域的內涵有所掌握也是必要的。例如:我們在進行文本相似度的分析時,確實可以透過程式的技術,了解文本之間的相似度是否符合我們的預期。但若要解讀與進行行為決策,在缺乏背景知識(Domain knowledge)的輔助思考之下,便無法產生更高層次的洞見。」
一路走來我與它──我與程式的愛恨糾葛
▍為什麼當初會接觸到程式語言呢?
「我最一開始接觸的程式語言是 R,它在統計分析上幫了我很多忙。後來接觸程式的時間愈來愈長,漸漸了解到不同語言原來有自己的強項,沒有什麼是『最好的語言』,只要能幫助我們有效解決問題,都是值得我們花時間學習的工具。」
以近幾年討論度高的 Python 為例,由於 Python 在機器學習、資料視覺化及資料分析等領域應用普及,加上適合初學新手們學習,因而廣受歡迎。
談到自己跟 Python 的緣分,書廷回想起了自己就讀土木工程研究所時的課堂經驗:
「『運輸最佳化模型』是讓我接觸 Python 的第一堂課,同時也是我進土木所的第一堂課。課程規劃對線性規劃、運輸成本等技術的訓練十分扎實,同時以程式語言作為基底,讓我們能利用程式實踐課堂所學,在幫助土木專業的學生建立基礎觀念上有很大的幫助。舉例而言,當時的教授要我們去計算如何用最小的成本,遊覽美國 50 州。此時,程式語言的應用便成為不可或缺的利器。
然而,這堂課著重於實作,沒能滿足我「追根究柢」的學習慾。同時,當時的我沒能完全理解程式執行背後的邏輯,也沒有受過完整的程式學習經驗。抱持著想「從頭重新了解」的願景,我開始尋找學習資源,也在因緣際會之下接觸到了 ccClub,那是我重新系統化地學習Python的起點。」
如何處理龐雜的資訊量,是我們現代人時常需要面對的問題。只要輸入關鍵字,各式各樣的資源與教學平台應有盡有。不論你想學什麼、想用什麼方式學,身處在這個時代的我們要擔心的不是沒素材,而是如何挑選適合自已的資源。
「讀書會以初學者為主軸的課程安排,不論對新手或想重新打底的朋友都非常友善。翻轉教室跟課程資源都很豐富,影片跟教材透過淺顯易懂的方式讓我們能迅速掌握程式的基本觀念。」
▍學習的內在、外在動機
不過,讀書會只能盡力提供一個學習的平台,讓懷抱不同理想的學員們能藉此進入程式的世界。每個人想學程式的動機不一樣,願意付出的時間與心力也就不同。除了剛開始接觸程式時一定會遇到挫折之外,因為每個人心中對事情的排序都不同,願意付出的時間也就有所差別。
聊到學習動機,書廷似乎有一套自己的想法:
「不論學什麼,我認為動機往往由這兩者組成的:一個是自己願意付出程度的多寡,另一個則是外界逼迫你學習的力道。如果自己的學習動機不強烈,我們通常就需要外界幫我們推一把。不過,學習的最終成果仍然掌握在我們自己身上。」
▍最珍貴的,是大家一起成長的喜悅
當然,沒有任何學習媒介能直接帶我們無痛成為 coding 大師。速成的方法是不存在的,不論是學校授課、參加讀書會、或是線上自學,我們都要付出對應的時間與精力,才有機會見到種子萌芽。
「讀書會只是一種學習程式的途徑,除了翻轉教學、共同討論之外,最珍貴的莫過於大家能一起學習、一起成長、一起分享寫程式的喜悅!
▍有什麼話,想跟初學程式的朋友們說嗎?
「如果我做得到,你也一定可以。好好把讀書會的資源都使用過一次吧!我相信這樣做,一定會有意想不到的收穫。
當你的心定了,你的行為就會跟上。現在的你,會覺得前方彷彿有座高牆阻擋你向前行,這其實是因為你還沒準備好面對這個新的挑戰,心裡就像產生了抗體。但當你意識到這點時,你其實已經跟過去的自己不一樣了。
其實,永遠沒有『準備好的一天』。不要想著『我要準備好後再去做』,如果覺得可行,就先試試看吧!不要不敢去問,身為學員的我們沒有什麼好失去的。用心體會身邊的學習環境,努力吸收、成長,才能讓自己成為一個更好的人。」
結語
不論你目前是否會寫程式、對程式了解多少,ccClub 誠摯地希望能給大家不同的程式學習體驗,並從寫程式的過程當中,努力成為更好的自己。
一直以來, ccClub 持續在推廣「讓程式語言成為大家的第二外語」的理念。我們相信程式不應該是少數群體的專利,而是所有人都能理解、學習,進而幫助我們實現夢想的一項工具。不論你是誰,只要掌握程式語言的能力,就能更了解我們身處的世界,為自己的生命增添更多的可能性。
就算不是資訊背景也沒關係,只要有心,程式都能為你的生活帶來改變。
延伸閱讀 📄
學程式到底能幹嘛?有哪些事情能用程式完成呢?
來我們的 Skiwitch Talk系列專欄 你能用程式做什麼?看看吧!
我們是 ccClub 團隊,致力於讓 Python 成為大家的第二外語,希望能用淺顯易懂、循序漸進的方式,帶領新手一步步跨入程式設計的世界。如果你喜歡這篇文章,請給我們 11~20 個掌聲。
如果你喜歡「Python初學」的教學系列文,請給我們 31 個以上的掌聲。
Facebook: ccClub Python讀書會