2018年學習總結

一年的試誤與成長

kyo huang
kyo huang
Dec 31, 2018 · 11 min read

2018是我人生重要的轉折之年,可謂從期待到遲疑,又重拾期待,最終確定目標。謹以本文記錄與總結。

上半年:資策會時期

確定轉換跑道

去年的今天,律師剛放榜,以451/483(及格標準)的差距落榜,這差距說大不大,平心而論,再準備一年的話,通過可能性還是挺高的,畢竟只準備了半年。但基於對考試規則說變就變的不認同,與新進律師市場的飽合情況,還是決定不再參加國家考試,放棄法律之路。

作為一個法律人,要放棄這條路並不容易,尤其已經投入甚多,但人生不是只有一種選擇。既然要轉職,還是要考慮該領域的前景以及自己想投入的程度,最後我選擇了參加資策會的大數據就業養成班。這不是一個臨時起意的決定,早在二試考完後、放榜前的2個月間,我就接觸了不少這方面的資訊,而落榜算是下定決心的關鍵吧。

自學或實體課程?

在之前的文章已經提過,資策會課程對我的學習效果並不算很好,如果再讓我選擇一次,我應該不會參加「任何實體課程」,直接全部靠自學。不過這麼說其實有點後見之明,畢竟我是有了資策會的基礎才這麼覺得。

不可諱言的,資策會的經驗還是很重要,自學遇到問題時,我不時會想起當初上課時,好像也有類似的疑問(比如Windows的路徑表示問題),只要想得起來,解決的速度就很快。尤其是環境建置的時候,總是會發生各式各樣問題,過去的經驗是最好的幫手,再來才是Google和Stack Overflow。

另外,自學是對我管用的方式,但每個人狀況不同。尤其線上課程這種東西,半途而廢實屬正常,我也不是所有買的課都有看到50%。

因此,先退一步,簡單盤點一下資策會時期究竟上了哪些課,以及我的簡要感想,再表達如果我重來一次,我會怎麼做比較好。

簡單盤點

就業養成班的課程項目在網站上的介紹都有詳細列出,以下我就依網頁上的順序一一盤點,附上簡短心得,並依重要性標上星號◆(1到5),只是簡單講一下我自己的看法,絕非嚴謹分析。

Interactive Representation

  • HTML/CSS網頁開發:◆◆
    這兩樣東西是前端基礎中的基礎,易學易用(美感與排版能到什麼程度另當別論),算是「學習成就感很高」的項目。但除了爬蟲對網頁元素了解實屬必要(但也不用多深),其餘情況重要性不高。
  • JavaScript動態網頁設計:◆
    JavaScript是泛用性極高的語言,但不是前端工程師的話,重要性依舊沒那麼高。
  • 資訊圖表應用(D3.js):◆
  • 小結:前端都不是很重要,除了爬蟲需要,其餘可以隨意。

Database

  • 微軟 SQL Server Transact-SQL 基礎語法:◆◆◆◆◆
  • 微軟 SQL Server 資料庫實作:◆◆◆◆◆
    作為以資料工程師為目標的學習者,SQL是學習三本柱之一。就算不是要當資料工程師,公司絕大部分的資料也都是儲存在SQL,能懂一些語法也是很不錯的。
  • 小結:SQL就是重要,不言而喻。

Data Analytics

  • 網路爬蟲:◆◆◆◆
    自己對網路爬蟲興趣不算高,但在生活上的實用度不錯,比如追縱Uniqlo官網商品價格走勢,熱門程度高,整體而言還是滿值得學習的。
  • 數據挖掘應用案例研討:◆◆◆◆
    又名「資料探勘」也就是「Data Mining」,這堂課毫無疑問會用到很多統計學內容。工具上使用weka,不過老師上課時幾乎一半以上時間在講怎麼操作,但對原理比較少提及,很容易忘記。建議有統計學基礎。
  • R語言:◆ 或◆◆◆◆◆
    重要性端視你要選擇R還是Python作為自己的主力語言,R在分析數據時,明顯比Python更直觀。但基於個人偏好,我還是選擇Python。
  • Python 程式設計:◆◆◆◆◆
  • Python 資料分析:◆◆◆◆◆
    資料科學尤其是機器學習帶起了大量學習Python的風潮,數量驚人且威力強大的套件讓你站在無數巨人的肩膀上,簡潔的語法讓它成為第一個程式語言的首選,入門還是要花一些心思的,但絕對值得!
  • Python 機器學習精要:◆◆◆◆
    機器學習,處於時代風口上的主角,入門門檻較高,需要一定的數學與統計學基礎,要學好就要相當投入才行。
  • 小結:
    這部分正是資料分析的核心,都很重要,無法輕易放棄。不過平心而論,在沒有統計學和數學基礎情況下,要學好機器學習並不容易。

Linux

  • Linux系統基礎:◆◆◆◆◆
    很多職缺其實也不用到Linux,資料工程師則是必備。
  • Linux BASH Shell程式設計:◆◆◆◆
    同上,但入門門檻有點高,主要是語言很符號化,需要對很多「符號」去記憶其內涵,但沒有字面上的意義可以聯想,我覺得比Python難學,需要更多耐性與時間,一樣是資料工程師必備,其餘應該還好。
  • Linux Docker容器式虛擬環境建置:◆◆◆◆
    同上,不過docker需要配合容器內的實際應用才好一併學習。
  • 小結:
    簡單二分法,工作上如果用得到Linux,那這三樣可能都很重要,如果用不到,就都不重要。

Hadoop Ecosystem

  • Hadoop雲端巨量資料處理平台:◆◆
  • Hive巨量資料處理實務:◆
  • Spark雲端程式開發實務:◆◆◆
  • 小結:這三門課講觀念居多,實作較少,時數所限,難有通盤的理解。

Language

  • Java程式設計:◆
    學習物件導向挺有用的,語言較嚴僅但繁雜,程式碼落落長。
  • Java資料庫程式設計與應用:◆
  • 小結:
    建議還是以Python或R優先。

上半年的小結與反省

綜上所述,如果再讓我參加一次課程,我的做法的是,1到3星的項目,聽聽就好,該堂課上完就立刻拋諸腦後,確保注意力留在更重要的項目上,行有餘力再來學這些。

實際檢討起來,學習效率不佳的因素之一正是因為項目過多,會嚴重分散對真正重要項目的注意力,尤其這些東西對我都是全新的,注意力有限,取捨其實很重要。講授的進度飛快,任何一步沒學好或落後同學,可能就會聽不懂,這些都會產生很大的心理壓力,更加妨礙後續的學習。

而自學的好處就是可以只挑我認為重要的東西來學,能避免讓不重要的項目分散注意力,也沒有同儕壓力。當然,前面提到說這有點後見之明,畢竟,我已經上完課了,有了基礎不再陌生,也大概知道哪些是重要的,所以挑起來相對容易。現在,我也寫在這裡。

下半年:自學時期

目標與紀律

有了之前的經驗,決定不再參加任何實體課程,改用自學的方式重新培養實力。尤其9月參加完資料工程協會的年度活動後,有了更明確的目標:資料工程師。毫無疑問,目標對學習的效率有舉足輕重的影響,而另一個重要的因素就是紀律的養成。

我們都知道,在沒有人監督的情況下,自學最怕的就是三天曬網兩天捕魚,也就是缺乏紀律。很多人會採用制定計畫並執行的方式來監督自己,這是一個好辦法,而我並不善於計畫,相對的,我偏好機制。

機制導向的紀律之道

機制,說穿了,就是一套規則,你可以為任何事情設定一套規則,然後遵守它,落實這個規則內引導你去做的小目標。換句話說,就是靠自訂的規則來制約自己,讓自己往想要的方向前進。比起個人的意志力,機制更加穩健可靠。

舉例而言,讀書學習,我使用的最基本的機制就是計時,並且把細節記錄在Google Sheet裡,怎麼記錄也都有相對應的要求,比如只限以「小時」為單位,且早上、下午、晚上時段都各有計時的上限,每日、每週亦然(為什麼這麼設計,稍稍推想應該不難明白)。同一小時內,原則上只能以一科項目為主,記錄也只會記錄一種。這些簡單的規則會構成下圖:

而我需要做的事就是,想辦法填滿一週30小時的學習時數。有些人可能會覺得一週30小時有點少,不過就我的經驗看來,想要持續一個月甚至一季以上的自律學習,這個值絕對不能定太高。而且這是只有真正學習時才會計時,30小時如果納入中間必要的休息時間(指的是短暫休息而非吃飯睡覺),實際上需要花費36–40小時,跟上班族的工作時間也差不多了。

人生是一場無限賽局,實在沒有必要執著於一週多讀幾個小時,因為只要一陣學習低潮,有一週空白,多讀的時數就被輕鬆打平了。而高壓的情況下,崩盤的機率也大幅提高。我們追求是的持續進步,所以真的沒必要定太高,能保持心情穩定才是關鍵,只要好好設定一個「沒那麼容易達成的標準」就可以了。

The Udemy Way

有了機制之後,剩下的就是材料問題。把時間投入在材料上,靠著機制不斷累積時數,就是基本的自學架構,所以我比較少制定計畫,只是會不時檢視學習的狀態,並調整一下方向,通常就足夠了。

Udemy

大概花了一半的學習時間在udemy的材料上(另一半是書和網路文章),選擇udemy的原因無他,就是便宜又大碗。從這個列表可以看出,學習的重心還是在三本柱上:Python、Linux(包含shell script)、SQL,其餘docker和git則是比較附帶,不過git的學習感受比docker好很多,也算是有告一段落。

這裡沒打算細論這些教材,只從「完成比例」來討論。

有數據顯示,線上課程的平均完課率是很低的(低於10%),這不令人意外。就我的經驗,一堂課如果能看完50%,通常已經能學到這堂課重點的80%了,像上圖的Git課,我自己是把它當作學習完成的,儘管實際只上了49%,其餘的內容多是非必要的。

所以,看待這個%數的姿勢一定要正確,首先,有30%就可以認同自己,因為已經贏過一半的人了,有50%大概贏過8成的人了。而且我覺得一堂課的甜蜜區間是50–80%,而65%正是甜蜜點。

如果時數愈短,那完成率可能就要相對應提高,像SQL是10小時,我的完成率就有89%(另一方面是課程編排得不錯,optional內容不多),而Colt Steele 的 Python 3,高達30小時,縱使內容編排十分用心,但 69% 我就覺得已經很盡力了。

無論如何,在線上課程的世界裡,要追求的是50–80%(當然課程如果真的不符所需,應該立刻果斷放棄),而不是一般上課的90–100%。另外,時數也是一個選擇要點,除非是很重要且必須全盤了解的科目,不然最好不要選超過12小時的課。前路漫漫,容易讓人動力不足。老子有云:少則得,多則惑。

筆記

筆記的重要性實在太高,再怎麼強調都不為過。

在漫長的學習中,如果沒有筆記,那記憶會少很多。怎麼做筆記,每個人有不同的偏好。有些人喜歡手寫,覺得這樣會更有印象,我基本認同。學習法律時期也是以手寫為主,但缺點就是速度很慢。改學程式以後,就不能靠手寫了,因為資料量實在太大。

我改以 Evernote 筆記為主,Evernote 本來就有在用,但學了程式後,用量更是大增,舉凡看線上課程,看書,甚至是網路教學文章,都盡可能做成筆記,以強化學習效果。可以說,Evernote 已經主宰了我學習的中樞神經,前陣子他們傳出獲利不佳、財務困難的消息,對我這個重度使用者而言真是不禁捏一把冷汗。

舉前面推薦的肖鵬SQL課為例,一邊看影片,一邊做筆記,三天下來,筆記量接近2萬字,如果用手寫不知道要花多少時間。而且,命令列輸出結果還可以直接截圖貼上,這也是紙本筆記所不及的。

Evernote

另一種筆記方式就是 Jupyter Notebook,在學習 Python 類材料時會使用,優點不用說,就是可以將Python程式碼和Markdown文字整合在一起,非常適合做 Python 筆記:

Jupyter Notebook

總得來說,筆記的主要價值還是在於「反覆的閱讀與增刪」,每一次複習都是對之前學習的重新檢視,好的筆記就像好的書,值得一讀再讀。

結語

2018年是個人職涯的全新起點,總結一句想法就是「目標愈明確,對學習愈有幫助」。之後會分享更多自學心得,學習可以是快樂的,只要別過於勉強,也別太偷懶,每一次進步就在這樣的小小紀律之中。

Code and Me

我的程式與學習探索

kyo huang

Written by

kyo huang

法律人,現在是熱愛Python的小書僮

Code and Me

我的程式與學習探索

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade