第零節:學習經驗分享
0 序
本文緣起於和一位同事交流Python中,希望我能開個課程分享下心得和經驗,我就欣然答應了。
我畢業於廈門理工學院數學與應用數學(統計方向)專業,大一下開始接觸程式設計,相當於花了一年學習C語言,一年學習C++,一年學習演算法,有參加過ACM演算法競賽,最好成績是在上海和隊友拿到亞洲區域賽銅獎。大學畢業後在中國鐵塔做了半年Excel,用VBA做資料自動化處理。2016年回到母校和計算機學院的王大寒老師一起做模式識別方面的科研工作,主要是使用C++,有時候也要用到Matlab,2017年上半年在北京中科院自動化所訪問學習。因為很多原因,退出科研領域,2017年8月來快樂學習做LaTeX。 很快我就發現LaTeX工作中存在非常多可以自動化的地方,就邊學Python3邊做起相關自動化工作,持續到現在。
我自認為技術水平介於初級與中級之間吧,還有英語等等方面不足,在撰寫本文時很多也是現學現賣。在ACM和中科院,見識過很多大牛,真的是人外有人,天外有天,我們還是要stay hungry stay foolish。也正因為一個人的力量是渺小的,經歷和見識總是有限,經常會有思維盲點的存在,旁觀者清,在這裡也歡迎大家對文章的各種補充、建議和批評。
故不登高山,不知天之高也;不臨深溪,不知地之厚也;不聞先王之遺言,不知學問之大也。
因為我的主要工作是LaTeX的原因,潛意識裡會比較偏向文件處理方面的技術介紹。 圍繞Python相關技術,也會分享一些普適性的學習方法理論。文章僅代表個人觀點,後文不再累述強調,會直接描述見解,不再加詞綴“我認為”。
1 學習動機
我的學習觀:
凡事皆有因緣,有的人是對Python有興趣,想了解不同語言之間的優劣,感悟程式設計之美而來學習Python,用來做一些自己覺得有趣的事情;有的人是看好Python的前景,為了事業,更廣闊的發展出路而來學習Python;有的人只關心某個具體問題,想用Python儘快寫一個自動化指令碼解決問題。
動機不存在道德優劣,大家的目的不同罷了。 但基礎、目標不同,適合的學習資料和方法,是有差異的,不存在最好的資料和方法,就像不存在最好的程式語言,適合自己的就是最好的。就算是同一個人,在不同的時間點目標也可能會產生變化,具體問題具體分析,我們要學會與時俱進,靈活變通。
任何選擇都有得失,Python有優點也有缺點,我們要做的不是要把Python變完美,而是通過對Python充分的瞭解,發揮其特長,避開其不足。
選擇的過程,可以把眼光放長遠一些。有些事情半衰期很短,例如打遊戲,可以很快就得到收益,非常爽,但是過幾天這種感覺就消逝了,並不能帶來長遠的利益。 而學習Python,當下的收益並不大,但這種收益會持續很久,不斷的在你的人生中給你的工作學習帶來便利。
半衰期短收益低的事讓別人做,例如把一張圖片的內容錄出來。 半衰期短收益高的事自己找兼職做,例如排版其實比錄入容易的多,相對市場價錄入一頁13元排版一頁6元,排版價效比太高了。而我們自己,應該是把精力放在管理溝通,技術研發上。一件事情手動做可能只要3個小時,寫自動化程式要一週,但以後所有類似的問題都可以通過程式解決了,遠比一直都花3個小時去解決,長遠累積效益高的多。我們也不要小看一些半衰期長但收益低的事,多瞭解一些學習方法、人文素養,看起來沒有直接帶來什麼利益,其實長遠的潛移默化所帶來的價值也是不可估量的。
2 獲取資料
主要途徑有:
- 百度、谷歌:
- 百度能比較方便的搜尋到中文資料,學習門檻較低,對於英語不好的可以優先嚐試,先對某個陌生知識點有基本瞭解,再用谷歌搜尋英文資料,往往會更權威系統,而且很多偏僻技術問題,只有通過英文搜尋才找得到答案。
- 要注意使用一些搜尋技巧,能大大提高精度:
- 有個小技巧,大家可以先搜“圖片”而不是網頁,通過看圖片來進入相關網頁,往往找到的資料質量更高。很多知識其實一圖勝千言 ,能畫出一張高度總結歸納圖片的文章,質量都不會太差。
- 垂直網站:一個行業發展成熟,一定會有相應的垂直網站,甚至APP。在相關網站上去找資料,會比百度谷歌效率高得多。
- 部落格、書籍、官方文件:
- 我們可能只是因為某個小問題而搜到一篇部落格,如果發現部落格質量非常高,一個作品往往體現了其作者的人品,可以試著去了解下作者的其他作品,往往也有很多非常優秀的內容值得一讀。公眾號、論壇、網站等等也是同理,這個道理看似簡單,但我們大量的優質學習資料來源往往都是通過這種途徑獲得的。
- 部落格一般知識點比較零散,要系統的學習的話最好是看書,看書也比較容易制定學習目標,堅持下去,對知識點也有系統的認識。有些網站“部落格”是有目錄整理,體系規劃的,也可以理解為是“書籍”類資源。
- 官方文件:很多官方文件是開發者寫的,他們對底層實現原理是最瞭解的,一些偏僻的bug、知識點,往往只有官方文件才有寫。
- Learn X in Y minutes,這個網站我翻譯為“21分鐘從入門到放棄”,有各種程式語言、軟體的快速入門資料。
- 伯樂線上github,有各種程式語言的擴充套件庫、書籍資料大全。
- 有些資料找不全、找不到,還可以嘗試淘寶。
- 音視訊等多媒體資源:
- 音訊:網易雲音樂有些電臺,平時聽一些科普類、歷史類訊息可以瞭解相關文化。IT工作人士平時眼睛用的比較多,可以睡前閉目養神聽段音訊。
- 視訊:
- app:例如有很多英語學習的App,ipad也有一個“演算法動畫圖解”的應用用來學習資料結構與演算法,非常生動形象。
- 社交途徑
- 如果身邊有牛人,直接向牛人請教要怎麼學習當然是最快的~~不過要記住別人只會指導一個方向,具體的學習都是靠自己的。
- 如果身邊沒有,可以瞭解該領域內的牛人,通過郵箱、知乎、微博等等手段去聯絡,一般真正的大牛脾氣都很好的,只要你丟擲的問題是有價值的,都會很熱情的回覆指導。
- qq群等社交平臺,也能詢問一些比較偏僻網上很難找到資料的問題。一些qq群檔案有些資料積澱也可以閱讀了解。
總之,只要動機足夠強烈,方法總比問題多,總能找到解決問題需要的資源的,不要輕易說“沒有資料,沒辦法”。
推薦其他連結工具網站3 學習方法
吾嘗終日而思矣,不如須臾之所學也;吾嘗跂而望矣,不如登高之博見也。登高而招,臂非加長也,而見者遠;順風而呼,聲非加疾也,而聞者彰。假輿馬者,非利足也,而致千里;假舟楫者,非能水也,而絕江河。君子生非異也,善假於物也。
這裡的學習方法主要是指一些工具、以及固定的套路、學習模式,跟第2步的“獲取資料”和第4步的“整理分享”有一定重合,介於“資訊輸入”和“資訊輸出”中間的“資訊處理”。不同的學習任務,需要的工具神器不同(Python程式設計需要給力的IDE開發除錯工具,LaTeX需要文字差異對比、檔案整理工具),就不展開,簡單說一些較通用的。
- OneNote,有道雲等筆記軟體。喜歡用markdown寫筆記的,圖床可以考慮貼相簿。
- 找資料的時候,我一般習慣先在虫部落快搜 找有沒有相關的微信文章、知乎答案,這裡的文章一般比百度出來的質量好些。以及搜關鍵詞相關的圖片,看到比較直觀易懂的圖片,再索引到對應網址,這類資料一般圖文並茂,更便於理解。大概瞭解中文資料情況後,再搜尋閱讀英文資料和讀官方文件。
- 百度翻譯等翻譯工具:能自動識別輸入的是中文還是英文,還支援複製圖片,自動識別裡面的文字哦,也是一個很好用的OCR工具。還有有道詞典軟體,chrome瀏覽器可以擴充套件翻譯外掛等,都是閱讀英文資料時的利器。
- 堅果雲(免費版功能已經足夠大部分普通使用者的使用),可以在多人、多臺電腦、手機、平板等實時同步資料。可以把桌面同步了,這樣在不同電腦幾乎可以無縫銜接工作。
- 學習一門新語言的時候,我會進行 對比學習,思考同一個功能在不同程式語言裡面分別是如何實現的,例如用自己熟悉的c++去理解py程式碼: 世間萬物很多道理都是相通,不僅是程式語言之間,其實語文、英語、數學符號、程式語言都是關於溝通訊息傳遞的學問。我們學過的每一個技能都不會白學,抓住知識背後的本質規律,以不變應萬變,通過類比能更好地理解新事物。有個TRIZ,是關於創造發明的內在規律和原理的方法學,有興趣的可以去了解下。
- 最好的休息,不是睡覺,而是切換大腦。可以試著在學習與運動,理科和文科,輸入和輸出等不同的狀態間切換。
4 整理分享
4.1 用自己的語言重新組織
資料收藏誤區:只囤不用,久積成病。還不如重新上網搜尋。 一定要對資料用自己的語言重新組織。有個非常好的鍛鍊自己知識歸納,語言組織,記憶力的方法,就是每半天和朋友吃飯的時候,互相分享這半天在做什麼,講到能讓對方聽懂。朋友職業沒有限制,只要對方願意聽,都不是障礙。
4.2 分類整理
學習工作中遇到的問題,好似是獨立零散的一個個點,其實都是有邏輯因果關係的,用線串起來,就會形成一個很有條理的面。這就具備了巨集觀、系統思維。
通過分類、歸納整理,雖然看似沒有原創的新發現,但博採眾長,我們就能做到:
青,取之於藍,而青於藍;冰,水為之,而寒於水。
4.3 寫筆記!寫筆記!寫筆記!分享筆記
這個我就不多說什麼了,劉未鵬大大下述兩篇文章總結的非常詳細了,強烈推薦很多不喜歡寫筆記、分享筆記的夥伴認真讀一下。劉未鵬有一本《暗時間》,是講學習方法的,也十分推薦一讀。
- 劉未鵬,為什麼你應該(從現在開始就)寫部落格,BetterExplained,2009.2
- 劉未鵬,書寫是為了更好的思考,BetterExplained,2009.2
4.4 眼前的終點只是另一個未知的起點
整理歸納,並寫筆記分享後,似乎這個知識點就學完了。 其實我們要真正理解一個概念,往往是螺旋式上升,反覆迭代的一個過程。 一本好書,每一次讀都會有新的收穫。不要想著什麼東西都只學一遍就夠了。
另一方面,當我們解決一個問題後,往往會發現背後蘊含著更多的問題和疑惑。 這是一個迴圈,我們又再次回到第1步的“學習動機”。 一個好的問題,可能會讓我們與更多志同道合的朋友相遇, 會發現更多優質的學習資料和工具神器,會發現這個世界更多的美。 科技不是線性發展的,而是技術爆炸, 我們人的學習能力、技術能力、精神世界又何嘗不是“爆炸”式地成長呢?
我並不算很有天賦,用了一年來學C語言,一年學習C++基礎。 但是我大四學LaTeX的時候,只用一週讀完了劉海洋的書,工作的時候又用一週學會了Python的基本語法。
所以,我們也不用畏懼問題,學無止境,活到老學到老。 稍事整頓,思考我們為何選擇這條路,迴歸初心,踏上新的旅程。