歡迎訪問我的站點html
Vim 被譽爲"編輯器之神",這可不是虛的。前端
在我用了 vim 半年以後,我建議我身邊的每一位程序員都去學習 vim 。git
由於一旦你學會了 vim 的操做,你就像中了毒同樣,你會討厭鼠標,討厭在你敲着敲着鍵盤,忽然又要去移動光標,由於把手從鍵盤移動到鼠標上的時間遠遠大於手指在鍵盤按鍵的切換。程序員
並且你會但願在全部的編輯器上都裝有 vim 插件,不論是 vscode,仍是 idea,仍是 emacs;不論是本身的電腦仍是別人的電腦;不論是敲代碼的編輯器仍是用來看網頁的瀏覽器。web
還好,所但願的都有,每個能夠裝插件的編輯器都有 vim 插件,甚至瀏覽器也有 vimum。面試
當你真正習慣上了 vim 之後,你會火燒眉毛的想要一個機械鍵盤,由於你敲代碼大部分時間都用在了鍵盤上,鼠標已經再也不那麼重要了。vim
機械鍵盤推薦紅軸,青軸和茶軸雖然本身敲着很舒服,手感很好,可是比較影響其餘人,鍵盤聲太吵了,黑軸就不考慮了,碼字太累了,不適合程序員。跨域
我我的用過青軸和紅軸,青軸給個人感受就是碼代碼是一顆一顆的,聽着那聲音本身以爲很舒服,敲代碼頗有感受。瀏覽器
而紅軸給個人感受就是敲代碼的時候你會忘記你手上的鍵盤,給我一種手、鍵盤合一的感受,把精力徹底集中在碼代碼上,感覺不到敲鍵盤的感受。安全
最後說的就是先學 vim 的基本操做,而後裝個插件在你如今的編輯器上練習就好了,不須要直接用 vim 編輯器。
由於你直接用 vim 編輯器,做爲一個新手,不會配置插件,快捷鍵等,沒有提示,沒有高亮。你在寫項目的時候會很痛苦,你就用你熟悉的編輯器高亮,代碼提示這些是你之前搞好了的,因此實際應用起來難度小不少。
爲了推薦更多人程序員學習 vim ,我還本身寫了一篇入門文章,有興趣的能夠看看。
我周圍的人,只要是用 vim 敲過代碼的,從沒有人說過用 vim 敲代碼很差用而放棄用的,只會對 vim 愛得愈來愈深。
Git 做爲我認爲最優秀的版本管理工具,那是程序員的利器,必須用得遊刃有餘。
而我今天要說的不是怎麼用好 git,若是須要能夠留言給我,我後面寫一篇或者一個系列。
我想說的是規範,不要覺得 commit 隨便寫就好了,其實 commit 的規範程度一部分體現了你這我的作事的態度,是否端正,嚴謹。
我拿我在 某米工做的時候舉個例子,我有個朋友那組的有個學姐,她的 commit 很隨意,徹底不能體現她提交代碼的內容,好比,哈哈;放假了,好開心;bug;也不說是什麼 bug,致使我那個同窗根本不知道她提交了什麼代碼。
也不知道她作了那些事兒,在一個團隊中,這是一件很蛋疼的事兒。
特別要是老大或者同事想作 review 的時候,看到這麼糟糕的 commit 定會對你的印象大打折扣。
若是你是個實習生,估計就不容易轉正了,由於會以爲你是一個很隨便的人。
我日常所用的規範來自於阮老師的規範。 連接: http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html
如今還在學校的同窗,可能常常聽學長們這麼說,在面試的時候既要考你的深度,也要考你的廣度,所謂深度簡單點說就是對某個知識點的掌握程度,而廣度就是你知道多少個知識點。
舉個例子,也許你會常常聽到那些面試過的人回來這麼說,那個面試官一直抓住一個問題不放,知道他打不出來爲止,這就是在探究掌握的深度。
而後也會有這種問題,你會什麼什麼嗎?你瞭解什麼什麼?你用過什麼什麼?這就是在看你的廣度。
因此一些在校學生就不知道本身應該去擴展本身的寬度,應該去學新知識,仍是挖掘深度,再去研究之前的知識。
我也面試過很多大廠,也拿了幾個 offer,以及本身實習的時候跟一些工做多年的老司機談過話。
最後給出的答案是深度比廣度重要。
我來以個人角度談談爲何深度比廣度重要。
不知道你身邊有沒有這樣的事兒發生,有我的(A 同窗)拿到了一個好點的 offer,但和他一塊兒的(B 同窗)可能你以爲技術比他還厲害的沒有拿到,而後你問那個拿到 offer 的同窗,他說他是運氣好。
分析一下這個事兒,會發現,其實有可能確實運氣緣由,好比
他們倆不是同一個面試官,而後致使兩個面試官問的題不一樣,以及面試官的判斷標準不一樣。
他們倆是同一個面試官,可是 A 同窗和 B 同窗的技術不一樣,A 同窗技術棧跟面試官的技術棧重合性比較多,由於經統計,那些面試官更喜歡找跟本身更類似的人,由於面試官以爲本身比較優秀,跟他類似度越高,會認爲這個面試者也比較優秀。
前面這兩種基於運氣的狀況下,固然確定 A 同窗有實力的,基礎不紮實,運氣來了也抓不住。
那咱們怎麼才能讓運氣來了就能抓住呢?
個人建議就是先深度再廣度,深度能夠體現一我的對知識「打破砂鍋問到底」的精神,,對於不知道的問題喜歡探索,也許你就精通了一門框架(前端好比 React),對於其餘框架只是瞭解,可是這樣也比熟練使用好幾個框架面試成功概率大得多,由於若是你遇到 React 技術棧的面試官,你是大機率能過的。對於熟練使用好幾個框架而不精通的,就是這種,面試官問你會什麼什麼嗎?答,我會啊,而後問深一點就不知道了,這種過的概率就要小不少。
因此爲了運氣來了的時候你就能抓住,好好挖掘你的深度很重要。
若是你在考慮我是應該把之前的東西鞏固一下,仍是該去學新知識,你仔細思考一下,你對之前熟悉的知識深度夠不夠,夠了再去學新知識,不要啥都會,被面試官問的時候,啥都不會(這是我昨天晚上跟咱們班一個培訓出來的同窗聊的時候的出來的,他說培訓的時候學了不少東西,而後我一問他框架原理,都答不上來,得出的結論就是隻會用 API)。
而後我說的是深度比廣度更重要對於在校生來講,而不是廣度不重要,給你說這個的目的是在你不知道應該學新東西,仍是鞏固之前知識的建議。
鞏固基礎,擁有本身的知識體系,造成解決問題的方法論,這個要求是我去小米實習我老大第一週給我說的東西。
當時我其實很不理解,所謂的知識體系是什麼,還要談到方法論這種東西,感受一臉懵逼,通過我這麼久的思考實踐,我談談個人理解。
其實知識體系和解決問題的方法論是相輔相成的,在本身解決問題的時候,會用到知識體系的東西,知識體系的造成,也有部分是經過解決問題來添磚加瓦的。
什麼是知識體系呢?
能夠說是一個思惟導圖,這個思惟導圖就是你所掌握的知識的一個彙總,或者沒掌握,你以爲須要應該掌握的知識。好比做爲一個前端工程師,你應該會 HTML、CSS、Javascript、前端框架、HTTP 相關知識、web 安全相關知識等等。
關於 Javascript 須要掌握基本類型、函數、對象、內置對象、等知識,
而後函數要掌握閉包、做用域、this等,對象要掌握原型、new這些等等。
我就再也不擴展了,根據本身的知識造成一個知識體系,而後再解決問題的時候就很容易根據本身的知識體系來解決問題,好比可能你遇到了跨域的問題,你從你的大腦搜索整個知識體系的時候,就能夠知道跨域有哪幾種方法,而後每種方法的適用場景是什麼。
在造成本身的知識體系的過程當中,你就知道本身對哪些知識瞭解,哪些知識不瞭解,而後你就會花時間去補充本身不瞭解的知識,漸漸完善本身的知識體系。
在造成本身的知識體系以後,你面試就比較成竹在胸,兵來將擋水來土掩。
你的知識體系就像一張網,面試的過程就是來檢驗你這張網漏洞有多大的過程,而學習的過程就是就像是給這張網空隙給編織細一點,你的最終目的就是使你這張網的空隙愈來愈小。