現在的互聯網市場對高階技術崗位的需求愈來愈多,成爲獨當一面的工程師已經成爲不少一二線互聯網公司招聘的標準門檻了。那麼如何成長爲獨當一面的工程師呢,我會從技術能力和業務能力 2 個方面去闡述。前端
技術能力無疑是衡量一個工程師水平最重要的依據,那麼對於獨當一面的工程師技術能力的要求是怎樣的呢。webpack
職業技能就是工做中依賴的技術棧,下面咱們之前端工程師爲例,看一下有須要掌握哪些職業技能。web
熟練掌握 HTML、CSS、JavaScript 用語義化的 HTML 標籤配合 CSS 百分百還原設計稿,並使用 JavaScript 完成各類交互邏輯。這是前端的基本功,除了經過書籍、視頻等渠道學習以外,你能夠經過作大量業務,不斷寫代碼去應用所學知識,不斷積累。算法
熟練掌握一門 MVVM 框架 Vue、React、Angular 其一,隨着前端的日益複雜,大部分場景都離不開它們。你須要清楚的瞭解框架出現的意義,框架的職責邊界,你能輕鬆應用框架提供的各類能力輔助開發工做。除了不斷在工做中應用,你還能夠主動去學習框架源碼,瞭解框架的實現原理。npm
至少要學會一種打包工具 以 webpack 爲例,你須要熟練掌握 webpack 的配置,學會利用 webpack 輔助咱們的開發、部署和優化。你能夠嘗試去編寫 webpack 的 loader 和 plugin。例如咱們平時開發工做中須要 mock 數據,那麼咱們能夠編寫一個 webpack 插件,在不改源碼的狀況下,實如今開發環境請求 mock 接口,測試環境請求線上接口。編程
熟練掌握前端的一些廣度知識 例如HTTP、Web 安全、性能優化、數據結構和算法等。除了經過書籍、視頻等渠道學習以外,你能夠在平時工做中不斷去應用和驗證。例如性能優化,你能夠去分析頁面的性能瓶頸,在前端仍是後端?若是是在前端,你還能夠進一步分析白屏時間、首屏渲染時間、JS 加載時間、JS 執行時間等等,最後經過統計的手段作性能監控和報警。 ,小程序
開發效率的高低,直接決定你的工做產出比,那麼如何提高開發效率呢。後端
給本身設一個免打擾時間 例以下午的 2點-4點,這個時間專心 coding,不看微信不刷微博不開會,這樣的編碼會很高效。安全
工做中善於提煉可複用的代碼和邏輯 例如當你在開發過程當中發現某組件在其它項目中實現過,這個時候千萬不要想着去 CV 代碼,而是把它抽象成可複用的業務組件,對外設計好輸入和輸出接口,並抽取到專門的倉庫中管理,業務經過 npm 私服的方式去引入。性能優化
善於經過技術的手段去提高效率 例如當你去開發和維護多個項目的時候,每一個項目都包含一些相似的代碼和配置,你就能夠想着去開發一個腳手架,自動幫助你去初始化項目代碼和一些配置文件。
每一個工程師都會在工做中遇到各類問題,解決問題的能力側面反映了一我的的技術能力。
線上問題 case study 當遇到線上問題,你能夠配合一些報錯日誌快速定位問題出,找到快速修復的方案,而且在每次出線上問題後都認真的作 case study,找出引起問題的多方面緣由,並給出對應的解決方案,避免往後再出現相似問題。
探究問題的本質 在開發過程當中遇到報錯,你能夠經過代碼執行堆棧和報錯信息找到引發錯誤的根本緣由,從而找到最合理的修復方案,若是報錯的源頭是第三方插件,你應該趁機去了解第三方實現的原理。
學會提問 並非全部問題都要本身獨立解決,有些時候也能夠求助於他人,好的提問方式很是重要。例如你在提問以前,本身應該通過充分的思考,並學會把問題拆解,在拆解的過程當中就會把問題的複雜度下降。要善用搜索引擎,把關鍵字提取出來去搜索引擎上去搜索,先嚐試本身去解決問題。若是仍然不能解決,能夠將問題的相關上下文、截圖及必要標識及本身的思考過程、查找到的相關資料,以及本身的分析發送給想要幫助你的人,並能提供最小化復現的問題。
曾經有個大佬跟我說過,若是每半年去回顧你以前寫的代碼,都會以爲像坨屎的話,那說明你在進步。
不要過分設計 有些人喜歡一次性把代碼寫好,預留各類擴展接口,過分設計,但因爲需求的的變化每每不可預測,很是容易致使花了大量的時間卻寫了大量無用的代碼,產出低下。在高速發展的互聯網公司是絕對不能容忍這種狀況的,而應該是敏捷開發,快速迭代。
及時重構 一般咱們爲了一個項目快速上線,初版的代碼可能會有不少問題,當咱們在基於以前版本的代碼開發新功能的時候,若是遇到以前代碼實現不合理的地方要及時重構,而不要敷衍了事,若是等到代碼量已經很大的時候去重構,會很是困難和痛苦,而且還可能有 regression 風險。
codereview 找比本身厲害的同事幫助本身的代碼作 codereview,吸收他們的一些好的建議,也能夠去 review 其餘同事的代碼,以爲寫的好的代碼要學習,以爲寫的很差的地方能夠 」挑刺「,引發討論,追尋最佳實踐。而且一個團隊要制定統一的代碼規範和風格。
學習優秀源碼 如何去寫出優秀的代碼,首先要學會模仿,你應該常常去 GitHub 去閱讀一些優秀的源碼,把好的編程思想和代碼實現借鑑到本身的工做項目中。
技術是一個長期學習並積累的過程,須要常常作一些技術沉澱。
技術分享 把工做中遇到的一些問題的解決方案、學習的一些新技術,產出的一些技術項目總結下來,做爲對內或者對外(公司容許的話)技術分享和輸出。對內分享的話可讓你們能知道你作的東西,並活躍內部技術氛圍,鍛鍊表述能力,這個能力在大公司的晉升述職中很是重要;對外分享能夠鍛鍊寫做能力,提高我的或者是團隊的技術影響力。
開源 若是在工做中作的不錯的項目,有開源價值而且公司容許的前提下,能夠考慮開源,由於開源會讓你對項目質量有更高的追求。例如以前我在滴滴作的 cube-ui,開源會讓咱們對代碼的質量要求更高,並補充了完整的文檔、示例和測試。並且隨着愈來愈多人使用,用戶幫咱們反饋了不少 bug,也補充了不少功能,直接幫助咱們省了 QA 的人力。好的開源項目也能夠幫助咱們提高我的和團隊的技術影響力。
技術變化突飛猛進,快速學習的能力尤爲重要。
閱讀官方文檔 當你去學習一門新技術的時候首先應該去閱讀官方文檔,而不要去看社區總結的文章,由於官方文檔是最權威的,而且是實時更新的,而他人總結的二手資料極可能是過期甚至是有誤的。
在工做中實踐 學習若是脫離工做的實踐,實際上是很是低效的。你應該把本身所學的知識並在工做中反覆實踐和驗證,及時反饋,加深學習的印象。不要花時間去學習與工做無太多直接關係的領域。
先精通一門技術 不一樣的技術之間實際上是融會貫通的,當你對一個技術精通並總結出方法論之後,很容易上手別的技術。好比一個對 Vue 精通的同窗,上手 React 一定毫無難度,對 Web 前端開發精通的同窗開發小程序也是毫無壓力。
技術選型是大部分工程師都會面臨的問題,好的工程師必定要有好的技術選型的能力。
當現有輪子不能知足咱們的需求的時候,咱們要有本身造輪子的能力。
做爲獨當一面的工程師,除了過硬的技術能力,也須要有良好的業務能力。
若是你不甘心只當一顆螺絲釘,你須要有 owner 意識,對產品和項目負責。例如我如今在 zoom,從需求、設計、開發、測試到最終的上線都是由工程師在主導,並協調各個角色成員。這對工程師提出了更高的要求,也鍛鍊了工程師的綜合素質能力。即便你所在的公司項目並不禁工程師主導,你也能夠以這個標準來要求本身。
當你接到一個需求的時候,也要思考這個需求解決了什麼問題,有什麼價值和意義。做爲一個工程師,最好能參與到需求早期的討論中,充分理解業務,這樣你對需求的把握和理解會更準確,而不是產品說什麼你就作什麼,有些時候你會找到一條既能知足需求又能節約開發成本的路。
不少人但願作一個只寫代碼的美男(女)子,但實際狀況你須要和不一樣的工做崗位的人溝通。溝通能力是很是重要的,不少時候你須要去了解你的需求方的想法,並輸出你的想法。若是你兩耳不聞窗外事,極可能作出來的東西並非他人想要的,充分的溝通能夠避免走一些彎路,提高工做效率。
不少沒有在大公司待過的人對於上線的視程度不夠,一旦上線出問題,第一反應並非回滾代碼,而是去定位問題,經過下一次上線修復。這個行爲在大公司是絕對不容許的,由於當你用戶量大了,每一次上線事故的影響面都會很大,若是不及時回滾,對公司也會形成很是大的損失。所以要對上線有敬畏心,保證整個上線過程是自動化而非人工參與(由於人是不靠譜的),上線過程當中須要觀察監控,一旦有任何數據異常要及時回滾,而後再定位問題從新上線,最好避免高峯期上線。
咱們通篇講了不少方法,但實際上在你進階成爲獨當一面工程師的路上,這些方法也只是僅供參考,真正能成爲大牛的人,可以直面困難和挫折,勇於跳出本身的溫馨區追求進步,能熬得住突破瓶頸長時間的寂寞,是肯下笨功夫的聰明人。沒有什麼人能夠靠着看一兩篇文章就能成爲大牛,而真正重要的,是多年如一日的堅持。
與你們共勉。