聊一聊初中高級工程師的區別

皮蛋.png

前言

前段時間, 參加了騰訊的 TLC 大會,見到了不少大牛, 也認識了不少有趣的朋友。 前端

閒聊的時候就聊到了級別的問題, 我也有一些想法, 結合以前看到的一篇文章,在這裏總結一下, 順便分享給你們。git

正文

關於級別

咱們知道程序員分 初級中級高級, 這個概念, 並不是以工做年限做爲分類依據的。 也就是說, 級別和你工做多少年沒有必然的聯繫程序員

一個初級工程師可能工做很多年依然是初級工程師, 也有的工程師, 工做短短兩三年, 就躋身高級工程師的行列。github

這一切, 都取決於你的能力web

不過也不是說高級工程師在各方面都是專家。 通常來講, 高級工程師比初中級的工程師具備更多的編程經驗和技巧的。編程

但僅僅靠編程經驗和技巧也是不夠的。 那說了這麼久, 區別究竟是哪些呢?redux

別急, 聽我一一道來。設計模式

關於知識儲備

顯而易見的是, 高級開發的英雄池更深, `知識儲備`比初中級的更加豐富。 好比`架構設計`,`設計模式`, `自動化測試`, `性能相關`, `安全問題`, 等等都不在話下。

若是初中級工程師想要縮小到高級之間的知識差距, 能夠從這些領域下手。


遇到問題,知道用什麼技能來解決, 這一點很重要。 可是僅僅知道上面提到的這幾點也是不夠的。 

知識儲備並非最大的區別, 它只是其中的`一個因素`。

關於Coding

代碼是什麼?安全

代碼是一種咱們和計算機和同事之間交流的語言。

對計算機而言, 通過編譯的代碼只不過是一堆 `0` 和 `1`.

代碼寫的好很差看,對計算機而言, 其實沒什麼區別。

可是對於和你一塊兒工做的同事而言, 這點就很重要了。性能優化

在一個團隊裏, 每每都是老司機開發核心功能, 萌新修修bug, 作一些比較簡單的功能。

這也是初級和高級的一個區別。
   
中級介於初級和高級之間, 是比較特殊的一個階段。

從經驗來看, 這是一個比較靠近高級的級別, 主要和`經驗`有關。

一箇中級的開發, 每每是開發過幾個項目, 具備必定的開發經驗, 踩過一些坑, 並有一套本身的解決的問題的方法。

如判斷是否是初級

初級開發,通常是那種經驗很少的, 剛畢業找到第一份工做的人。

這個階段, 每每專一於,代碼能跑,不報錯,能完成需求就完了。

編寫簡潔以東的代碼其實不是一件容易的事。 初級工程師不喜歡寫這種代碼, 取而代之的是自認爲‘炫酷’, ‘高逼格’的代碼。 因此能夠從一些奇怪的苗條代碼, 或者複雜難懂的抽象去識別。 他們以爲這種代碼寫出來很酷, 能夠拿出來炫, 這麼想實際上是不對的。

初級人員每每過於專一代碼的功能性而犧牲了代碼中人性的那一面。

高級開發是什麼樣的呢

高級開發寫 簡單, 直接, 有時候看起來甚至有點蠢的代碼。

遵循一個原則: Keep it simple, stupid.

相比於初級, 高級開發編寫代碼的時候會從不一樣的角度出發, 好比 可維護性拓展性等。 除去自己的功能以外, 考慮的更多的是人性的那一面。

編碼技巧以外的判斷

除去代碼, 還有一些特徵能夠判斷屬於哪一個級別。

每每在一個團隊中,初級人員作的都是最簡單的工做, 或者影響面比較小的task, 不涉及架構設計的工做。

中級人員也是着重解決任務,不參與或者參與部分結構的設計。 和初級不一樣的是, 中級人員在作分配的任務的時候,不須要過多額外的監管或注意。

高級開發每每能夠獨自開發一個完整的應用。

不太高級也不意味着不會有問題, 每一個人天天都會遇到問題, 高級也同樣。

只不過區別在於, 高級懂得如何正確的提問, 如何正確的解決疑問。

中級也能正確的提問, 可是在遇到複雜問題的時候, 可能須要額外的幫助。

高級開發會始終把注意力集中在要解決的問題上, 遇到新的疑問的時候, 能做出正確的反應。 不過這也不意味着不能向周圍的同事求助, 有時候最快捷的途徑就是問問組裏的人有沒有處理過相似的問題。

初級開發經驗沒那麼多, 可能須要一些中高級開發往正確的方向上帶一下。

如何往突破到下一級

初級到中級

初級最缺乏的是經驗。 因此這一階段,須要多作項目,多積累經驗, 遇到坑的時候知道怎麼快速解決。

編碼上, 學習下如何編寫簡潔易懂的代碼, 這個能夠多看看別人寫的代碼, 能夠參考github上的一些開源庫, 好比 redux等。

也須要掌握一些debug 的技巧。

若是有時間, 也能夠再熟悉一些最佳實踐, 好比架構, 性能優化, 常見的安全問題等。

彌補這些知識上的差距是跨越到中級的關鍵。

中級到高級

從初級到中級不是很難, 但從中級到高級就要可貴多。

一些開發者會這在這個階段好多年, 甚至一直呆在這個階段。突破這個階段不過須要實力, 可能還須要一些運氣。

並且一些問題的取捨, 利弊的權衡, 你也須要明白。

若是想要突破到高級, 必需要作好的準備是, 遇到一個困難問題的時候, 別人都不知道怎麼作,你要站出來接着, 並且你還要知道這個事情該怎麼解決。

做爲一個高級開發, 可能還會帶帶人, 當他們遇到問題搞不定的以後, 你能提供必要的指導。

另外, 對於你是用的技術棧, 必須是十分了解的, 不只僅是編碼技巧方面。 另外, 熟悉你所在公司的一些工具, 或者應用也十分重要, 畢竟都是資源, 懂得如何調動這些資源來解決你的問題也十分重要。

簡而言之, 高級開發就是要能獨當一面

結論

  • 初級,中級和高級開發人員之間的差別並不是所有來自經驗和年限。固然,能夠確定地說,高級開發人員比初級和中級開發人員更熟練,但知識並非最重要的因素。
  • 高級開發, 相比於初級開發, 編碼考慮的問題更全面。
  • 高級開發知道如何正確的提問題, 以及如何解決問題。
  • 高級開發每每須要具有解決複雜問題的能力。

最後引用一句話:

" Any fool can write code that a computer can understand. Good programmers write code that humans can understand.」

最後

獻上TLC大會 PPT & 錄像

clipboard.png

但願對你們有所啓發。

以爲內容有幫助能夠關注下個人公衆號 「 前端e進階 」,掌握最新動態,一塊兒學習成長!

clipboard.png

相關文章
相關標籤/搜索