初、中、高級程式設計師的進化之路(前端)

2021-01-15 酷扯兒

本文轉載自【微信公眾號:前端人,ID:FrontendPeople】經微信公眾號授權轉載,如需轉載與原文作者聯繫

初級程式設計師

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

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

中級程式設計師(阿里 p5)

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

能力要求

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

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

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

通常在初級這個階段,是進步空間最大的階段,這個階段是不存在天花板的。編碼 編碼是初級階段最需要經常做的事情,古話說孰能生巧,寫代碼也是同樣的道理。

在公司要多做業務,嘗試不同的業務,目標是讓自己先成為一個熟練工。下班後也可以折騰點小項目做,可以選擇自己感興趣的內容,嘗試自己實現一遍。

學會模仿,參考大牛的編碼風格,照葫蘆畫瓢。

如果公司有代碼規範,跟隨著公司的代碼規範走,如果沒有,參考業界規範,並用工具(如 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 完整性、文檔、上手難度、維護力度、生態等)去做對比。要保持對新技術的敏感的關注,並時刻思考這些技術能否為自己的業務帶來價值,在需要的時候做合理的技術選型。

總結

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

相關焦點

  • 是什麼成就了一名「高級」程式設計師?
    除多年編程經驗之外,還有什麼能區分一個程式設計師是「老手」還是「新手」?編程技巧當然是一部分,但它絕非是全部。聰明的程式設計師可能比他們的同行擁有更出眾的編程技巧,但那不足以說明他們就是「老手」。同樣,僅僅因為擁有10年編程經驗也並不意味著他們就是高手。在工作崗位上,擁有多年編程經驗也不能說明問題。即便沒被炒魷魚,那也不能提升你的價值。
  • 高級程式設計師是如何從初級程式設計師演變的?工作經驗不再是唯一途徑!
    區分高級和初級程式設計師的標準是工作年限嗎?程式設計師最重要的工作就是寫代碼嗎? 高級程式設計師是一名犯過其領域內所有可能犯到的錯誤的專家。度量技能是很困難的,所以我們在面試中給開發人員進行了很多有難度的測試。但這些測試充其量也只是了解一個大概,無法度量其究竟具備多少完成該項工作所需的經驗或專業技能。 這就引出了下一個問題。 一旦你不再是初級程式設計師,什麼時候會成為高級程式設計師呢?
  • 程式設計師:高級與低級程式語言,您應該學習哪些內容?
    當你試圖找出要學習的程式語言時,你可能會遇到高級和低級的術語。人們一直在談論高級和低級程式語言。高級和低級程式語言在整篇文章中,我將討論「高級」和「低級」語言。但兩者都沒有具體的資格標準。這就是為什麼我還要談論「更高」和「更低」的水平。
  • JavaScript正則表達式「程式設計師培養之路第十二天」
    只不過是一個特殊的字符串主要實現對字符串的匹配、分割、查找、替換等操作 正則表達式的主要作用: 正則匹配: 可以測試字符串內容是否可以與正則相匹配 替換文本: 根據模式匹配字符串中的特定內容,進行替換、刪除 提取數據: 根據模式匹配從字符串中提取內容,生成數組
  • 資深程式設計師大佬告訴你,如何成為一個C++高級程式設計師
    很多程式設計師都是剛開始的時候不重視這 些,但是工作幾年後又來補習這些知識。最開始可能不需要學習的太深入,但是基本的數據結構和算法一定要知道。推薦《數據結構(C語言版)》,在數據結構和算法的學習中,最好不要去關心面向對象方面的技巧,就用C語言來實現,這樣能更關注於算法本身的內容。4.
  • 普通程式設計師與高級程式設計師有什麼差別?你知道嗎?
    程式設計師的基本能力是:Tasking和學習能力。當好程式設計師的能力是:用更好的方法來實現功能。0.文檔能力「文檔是第一生產力」,這一點在程式設計師的世界是毫無異議的。俗話說:「不會寫文檔的程式設計師不是一個好程式設計師」。
  • 全棧開發永遠成不了高級程式設計師?!
    【CSDN編者按】對於程式設計師來說,選擇深耕單一技術還是各領域涉獵一番是二選一的必考題。如果你是後者,那恭喜你成為很多開發者豔羨的全棧工程師了!你會很受歡迎,很多技術問題上都需要你的參與。但是,一個殘酷的事實是,儘管你付出了巨大的努力,但是一旦遇上大神你仍然不配稱作高級開發。本文的作者曾經幻想自己會成為無所不能的技術大拿,但是「囫圇吞棗」的學習卻讓他和同事的實力越拉越大。
  • 天機工業機器人產品的進化之路
    天機工業機器人產品的進化之路 高工機器人 發表於 2021-01-07 09:32:06 12月23日,在2020高工機器人&高工移動機器人年會閉幕式上,天機機器人&天機智能董事長陳曦分享了三年來天機工業機器人的進化之路
  • 小精靈進化之路
    小精靈進化之路這是一款非常經典的角色扮演類遊戲,玩家將在魔法世界化身為一名強大的召喚師,豐富精彩的劇情絕對讓你愛不釋手,每一位精靈都有獨特的技能和特點,讓你在指尖盡情釋放華麗酷炫的技能,體驗更加激情的戰鬥快感哦。
  • 程式設計師進化論,獨角獸LaiOffer切入北美教育市場
    其實裁員事件本身並不是什麼大新聞,每隔一段時間就會在網上蔓延發酵,而此次之所以引起強烈反響,更多的是源於網際網路上「程式設計師時代終結論」的猜疑,引發了程式設計師以及網際網路從業者的恐慌。Snap公司裁員事件的發酵,是否說明程式設計師就業市場已經飽和,一個新的網際網路就業時代的來臨?那麼程式設計師又該如何跑贏網際網路下半場呢?
  • 給大猩猩足夠的時間,這個物種能進化成高級智慧生物嗎?
    給大猩猩足夠的時間,這個物種能進化成高級智慧生物嗎?看過《猩球崛起》後,筆者就一直在想一個問題,未來的某一天,大猩猩會不會進化成高級智慧生物呢?那時的地球在像現在如此的單一,而是想《魔獸爭霸》裡的那般有許多高級智慧生物,與我們一起生活在同樣的天空下。那一天會來臨嗎?
  • 被嫌棄的35歲程式設計師
    走出短暫的焦慮期後,蘇銳意識到,年齡沉澱下的經驗果實對他走上創業之路大有裨益 — 對人的理解、對事物運行規律的體悟比 20 多歲清晰多了。「幹的活兒我挺喜歡的,還能掙錢,工資拿的還不低,為什麼要焦慮呢」,從業 20 多年的程式設計師任從文(化名)是個天生的樂天派。「我從來沒有產生過年齡焦慮。
  • 女生適合學編程嗎,各省程式設計師比例分布,哪些是最常用的開發語言...
    中國程式設計師佔全球程式設計師總和的10%。即便如此,我國市場對程式設計師的需求仍然非常旺盛。 女生比例要少的原因,可能還跟程式設計師的加班有關,特別是女生成家後,要麼找不怎麼加班的公司,要麼放棄本職業,轉成產品、技術支持等。
  • 暴漲的比特幣、特斯拉與被程式設計師統治的世界
    4、只是需要通知大家; 5、過去、現在、未來,進化的滯後; 6、性、被尊重、食物,人類的三大需求; 7、成為程式設計師或者被程式設計師統治的宿命。
  • 整體信息開啟了生命進化之路,也預示人類社會的歸宿。
    個人看法是整體信息點化了原始生命的信息之魂,開啟了生命的進化之路。  生命的進化實際是生命這一相對獨立的信息系統,與外界進行信息交換,不斷完善自身的信息系統,以達到與外界的適應。 為了能與外界交換信息,生命體發展出可以感知外界信息的感覺器官。生命體對外界刺激產生反映,並進一步調整自身策略,以達到與外界相適應。而這一過程,卻可以看作是生命體在不斷豐富自身的信息系統。
  • 紀錄片《達爾文進化之路》引入中國
    近日英國廣播公司(BBC)傾力打造的紀錄片《達爾文進化之路》正式對外發行,並進入中國文化市場中,為我們提供了思考達爾文的西方視角。BBC金牌主持人、數十年來活躍於自然歷史節目前線的「達爾文主義者」大衛·艾登堡再度亮相,通過一場深入的探索發現之旅,回答了諸如「達爾文為何提出以及怎樣提出他的進化論?
  • 程式設計師是做什麼的?未來計算機變得智能,就不需要程式設計師了嗎?
    在這篇文章中,我想給不知情的人解釋一下程式設計師到底是做什麼的: 程式設計師是將人類想法翻譯成計算機語言的譯者。——比爾·沃特森 人類是生物進化的產物,並且擁有獨特而寶貴的器官——大腦,它能為程式設計師提供想法。大腦有組合複雜的新大腦皮層(對人類而言是獨特的),還有從哺乳動物和爬行動物繼承的舊結構。舊的大腦結構主要負責生殖(性)和生存(尋找食物或者躲避危險)。新大腦皮層進化成能夠更好地支持這些功能,但是,它開始產生奇怪的副作用——意識、思考和好奇心。
  • 程式設計師術語:什麼是高級語言/低級語言?解釋語言/編譯語言?
    作為一名合格的程式設計師,你必須知道一些計算機軟體編程方面的術語。這次給大家解釋一下下面兩對常見的術語:高級語言/低級語言、解釋語言/編譯語言。什麼是高級語言/低級語言?1、高級語言我們現在大多數人使用的語言,如C、C++、Python、Java、Matlab、LabVIEW等等,都屬於高級語言,相對於低級語言,它更接近於我們平時正常的人思維,其最大的特點是編寫容易,代碼可讀性好。實現同樣的功能,使用高級語言耗時更少,程序代碼量更短,更容易閱讀。
  • 你知道高級程式設計師必備的Java開發工具嗎?
    Java程式語言的流行趨勢,帶動了一批Java程式設計師,而每一位Java程式設計師都會有套工具來應對工作上的挑戰。多年來,Java程式設計師使用軟體來完成他們的工作。有很多工具對他們是有用的,而今天小編將列出六款Java程式設計師必備的工具。1.
  • 人類進化錯了嗎?為什麼高級生命的壽命反而沒有那些低級生命長?
    長壽的烏龜在這些長壽的動物中,沒有高級生物,甚至越是低級的生命,其壽命越長久!人類是高級智慧生命,我們擁有意識,會思考,而那些簡單的低級生命體只擁有生存繁衍的本能,並不具備思考的能力!甚至號稱永生的燈塔水母,也只是無線重複地生存者而已,人類的生命比它們要有意義的多!事實上,高級生命的存在是由低級生命進化而來的,那麼,人類的進化方向是否走錯了?人類的壽命還可以再次突破嗎?