【轉】給年輕的前端程序員提高能力的幾條建議

若是你問一個年輕的前端開發人員,你在從此的 3 年內如何提高本身的能力?他可能會說「我如今對 Web 前端比較熟悉,但我想深刻了解 AngularJS,另外 React 如今發展的很快我也想看一下。以後,我會花時間去學習 iOS 和 Android 開發。」看上去不錯,但缺少系統性的目標。或者說,他制定了學什麼,但對爲何要學這些並無仔細的思考。前端

在技術領域,有太多的東西會迅速的過期,如何利用有限時間,最大化你的長期收益?這裏我能夠給出幾條建議:程序員

1.打造你的工具箱面試

工欲善其事,必先利其器。每一個開發者都應該有一把本身的瑞士軍刀,在未來漫長的職業生涯中,這些工具能夠爲你省下寶貴的時間,並幫助你更好的組織我的知識庫。舉兩個例子編程

一套高效的開發環境瀏覽器

一個信息採集器和一本筆記本
高效的開發環境微信

咱們能夠從編緝器談起,這裏有IDE vs Text Editor,有Vim vs Emacs,有Sublime vs Atom,那該如何選擇呢?在作選擇以前,咱們先想一想本身的目標。咱們但願這是一個長期的投資,這款編緝器能被長期使用,在這個過程不斷的打磨,使其能徹底適合本身的習慣,最大化編緝效率。若是程序員是俠客,編緝器則是他手中的劍。架構

雖然我是Vim的重度用戶,但我以爲當年選擇Vim時有欠考慮。若是讓我重選一次,個人第一選擇會是Emacs,第二選擇會是Atom。app

Emacs已存在30年,社區仍然活躍,其可擴展性在編緝器中無人能出其右。Emacs的腳本語言elisp又是lisp的一種dialect,我以爲對lisp的學習能夠提高程序員對編程核心思想的理解。另外一個加分點是Emacs因爲其自己的高門檻及lisp特質,吸引了大批高質素的程序員,其社區可謂藏龍臥虎,更誕生了像Org-mode這樣神級的插件。框架

反觀Vim,Vim的精髓在於Mode editing,這是值得學習的,能夠極大提升文本編緝的效率。但當你熟悉了這一理念後,我以爲能夠轉投其餘編緝器,由於Vim的架構與Vimscript限制了其擴展性。Emacs經過Evil插件很是完整的支持了Mode editing,其餘主流的編輯器也有相似插件,因此你一旦掌握了這個理念,在別的編輯器中也能夠發揮做用。可能有人會說沒有一個Vim emulator能作到Vim 100%的功能,但重點不在於某條指令是否被移植,而是mode editing思想的精髓可否被移植,我以爲答案是確定的。異步

再看Atom vs Sublime,Atom的可擴展性很是好,它的大部分核心功能也是以插件的方式實現,這點與Emacs有殊途同歸之妙。而且其開源的特性,使我相信它有比Sublime更持久的生命力。

關於IDE,個人見解是,我不排斥IDE,但每一個IDE都是爲了某個特定的任務或是編程語言服務的。作爲一個有追求的程序員,能夠用IDE,但依然須要精通一個強大的通用編緝器。

相似編緝器,高效的開發環境還包括Shell,Launcher,窗口管理器,文檔閱讀器等等。其中有一部分只須要你化不多的時間就能夠完成配置,它們的投資回報率是很是高。

信息採集器和筆記本

前者是用來收集別人產生的信息,後者則是收集本身產生的信息。前者一個簡單的例子就是瀏覽器的Bookmark。你須要能隨時將一組有用的信息歸檔,並在將來的某個時刻快速找到它。後者最直觀的例子則是Mac OS或是iOS自帶的筆記本,這裏的目的是能隨時隨地記錄你本身的想法。從本質上講,就是你須要有一套好用的工具來作你的知識庫管理(Knowledge management),也能夠說是你知識和思想的外部備份。我我的如今是用Evernote同時來作信息採集與筆記的。若是有一個好的流程,你也徹底能夠用兩個工具來分別把這兩件事作好。但我建議你花足夠多的時間來思考如何組織你的我的知識庫。

以上只是兩個典型的例子,你須要作的是發現那些你要長期從事的任務(每每不隨技術而改變,也不隨公司而改變),將完成這些任務所需的工具調整至最優。再舉一個例子,我會留意身邊的程序員所用的鍵盤。只有少部分的程序員會買高端的靜電容鍵盤,好比HHKB。而在我看來,這明顯是一筆很划得來的投資,程序員在工做的大部分時間裏都須要和鍵盤打交道,一個溫馨的打字體驗是很是有收益的,更況且這類高品質的鍵盤都很是的耐用。

2.開闊你的視野,構建你的技術體系

首先你要給本身設定一個目標,就如同一個公司會設定它的Vision。

目標要夠大,這樣你才能看到更多的風景。

目標應該設定在解決哪一類問題,而不是精通哪一類技術。技術只是手段,不是目的。

例如,「我要成爲iOS developer中的達人」這個目標,就遠不如「我要成爲前端應用開發的專家」來得有意義。前者學到深處你可能會去鑽研iOS framework裏各類奇技淫巧,然後者你會開始關注視覺與交互設計,研究各平臺間的差別與共同趨勢。顯然,後者更有助於你的我的發展。

不過即使有了明確的目標,選擇哪一類技術學習,如何學習,在信息過載的今天依然是一個難題。常有的觀點是應該學習最新的技術,由於老的已通過時,而反對的觀點則是新技術還不成熟。

我的的觀點

當初入一個領域時,選擇主流技術框架;當你有必定經驗後,選擇技術時更應該關注背後的推進者,我相信優秀的人和團隊總能打造優秀的產品,不管是商業公司仍是開源社區。沒必要太在乎技術的新舊,由於可能很快都會成爲過去時。你真正要學習的是技術背後的思想。

有很多語言與開源項目會寫它的Coding philosophy,這是頗有意思的,你能夠從它們的源代碼中去驗證這些編程理念。以Python爲例,若是你執行import this就會看到它的理念,再如Python中一個著名的開源庫Celery,在它的文檔有專門一節講述它的編程理念。它們對你的影響會比這些技術自己來得更深遠,這是我給初學者們的一個忠告。

同理,我很是推薦讀一些優秀開源庫或是語言的源代碼,例如Python的標準庫絕大部分都是用Python實現的,並且可讀性很是好。若是學習一門技術僅僅停留在用的層面上,你就尚未徹底吸收其中的精華,並且學習的收益會隨着技術的過期而消失。

另外一個學習原則

在選擇學習一門新技術時,最大化它與你現有知識庫的差別性。讀起來可能有拗口,例如你會Django,接下去你應該去學習Ruby on Rails仍是NodeJS? 依據這個原則,你應該學NodeJS,由於它的異步IO模型在理念上與Django的同步模型差別很大,而RoR則與Django更多類似之處。但更好的選擇是不要去學另外一個Web framework,去學習ZeroMQ或是Redis,這二者對於Web development也很是有幫助,這樣就作到了最大化差別。從構建一個程序員的技術理念角度,我會推薦每個程序至少去了解Lisp或是一門Functional programming language,無論你是否會在可見的將來用到,它們能讓你從一個不一樣的角度看待編程。

最後我建議每一個程序員都應該經營一款本身的產品,它能夠是一款app,一個網站或是一個開源軟件。除非你是一個創業公司的早期員工,否則你可能沒有機會將全部學到的技術或是理念都付之實踐,有不少人想成爲全棧工程師,最快的捷徑就是打造一款本身的產品。任何一個設計師都會精心打造本身的Portfolio,但大部分程序員卻不會。當評估一個程序員的Coding能力時,我會去看他的Github上是否有出彩的項目,惋惜國內絕大部分程序員的Github空空如也,或者只有一些很是簡單的程序。

我建議你們好好經營本身Github上項目,這不但能夠提升你的聲譽,對你未來的求職也很是有幫助。當你報怨求職面試時又被問到各類無厘頭的程序題時,有沒有想過面試官也很無奈,由於他沒有任何其餘方法得知你的Coding能力究竟如何。若是每個程序員都有本身的做品,我想程序員的面試會簡單許多。

3.重視溝通能力的培養

當被問到「你以爲Junior Developer和Senior Developer最大的差異是什麼」時,我最天然的反應是溝通與文檔。溝通包括程序員團隊內部的溝通,與其餘團隊的溝通,與Manager的溝通等等。我不認爲本身有能力把這些問題很是歸納地說清楚,不過我能夠給一條建議,那就是先學會和你的Manager溝通,讓他來教你其他的部分。

許多公司都會設置Manager與組員的1:1,一個有效率的1:1應該大部分時間有組員來主導。這須要你在1:1以前花足夠多的時間來考慮要問的問題,而且最好提早1天發給Manager,讓他有機會思考答案。許多人對此不過重視,或者只問很是具體的問題而不是一些開放性問題,這樣你很難在你的Manager身上學到東西。若是你漸漸懂得如何利用1:1的時間,它很會成爲你在工做中單位時間投資回報率最高的活動。

4.累積你的人脈

每一個人都明白人脈的重要性,但實際作起來卻不容易。參加一些線下的會議或是活動,多是最直接的擴展人脈的方式之一。惋惜大部分人彷佛只是去聽了一場技術講座就回家了。固然,這和很多活動的時間安排也有關係,講座時間排得太滿,茶歇時間短,加上有時嘉賓遲到或是沒控制好時間,乾脆就把茶歇取消了。而實際上,結識一兩個同道中人遠比聽技術講座有價值。下次去參加這類會議,不妨給你本身設個目標,好比至少加兩個同行的微信。以後維繫你的人脈可能須要花更多的時間,下了班或是週末找你的朋友們喝個咖啡吧!

另外我以爲每一個人都須要一個職場導師,他能夠是你第一份工做的導師或是Manager,也能夠是你認識的其餘前輩。大家須要維繫一個很是長期的關係,不止於一家公司,最好貫穿你的整個職業生涯。每當你遇到疑惑時,均可以詢求他的建議,我以爲這將是你最寶貴的一筆人脈財富。

5.尋找發揮你才華的平臺

最後也是最重要的一步,找到適合你的公司。作爲求職者評估一家公司能夠看三個方面

公司的發展前景(大公司的話,看所在部門的發展前景)

你將要加入的團隊

薪資福利

因此在面試一家公司的時候,你要意識到面試是雙向的,公司在面試你的同時,你也在面試這家公司。面試前你應該對這家公司作足功課,準備好一些有質量的問題,好比指出產品中的問題,詢問開發流程或是如何作績效評估。到時你也能夠檢驗一下你的面試官是否合格。

每次選擇公司對以上三個方面都應兼顧,但在職業生涯的不一樣階段,側重點不一樣。好比,在剛剛工做時,加入一個優秀的團隊最爲重要,他們能夠教會你不少東西,提高你的能力。工做5年以後,你須要一個平臺施展你的才華,體現我的價值,公司發展前景的重要性迅速提高。當你作出一番成績,證實了本身的價值以後,逐漸進入收穫期,就有了與公司要價的資格。另外一方面,團隊實力對公司的前景也有很大的影響。

對一個剛畢業,初入職場的同窗,一個近幾年被問了無數次的問題「個人第一份工做是去創業公司仍是大公司?」個人回答仍舊是「加入一個優秀的團隊最爲重要」。一些知名的大公司,團隊的素質是有必定保證,但創業公司則否則,團隊素質良莠不齊,因此如我前面所說你須要面試這個團隊,作出本身的判斷。不過除了團隊因素以外,我想提一下畢業生去創業公司的幾個好處。首先,在剛畢業的一段時間內,經濟壓力小,是最自由最能承受風險的時期,而這段時間每每不長,因此應把握好這個去創業公司的黃金時段。其次,全部的學生進入大公司後,都會擔任初級職位,某種程度上來說是學校學習的延續,規範有條理,但缺少獨立性和創新性,而這正是中國大部分學生所欠缺的。這方面的能力在一家創業公司能夠獲得快速鍛鍊,而在大公司可能要等升到中級職位後纔有這方面的機會。

小結

我以爲步入職場的前3年對從此的發展尤爲重要,但願此文能對年輕的程序員們有所幫助。歡迎評論!

轉自:給年輕的前端程序員提高能力的幾條建議

相關文章
相關標籤/搜索