隨著點滴零碎知識點的積累,我們更應該順勢開始構建自己的知識體系。體系化學習策略可以幫助我們將零碎的知識網路化,相對於傳統學習,幾乎是碾壓式的存在。
在高中求學時,我的數學老師是北師大高材生,也是校級優秀教師,體系化學習策略就是老師諄諄教導的,對我後來的學習工作幫助頗大。任何知識學習過程中一開始都容易呈現離散特性,如這段時間學習三角函數,過一段時間學習解析幾何,當好不容易學完解析幾何,三角函數已經忘的差不多了,導致很多人的學習生涯就是在不斷的學與忘之間反覆震盪。
如何克服這個難題呢?體系化學習策略要求學習的時候需要持續總結反思,新學習到的知識需要儘可能的和原有知識關聯起來,或者說,要用原有的知識體系去碰撞溶解新知識。如三角函數中有很多複雜的公式推理,其中很多是可以用解析函數去驗證或加深理解的,更重要得是這個過程會幫助大家在抽象的數和直觀的形之間建立一種連線關係。我記憶中這方面最經典的例子是證明一元三次方程一定有一個實數解了。大家都知道一元二次方程可能有一個解、兩個解,或者乾脆沒解(限實數域內),但為啥到了一元三次方程就轉性了呢?因為一元三次方程在解析幾何中對應的曲線總是一頭趨向正無窮大,一頭趨向負無窮大,此時,一定有一個實數解不是很直觀的結論嗎!
我學的是計算機專業,但很意外的是一朋友竟然邀請我去做電力方面的諮詢。我個人猜測,可能是他了解到我曾在沒有電力專業人員的協助下,單獨做出一款電力系統產品的緣故吧!實際上,這背後是我的一條頗為坎坷的電力系統學習之路,或許也能讓大家理解沒有體系支撐的心酸。
可能一些朋友會好奇,你一個學計算機的,老老實實的寫軟體就好,為何會去學習電力系統呢?可關鍵問題是,你會好奇,我也會好奇啊!我工作初期是做微機保護產品研發的,下面這幅圖就是早期我眼中的微機保護產品知識結構:
我早期參與電力系統微機保護裝置研發,當時整個公司分為三個團隊:軟體,硬體和保護。一開始,我被分配在軟體組,跟著領導寫嵌入式軟體規約程式,但沒多久我就對開始對底層資料模型感興趣了,順手讀了原始碼後,又開始對更底層的驅動程式感興趣了。
驅動程式部分我碰到一個小門檻。當時產品大部分驅動都已成型,我雖然細細閱讀了程式碼,但總還是有一種朦朦朧朧的感覺。一次機緣巧合的機會,我需要用一款很新的晶片做產品預演(2005年,摩托羅達公司在國內推薦他們最新的V2核晶片),需要儘快的完成驅動程式編寫。我英語很糟糕,面對上千頁的英文資料,我真的有點傻眼。但這款晶片太新了,網路上也沒有太多有價值的資料,僅剩下官方檔案華山一條路了。
記得那是一段難熬的日子,剛開始讀一小段就要查好多次單詞,但後來不知為何,竟然也可以一目十行,感覺自己不是在讀英文,而是在查資料。三個月後,這款晶片的驅動都被我搞定了,早期朦朦朧朧的感覺也自然煙消雲散了。而且,偵錯晶片驅動帶給我一個額外收穫,不再害怕閱讀英文資料了(僅限IT領域,如bus在我眼中的第一詞義是匯流排,而非公共汽車),我經常閒逛github,stack overflow等網站,也喜歡去關注IT前沿的發展趨勢。
至此,軟體專案組就沒啥我好奇的東西了,反而因為我有較強的PC軟體程式設計能力,甚至可以開始多領域結合做一些創新工作了,如指令碼、GUI模組等。又因為偵錯驅動的原因,我開始慢慢的對硬體部分感興趣。以前偵錯驅動時,我僅會閱讀數位晶片的資料,現在順勢讀一讀印製板上的其他晶片資料,就可以開始理解完整硬體原理圖了。
閱讀硬體原理圖,需要使用protel軟體,又因為使用protel軟體,我順勢折騰了一段時間pcb板繪製。我一同事繪製的PCB板上佈置著很多塊網格填充區,隨便修改一根線就需要重新重新整理一遍,很煩惱。我當時編寫了一套宏指令碼可幫助他完成自動重新整理,記得很有成就感。
上述這些學習經歷基本沒有碰到太大的波折,甚至感覺自己都沒費太大力氣,一路順風順水得,但辛酸的旅程馬上開始了。
◇◇◇
我一要好的同事,大學學習的是電力系統專業,屬於保護組。一次他興奮得給我演示他用matlab模擬的東西,他告訴我他克服了一個很關鍵的演演算法。當時,我只能共用他的情緒,至於他做了啥,嗯,一個字也看不懂。沒多久後,該同事的專利發表了,而且獲得了公司好大一筆資金獎勵。
羨慕妒忌恨,我感覺好像沒幾行matlab程式啊,真可謂字字千金,再看看自己寫的大段大段的程式碼,瞬間心理不平衡起來。而且,如果我能理解基本保護原理,就可以完整的理解保護產品了。從此,我開始電力系統學習之旅。
在我眼中,微機保護中電力知識主要有三部分:微機保護原理、取樣演演算法和matlab模擬。同事的發明專利是一種新的取樣演演算法,我找來了同事桌上由我們學校楊奇遜院士編寫的一本書開始嘗試。
這是一本講解微機保護基本演演算法的書籍,第一章很容易,但第二章立馬給我當頭一棒,滿篇的數學公式,不知道都是些什麼東東。看不懂,肯定是有一些基礎知識我不具備,我分析這些公式,發現大多有積分和虛數符號,如下圖所示。
記得大學時自己曾學過微積分和複變函數,雖然都還給老師了,但我天真的認為只要回去快速的複習一下,就能搞懂上面的公式啥意思了。在賺錢的慾望驅動之下,我翻開了塵封已久的大學微積分和複變函數教材。
不知經歷了幾劫幾難,我好不容易複習完了微積分和複變函數,甚至還記錄了一本厚厚的學習筆記,然而上面的公式我依然不理解,更鬱悶的是,我發現並非所有基於複數的積分都是複平面的積分,複變函數白複習了,我的想當然破產了。更苦惱的是,因為回憶複變函數,讓我對複數的本質產生了很大興趣,這個現實世界中不存在的虛無的東西,偏偏在很多實際問題中都有重要的應用,翻了很多書籍後愈發迷糊了,平添一段煩惱。
一條路走不通後,我開始嘗試另外一條路,研究微機保護原理。繼續從買書開始,我開始閱讀該領域最經典的一本書:《電力系統繼電保護原理》。
很遺憾,這本書我依然讀不懂,很多奇怪的符號,很多名詞僅拆成字我認識,組成詞就不知道說啥了。沒法子,一個個的概念通過百度搜尋,我發現電力系統用的裝置種類好多啊,一點都不好玩。還有很多公式也不理解,我記得大學時電路一課中好似講過一些,但大學教材已經被我當廢紙賣掉了(大學教材我僅保留了數學書),只好額外再買一本。我找來了當前最流行的大學電路教材,如下:
「眾裡尋他千百度,驀然回首,那人卻在,燈火闌珊處」,大家有過那種卡殼問題被一招突破後爽快的感覺嗎?這本全新的電路書依次講解了一階和二階電路在時域及頻域的分析過程,當讀完這些內容後,真正的理解頻域概念後,原先學習取樣演演算法的那些複雜公式瞬間消融了。
從此,我對電力系統知識的學習好似進入了快車道,竟然僅憑著教科書上的內容做出了電力系統變壓器保護和低周減載自動裝置,下圖是我做得頻率突變時取樣波形matlab模擬圖:
自信心爆棚的直接後果就是很容易被打臉,當我開始以「山寨版」電力專家的身份自居時,幾次現場事故分析經歷就狠狠的打了我的臉。電力系統事故分析時,不僅需要分析故障時刻各種電氣量特徵,還需要熟悉各種電氣裝置的數學模型,甚至還需要了解各種故障或非穩態執行的特徵差異等。沒有深厚的電力系統穩暫態分析能力,我的那些所謂的關於電力系統的零零碎碎的知識壓根都是空中樓閣。
◇◇◇
兩段類似的學習旅程,一段順風順水,一段卻頗為坎坷心酸。這背後到底隱藏著什麼原因呢?肯定不能用難易枯燥等表面原因來回答,實際上IT領域很多演演算法也蠻複雜枯燥的,也經常用到複雜的數學過程。
細細思量,我認為關鍵原因是熟悉度。一開始的軟硬體學習過程中,雖然也是在學習新知識,但總能和我原有知識體系關聯上,如很多優秀的演演算法會使用各種B樹,雖然具體細節都忘光了,但因為我大學時曾學習過資料結構,知道其大致工作原理和要解決的問題,因此就容易克服了。但與此相對應,在學習電力系統時,一看到各種電力模型分析就頭疼,雖然知道了很多表面概念,但總感覺朦朦朧朧的缺少根基,或許這些根基就是電磁學、電力系統分析等電力系統基礎課程吧。
這就是有體系和沒體系學習的差別,一邊可以基於複利持續積累,另一邊卻像猴子摘棒子般一邊撿一邊丟。在大學階段學習的主要課程,如資料結構、計算機組成及電腦架構、作業系統、網路、編譯原理等課程,我們會感覺枯燥且不實用,不如自己去學個python或java寫個小程式有價值,但實際上,正是這些枯燥的課程,才能成為體系的支撐點。
如果你是一名大學生,又幸運的看到了該文,我強烈建議你認真對待大學的基礎課程,工作後python好學,但資料結構可不是那麼容易補上來的。而且,在工作實踐中,我們發現培訓機構的學員雖然開始上手快,但遠不如正規學校的畢業生後勁足,導致大家都不太敢招培訓機構的學員了。
從此,我開始果斷止損,不再花太多精力學習電力系統了,因為付出與回報不成正比。當然,任何經歷都是有價值的,對我來說其最大的價值就是幫我構建了一個完整的產品觀,而且也容易同電力專家交流了。