坐標某大廠,整個團隊屬於偏後台的團隊,前端更像業務工具仔,很少有時間深入挖掘。請問在這樣的團隊中如何成長呢?本人前端應屆


不管在什麼樣的團隊中,程序員自我成長太重要了,就從自學的角度,來談一談前端開發者初、中、高級程序員的進化之路。閑話少敘,進入正題!

程序員的標準與要求

初級程序員

僅能完成簡單模塊和項目的開發工作難以勝任複雜模塊的開發。通常是入行不久 1 年及以下工作經驗的同學。

能力要求

  1. 熟悉前端基礎知識如 HTML、JS、CSS 。
  2. 能夠使用一門 MVVM 框架進行簡單的業務開發。
  3. 遇到複雜的組件和模塊會找現有的輪子使用。
  4. 會使用百度、google 等檢索工具搜索問題。

中級程序員(阿里 p5)

在必要的輔導或標準流程支持下能獨立負責一個子模塊或者一個項目的具體任務對及時性和準確性負責。通常是 2-3 年工作經驗的同學。

能力要求

  1. 除了前端基礎知識外熟悉計算機、網路等專業基礎知識。
  2. 熟練掌握工作中使用的技術棧開發業務。除了 MVVM 框架外還能了解 webpack 的配置。
  3. 能了解一個需求從開發-上線整個生命周期並對各個環節負責。
  4. 具備基本的邏輯分析、問題分解、歸納總結等能力。
  5. 了解基本的數據結構和演算法寫代碼較熟練。
  6. 知道從靠譜的渠道去查找問題在找不到合適輪子的時候會造一些簡單的輪子輔助業務開發。

高級程序員(阿里 p6)

具有獨擋一面的能力能夠高質量完成工作能把握一個系統/團隊的整體實現在推行過程中能提煉新的方法或方案或對現有方案提出改進建議並被證明有效。通常是 3 年+ 工作經驗的同學。

能力要求

  1. 具有獨擋一面的能力能高質量的完成模塊級的工作。
  2. 熟練掌握工作中使用的技術棧並能了解它們的實現原理。
  3. 能夠在一個需求從開發-上線整個生命周期中找到痛點並能使用技術的手段解決提升效率。
  4. 能在模塊維度對問題或需求做出分析和拆解並做出相對合理的實現方案。
  5. 熟練掌握基礎的數據結構和演算法代碼符合規範邏輯清晰。
  6. 有較好的技術選型能力。

程序員的進化之路

初級 -&> 中級

通常在初級這個階段是進步空間最大的階段這個階段是不存在天花板的。

編碼

編碼是初級階段最需要經常做的事情古話說孰能生巧寫代碼也是同樣的道理。

  • 寫什麼的樣代碼在公司要多做業務嘗試不同的業務目標是讓自己先成為一個熟練工。下班後也可以折騰點小項目做可以選擇自己感興趣的內容嘗試自己實現一遍。
  • 如何寫代碼學會模仿參考大牛的編碼風格照葫蘆畫瓢。如果公司有代碼規範跟隨著公司的代碼規範走如果沒有參考業界規範並用工具如 eslint約束自己。遇到一些不會寫的哪怕找到可以參考的代碼跟著抄一遍也行。

工作

大部分時間都在工作那麼如何合理的利用好 8 小時工作時間呢。

  • 熟悉業務不要僅僅埋頭寫代碼也需要對業務了解認真參與需求評審環節明確自己所做的任務。
  • 熟悉工作流程要熟悉從需求-開發-聯調-測試-上線的每個工作環節認真按照規範來執行對上線要有敬畏心。
  • 提升效率

    工作的時候盡量不要被打斷可以安排一個免打擾時段比如下午的 2點-4點只編碼而不去處理其它事情。減少在群里 灌水和斗圖的時間。

  • 加班可以接受合理的加班比如為了趕某一個需求加班一陣子不接受沒有任何補償和調休的日常加班996因為日常 加班會壓縮你學習和生活的時間。

學習

初級階段是需要通過大量的學習來提升自己的能力。

  • 明確自己的學習目標學習是為了提升能力能讓你勝任更複雜和有挑戰的工作。
  • 應該學習什麼內容前端基礎JS、CSS、HTML 反覆學習。工作中用到的一門前端 MVVM 框架。了解一些廣度知識比如 HTTP、正則表達式、Web安全、性能優化、設計模式數據結構和演算法。
  • 找到合適的學習方式看書+編碼購買經典的書籍閱讀並作為平時寫碼的參考工具看書和編碼是一個反覆的過程基本就是看書-&>編碼-&>看書-&>編碼循環個 3-4 次這個過程就是在不斷修鍊內功。視頻慕課網的入門實戰視頻根據自己的需求購買要充分學習自己購買的每一個視頻認真的跟著老師學習一遍寫一遍遇到不懂的要積極提問學習在於深入而不在於多。視頻比書籍的好處在於更貼合實踐也更貼合公司業務另外課程的升級和更新也更加靈活。官網文檔學習每一個新的技術棧入門最好的方式是通過它的文檔學習可以系統的過一遍文檔手敲它每一個示例。

    社區慕課網手記、掘金、CSDN、InfoQ 等中文社區利用碎片化時間看一些高質量文章學習。

    GitHub學會 GitHub 的使用知道 clone、fork、pull、push 等基本操作。
  • 花更多的學習時間如果想比別人成長的快就得花比別人更多的時間用來學習這也是為什麼不鼓勵日常加班尤其是初級這個階段成長曲線是非常快的。
  • 知識沉澱俗話說好記性不如爛筆頭可以養成寫博客的習慣把學習的內容用文字的形式記錄下來整理成文並按學習的技術方向做歸類。

提問

在初級階段免不了經常遇到問題會提問也是一門技術活好的提問姿勢能讓你事半功倍。

  • 不好的提問方式「這個報錯是什麼意思」缺乏思考沒有體現自己關於問題的思考過程。「為什麼我的代碼和你的一模一樣就是運行不了」 缺乏上下文應告知代碼是編譯不過還是運行不起來、錯誤提示信息、相關代碼、可能出錯的代碼分析。沒有足夠的上下文神仙都不知道如何解決相關的問題。」為什麼 xxx 能不能 yyy「問的問題本身就是一個錯誤的結論通常是只是看到了現象而沒有分析問題的本質。
  • 好的提問方式首先你在提問之前自己應該經過充分的思考並學會把問題拆解在拆解的過程中就會把問題的複雜度降低。其次要善用搜索引擎把關鍵字提取出來去搜索引擎上去搜索先嘗試自己去解決問題。

    如果仍然不能解決可以將問題的相關上下文、截圖及必要標識及自己的思考過程、查找到的相關資料以及自己的分析發送給想要幫助你的人並能提供最小化復現的問題。

    最後請將你的問題及解決方案重新整理並告知幫助你的人問題已經解決重新整理解決問題的過程會幫助你理清思路、從而對問題有著更深的理解。

中級 -&> 高級

到了中級階段基本上意味著你可以在大公司缺人的時候進入大公司工作了如果想成為大公司不可拒絕的人才 那你還需要朝著高級階段努力。

編碼

沒錯到了中級階段你想要提升最重要的途徑還是要編碼。

  • 寫什麼的樣代碼和初級不同除了做業務之外你也參與開發做一些偏技術類型的項目比如參與組內組件庫的開發一些通用 JSSDK 的開發這些會對你的技術要求會更高。有機會去參與平時使用到的一些開源技術棧的共建比如想實現每個 feature 但現有開源庫不滿足實現難度不大的情況下可以去提一個 pull request。
  • 如何寫代碼學會模仿除了參考大牛的編碼風格還要琢磨他們的編碼思路多思考他們為什麼這麼做。學會組件化、模塊化的開發方式學會復用和封裝減少 CV 的操作。

    對自己的代碼質量負責可以經常組織 code review。

工作

想要進階需要在工作方面有些產出。

  • 業務思考要明白業務和公司的目標參與到需求的早期階段中同時也要多思考業務想著有沒有通過技術手段來提升業務價值比如移動端的白屏時間減少可以帶來很好的用戶體驗提升用戶的留存率。
  • 技術思考思考業務開發中的一些痛點如何用技術手段去優化業務的開發流程提升開發效率比如為業務量身定製一款腳手架工具。
  • 優化工作流程不僅要熟悉從需求-開發-聯調-測試-上線的每個工作環節還要多思考每個環節有沒有可以提升的點特別是上線過程比如能不能做到自動化能不能做到小流量上線能不能及時回滾代碼。
  • 技術分享把工作中遇到的一些問題的解決方案、學習的一些新技術產出的一些技術項目總結下來作為組內技術分享和輸出這樣一是可以總結沉澱你的技術二是可以讓大家能知道你做的東西並活躍組內的技術氛圍三是鍛煉自己的表述能力這個能力在大公司的晉陞述職中非常重要。

學習

中級階段仍然需要通過大量的學習來提升自己的能力。

  • 明確自己的學習目標學習是為了提升自己的硬實力不僅僅能夠提升工作效率還能讓自己更好的服務於業務升職加薪。
  • 應該學習什麼內容研究工作中所用到的工具鏈不僅僅是運行時的 MVVM 框架還可以是編譯時的 webpack必要的時候去研究其中的源碼實現。深入學習一些廣度知識比如 HTTP、正則表達式、Web安全、性能優化、設計模式數據結構和演算法並把它們應用到你的工作中。
  • 找到合適的學習方式

    看書找到所學習方向的經典書籍閱讀適當做一些學習筆記。

    視頻慕課網的進階實戰視頻根據自己的需求購買。官網文檔可以嘗試去看一下英文文檔。社區StackOverflow、HackerNews慕課網手記、掘金等除了利用碎片化時間看一些高質量文章學習也可以往上面發布一些優質文章。GitHub關注 trending參與開源社區的共建並嘗試自己造一些輪子。
  • 學習時間與深度在中級階段你仍然需要花很多時間去學習這個時候要注重自己學習的深度了。
  • 知識沉澱俗話說好記性不如爛筆頭可以養成寫博客的習慣把工作中深入學習到的一些非敏感知識記錄下來並發布而不僅僅去發布一些基礎知識的學習了。
  • 技術視野除了自己工作中的使用的技術棧之外也要了解同類其它優秀的開源技術棧從多個維度feature 完整性、文檔、上手難度、維護力度、生態等去做對比。要保持對新技術的敏感的關注並時刻思考這些技術能否為自己的業務帶來價值在需要的時候做合理的技術選型。

總結

所謂技術能力其實就是解決問題的能力和學習能力所以無論你在哪個階段甚至是更高的階段不斷提升這兩個能力都是你應該一直要做的事情。

····························

優質回答傳送門:

Web 前後端分離的意義大嗎?

Web前端崗位面試題有哪些?

各位前端大佬們,最近學不動了怎麼辦?

程序員的日常工作是怎樣的?

編輯於 01-04繼續瀏覽內容知乎發現更大的世界打開Chrome繼續NuoHuiNuoHui?

順豐科技 前端工程師

大多數團隊為何前端不受重視?

  1. 大多數是由於前端基建差,交付效率差,疲於追趕業務。

不重視僅僅是果,前端基建差,沉澱差,才是因。所以你的往這方面發力,去影響你的業務方,同時這個過程你會發現自己進步了。


引用我們常說的一句話,工作中發現問題,提出問題的人很多,能夠落地解決問題的人很少。


大多數團隊為何前端不受重視?

  1. 大多數是由於前端基建差,交付效率差,疲於追趕業務。

不重視僅僅是果,前端基建差,沉澱差,才是因。所以你的往這方面發力,去影響你的業務方,同時這個過程你會發現自己進步了。


引用我們常說的一句話,工作中發現問題,提出問題的人很多,能夠落地解決問題的人很少。


我遇到很多公司都是重視前端的,老闆不懂技術,只要頁面做的好看就可以了,(其實頁面好不好看跟前端也沒啥關係,那是 UI 的功勞),反正大多數都是圍繞前端搞的,後端就 CURD ,也不管後端,甚至校驗都是要前端來做,當然那些交給前端做我也樂意,沒辦法改變,就只能接受。

別著急去跟老闆或者領導人講什麼道理,這樣做會顯得他們很業餘,有損他們面子。

雖然說做為一個程序員,是要求追求的,但是千萬不要和錢過不去,這種追求自己藏著就好,不要和老闆去爭,除非你不想干。

那提升自己的事,就得靠自己了,如果同事也有追求,大家可以一起做一些有追求的事,畢竟不被重視的一方,時間肯定是充足的,可以自己學習自己的東西,也可以做自己想做的東西。

我的同事再完成公司產品的需求後,自己再創一個項目,把產品的爛需求給改掉,好的保留,沒事還可以加一些自己的想法,或者加一些別的軟體里比較好玩的創意,這中間勢必會有困難,去查就完事了,學會了就是再提升自己。

PS:公司業務的項目建議不要去開源,除非你寫的東西跟公司的項目沒有關係,比如寫一些公用的組件,或者一些好用的包,這些是可以分享的,但是不要把跟公司有關的業務代碼拿出來分享。


我現在也是在這樣的團隊。

以前我覺得最好不要待,趕緊走人。現在我覺得這種團隊還是不錯的。

拿我的日常生活距離,就是crud的日常。封裝四到五個組件,基本可以應對90%以上的開發需求。

算上帶薪拉屎,差不多平均每天也就兩個小時左右的工作時間,省下的時間都可以自mo學yu。

我最近已經閑到一個字一個字看官網api的程度了。也因此而學到了不少的東西。雖說實際上很難用到吧,不過或許之後有機會進入大廠或者對之後面試也有所幫助。至少不會因為某些面試官找些稀奇古怪的東西噎住了而無力反駁了。


分析一下手上做的事情。

如果一直是重複的,試著寫個工具或框架來提高效率。這樣既可以讓你從重複的事情中解放出來,又可以做一些不一樣的事情。

如果用的是框架或工具,就看一下有沒有優化的空間。

如果這些都不想做,那就跟leader溝通一下看看能不能另外安排其他事情。


推薦閱讀:
相关文章