在阿里做前端程式設計師,我是這樣規劃的

語言: CN / TW / HK

許多前端工程師工作超過了3年之後會遇到一個迷茫期,我跟很多前端從業人也聊過,有一部分人說想做開源專案推廣出去(類似react,vue)變成前端網紅。有些說想去創業。往往更長遠的職業發展規劃考慮的很少。我希望把自己工作經歷和在阿里學到的東西分享給大家,作為一個案例解答有關職業發展的困擾。

此文來自一次團隊內的分享。我是來自大淘寶技術內容前端團隊的胤澗,負責內容中臺技術。我的習慣是每個新財年初都會進行一次分享《HOW TO BE AN EMINENT ENGINEER》,聊聊目前團隊陣型、OKR、業務和技術大圖,聊聊我作為程式設計師的規劃。

此文僅記錄【我作為程式設計師的規劃】的內容。

前端程式設計師常問的幾個問題

image.png

第一,譬如一個校招生在阿里工作了兩三年,整體技術能力還保持在一個上升期,但在溝通交流做事上卻始終沒有脫離“學生氣”,似乎還未畢業

第二,技術更新迭代非常快,特別是前端領域,這幾年不斷都有新技術出來。每每夜深人靜的時候,會發現很少有能真正沉澱下來的技術。

第三,關於技術深度。我經歷過晉升失敗,其中“技術深度不夠”這句評語讓我印象深刻。當時溝通完,走出會議室我低著頭不停地問自己到底技術深度要深入到什麼層度才算足夠。作為前端,我們在公司更多的是寫頁面,實現UI的優化,提升頁面的效能,即便我們做的產品非常成功,成功點在哪兒?可能是UI設計得漂亮,也可能是推薦演算法精確,而前端的產出給產品帶來了什麼?阿里有健全的體系,有良師益友。離開了這個大平臺,我能做什麼?

我發展的三個階段

入職阿里,經歷不同的BU和部門,我一直在尋找職業發展的答案。

到目前為止,我把我的職業生涯分為三個階段:一技之長,獨立做事,尋找使命。

image.png

一技之長分為:棧內技術、棧外技術、工程經驗、帶人做事、業內影響。

第一階段:一技之長

image.png

棧內技術

棧內技術是指你的專業領域技術,對於前端來說,就是那些我們熟悉的js等基礎,深入瞭解我們的程式所執行的宿主環境——瀏覽器 or NODE,能瞭解v8執行時發生的一切。

前端沒有祕密,所有可訪問的頁面都近似於開源,所以檢驗棧內技術的標準就是看你是否能最終形成技術上的“白眼”——看到任何前端產品都有看穿它的自信。棧內技術是安身立命的根本,不要輕易“換方向”。

image.png

始終不要放棄作為前端的一技之長。遇到一些前端同學工作幾年以後前端做得比較熟了,考慮轉到其他崗位,去做音視訊技術,或者跨度更大的去做產品,運營。但我想說,當你轉行那一刻起,就把要轉的領域變成你新的“棧內技術”,然後重新走一遍技術沉澱的過程,匆匆幾年又過去了。

前端是可以長時間堅持的領域,現在新型的軟體生態,例如web3,以太坊,都會首先瞄準JS開發者,因為有龐大的開發者群體,工具鏈也比較完善,所以長期堅持從事前端工作,在可預見的未來都不會“過時”。

image.png

棧外技術

棧外技術是指棧內技術的上下游,領域外的相關專業知識,包括但不限於服務端技術、運維、CDN、測試,甚至UI設計、產品設計等等。擴充套件你棧內技術的周圍領域,充分理解你的工作在整個技術研發體系中處於怎樣的環節。工作之餘多投入一份精力,把其他棧外技術不斷納入到你的知識體系中來,建立棧外能力。

前端想要做得深入,往往會涉及到服務端、網路、機器學習、使用者體驗等知識,沒有足夠的棧外技術積累,你很難為自己的團隊爭取到足夠的話語權。

image.png

工程經驗

工程經驗是指建設專業技術體系的“解決方案”。通俗說,就是做事的方法論,掌握從0到1,1到60,甚至60到100分階段建設專業技術體系的過程。

工程經驗涉及到技術選型、架構設計、效能優化,CI/CD,日誌監控、系統測試等,這些是跟工程相關的方法論。

很多同學會說,沒有時間去研究新技術,那麼多反問一下自己,為什麼沒有在自己的業務上爭取新技術落地。

image.png

很多的工程師沒有總結自己工程經驗的能力,特別是在做業務多年之後,覺得技術能力一直在倒退。決定你比別人更有專業價值的,是領域工程經驗。你看過再多的文章,如果沒真正實操都不能稱之為“掌握”。所以我建議要想掌握足夠豐富的工程經驗,需要在業務中多爭取實踐的機會。

image.png

帶人做事

帶人做事之前三項都是個人專業技能方面的深度要求,帶人做事是對團隊協作能力的要求。我第一次帶師弟的時候經常有這種感覺:需要多次溝通需求,對焦技術方案。我跟他溝通花的時間都能把程式碼寫好了。

帶人做事,是把自己擅長的事情,沉澱下來的思考方式傳遞給他人,實現1+1>2的生產力提升,讓整個團隊的產出高於自己。

這個階段大家要特別注意“管”與“帶”的區別。以我的愚見:所謂“管”是我不懂某個領域,但我知道你懂,所以我安排你去做;而“帶”則是"我特別懂這個領域,我知道你不懂,我會教你做得更好",有點授之以漁,成就他人的意思。帶好一個人或者帶起一支有戰鬥力的團隊,是做人做事成熟的表現。

image.png

這兩年我也在思考如何能激發他人的能力。我想起我的老闆們及和我1v1溝通的同事們對我的幫助,他們都非常善於用反問來引導我。提問的深度特別能體現一個人的能力水平,任何用於提要求的陳述句,都能轉換成疑問句,在啟發萌新的過程中植入對結果的約束。

當你讓一個人做A的時候,他提出了方案B。你不要強行扭轉對方的思路提出A,因為對於新人來講,或許確實不能一步到位理解A方案,在他的能力約束下,只能想到B。要儘量嘗試把A和B之間有差異的地方轉換成提問,你問他遇到這個問題怎麼解決,遇到那個問題怎麼解決,一直問到形成A,他會帶著思考去做事情。如果沒有這個過程,沒有讓他思維演化的過程,雖然他收到了A的指令,但是他不理解,他會用別的方式做出來,最後得出來一個C,然後你又重構一遍,陷入一個怪圈不能自拔,這就是我以前的誤區,

所以我現在特別注重提問的藝術。但是一切的前提是:你需要對事情有好的認知。按照張一鳴的觀點就是:對一件事情認知決定了一件事情的高度。

image.png

業內發聲

如果你前面做得非常好,那把自己的工作經驗總結對外發布,與他人交流,碰撞思想,看到更高的山峰,然後修正自己的想法,日益完善,是能走得更遠的一種方式。

有的時候需要把自己的思想放到業界的層面驗證,大家好才是真的好。如果別人不認可你的這套思路,基本上你也可以判定自己沒有達到一個更高的水平。

對外分享的目的不是為了show quali,而是為了聽取別人的意見,達到自我成長。永遠不要放棄一技之長,沒有所謂的轉行或者轉型,永遠堅持你最初的領域,擴充你的外延,最終達成比較全面的能力,堅持是成功ROI最高的一種方式。

image.png

第二階段:獨立做事

第二個階段是獨立做事,也是我這一兩年的命題。在我不斷試錯的過程中,我把他分為了:獨立交付,獨立帶人,獨立帶團隊,獨立做業務,獨立活下來。獨立不等於獨自,獨立是指今天公司給你配套的資源,你能完成公司給你的專案,且拿下好結果,俗稱“帶團隊”。

image.png

獨立交付

獨立交付是指給你一個專案能自己完成推進且上線,不讓別人給你擦屁股就可以了。更加強調整體專案管理上的能力,拿結果的能力。

image.png

獨立帶人/帶團隊

進入到獨立帶人/帶團隊這個階段,要關注的更多,整個團隊的氛圍、工作效率,運用你一技之長的工程經驗帶領團隊高效優質的產出成果,實現1+1>2。做好團隊的兩張大圖,業務大圖&技術大圖。讓團隊的同學知道自身的發展主線。工作開心了,團隊穩定性才高。

image.png

獨立做業務&獨立生存

團隊穩定之後,開始關注所做的業務,行業的發展,理解你的使用者,他們是誰,他們在哪,他們為什麼使用你的產品,為團隊指引下一步的產研方向。最高境界就是能帶領一群人養活自己,獨立生存下來。這裡面至少要有商業眼光,深知你所處的行業的商業玩法,還要能玩得轉。如果能很好的解決這個問題,我相信各位都混的挺好的。

image.png

獨立做事每個階段,都是一次比較大的跨越,需要思想和多種軟素質發生較大的變化,拋開技術人的身份不講,獨立做事的幾個階段,也是一個人逐漸成熟的過程。如果有紮實的一技之長,又能獨立活下來,我膚淺的認為程式設計師35的危機應該不再有。

image.png

第三階段:尋找使命

尋找使命,實現自我價值。是創業還是跳槽?是要生活還是工作?該如何平衡?我現在還是雲裡霧裡的,還在探索,留一個開放的問題讓感興趣的同學討論。

image.png

最後用莫泊桑的話來結尾:“生活不可能像你想象得那麼好,但也不會像你想象得那麼糟。我覺得人的脆弱和堅強都超乎自己的想象。有時,我可能脆弱得一句話就淚流滿面,有時,也發現自己咬著牙走了很長的路”。在這裡工作就是這樣,但我堅信明天會更好。