大家好,我是若川。歡迎加我微信?ruochuan12,長期交流學習。今天推薦黃老師的這篇文章,你可能看到過了,但值得再看一遍。之前常有小伙伴問,大多情況下我都會分享這篇文章。
點擊下方卡片關注我、加個星標,或者查看源碼等系列文章。學習源碼整體架構系列、年度總結、JS基礎系列
前言
如今的互聯網市場對高階技術崗位的需求越來越多,成為獨當一面的工程師已經成為很多一二線互聯網公司招聘的標準門檻了。那么如何成長為獨當一面的工程師呢,我會從技術能力和業務能力 2 個方面去闡述。
技術能力
技術能力無疑是衡量一個工程師水平最重要的依據,那么對于獨當一面的工程師技術能力的要求是怎樣的呢。
職業技能
職業技能就是工作中依賴的技術棧,下面我們以前端工程師為例,看一下有需要掌握哪些職業技能。
熟練掌握 HTML、CSS、JavaScript
用語義化的 HTML 標簽配合 CSS 百分百還原設計稿,并使用 JavaScript 完成各種交互邏輯。這是前端的基本功,除了通過書籍、視頻等渠道學習之外,你可以通過做大量業務,不斷寫代碼去應用所學知識,不斷積累。熟練掌握一門 MVVM 框架
Vue、React、Angular 其一,隨著前端的日益復雜,大部分場景都離不開它們。你需要清楚的了解框架出現的意義,框架的職責邊界,你能輕松應用框架提供的各種能力輔助開發工作。除了不斷在工作中應用,你還可以主動去學習框架源碼,了解框架的實現原理。至少要學會一種打包工具
以 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 前端開發精通的同學開發小程序也是毫無壓力。
技術選型
技術選型是大部分工程師都會面臨的問題,好的工程師一定要有好的技術選型的能力。
技術選型的標準
當你去選擇某個開源項目的時候,應該參考以下幾個方面:feature 完整度(能否很好滿足我們的需求),使用量(npm 下載量、是否有大公司使用),維護力度(最近更新時間、更新頻率、issue 和 pr 的處理情況),測試(是否有測試,測試覆蓋率),文檔(文檔和示例是否完善),維護者(團隊、個人的技術能力以及他們的技術影響力),流行度(star、fork 量)。
造輪子
當現有輪子不能滿足我們的需求的時候,我們要有自己造輪子的能力。
學會造輪子
你需要經常去學習和研究其它的輪子是如何造的,學的多了,自然就掌握了造輪子的一些規律和方法論,了解輪子實現的本質原理,也就可以根據自己的需求和場景去定制化輪子了,并且你的輪子也可以是其它小輪子組裝而成。例如我在滴滴的時候為了實現一個媲美原生 iOS 體驗的 Picker 組件,先是研究了 isroll 的實現,在它基礎上擴展實現了 better-scroll,然后在 better-scroll 的基礎上擴展出 Picker 組件。
業務能力
作為獨當一面的工程師,除了過硬的技術能力,也需要有良好的業務能力。
owner 意識
如果你不甘心只當一顆螺絲釘,你需要有 owner 意識,對產品和項目負責。例如我現在在 zoom,從需求、設計、開發、測試到最終的上線都是由工程師在主導,并協調各個角色成員。這對工程師提出了更高的要求,也鍛煉了工程師的綜合素質能力。即使你所在的公司項目并不由工程師主導,你也可以以這個標準來要求自己。
產品思維
當你接到一個需求的時候,也要思考這個需求解決了什么問題,有什么價值和意義。作為一個工程師,最好能參與到需求早期的討論中,充分理解業務,這樣你對需求的把握和理解會更準確,而不是產品說什么你就做什么,有些時候你會找到一條既能滿足需求又能節約開發成本的路。
溝通能力
很多人希望做一個只寫代碼的美男(女)子,但實際情況你需要和不同的工作崗位的人溝通。溝通能力是非常重要的,很多時候你需要去了解你的需求方的想法,并輸出你的想法。如果你兩耳不聞窗外事,很可能做出來的東西并不是他人想要的,充分的溝通可以避免走一些彎路,提升工作效率。
敬畏上線
很多沒有在大公司待過的人對于上線的視程度不夠,一旦上線出問題,第一反應并不是回滾代碼,而是去定位問題,通過下一次上線修復。這個行為在大公司是絕對不允許的,因為當你用戶量大了,每一次上線事故的影響面都會很大,如果不及時回滾,對公司也會造成非常大的損失。因此要對上線有敬畏心,保證整個上線過程是自動化而非人工參與(因為人是不靠譜的),上線過程中需要觀察監控,一旦有任何數據異常要及時回滾,然后再定位問題重新上線,最好避免高峰期上線。
總結
我們通篇講了很多方法,但實際上在你進階成為獨當一面工程師的路上,這些方法也只是僅供參考,真正能成為大牛的人,能夠直面困難和挫折,敢于跳出自己的舒適區追求進步,能熬得住突破瓶頸長時間的寂寞,是肯下笨功夫的聰明人。沒有什么人可以靠著看一兩篇文章就能成為大牛,而真正重要的,是多年如一日的堅持。
與大家共勉。
最近組建了一個江西人的前端交流群,如果你也是江西人可以加我微信 ruochuan12 拉你進群。
·················?若川出品?·················
今日話題
有小伙伴問為啥現在我的公眾號推文的封面是黑底白字,真的很難看。我說是因為比較醒目,容易在眾多公眾號推文中區別出來,而且省時間。選封面是比較費時間的,為了選封面其實我特意安裝了谷歌插件?unsplash Instant,每次打開新的標簽頁就能欣賞美圖,但大多不太符合公眾號封面。如果是隨意選的網圖,有可能有人找上門說侵權賠錢。歡迎分享、收藏、點贊、在看我的公眾號文章~
一個愿景是幫助5年內前端人走向前列的公眾號
可加我個人微信 ruochuan12,長期交流學習
推薦閱讀
我在阿里招前端,我該怎么幫你?(現在還能加我進模擬面試群)
如何拿下阿里巴巴 P6 的前端 Offer
點擊上方卡片關注我、加個星標,或者查看源碼等系列文章。
學習源碼整體架構系列、年度總結、JS基礎系列