這裏說的『高大上』的專業課,主要指算法、數據結構、操作系統、編譯原理、線性結構、離散數學等等。對於大學不是計算機專業,但以後想要從事前端開發工作的同學來說,這些『高大上』的計算機專業課是否有必要花時間去了解呢?
觀點壹:
如果妳只希望做壹個普通的碼頁面的前端,壹點壹點的積累壹些經驗和技巧以謀求生活,那麽是不需要的。
如果妳熱愛代碼,熱愛前端,希望讓自己的工作越來越有趣,越來越有意義,那麽非常有用的。
隨著時代的變革,前端的職能已經不僅僅只是簡單的切圖制作頁面了。前端工程師的職能也開始越大越全越深入,而且前端技術的發展也迫使我們需要有更高的職業素養。這個時候的前端工程師,首先,是壹名工程師。
要學習這些基礎課程的原因有三點:
前端的職能在發生轉變,我們需要應對桌面端web,桌面端應用,移動端web,hybrid,node應用等等不同的挑戰。雖然說這些可能是可以繼續細分下去的,但是我覺得作為壹個稱職的前端,理應有可以自己掌控這些知識的能力。
前端的技術,工具發展速度極快。例如我們現在常用的babel,eslint,如果妳想自己寫壹些loader,plugin,是不是需要壹些編譯原理相關的知識?常用的node,如果不了解服務器端開發,那麽寫出來的代碼壹定非常糟糕。至於webgl之類的就更不用說了。
高新技術的門檻的不斷下降。在過去,圖像識別,機器學習等的門檻都相對較高,但是在現在,完善的工具庫已經給了普羅大眾壹個非常低的使用門檻。而隨之而來的,就是別的技術對於這些技術的低成本應用。妳是否有考慮過用圖像識別來做壹定程度的界面生成或者測試?或者機器學習對於前端的應用。這些都是令人興奮的場景。
觀點二:
『基礎決定妳可能達到的高度,而業務決定了妳的最低瓶頸』,兩者不可偏廢。
前端的發展非常快,以至於妳今天關註的新東西,明年再看可能就截然不同甚至被廢棄了。所以保持高的學習力來應對這種變化非常重要。高的學習力在很大程度上和妳的計算機基礎緊密相關(先拋開智力等不可抗因素)。
現在純前端範疇裏還幾乎沒有出現新創的知識領域。但是反過來說,從來沒有壹個領域有Web前端這麽飛速發展,不斷的有在舊知識體系在它上面重演。我記得有壹句名言大概是這個意思:所有東西都會用js實現壹遍。 我現在深以為然。 我相信在很多人也看出來了,前端這些年看似發展的非常蓬勃,但其實並沒有太多新鮮的東西,壹切都是重演。計算機基礎是以不變應萬變的秘訣。現在的前端現在已經不再需要『我會寫java後臺代碼』等等愚蠢的強調來站直腰板了,成熟的公司已經開始重視前端帶來的實際價值,。所以前端本身當然不能固步自封,鞏固計算機基礎,用以靈活應用到日常業務,用以吸收新鮮技術,也就是自然而然的事情。
總結:
妳應該學什麽知識,會用到什麽知識,幾乎只和妳做的工作有關。
如果妳目的是成為基礎紮實,技能門檻很高(甚至無所不能)的工程師,那麽學那些沒什麽不好的,甚至是必須的。
但如果妳就是想做個discuz、百度貼吧、淘寶、支付寶的前端,那麽投入那些就不壹定真的劃算了。
另壹方面,在學好目標技能,感覺很難進展的情況下,學習更深更廣的領域,不失為壹條突破瓶頸的好辦法。前提是,妳真屬於那10%甚至1%。