2018年學習總結
一年的試誤與成長
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的原因無他,就是便宜又大碗。從這個列表可以看出,學習的重心還是在三本柱上: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萬字,如果用手寫不知道要花多少時間。而且,命令列輸出結果還可以直接截圖貼上,這也是紙本筆記所不及的。
另一種筆記方式就是 Jupyter Notebook,在學習 Python 類材料時會使用,優點不用說,就是可以將Python程式碼和Markdown文字整合在一起,非常適合做 Python 筆記:
總得來說,筆記的主要價值還是在於「反覆的閱讀與增刪」,每一次複習都是對之前學習的重新檢視,好的筆記就像好的書,值得一讀再讀。
結語
2018年是個人職涯的全新起點,總結一句想法就是「目標愈明確,對學習愈有幫助」。之後會分享更多自學心得,學習可以是快樂的,只要別過於勉強,也別太偷懶,每一次進步就在這樣的小小紀律之中。