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

來源:互聯網
上載者:User

  如何快速成為javascript高手?

  之前我拿這個問題問過我的同事,也問過國內的一些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高手,只是來學習經驗的,卻沒有半點鐘收穫,失望而歸,請拍磚。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.