1. 程式人生 > >【隨筆】野生在左 科班在右——資料結構學習誓師貼

【隨筆】野生在左 科班在右——資料結構學習誓師貼

一. 科班 Vs 野生

這個老生常談的問題讓很多野生碼農覺得不公平,在一次次面試中因為學歷和那些工作中根本就用不到的知識虐的一臉懵逼,然後除了抱怨什麼也做不了。那為什麼看起來很多科班同學的編碼水平和職場軟技能都不如野生碼農的逆風局中,科班同學卻能夠勝出呢?下面所說的3點並不絕對,只是概況。

  1. 學歷的背後

    這是HR同學說的,筆者並沒有去求證。HR同學說招聘應屆畢業生國家是有很多補貼的,可以降低一些用人成本。另一方面,規模稍大的軟體公司在承接業務和申請一些資格認證的時候,人員學歷構成是證明研究能力的一個硬指標,也就是說你必須至少擁有多少本科生,研究生,博士生,才能申請某些科研基金或者政策性的扶持資金,畢竟科技企業也是具備商業屬性的,其本質還是要賺錢。

    另一方面,研究生和博士生所經歷的教育,讓他們的邏輯思維和系統性思維能力更勝一籌,也就是說面對大家都不會也查不到資料的問題時,他們知道如何一步一步提出假設或方案,設計方案,驗證結果。而你只會兩手一攤說自己無能為力,很多時候一件事情並不是你無能為力就可以不做的。

  2. 內功修為

    高手之間的較量,都是內功和基礎的修為。你或許都沒有意識到,碼農的學名叫做程式設計師,而事實上,程式設計師不僅僅是職位名稱上逼格更高,更重要的是,其知識體系的抽象層級更高,設計模式,資料結構,演算法基礎這三座大山將兩者完全劃分為了兩個層次。

    曾經有一個HR講過這樣一個故事,說面試者說自己熟練掌握了React,VueAngular

    ,非常自信,可面對他提出的“那你除了SPA模型以外,對前端還有哪些瞭解呢”的問題一臉懵逼不知所措。這個故事讓我很受啟發所以自己一直記得,並時刻以此為戒告訴自己接觸的新知識要儘可能去了解其原理和本質,因為在更高的抽象層級和麵對的實際需求上,不同的新技術很可能是殊途同歸的,而你卻沒有意識到。內功修為深厚的人更容易看到事物的本質,因為抽象的思維讓他們的視野變得更廣,也讓他們思考和認知的角度更加靠近數學和哲學的本質。

  3. 學力差距

    前端的知識體系平均每18個月更新一輪,選擇這個方向意味著你必須要有足夠的學習時間和自學能力。這是一場HIIT(High Intensity Interval Training)式的比賽,招式上的優勢是無法讓你保持持久競爭力的,你必須擁有間歇性到達巔峰的能力。就好比《倚天屠龍記》裡學會了九陽神功的張無忌,分分鐘就學會了太極拳;好比《天龍八部》裡的鳩摩智,憑藉小無相功就可以催動少林72絕技,也像《火影忍者》裡仙人模式的漩渦鳴人,就會一招螺旋丸,然後混入各種查克拉,變化成各種屬性的忍術。

    那些內功修為深厚或具備學習技巧的程式設計師,往往能更快地學會新的技術,並找出它們和現有技術之間的異同以及可能適用的場景,結果就是牛逼的程式設計師越學越亢奮,越玩越開心,而內功修為不足的程式設計師憑藉毅力和熬夜能力,在2-3輪的技術迭代後被無情地淘汰。

想要提升自己學力的讀者,吐血推薦閱讀斯科特楊的《如何高效學習》這本書。這是一本高效學習的方法論,作者憑藉超強的學力,用一年多時間學完了MIT Open Courseware裡4年的CS(Computer Science)課程,並分享了他是如何做到的,其中很多學習方法是非常有借鑑價值的。

二. 前端的資料結構學習和練習

Talk is cheap , Show me the code.

2.1 主動練習

關於這個話題,筆者只有一句話要說,那就是動手實現所學到的東西。如果你讀過設計模式資料結構演算法基礎這一類的書籍就會發現,其中大部分的內容也並不是難到完全看不懂,而是難在你不知道這些抽象的東西是如何跟現實連線在一起的,你需要主動用這種抽象的思維去連線現實的開發,才會找到感覺。

2.2 方法論

你能找到的大部分講解資料結構的書都是C語言或者Java描述的,你可以在網際網路上找到O'Relly出版的《資料結構與演算法javascript描述》這本書,並用你熟悉和喜愛的javascript來學習資料結構的知識。請記得資料結構是內功的修煉,是不受語言限制的,所以不要再把資料結構的學習安排在C語言之後。

2.3 誓師貼

筆者自己也是野生前端碼農,為了讓自己堅持學完資料結構的知識,會將學習過程中所實踐的程式設計習題整理出來,並在github個人部落格裡提供javascript版本的參考程式碼,習題相關帖會陸續在各大技術部落格釋出,歡迎關注點贊,也期待有小夥伴一起加入學習!