如何快速成為JavaScript高手的思考

發表於2013-03-17

之前我拿這個問題問過我的同事,也問過國內的一些JavaScript高手。

最近,我一直在拿這個問題問自己。之所以會有這個問題,我基於兩個前提:第一、我自認為自己不笨;第二、我學習和使用JavaScript也有一段時間了,並且自己學習還算努力。

思來想去,我覺得我應該先回答下這個問題:如何提高自己的學習效率?

想象一下學校的場景,有一些知識,有的人就是學得比你快。為什麼?可能他本來就比你聰明;可能他之前學過的、接觸過的東西使他對這個知識有啟發;可能他背地裡比你花的功夫還多。不管哪一種形式,從旁觀者的角度來看,他就是學得比你快,也就認為他的學習效率比你高。

排除第一個答案不討論。我們來討論下第二個和第三個答案。

答案二:“他之前學過的、接觸過的東西使他對這個知識有啟發”,我這裡簡單的歸結為積累,關於積累問題,我上一篇部落格《程式設計師的學習和積累》有談到。

答案三:“他背地裡比你花的功夫還多”,還有現象本身“他花的功夫比你少,學得比你還好”,關鍵字都落在了“功夫”二字上。如何下功夫、功夫下在什麼地方?這又引出了一個新問題。

關於這個問題,糾結了這麼多天,我的回答是:如何下功夫?動手!功夫下在什麼地方?和工作有關的地方!

說到這,我又想起了我深受毒害的應試教育。應試教育缺乏的正是動手和實踐知識的場所或曰方式。很多時候我總是懶於動手,為什麼懶於動手?難道是 我真的懶嗎?我不承認,我不動手是因為我找不到動手的理由,或是不知道如何動手。拿寫一個JavaScript庫或框架為例,為什麼我到現在還沒有寫一個 JavaScript庫?首先我找不到寫它的理由,現在這麼多流行、易用且被廣泛使用的JavaScript庫或框架了,有必要再寫一個嗎?就算我寫了, 公司會使用它嗎?如果沒有對其他庫或框架的深刻理解和認識,只是把各個庫或框架中的一些東西拼湊在一起,甚至不知道其中一個函式實現的內部原理,那能叫我 寫的嗎?其次,我找不到入手的地方。在沒有對其他框架有深刻認識,自己能找到其中的缺陷、不足而加以修正和實現之前,我找不到入手的地方。

解釋下答案:

功夫下在和工作有關的地方,這需要有強烈的責任心和主人翁意識。我們需要深刻理解這句話,“功夫下在和工作有關的地方”不是說,每天把上司交給自己事情做完、沒有bug、達到需求就可以了,而是要做得更好,我想提出3點,也給自己樹立目標:

1、用最優的方案實現需求。在自己的已有知識結構、能力、經驗上用最好的方式實現需求,在此基礎上努力搜尋業界相關的解決方案比較優劣,選出最佳的方案,最終實現需求。

2、關心自己已做完工作,關注業界的相關新思想、新技術、新理念,把已完成的工作,用最新最優的方案予以重構,並在適當的時機在產品上得以實現。

3、關注自己所負責工作的未來,把產品當做自己的孩子,努力將他引向最美好的未來。努力將自己所負責的產品打造成為業界的標杆(特別是自己所負責的部分,那是自己影響圈內的事情)。

動手。如果你知道了功夫該下在什麼地方,也自然知道了要動手做什麼,動手也會成為快樂的事情。

不知道大家有沒有這樣的經歷,當你有極大的渴望想把某件事情做好的時候,你會花很大的精力去研究怎樣把事情做好,為此你會學習很多相關的東西, 平時你可能花一週時間也學不會的東西,你花一個上午就學會了,還應用到了你要做到事情中,並且事後你會對所學過的東西印象深刻。

這,就是我對“如何提高學習效率”這個問題的回答。

很抱歉,寫到這裡我還幾乎沒有正面回答“如何快速成為JavaScript高手”這個問題,如果你已經有所收穫了,我感到很欣慰。如果沒有,再談談JavaScript,因為我目前還不算JavaScript高手,下面這段算畫蛇添足也好,算狗尾續貂也罷。

語言層面:程式語言之間是想通的,至少高階語言是想通的(相對於機器語言和組合語言),JavaScript是一門特殊的語言,既可程式導向、 又可物件導向。有人喜歡它弱型別語言的特性,而將其語言本身的特性發揮得淋漓盡致。有人喜歡java這類純面嚮物件語言的嚴謹,而使用一些功能函式將其包 裝成完全的物件導向,並採用它實現了一些常見設計模式。所以說,真正要精通JavaScript這門語言本身,需要對其他語言的一些理解(至少是瞭解)。 鑑於目前JavaScript從業人員的構成,非計算機專業科班出身的同學可能需要努力補補課。

環境層面:JavaScript執行的環境目前有瀏覽器端和伺服器端,將來可能有機會到嵌入式裝置中。目前大部分應用主要集中在瀏覽器端,而瀏 覽器廠商為了各自利益等各種歷史原因造成的JavaScript執行環境相容性問題,也是JavaScript從業人員較為頭疼的問題。

業務層面:很多其他語言有功能完善的底層API、工具包,抱歉,JavaScript暫時沒有(瀏覽器端、nodejs開始有雛形,希望 commonJS規範能夠一路走好)。所以各種庫、框架對於一些基本業務需求都提供了類似但非相同的實現。一個優秀JavaScript程式設計師需要辨別各 種框架或庫中的業務實現,或編寫出自己的業務實現。

綜上,要在語言、環境、業務三個方面都精通,確實是需要花費很大的功夫。一個人的精力是有限的,其他語言積累幾十年的東西,你想一個人在 JavaScript得到實現是不太可能的。術業有專攻,不是說你是JavaScript高手,JavaScript的方方面面你都能做到最好。

故,我認為“如何快速成為JavaScript高手?”, 無解。無法快速!

“如何成為JavaScript高手”,動手,把功夫下在和工作有關的地方上!

運用JavaScript把工作做得最好,才是JavaScript高手!

PS:這是本人對自身問題的思考和分析,是希望能給有同樣疑惑、同樣迷茫的同學帶來些思考。分享這篇博文花了4小時的寫作時間,如果你有同感,如果你覺得我還算用心,請幫忙右下角推薦一下,這樣能給更多的同學帶來一點思考和幫助。如果你以為我是JavaScript高手,只是來學習經驗的,卻沒有半點收穫,失望而歸,請拍磚。

相關文章