如何成為公司獨當一面的工程師

大家好,我是若川。歡迎加我微信?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基礎系列

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275969.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275969.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275969.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

webpack4.0配置記錄(2)

接上一篇webpack4.0配置記錄(1),繼續記錄學習webpack配置。 定義環境變量 new Webpack.DefinePlugin({//用來定義全局環境變量DEV:JSON.stringify(dev),FLAG:true }), webpack簡單優化 noParsemodule:{noParse:/jquery/,//不去解析設置的包所依賴的關系,如jquery } ignorePlugi…

flex如何做響應式設計_響應式設計-您做錯了!

flex如何做響應式設計Responsive design is not just about the web that automatically adjusts to different screen resolutions and resizeable images, but designs that are crucial for web performance.自適應設計不僅涉及可自動適應不同屏幕分辨率和可調整大小圖像的網…

怎么查看和獲取SQL Server實例名

查看實例名時可用 1、服務—SQL Server(實例名),默認實例為(MSSQLSERVER) 或在連接企業管理時-查看本地實例 2、通過注冊表 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SQL Server/InstalledInstance 3、用命令 sqlcmd/osql sqlcmd -L sqlcmd -Lc osql -L 獲…

30萬手表推薦_今年六十歲生日,兒子說要送只30萬的手表,請問有哪些推薦?...

關注腕表部落,盡享腕表生活一位讀者向筆者提出這樣一個問題:今年六十歲生日,兒子說要送只30萬的手表,請問有哪些推薦?首先要恭喜這位老爺子,一來是生日馬上就要到了,二來是還有這么孝順而且慷慨…

關注博客

https://blog.51cto.com/oldboyhttps://blog.51cto.com/yw666轉載于:https://blog.51cto.com/11732716/2348556

寫 Node.js 代碼,從學會調試開始

大家好,我是若川(點這里加我微信 ruochuan12,長期交流學習)。今天推薦這篇調試文章,熟悉我的讀者都知道我寫的源碼文章都多次強調要調試,而且寫了調試方法。點擊下方卡片關注我、加個星標,或者查…

創建用戶友好的表單

Forms are a common way to engage with users and could be a user’s first impression of your product. Since forms aren’t always the user’s favourite thing, it is essential to make filling out forms as easy as possible. Let’s go over a few tips for creati…

細節決定成敗—關于.net的.dll.refresh文件

一直在做.net的項目,c/s的、b/s的,一直沒有注意這個東西。眾所周知,.net的程序生成后會在bin目錄下生成.dll文件,而.dll.refresh這個文件從何而來呢?那天無聊地google了下才知,這個東東是在你的項目中引用第…

環境在c盤_如何給女朋友解釋為什么 Windows 上面的軟件都把自己安裝在 C 盤

本文經授權轉載自漫畫編程(ID:mhcoding)周末,我在家里面看電視,女朋友正在旁邊鼓搗她的電腦,但是好像并不是很順利,于是就有了以下對話。計算機存儲我們使用的計算機中,保存信息的介質有兩類:一…

能讓你縱享絲滑的SSR技術,轉轉這樣實踐

大家好,我是若川(點這里加我微信 ruochuan12,長期交流學習)。今天推薦這篇圖文并茂的SSR技術文章。這是江西前端群里一個小伙伴的文章。群里小伙伴很多都在知名大廠,但他們都很低調。點擊下方卡片關注我、加個星標&…

魅族魅藍mirror簡單打開usb調試模式的步驟

經常我們使用安卓手機鏈接電腦的時候,或者使用的有些應用比如我們企業營銷團隊經常使用的應用引號精靈,以前使用的老版本就需要開啟USB調試模式下使用,現經常新版本不需要了,如果手機沒有開啟USB調試模式,電腦則無辦法…

hp-ux 單用戶 啟動_UX備忘單:搜索與瀏覽

hp-ux 單用戶 啟動重點 (Top highlight)When designing search results and interest sites, you have to keep in mind what ‘mode’ your user is in. Are they in ‘searching mode’ or ‘browsing mode’? This will help you determine how to design your platform to…

細數開源歷史上的九個重大事件

開放源碼(開源)的精神在于使用者可以使用、復制、散布、研究和改進軟件。這可以追溯到20世紀60年代,至今已有半個世紀了。伯樂在線-職場博客的這篇文章將列舉開源歷史上的九大重要事件。雖然本文不是專門對開源產品,但還是說到了一…

有贊大數據平臺安全建設實踐

一、概述 在大數據平臺建設初期,安全也許并不是被重點關注的一環。大數據平臺的定位主要是服務數據開發人員,提高數據開發效率,提供便捷的開發流程,有效支持數倉建設。大數據平臺的用戶都是公司內部人員。數據本身的安全性已經由公…

請先設置tkk_理光MP2014掃描至文件夾的設置方法

理光旗下的2014系列入門級A3黑白復印機市場保有量較大,該系列機型加裝M16網卡后可以方便的實現掃描至文件夾功能,經常有客戶咨詢該機型的掃描設置方法,下面我就以MP2014D為例來演示一下該機型的SMB掃描設置方法:首先是在電腦上建立…

聽說現在都考這些React面試題

大家好,我是若川。最近刷脈脈看見圈里都在聊面試,吐槽最多的還是萬年考點 React 和 Vue。不過關于兩者的比較似乎有點針尖對麥芒的趕腳。確實,面試的偏重點往往映射公司對該框架的重視程度,但也不能一概而論,去學習或放…

開發中的問題——環境相關

開始了解Android差不多兩周了,作為一名.net開發者,首次接觸Java類的技術,免不了會碰到一些問題,開博的第一篇就來說說自己遇到的問題以及一些感受。關于Android開發環境的搭建,網上已經有很多,其實等更新完…

荒島余生為什么沒有打開包裹_您會帶到荒島什么辦公桌設置?

荒島余生為什么沒有打開包裹Throughout life, you experience a lot of desks and a lot of desk setups. Real or virtual, at the office or at home, temporal or permanent — just a way to call it, nothing is permanent— a big one with a great office view or a sma…

c++ 整數取反_c++ 取反運算符“~”

取反符將二進制表示的數字中的0變為1, 1變為0但是需要注意的是c中對int型進行取反操作時,將前面的前導0也進行了取反(int型變量為32bit)。比如1的二進制表示是00000000 00000000 00000000 00000001~(00000000 00000000 00000000 00000001) 11111111 11111111 11111…

第五課 路由之初識路由

1.路由快速入門 1.1 概念 是指把數據從一個地方傳送到另一個地方的行為和動作,而路由器,正是執行這種行為動作的機器。它的英文名稱為Router,是一種連接多個網絡或者網段的網絡設備,它能將不同網絡或者網段之間的數據信息進行“翻…