程式設計師如何搭建自己的知識體系?

什麼是知識體系?

程式設計師如何搭建自己的知識體系?

所謂“知識體系”,指的是把大量的不同的零散的知識點,透過內化,儲存,整理,等方式組合起來,以點成線,以線成面,形成系統的,有序的,清晰的脈絡結構。

我們在解決問題和處理事情時,會使用自己的知識體系做出選擇,不論是潛意識還是顯性意識。每一次的抉擇和行為都將迭代我們的知識體系,讓其更加明確清晰,找到自己不足的地方,最佳化可以改進的地方,明確接下來的方向,提升自己的全域性整體思維,強化當下的正在使用的技能等。

知識體系不是一蹴而就的,而是貫穿我們的生活經歷和對事物的思考慢慢積累起來的,中間需要海量的知識支撐,不斷改變,不斷適應。

什麼是個人的知識體系?

程式設計師如何搭建自己的知識體系?

知識是無窮無盡的,沒有必要什麼都學,也不可能什麼都能學會。

每個人都有一致的時間屬性,同時又有不同的天賦和努力程度,人生永珍,不同的人有不同的場景和結果。

所以,找到適合自己的知識,構架完全只屬於自己的體系,才是在這場遊戲中的最優選,你沒有重來一次的機會,即使浪費了,也只能不斷往前。

這注定是一個無可替代的過程,別人的知識體系你拿了也沒有用,反而害處大於益處,我們只能參考,無法複製,別人也無法幫忙構建,一切遵從於你自己的內心和身體。

什麼是程式設計師的知識體系?

程式設計師如何搭建自己的知識體系?

個人的知識體系我們有一生的時間來慢慢完善,它主導人生的每一次選擇和際遇。

但是它還是太籠統,太龐大了,主要的作用更偏向於內化,而我們需要的是當下的外向,也就是現在的生活和工作。

如果說吃和睡分別佔據了人的各種三分之一,那麼工作就佔據了剩下的三分之一,它也是重要的經濟來源和物質基礎。

在網際網路的發展中,技術迭代的速度遠超人們的想象,面對不斷變化的技術,在這個“終身學習”的時代,程式設計師需要積極應對。

據不完全統計,大多數程式設計師同學都有著自己的部落格之類的,寫著一些技術筆記或者生活日誌,更多的是用github分享著自己的程式碼。

這些都只是程式設計師知識體系中的一小環,聚焦領域和帶有職業屬性的一個架構的才能構建一個完整的體系,下面一一描述。

如何構建知識體系?

程式設計師如何搭建自己的知識體系?

總的來說,知識體系的構建主要有五個步驟,每個大的步驟,都包含很多小的步驟。

人生是有方向性的,就像時間不能逆流,體系的構建也是有順序的,正確的按步驟執行,能夠幫助我們快速搭建自己的知識體系。

不論是個人知識體系,還是程式設計師的知識體系,區別只是模組不同,總量大小的問題。

程式設計師體系屬於個人體系的一個脈絡分支,這意味著,我們可以複用個人體系的構建方法,只是重點是網際網路的節點而已。

大量輸入

沒有輸入,何來體系,輸入是知識積累最為重要的方式。

知識體系最初是由很多的知識點組成,那麼,這些知識點來源於什麼地方?

作為一個程式設計師,請好好思考,你的知識點主要來源自哪些渠道?

資訊輸入

程式設計師如何搭建自己的知識體系?

一般的資訊來源於網路文章,書籍,影片教程,線下交流等方式。

對於程式設計師來說,影片教程是極為推薦的資訊來源之一,它有著書一樣完整的內容體系,也有實際操作的視覺化演示,通常還附帶著講師的個人經驗和優秀習慣,能夠及時的跟上技術的步伐,實時的溝通和調整,而書籍通常要落後半年,甚至一兩年。

但是書籍的閱讀仍然是不可或缺的,如果說影片教程更偏向於實際操作,那麼書籍就適合深層次的思考,越是經典的知識越是適合書籍承載和傳遞。當然,很多程式設計師都經歷過<<21天學會XXX>><>,最終有沒有放棄我不知道,付之一笑,不予置評。如何選擇一本好書,也是一個門大學問。

和搜尋引擎打交道最多的,程式設計師當屬其中之一,一些碎片化的文章有助於我們解決某個特定的問題,瞭解某些小的知識點,這種輸入比較零散,勝在量多,領域廣泛,容易擴充套件思維的邊界,碰撞出創意的火花,恰好不會讓我們一直侷限在某個地方,有的時候應當專注,有的時候也應當擴散。

線下的交流不必多說了,所行之處,處處皆是,工作中和同事的溝通,生活中和朋友的交流,技術細節也好,觀點看法也好,屬於人與人之間的資訊交換。

簡而言之,就是在諸如慕課,網易雲課堂,極客時間等平臺選擇好的課程,在書城或者圖書網站選擇好書,多讀書,在推酷,知乎,掘金等資訊平臺,多多閱讀新聞資訊等,然後多多參加活動,演講,多與人交流。打造屬於你自己的資訊渠道,多閱讀,多學習,多交流。

實踐輸入

程式設計師如何搭建自己的知識體系?

一般的實踐輸入為程式碼練習和專案開發。

每個大神都是從小白過來的,小白學習程式設計最初的姿勢就是敲程式碼,一遍,兩遍,三遍,直到把紙上的知識內化為自己的體會。

任何事物,都會有一個認知的階段,也會有一個實踐的階段,以一個普通的例子來說,要學會炒一道菜,看一百遍菜譜也不會有什麼進展,一字不漏的背完也不會有什麼進步,唯有一次又一次的嘗試,才能親身體會,才能逐步學習,才能終有所成。

程式設計也是一樣,學習一個知識點就是反覆的去練習,反覆的去使用,從實踐中去理解它的意義所在。

程式碼片段的反覆練習就如同備菜,番茄切片,雞蛋拌勻,兩個操作重複一千遍,也成不了一碗番茄雞蛋,專案開發就是知識點的融合和使用。

一個完整的專案有助於從結果導向促使我們構建一個完整的知識體系,學習是為了什麼?是為了用吖,工作為了什麼,就是為了完成專案。

入職之前,什麼都得學,什麼都要會一點,因為你不知道什麼樣的內容會命中Hr,入職之後,一切都清晰明瞭,專注於眼前的事物即可。

梳理脈絡

程式設計師如何搭建自己的知識體系?

回憶一下你看過的書籍目錄,每次選書的時候是不是窺一頁而知大概?

想象一顆大樹的枝葉結構紋理,一張小小的蜘蛛網,又或者是浩瀚無限的星空。

這些都是脈絡的表現形式,點與點之間互相串聯,線條與線條之間又延伸不同的方向。

不妨來做一個小實驗,不帶思考的隨口說出任何形式的幾個關鍵詞,如書籍,地理,老虎,小貓,水果,開發,學習,下雨。。。等

它們來源於你的知識點,有的可以歸為同一類,有的不存在什麼強的關聯,有的帶有層級關係。

我們需要透過適當的梳理,讓它們成為一張網,一顆樹,一本書,一片星空。

如前端開發,一般的職業規劃是要麼深入前端領域,精通某些行業技術,縱向擴充套件,要麼學習一些後端內容,往全棧工程師方向發展,有助於從整體產品提升開發過程的溝通效率和產品質量,還可以選擇先學習設計,學習產品,學習測試,以技術的關聯度橫向擴充套件。

但是若你非要研究航空母艦,天文地理之類的也沒人攔著你,出於興趣還好說,若是選錯方向,很可能會與現有的知識體系脫節。

換言之,就是把知識點分門別類,同時制定好方向和目標,始終保持知識圈定在一點的範圍裡,結合實際的情況縱向或者橫向發展。

推薦使用思維導圖工具,諸如xMind,MindManager等軟體,稍稍學習一下導圖相關知識,使用它梳理脈絡,用的多了,自然就明白了。

佈置一個小任務,用導圖列出你的職業發展方向如高階開發,全棧開發,架構師等或者接下來你將要學習的領域和具體內容,如java,ui設計,區塊鏈等

筆記整理

程式設計師如何搭建自己的知識體系?

大腦的容量有限,我們必須使用工具把知識給儲存下來,按照之前整理的脈絡結構。

整理的知識為兩種,一種是公共的或則別人的知識,一個是內化為自己內容的知識。

常見的如網上的經驗教程,理論知識,程式碼片段,都可以複製貼上待筆記裡面。

書中的實用知識,核心內容,也可以選擇性的摘抄出來,圖片,影片等富文字也可以一一儲存。

讀書筆記,開發過程的操作步驟,都可以實時記錄下來,自己的心得,經驗和體會。

主要推薦筆記類軟體,如印象筆記,為知筆記等,最好能多端同步,易於檢索,呈現結構體系。

思考最佳化

程式設計師如何搭建自己的知識體系?

最佳化這個詞字面上的意思大家都懂,看起來很簡單,但是如何最佳化,最佳化什麼才是重點。

對於程式設計師來說,最為重要的是開發效率提升,其次是開發質量提升,最後是其他軟技能提升。

不妨多問自己幾個問題:

開發過程過程中有什麼錯誤的地方,導致速度慢的原因有哪些,為什麼?

還有哪些技巧和工具可以讓開發流程更快,更好,具體如何操作?

諸如此類,不斷的對事物進行分析,對自己進行反思,總結,然後改進。

實踐反饋

程式設計師如何搭建自己的知識體系?

其他的就不多說了,程式設計師最常見的實踐方式就是寫部落格,錄教程,開發產品。

在大量輸入中我們提到書籍,教程和練習程式碼等方式,屬於吸收的角度。

但是,知識體系極為重要的一環就是輸出,輸出是快速將知識內化為自己知識體系的方式之一。

有一點不得不提到,在應試教育中,學生幾乎很少體驗一下老師的視角,哪怕只是幾分鐘。

他們把時間花費在教室裡,培訓班,作業上,從來只是聽講,而不是演講,從來只是寫題,而不是出題。

終生學習意味著終生的社會大學,網際網路學生,不能只是一味的輸入和執行,而是應該輸出。

寫部落格,既是寫給自己,也同時寫給觀眾,如何讓他們更好的理解和內容本身一樣重要。內容要經受得住讀者的考驗就得糾正自己的錯誤,確保內容傳達的準確和簡易性,讀者也會從不同角度給與建議,一次閱讀或者一個贊就是一個正反饋。

錄教程,更加要具備專業性,會用和會教完全是兩回事,如果你想要講述一個道理或者描述一個操作,通常需要系統化的,引述更多的論點,補充更多的細節,以合適的表現形式才能達到預期的效果,在教的過程,前提是你得會,其次是你得講的明白,這是一個極其考驗知識深度的事情,你隨時面臨各種各樣的問題。

我們在工作中開發產品是別人的產品,充其量算是其中的一個小小的螺絲釘,沒有主動權也無意加入太多的想法。

但是自有產品完全依據你個人主觀意願而構思,依據你擁有的技術而構建,一個產品就是一個小的技術體系,在實現的過程中,不會什麼就去學,學完就去做,最終你會參與到許許多多你從未接觸的環節,當然,有些地方可以考慮外包或者合夥,或者其他替代,重要大部分都有了解或者參與即可。