非典型程式人:用鍵盤譜出時空的旋律

走出歷史文本的程式寫手 顛覆你對程式人的刻板印象

林庚遠 Ken-yuan Lin
ccClub
10 min readOct 10, 2019

--

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

說到寫程式,有些人可能會想到螢幕上密密麻麻的程式碼,以及整天緊盯電腦的宅宅工程師。程式語言對許多人來講顯得「遙不可及」。因為大學不是資工系畢業、工作上用不到(或者也不會用),因此覺得自己不可能學會。

其實,程式語言不只平易近人,也能為我們自己帶來改變。不論你來自哪裡,你的專長領域是什麼,只要願意跨出一步,就可以改變現在的自己。

今天,我們邀請到曾經在 2017年春天參加過 ccClub Python 讀書會 的學員,與大家分享他在初學 Python 時的學習歷程,以及一年後的他如何應用所學在自己的專業領域。

希望這篇文章能打破大家過往對「程式語言」的既定框架,也讓想學寫程式或正在寫程式的你,對程式人有更多的想像空間,也重新審視、了解自己!

會寫程式的歷史人?

林品傑,東吳大學歷史學系畢業。

目前在中研院文哲所進行數位人文的整合企劃。

除了對時間與歷史資料的敏銳度之外,品傑也藉由文字探勘跟自然語言處理的技術,實踐人文數位化的目標。

▍數位人文?能吃嗎?

所謂的數位人文,其實就是把資料科學應用到社會科學跟人文領域當中,藉由資料的建制與數據分析,幫助我們對資料提出新的解釋。

品傑針對台灣人文界近年來在資訊領域的應用發展,提出了自己的觀察:

「 資料分析在台灣的人文領域仍在萌芽中,我們團隊目前的企劃,就是以數位人文為主軸。

以文字探勘為例,我們想瞭解中古時期疾病到死亡的過程,以及與社會之間的互動。假設疾病到死亡的歷程是多個事件的集合,存在著時序性,包含疾病過程、醫治行 為、結果、死亡敘述。

一般的細讀,很難同時跨越不同文本一次取得這些訊息,並排列整理好。
反之,透過寫程式挖掘文字訊息,給予對應的類別,進行資料視覺化分析,便可以實現推論的可能。」

▍歷史系的經驗在實務上有什麼幫助嗎?

過去在歷史系的訓練,讓品傑對時間與空間有了更敏銳的觀察力。談論到自己是否具備一些「歷史人」會具備的特質,品傑認為:

「我會去關注人與機構隨著時間所產生的變化。當我看見一件事情,我會去追溯它能否與我過去的生命經歷產生連結。 」

在做文字探勘時,除了文本斷詞或詞類頻率分析, 歷史關鍵字的篩選對品傑來說也是得心應手。

相較於人文教育的訓練,資料科學背景的人,會更著重在『如何解決問題』。透過適當的途徑處理眼前的問題,往往是他們思考事情的方式。

「面對一樣的問題,我們的思維可能會不同。 受過資訊背景訓練的人,關注的焦點著重在解決問題本身。例如:選擇合適的演算法與模型,針對問題的核心對症下藥,找出解決問題的方法。

由此觀之,不論是資訊或是人文思維,兩者其實並沒有衝突,只是不同的思路在面對同一問題時,思考過程與結果不同罷了。」

跨領域的經驗,讓品傑能更全面地面對問題,也提升了行為決策的成熟度。歷史學背景出身的他,總會留意一件事情的脈絡與時間發展;而編寫程式的經驗,則幫助他以另一種角度看待事情。歷史與程式帶來的收穫,不僅不衝突,反而能相輔相成。

一路走來我與它-程式語言帶給我的成長

▍剛開始學程式的感覺怎麼樣?

其實在學習的過程中,一定會經歷撞牆期。只要願意投入時間,必定會有所收穫。最重要的,是在學習上面對困境時,我們怎麼與自己相處,透過什麼心態和自己對話。

再困難的題目,只要願意投入足夠的心力,一定有解出來的一天。但在找尋答案時,如何為自己採取合適的學習策略,並做好心理建設,才是最大的難關。針對這點,品傑也認為:

「每個人一開始學習時都很像。我剛開始接觸程式時,其實也會覺得題目非常難、沒頭緒。沒有人會期待新手短短幾天就把題目寫完、搞懂所有觀念。
與其幫自己設定一個太難達成的的標準,不如試著訂定階段性的目標之後,再逐一擊破。比如說:課前預習、認真上課、課後複習、努力刷題。」

▍沒有想法、卡關的時候該怎麼辦?

「我會努力把每一次的作業都做完。這個過程其實蠻痛苦的,雖然讀書會表定至少 6 個小時,但我後來發現如果想學得好,投入的時間一定遠遠超過。過程雖然辛苦,但也了解到如果一開始的根扎得夠深,之後學習時會更加順利。」

上圖為 ccClub Python 讀書會的作業批改系統,學員可透過上傳程式碼讓系統自動批改。

「現在的你,可能覺得自己沒有能力解決這個問題。不妨腦袋放鬆去追個劇,再把問題拆解成許多小部分,逐一擊破。這種思維模式,可說是我在決策分析時的小技巧。」

以線上系統的習題為例,比起雜亂無章地無的放矢,不如先把解題的想法寫下來,再進一步思考怎麼去實現它吧!就像品傑所說的,抽象複雜的難題經過抽絲剝繭之後,往往會變得更和藹可親,而我們也能更了解怎麼用手邊的工具來達成目標。

▍ccClub 在你的學習經驗當中,扮演了什麼樣的腳色?

「 第一次加入讀書會時,我也許還沒辦法完全掌握課程的所有內容。但在第二次學習時,不只有了不同的體悟,也對 Python 更加了解。

每一期的 ccClub 都在進化。根據學員的反應,讀書會也會保留彈性,調整課程的規劃。另外,「分組討論」也是學習時難得的機會。

因為有雙向的互動,我會知道『原來還有這種寫法』。相較於標準化的線上課程,讀書會更能做到異質性。

說到「討論」,有時似乎只有少數的學員比較願意踴躍發言。 品傑覺得這跟課前準備有密切的關聯性。畢竟,討論並不是天馬星空的奇思幻想,而是對討論的主題(如當週課程進度)有初步認知的前提下,彼此透過交流才能創造學習上的最大效益。除此之外,助教的引導與分組方式也會影響到成效。

2018 秋季讀書會期末專案發表: Instagram 美食帳號資料分析。

「讀書會能給我的,是最真實、積極的感覺。 從跟凱文及其他夥伴的互動過程中,我也會增廣見聞。原來不同的程式寫法會影響運算的效率,這背後的來龍去脈是什麼,都激發了我繼續探索的熱誠。」

「 除此之外,讀書會期末的專題發表,也提供了學習者具體的回饋,了解如何在學習的路上變得更好。這些回饋也都成為具體的推進器,在我往後的學思過程中產生影響。」

不論是哪一種學習資源或方式,在這段成長的歷程中,時序與自我成長的心志還是最關鍵的。與其跟身邊的其他人比較自己的不足,面對挫折時,不如回頭想想:「跟二個月前的自己比較起來,又成長了一點點吧!」

「跨領域」的得與失

『我們沒有非得怎樣不可。

脫下社會的期待,重新審視自己的想法吧!』

從高中開始,我們就被簡約地劃分成文、理組。品傑認為,類組也是時代的產物,畢竟在不同時代背景下,人才的需求與培育方式也會有所不同。

經歷過一段不同於「常規」的學思歷程,品傑在面對選擇時,往往先問自己:有沒有興趣?

「跟我很熟的人,甚至會開玩笑地跟我說『你學什麼都不奇怪』。
不論是新的語言、某個領域的專業知識,如果我有興趣,我就去學。
對我來說,寫程式也是一次新的探索。」

這份追求興趣與實現自我的堅持,讓品傑能聆聽內心最真實的自我,也能理解自己真正想要的是什麼。

「我認為對人文科系來說,程式語言的能力很像是另一把利器。
我身邊有許多讀人文科系的朋友,往往覺得自己『做不到、沒辦法』。
但我相信,與其在無形中自我設限,不如排除那些不必要的外在期待,讓自己從那種不舒服的感覺中解脫吧!
困境是必經的過程,但有時挫折往往是我們幫自己貼標籤時產生的。」

不過,跨領域的本質並不是囫圇吞棗地隨便亂跨一通,而是在既有的專長夠穩固之後,嘗試其他領域之間的整合,比較有意義。

針對這一點,品傑也說了自己的想法:

「隨著探索的領域與事物愈加廣泛,我開始知道自己應該要「收斂」點。
我喜歡按照自己的步調與喜好做決定,但我必須要有自己的一項專長。
跨領域是很多人思考的選項之一。畢竟如果單單多了一項技能,職場戰鬥力便會瞬間提高的話,投資是很划算的。
但並不是任意搭配就能有加乘效果,像珍珠滷肉飯也許就真的不適合。
然而事實是,堅持四個月的努力,成果與你(妳)原先想像的不一樣!」

下一步該怎麼走?

不管你決定做什麼,都一定會遇到瓶頸。

跨越瓶頸的關鍵,就是興趣。

以歷史學的知識為例,品傑相信就算不是專業背景出身,只要有願意探索的熱誠,還是能體會歷史的箇中趣味。同樣的道理,在程式語言中也是如此。

每爬上一層階梯,就是完成一個里程碑。(Photo by Joseph Akbrud on Unsplash

「 我相信人生中每個階段就像爬階梯,每完成一個階梯,就是在完成自己小小的里程碑、一次小小的自我實現。

在這段逐夢踏實的旅途中,自信心是很重要的。只要投入我們喜愛的事物,便能從中得到成就與滿足。當我們接受這些正向刺激,便會想更積極拓展一件事情,把它給做到最好。

一輩子能帶著走的專業和知識,進入學校或職場後就可能發生。但當我在 ccClub 時,火花的激盪以及種子萌芽的過程都對我產生了全然不同的影響。」

筆者相信,我們每一個人在第一次面對程式與習題時,都是一次嚴峻的挑戰。我們可能沒辦法解決它,陷入膠著而感到茫然。但是,你覺得你沒辦法解出問題,並沒有關係。重點是:
「你比一個月前的現在又更進步了一點,你比過去的自己更不一樣了。」
不論是程式或歷史,從宏觀的歷史角度來看:活在當下才是最重要的

把自己從時間的齒論中抽離出來,從整個時間的脈絡來看看自己的全貌吧!也許你也會漸漸發現:

『每一分每一秒的我們,都不斷在改變。』

結語

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

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

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

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

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


Facebook: ccClub Python讀書會

--

--