真正學好前端,其實並不是只會前端

編程語言 數據結構 C語言 Linux 寧哥實戰課堂 2017-05-25

這裡的前端指的是移動互聯網領域中面對用戶體驗度的那個應用領域。看到很多所謂的過來人大談闊論的描述前端如何如何的容易或者難,如何如何的火,如何如何的有前途等等之類的評價,然後得出貌似有道理的學習前端的一堆學習方法。最後讓許多初學者激情澎湃,酷似懷抱什麼祕籍一樣...其實很多是在犯一葉障目不見泰山的錯。

整天沉迷於前端知識的海洋最終深感速度跟不上、心有餘而力不足、甚至無力自拔。就好像把你放入一個巨大的虛數空間的黑洞裡,任憑你怎麼亂打亂抓、用盡所有的力氣無盡掙扎,也難以看到希望和輕鬆何在,心裡一直不會踏實起來。

其實這就是根本原因:因為真正要學好前端,應該是並不只會前端。下面的故事其實闡述了原因:張無忌最後練會的乾坤大挪移,一般人的思維是在考慮要練會乾坤大挪移要多麼多麼的早出晚歸,常年如一日的苦苦修煉N年,然後到了9層,最後得一靈感,學會第10層。但都忽略瞭如果會了九陽神功,再練乾坤大挪移,只要3個小時...

殊途同歸,真正的精通前端應該是功力深厚,打通任督二脈,從而讓前端順帶學會。這種功力深厚是真正的編程功底,是要牽涉到從硬件開始、彙編、C語言、C++、Linux、到數據結構和算法、甚至高等數學、線性代數、概率論這些。

並不是動不動就背誦幾個枯燥而繁瑣的算法去炫耀而沾沾自喜就認為是精通了編程的本質。

沒有學過硬件(比如畫PCB電路圖,學數字電子、模擬電子、單片機、ARM),沒學過彙編、沒深入linux操作系統和編譯原理,而大談闊論的討論數據結構和算法是沒有任何意義的(我以前就是做軟硬件一體化的智能系統,從畫PCB板開始,到嵌入linux內核,寫驅動...)。

一個高等數學很差、線性代數摸風、概率論不知所云就去想深入數據結構也沒多少意義。你頂多只是懂得數據結構的形、而不動數據結構的神。這也就是要想做編程領域的大家、必須要精通數據結構和算法、而精通數據結構和算法則必須要數學功底好的原因。學編程其實是在修行、修身養性,需要悟道......

這樣來看,前端只是一個後來根據應用需求而變得很火的一個方向,這種突如其來的需求爆發就像泡沫經濟一樣,隨時都可能爆破。所以如果把你自己的命押在這樣一個定時炸彈上,你怎麼能安心的起來?難道真的要等你50歲的時候被迫下崗才重新思考自己的職業選擇嗎?

現在來看看前端的核心是什麼?

前端的核心其實就是以後能修改DOM的這個東西,而JS承載了這個角色,因此js是核心。具體的說是JS操作DOM,附帶操作BOM。然後為了更友好的使用、更少的去處理那些繁瑣的兼容性問題(這個本來不應該有,只是各大瀏覽器廠商為了搶佔市場而雄踞一方,就像秦始皇在統一六國之前的那種情況,所以這不是一件好事,所以應該去統一,才能真正的為用戶體驗所服務),才衍生出很多很多的庫,如:jQuery,Anularjs等等。但只要還是JS的範疇,是在做那些事情,那就是在編程領域,雖然它們各自的庫可以長得千奇百怪,但本質並沒有改變。

由此得出,你並不需要把所有前端的庫都學會,也不需要只懂某個庫本身的樣子就算完事,而要慢慢探索它的發展淵源,以一種“修身養性”的心態去探索。

比如:jQuery的使用中,誰都很熟悉這個基本的動作:

$(function(){

$('#id').click(function (){

//自己的代碼

//return false;

});

});

但有幾個人在思考為什麼能實現這個?也許他們會覺得沒有意義,只要會使用就行了嘛,那接下來就是這樣:如果其他的使用不能理解,也是順理成章的事情了,也不要抱怨了。不懂就只能背誦,自然感到苦悶、無奈、煩躁、沒興趣就成了司空見慣的事情了。不去思考它怎麼來的,就難以認識到編程是在刻畫和反映世界,這其實是個惡性循環,最後導致職業生涯縮短或者自我感覺前途渺茫。

現在回到主題:真正學好前端,讓前端學的輕鬆,其實並不是只會前端;

你看到別人寫的庫很好,使用起來很不錯,但是有沒有思考過如果讓你寫,會怎樣呢?能寫出那些庫是因為只會前端嗎?顯然不是,裡面至少用到了編程思想、用到數據結構和算法、用到怎麼更有效的分配內存和任務分配隊列棧這些合理使用等等。這些就不只是前端的東西了,而是編程領域內都會見到的東西。

所以,一個真正精通前端的人、有前途的人,是不一個只拘泥於前端本身,而是要用更多的時間應該去看非前端的東西,前端內容只是那些深入知識的應用罷了,順帶學習而已。就像乾坤大挪移是在九陽神功練成之後順帶學習的,然而卻能學的更快、更深入、更應用自如。

這也就是為什麼學彙編的人,更容易學C語言,學C語言的人更懂得C++的韻味,學C++的人更輕鬆的學JAVA和PHP。同理,學PHP的人更能學懂前端。因為都是順帶......上述編程語言我都親身體驗過,深刻感悟到其中緣由。當然這是條主線,你可以找藉口說時間少,只是客觀就是客觀,你少這個,它就給你砍那個,就這麼個道理。

這樣來看,面對編程領域,其實你的時間已經很少,你根本無心去和誰比這樣、比那樣,那些都已經沒有什麼意義了,而有意義的是你找到有內功的得道高僧一起去把酒言歡、進一步提升你的編程修養......

峰迴路轉,導致學前端的人只學前端的原因是項目變得越來越大,很多人認為不能也不應該一個人去“搞定”而引起的。這其實是個誤區,“搞定”一個完整的項目,並不是讓你一個人去開發所有。諸葛亮能“搞定”每次戰鬥,但是他親自去殺敵了嗎?

另外,公司的發展也加速催化了你的誤區,公司裡為了趕進度,得要求每個人首先都關注好自己門前的雪,而忽略他人瓦上霜。導致很多開發者認為只要做好自己的分內之事就行,哪怕“幸災樂禍”的看別人在忙碌也應該。你贏了一時,卻輸了一輩子。

你犧牲的是未來,未來的巨大潛能的發揮。這會反噬你的,你以後就未必能做一個合格的好員工了(即使你一開始是一個合格的好員工),因為你適應不了未來飛速發展的需求了,你沒有了快速的學習力...

這是公司發展和個人發展腳步不一致而導致的。值得每個編程業內認識的思索......

相關推薦

推薦中...