前言#
本篇是對 2022-12-14
到 2022-12-19
這周生活的記錄與思考。
本周同樣因為疫情而居家辦公(感覺這個開場白之後可以去掉了,已經是常態了),依然還是在 “不務正業” 地學前端,順便工作寫一點後端代碼,有幾天甚至不知不覺都已經拂曉了,感覺找回了去年在香港趕 due 和備戰期末考的狀態,但這次少了很多外界的壓力和焦慮感,更加享受其中。
有過前一段時間天天加班到深夜的體驗,才更加意識到能夠自由支配一些時間,學習想學的東西,或是單純和貓貓一起發呆的日子是多麼珍貴。但是感覺已經有很久的時間都在狀態調整和分享自己的一些日常,很久沒有寫些什麼乾貨或是經驗了,今天就來淺分享一下自己的一些學習經驗、方法和思路吧,可能更多還是一些概念上的,後續(大概?)也有更具體的分享。
想了想還是補充了下面這兩段話。
其實一開始只是想着該寫年度總結了,於是看了看自己這一年(或者其實嚴格意義上是從 5 月才開始恢復更新的這半年)的文章,除了 5 月發了很多工具效率類的文章外,大多都是周報,一些思考、想法、情緒和碎碎念,雖然說更多只是個表達欲的渠道,但偶爾也會惭愧自己講情緒太多,似乎把博客作為了一個出口,於是想着還是能夠帶來一些乾貨吧,所以就有了這篇經驗談,不知不覺竟然也寫了快 7000 字了。
年度總結也會有,會有自己這一年的各種事,失去的、得到的、值得感謝的、難免遺憾的,雖然也猶豫過要不要再提一些東西,但還是決定更真實地面對吧。畢竟所有東西都會過期,鳳梨罐頭也是,這一年也是,是這些喜怒哀樂構成了我的 2022,也構成了一個更加完整的我。
然後,會在 12 月 31 日發,一個對我挺特殊的日子。
從今年的某個時候開始,我在每篇文章加上了主題曲,五月天的《後來的我們》,一首我很喜歡的歌。今天換成了《Brand New Day》,墊底辣妹電影的主題曲,一直覺得很好聽,也挺適合這篇文章。
如何學習一門新的技術#
我的學習方法探索之旅#
初探#
自己以前並不算是一個很崇尚各種學習方法論的人,對這種 “如何” 體也比較無感,高中在閱讀『如何閱讀一本書』時也沒能成功讀完(?),總覺得這是一件很因人而異的事,看過許多帖子可能也比不上自己某個階段的帶點玄學的所謂 “開竅”,當然,這裡的開竅大多與天賦無關,只是在摸索中找到了一些自己的路子而已。
發生轉變是高中一次在書店,遇到一些浙大的學生在售賣自己總結打印的高考備考資料和經驗,出於好奇買了一本歷史學科的,閒來無事就翻著看,裡面有一些時間軸的整理和記憶的小技巧,後來真正學到這些知識的時候常常就能更加得心應手地運用,後來歷史成為了我常常能拿年級前列的學科,慢慢也積累了我對歷史學習的興趣(甚至一度想報考歷史系)。
現在想想,可能那本書上的內容本身並沒有什麼獨一無二的部分,知識就是那些知識,只是從一個經歷過高考且取得了不錯成果的大學生視角來歸納方法,還是很有一種 “降維打擊” 的效果的,這某種程度上也啟發了我在其他學科的學習中也開始逐步探索自己的方法。
學習心態#
本篇並沒有打算(主要也講不明白)介紹各種有理論基礎的學習法,主要是關於 “XX 學習法” 這樣的視頻、文章有很多,可能經過一些總結和內化後也不如閱讀原文,這裡先推薦『是落拓呀』學長的這篇『我是如何學習一門新的技術或知識的?WW 學習法?以區塊鏈為例。』,我剛開始學習區塊鏈和很多其他知識的時候從中獲益良多。
這次更多想從一個我覺得很重要但常常被忽略的點講講我的一些想法和經驗 —— 學習心態。
大學被調劑到了英語專業,只花了大概半個學期的時間,我就非常清晰地意識到了這並不是一個我會持續投入熱情並能夠賴以為生的專業。但當時的自己還沒有很清晰的目標,於是開始不停地學各種技能以緩解迷茫和焦慮。
因為在社團主要是負責一些 “技術” 相關的工作任務,當然,這裡的技術主要是指平面設計、攝影和視頻剪輯這樣的技能。還記得我第一個重點負責的晚會項目有一個很趕的宣傳視頻 / MV 的工作任務,印象裡並不複雜,也沒什麼特效,就是一些視頻的素材基礎處理、拼接和導出,最多也就是適配不同尺寸的屏幕以達到不錯的顯示效果。
於是在一個周末,下載了 Adobe Premiere Pro(也就是俗稱的 PR,一個萬惡的折磨了我長達五六年的軟件,也沒想到後來自己的很多事都和視頻剪輯相關,也是奇妙的際遇了),看了一些入門教程,兩天趕完了。去交任務的時候社員包括部長都挺驚訝的,問我之前學過麼,怎麼那麼快。
其實我對於視頻拍攝、剪輯的了解也不過就是在高三時做了一個生日祝福視頻,還是找朋友幫忙一起做的(好像用的是繪聲繪影還是愛剪輯來著,也是好遙遠的名詞了,然後這位朋友現在在做導演、剪輯相關的工作,奇妙際遇 * 2),而在用 PR 時也下意識地並沒有覺得這是一個很難的軟件或者說沒覺得剪輯是一件很難的事,學習起來也就很順其自然,遇到不會的問題現查就可以了,也並沒有太多的技術含量,只是我去學了,僅此而已。
而很多朋友可能會在剛開始學習一個自己不了解的東西時有一種很本能的畏懼感,覺得它很複雜,自己給自己設置了心理障礙,直到最後也沒下定決心去學,後續我在帶部門和社團進行教學的時候也大多用一個基礎的實戰項目帶大家了解到這並不是一件那麼 “高不可攀” 的事,打破了這一層心理因素並調整了學習心態後,學習操作本身就很容易了,效果很好。
當然這些只是一些通用性的技能,真正編程相關的技術還是差異很大的,但這一方面的心態變化歷程可能就說來話長了,因為也常常被問到,也算是順便提一下自己的文科轉碼之旅了。
我的文科轉碼之旅#
VB 入門#
作為理工院校的文科院系,我們非常具有理工特色的就是需要學計算機,但是只是基礎的 VB (Visual Basic) 語言。得益於浙江的學業水平考試的信息技術學科需要 VB 上機考,已經在高中有過一些基礎的了解,再學起來也比較輕鬆,雖然語法都需要重新學,但同樣的,在心態上也覺得是一件並不那麼難的事。
當時由於身邊許多朋友都是初接觸編程語言,對語法和各種符號有著非常強烈的畏懼感,所以我在學的時候以自己的思路和解釋整理了一份幾十頁的筆記,從一本書變為了薄薄的幾十頁紙,朋友們在學習的心態上有了很大的變化,卓有成效(後來還 “繼承” 給下一屆,有成為了傳說中的學長學姐寶典的經歷也是一件很開心的事了)。
轉換方向#
重溫了 VB 後,突然覺得自己很喜歡這種能夠通過代碼來創造、實現一些想法的感覺的,然後也覺得某種程度上還算 “擅長”,遂萌生了一個在當時看來有些大膽的想法 —— “是不是我也可以把計算機作為自己的未來方向”。
當然,由於學校莫名的 “高考文科招生不能轉理工專業” 的規定,轉專業這一條路已經被堵死,武大計算機輔修的申請也因為績點差一點而失之交臂。
算了,那就自己學吧。
於是向認識的在華科輔修計算機的朋友要了課表和教材,當時的心態很簡單,可能科班的很多課我確實沒有那麼多時間精力來通過自學同步補,但輔修的課程負載還是可以接受的。於是,一邊補著操作系統、計算機網絡這些基礎課程,一邊學 Python(沒錯我也是從廖雪峰老師的 Python 課程開始的),開始了自己的 “不務正業” 之旅。
艱難前行#
中間有過無數次掙扎和覺得自己是個廢物想放棄的深夜時刻,以及在掙扎期間因為迷茫去做過公眾號運營、產品經理、區塊鏈遊戲策劃、平面設計等各種崗位實習 / 兼職以及後來註冊公司開了工作室做視頻剪輯等等的經歷,這就在另一篇『周報 #19 - 忆一次創業經歷』了。
自己那幾年真的在這條路上坎坷地走了很久,有過盲目地學各種語言(因為覺得寫上自己會一些小眾語言聽起來很酷),有放棄枯燥的基礎知識學習去寫 Web 和小程序(因為可以賺外快),有覺得不需要去理解各種底層原理和數據結構自己也能寫好代碼的誤區,有學了很久但是似乎長進並不明顯的瓶頸期,當然,也有很多開心的收穫,但這已經是日常了,就不細數了。
後來出於職業規劃(誠實來講,大多英語專業本科出去在現在的環境想找一個技術工作確實是簡歷都遞不出去的,無奈卻也不得不面對的現狀)與想在具體的領域有所造詣的考慮,我在畢業後 Gap 了一年去申請了香港的計算機系研究生,這部分在『23 歲的自白:去追尋意義』裡有提到,因為之前有拿到了台大計算機一名區塊鏈方向教授實驗室的邀請最後卻被鸽的對我打擊挺大的事,也算是圓了自己的夢(你不要我,我值得比你更好的)。
擺正心態#
其實在後續的學習中,自己受益最大的是從來都沒有把 “我是一個英語專業的學生” 作為自己學不好的理由,畢竟現在已經沒有什麼太高的知識獲取壁壘,別人能學到的知識我也能夠在很多公開課、教程中學到,甚至有了一些自己選擇的權利,可以找最好的最適合的課程進行學習,以至於刷了好多門 MIT 的公開課和 Coursera 的課。
包括真正去參加港大計算機學院的面試時,我也沒有把原專業作為自己的弱項避而不談,而是提到了自己作為一個來自不相干專業的學生對於熱愛的專業所付出的努力和獲得的成果,包括對於專業和行業的一些探索和想法,相信對於最後的 offer 也有一定幫助。
鴿了的文科生轉碼指南#
題外話,關於文科轉碼其實之前自己一直有想寫一個指南,大概就叫『文科生編程入門 / 轉碼指南』之類的(雖然聽起來就很營銷號的 Python 廣告),但總是覺得無非是一些教程推薦和申請經驗,最後的結果運氣也占了很大的成分,分享出來也並沒有太多的乾貨,反而更容易像是一種幸存者偏差的 “炫耀”,於是一直沒動筆。
但現在經過了一年多的工作和探索學習,自己也算是真正在程序員這個職業或者說區塊鏈這個行業勉強站穩了腳跟,也覺得自己或多或少在學習新技術 / 知識上有著一些小經驗,所以打算重啟這個想法了,也挖一個小坑,慢慢填。
但其實想做這件事並不是說標榜轉碼有多好或是這件事有多容易,行業確實有一定紅利,但轉碼和技術學習的個中艱辛苦楚也有不少,有很多熬夜的夜晚,也有很多懷疑自己的時刻,只是不值一提罷了。而且終究還是靠一點點的積累,就像那句樸實卻很真切的道理 —— “無他,唯手熟爾”。
在 Podcasts 和推特上也見到過很多崇拜的技術大佬,也不乏轉碼的,相比之下,以自己的能力尚不足以去教導大家些什麼,但想把這些寫下來其實也只是想傳達一下自己的想法與心路歷程,或多或少讓對這一領域有所好奇的人不要因為心態問題怯而不前。
有相關經驗心得的也歡迎一起參與貢獻。
我是如何學習的#
回歸正題,淺談一下我學新技術或是接觸一個新領域的一個基本模式吧,純個人經驗分享。
信息源採集#
可能由於之前學習模式和個人信息控特質的一些影響,我非常傾向於在學習一項新的技術 / 知識時收集很多信息源,可能比起一些搜索引擎和算法推薦的結果,我更習慣去一些喜歡的 Youtuber 或是個人博客作者的歷史視頻 / 文章中進行翻找,常常有一些意外之喜(主要是那些大佬都太強涉獵太廣了,好多個之前看 Python 和 Go 的博主都更新了區塊鏈的很優質的內容),從他們的視頻 / 文章中能看到學習中的坑,以及這項技術後面的實際應用。
比如在推友『STRRL』的博客『strrl.dev』中能看到他折騰的很多小玩具,有些就是我同樣需求但是沒想到(或者做不到)能夠以這種方式實現的,能有很多啟發;以及在看另一個推友『Nova Kwok』的博客『Nova Kwok's Awesome Blog』時常常會發現,“這個人怎麼什麼都有啊”。
除了具體的知識和教程外,也能夠從他們身上看到自己所向往成為的樣子,能有更多的好奇心與探索欲,對未來有更多期待。
初步了解#
在選擇教程方面,我之前也提過很喜歡以 Crash Course 的方式開始,直譯成 “XX 小時帶你學會 XXX” 好像有些營銷號的感覺,但 Youtube 上真的有非常多這種系列,直接搜索比如『Next.js Crash Course 2022』就會有很多很有意思的結果。
我前段時間做一個 ÐApp Demo 的時候因為有用到 Next.js 做基礎的前端顯示,就看了一下搜索結果中 Traversy Media 的這個 Next.js Crash Course,很喜歡他的講解方式,在一個小時裡就讓我對這個框架包括整個前端開發語言有了基礎的了解,雖然沒經過系統性地學習自己很難上手做一個項目,但是在後來的項目中看到前端代碼中出現的一些語法也能知道在做什麼,在別人框架的基礎上做一些自己的定制化修改也比較容易。
比如這就是我看完 Next.js Crash Course 後通過另一個很喜歡的 Youtuber devaslife 開源的這個『GitHub - craftzdog/craftzdog-homepage』項目修改的個人首頁,『Yu - Homepage』,花很短的時間就能做出一個很美觀的小項目,也是在開始學習一項新技術時候很好的動力。
深入學習#
但真正要寫一些企業級項目或是自己從頭做一個複雜的項目,僅僅靠 Crash Course 是遠遠不夠的,會需要更系統的學習和很多項目的實踐,這個時候需要一些更實戰性的課程,這一點看個人偏好,很多 Crash Course 作者其實有自己的訓練營或者付費教程,如果找到了喜歡風格形式的博主則可以跟著他繼續學下去。
我個人更偏好的是 Udemy 平台,也算是一個比較老牌的在線課程網站了,雖然價格看起來比較離譜但是基本上都在打骨折,總是各種理由發優惠券,讓我總是擔心它哪一天就倒閉了,平均一門課大概就 9.99-12.99 美元的樣子吧,折合人民幣 100 不到,還是很值得的。
比如我上文提到的 Brad Traversy 就在 Udemy 上開設了 React、Next.js、Tailwind CSS 等課程,因為我確實很喜歡他這種以項目為導向的方式和他的教學風格,雖然在 Udemy 上相關課程有比他購買 / 評分都高很多的課,我依然選擇了他的,這些是我學 Web 相關購買的一些課(很多是前兩天活動價購入,還沒開始看)。
成果輸出 / 項目實踐#
之前跟我 leader 聊過學習方式,他學習一個新的語言 / 框架會先自己摸索著把項目運行起來,自己嘗試著改點東西,然後可能項目裡直接用上了,遇到問題再一點點解決。這是一種很高效的掌握方式,而且可能在項目工程應用上更加普適,但可能我還是偏學院派一點,會選擇看課 / 看教程這一種起初效率相對較低,但能夠在一開始就掌握一些最佳實踐,且在後續遇到問題在心態上更穩一點的方式吧。
內心 OS:要是我有我 leader 那樣前一天晚上剛發現一個框架,第二天就把項目架子重構了的可怕工程能力,我還看什麼課啊。
看課也有一些完成作業、項目實踐和最後的課程結業的成就感,能夠在學習的各個階段裡給自己一些動力,比如我一周多學完的 React 課程拿到證書,並且成功用到了實際的 Side Project 項目中,還是蠻激勵自己繼續下去的。
當然,這種方式也還是有一個門檻就是很多這樣比較高質量的課都還是在 Youtube 或是一些國外的平台的,基本只有英文,所以還是需要有一些克服的,不過也都會提供中文字幕,但我個人還是更傾向於英文來看的,畢竟也會牽扯到很多術語,而且機翻很一般。
另外,看課由於一般周期比較長,很容易中途放棄或是拖延到忘記了前面的內容,不進行實踐或者記錄很容易忘記,為了克服這一點,我採取了兩種很簡單卻行之有效的方式 —— 以輸出為導向與以結果為導向的學習。
輸出導向很好理解,我有在更新自己的個人博客,曾經技術乾貨還是很多的,現在在日常博主和工具效率博主之間反復橫跳,我會在學一門技術 / 知識的時候分屏在 Logseq 中記錄下關鍵筆記,注意,這一定不能是直接粘課程資料,而是更多自己在編輯器裡敲一遍並且勤加註釋,順便把關鍵的一些比如命令或者代碼片段直接截圖保存一下,完成後消化一段時間筆記。
過了 1-2 周後,再重新去看筆記,並且把筆記整理成文。這裡有兩點非常重要,一個是過 1-2 周,我們剛學完時會有比較深的印象,也常常會有一種 “我已經會了” 的錯覺,但其實掌握得不一定很扎實,可能只是一些即時的記憶,1-2 周正好是一個不錯的消化周期;而整理成文則是另一個很關鍵的點,我們常常會寫一些零散的筆記或是思維導圖,但其實能把一個知識點組織成文,用自然語言講出來,讓讀者能夠看得很流暢,是一件挺具有挑戰性的事。
這時候上文的那些註釋和截圖就有用場了,我在寫文章時有自己和自己對話以及反復回看的習慣,就是比如寫完一個模塊後,會常常問自己,如果我是讀者,我在這裡會提什麼問題,我該怎麼解答,那其實常常會發現一些講得不夠清楚的點,再加上反復回看後添加的補充說明,成文的時候一般來說還是一個挺行文完整且符合自己思維邏輯的技術博文了,作為以後溫習或是當作參考文檔查詢也會比看別人的資料要有效得多。
其實更好的方式是錄視頻講解,能把一件事在視頻中講清楚比起寫明白的難度還是更上了一個層級的,但我還在克服需要錄製視頻講課的一些心理障礙。
明年的一個小目標就是成為一名技術 Youtuber/up 主了,可能最後成為了萌寵博主呢,畢竟誰看我啊,點開周報的都是來看捏捏的吧,我今天就不發,囤到年終總結攢一波出片。
除了輸出外,我還有另一個並不建議大家輕易嘗試的方式 —— 以結果為導向的極限操作。其實就是把一些超出自己目前能力範圍(但也別太多)的任務先接下來,以結果和 ddl 來逼自己快速掌握,以及遇到問題會更拼命想辦法去解決。
這個可能和個人心態、信心和多線程能力有關,我是一個遇事還算冷靜處理的人,經常幾個任務並行但也不至於會被壓垮,而這麼多年踩坑的經驗也讓我明白了一個樸實的道理 —— 再複雜的任務總是奇跡地能在 ddl 逼近之前的幾分鐘搞完,大概這才是第一生產力吧。
但現在隨著做的項目越來越複雜還是少這樣吧,萬一翻車了呢。
總結#
剩下的其實也沒有太多方法可講了,以上其實也都只是學習一門技術或知識的一些經驗談,學完了可能也只能說剛入門,工程能力的培養沒有捷徑,只能靠不斷實踐積累咯。
技術是一件很有趣且不同階段去了解學習都有截然不同感受的事,就像我 leader 是一個二十多年工作經驗的強者了,依然經常在半夜突然發個消息給我,說 “XXX 框架 / 工具挺有意思的,可以玩一下”。
我很喜歡他的這種說法,“玩” 一下,我們不需要再去糾結或是辯駁把愛好作為職業是一種怎樣的體驗,因為我們本就樂在其中,工作不過是順便能夠糊口的副產品罷了,也希望大家都能找到自己的心之所向吧。
自己並不是什么大佬,目前階段很難能夠在具體的一些技術和領域寫出很深度的文章(但是也有在努力了),於是想把自己的各種經驗作一些分享吧,後面也想針對一些更細節的技術輸出一些視頻教程和文字教程。
讓我數數今天挖了幾個坑要填。