1. 程式人生 > >前端架構師親述:前端工程師成長之路的 N 問 及 回答

前端架構師親述:前端工程師成長之路的 N 問 及 回答

問題回答者:黃軼,目前就職於 Zoom 公司擔任前端架構師,曾就職於滴滴和百度。

1. 前端開發

問題

大佬,能分享下學習路徑麼,感覺天天忙著開發業務,但是能力好像沒有太大提升,不知道該怎麼充實自己 ?

解答

  • 業務開發有沒有痛點,能不能通過技術的手段解決 ?
  • 平時開發業務用到了哪些技術棧和周邊的生態鏈,我是否對他們熟練掌握了,對他們的實現原理呢 ?
  • 平時開發遇到了 bug,除錯了很久,能不能提升自己快速定位 bug,解決問題的能力 ?
  • 如果上面分配了一個需求,沒有現成的輪子可以用,我是否可以快速造一個出來 ?
  • 如果使用第三方輪子出現問題,我能否能找到合適的解決方案,甚至參與共建 ?
  • 以上提到了這些問題,不妨問問自己,如果沒有做的足夠好,都是你可以提升的方向。

問題

我想知道你為什麼對前端這個職業(行業),總是保持一顆好奇心,每天都不停探索,每天保持學習進步,你是怎樣堅持下來的呢 ?

就像醫院裡的醫生(教授/專家),在這個行業刻苦鑽研了大半輩子,怎樣保持每天學習的這種精神 ?探索精神 ?並且長久堅持下去 ?為社會做出了非常多的貢獻。

我知道你是以怎樣的決心和毅力保持每天學習,不停探索前進 ?

解答

  • 主要是興趣驅動吧,對技術保持熱情和好奇。
  • 另外就是成就感,當我 get 到某個新技能,解決了某個複雜的問題的時候會非常有成就感。
  • 工作前幾年的時間是非常關鍵的,是成長空間大且精力最旺盛的階段,一定要在這個階段多學知識。
  • 學習是無止境的,尤大說過一句話我印象非常深刻 ”做腦力工作的人,往往鑽研得越深,越發現自己的渺小和無知“ ,與君共勉。

問題

最近拿到了滴滴出行的實習生 offer,我想問一下您對實習生 (或者說初步踏入 IT 行業的學生) 在融入部門和提升上有什麼建議 ?

解答

  • 實習生一定要多做業務,工作要積極主動,爭取轉正機會。
  • 另外,非常推薦去我之前的團隊,現在是苗老闆負責,你可以私下聯絡他喔~

問題

感覺自己的 js 基礎很薄弱啊,我想問如果想進大廠你指的基礎具體一點到底指啥啊,我是一個非科班出身的求解呀 ?

解答

  • 如果是應屆生,大廠關注的是你的基礎和潛力。
  • 如果是社招,大廠會關注你的經驗和能力,以及潛力。
  • 如果你有心儀的大廠,不妨去看一下他們的招聘要求,以及關注一下他們對外輸出的東西。
  • 非科班是一個劣勢,那麼你就務必要花時間去補一些計算機相關的理論知識,簡歷有需要亮點,最好能有一些技術輸出,比如很多人會做部落格、寫系列文章、做有趣的專案等等。
  • 另外,最好的時機是等大廠缺人,招人名額多的時候去投簡歷,也可以多認識一些找內推機會。
  • 最後,一切的一切,都離不開硬實力,所以優先提升自己的硬實力,多花時間學習。

問題

黃軼老師,你對於在專案中推行 BFF 模式有什麼見解嗎 ?
希望你可以回答的略廣一點,非常期待您的回答。

解答

  • BFF 在服務聚合上還是很有優勢的吧,特別是微服務特別火的今天,前端只需要關注所需要的資料,不用關注底層提供這些資料的服務。我在滴滴和 Zoom 的時候都是這麼玩的~

問題

請問一下,你做兼職的話,一般是關注那些方面呢 ? 還有比較建議在哪些渠道尋找兼職做呢 ?

解答

  • 主要關注的是價效比,因為犧牲了自己的業餘時間,要麼是多掙錢(很難),要麼是提升能力。
  • 最好是熟人介紹,沒有的話可以去水木論壇找找看(我曾經找到過),其它渠道沒有經驗,我就不推薦了。

問題

黃老師,想問下你對於前後端資料互動的最佳實踐的看法,ajax ?axios ?等等,有沒有系統學習的推薦。

解答

  • 前後端互動通常有 HTTP 和 WebSocket 2 種通訊方式,建議你首先系統的學習一下 HTTP 相關知識,推薦看 《HTTP 權威指南》或者是 《圖解 HTTP》。
  • 另外你提到的 axios 只是對 Ajax 的封裝,如果你想了解它的實現原理,正好前陣子我在慕課網做了一門課程《基於TypeScript從零重構axios》,學一遍後你會對 axios 的實現細節會了如執掌,同時也可以鞏固不少 HTTP 相關的知識。

問題

黃老師,我現在剛入門前端,能力有很大的欠缺,想找一些視訊學習,現在主要用到的是 Vue 框架,有什麼視訊可以推薦給我嗎 ?

解答

  • 這裡不打廣告都不行了,可以關注我在慕課網的實戰課程喔~ Vue 三步曲,入門 - 進階的都有。
  • 不過除了看視訊學習,我也建議你務必多去讀官方文件,敲一敲上面的示例。
    最後附上鍊接 http://www.imooc.com/t/3017249

問題

我目前是一名後端工程師,工作快五年了。剛工作時,認為前端只是寫頁面,寫互動,技能項要求少。
我自己也是比較喜歡前端,因為做後端的也會接觸到前端東西,所以暫時沒有轉到前端。
工作之中也在加強前端基礎技術技能。慢慢發現前端並不是剛開始認為的那樣,現在的前端能應用於各個客戶端,服務端,以及元件化,模組化,激發了我更想學習前端的慾望,於是我利用空閒時間學習更多前端相關技術。
現在流行前後端分離,後端只做介面,完全不會接觸我喜歡的前端部分,我喜歡技術,不喜歡業務,但是業務也很重要,在我的經歷中一個專案完成上線後,基本就是後端解決運營或使用者使用中出現的問題,因此正在考慮轉專職前端。
這幾年工作中寫過介面,寫過 h5 嵌入 App,寫過前後不分離的專案,也寫過前後分離的專案,想問問黃大仙站在前端的角度有什麼看法 ?

解答

  • 其實你有豐富的後端經驗,不妨就直接轉全棧,並不一定要做專職的前端。
  • 即使是前後端分離的開發方式,也可以一個人完成 2 端的開發。
  • 而且越往上走,如果前後端都精通的人,可以走的更遠。
  • 所以你往前端方向走是好事,不過後端也不要扔下。
  • 後端也不僅僅是 curd,當業務複雜,使用者規模大的時候,面臨的挑戰比前端要大的多,如果你所在的公司沒這方面的挑戰,建議去大廠感受一下。

問題

關於前端開發,如何完善自己的工作流呢,目前的工作流十分原始,流程是明確需求-專案開發(開發環境/正式環境)-測試-上線。
如果在大廠面試,工作流這塊比較吃虧。像黃老這種包括了專案初始化、本地開發、聯調、測試、上線等各個環節,是如何探索出來的呢 ?

解答

  • 這些都是在大廠訓練出來的,其實程式設計師更多的應該去思考一個需求從產生 - 落地的各個環節。
  • 現在大部分人能做到從一個專案的開發-上線各個流程的屬性,其實在 Zoom 我們會從產品的設計開始,自己會去設計產品應該如何實現,使用者需要什麼樣的功能,從 owner 的角度去設計和開發,並負責產品的測試和上線,這才是工程師應該有的素質。
  • 所以即使在一個有很多產品經理的公司,工程師也可以多參與產品的設計和討論喔。

問題

大佬,對於 flutter 持什麼看法,以後會成為全端的解決方案嗎 ?特別是 flutter 轉 web 之後 。

解答

  • 肯定不會替代 Web 開發的,至於雙端的應用,可以關注一些主做移動端的公司,比如滴滴、阿里、騰訊、頭條等大廠在這方面的應用實踐吧。

問題

中級怎麼突破到高階前端工程師呢? 自己嘗試寫框架和庫嗎 ?

解答

  • 中級前端基本上就是能夠獨立開發,滿足基本功能需求,質量一般,對於複雜業務需求實現吃力,需要指導,對標阿里 p5。
  • 高階前具備獨擋一面的能力,能夠高質量完成工作,勝任複雜業務需求開發,能把握一個系統/團隊的整體實現,在推行過程中能提煉新的方法或方案,或對現有方案提出改進建議並被證明有效,對標阿里 p6。
  • 其實級別的突破,側面反饋就是能力的成長,那怎麼提升能力呢?既要會偷懶,又要勤奮。
    這裡說的“偷懶”,並不是說少做需求,而是從業務開發中多去思考和總結,學會抽象,學會複用程式碼,減少重複的勞動。學會使用工具來幫我們解決人肉的問題。
  • 舉個例子,前端最近非常火熱的程式設計思想就是模組化、元件化,本質上都是為了複用程式碼,提升程式碼的可維護性,比如我們是不是需要開發通用元件庫、JS庫等等,來輔助我們的業務程式碼。還有幾乎現在所有專案都會用構建化工具幫助我們開發,最有代表性的就是 webpack,它能幫我初始化程式碼,除錯,編譯打包等等,極大的幫助我們節約了開發時間,我們是不是多花點時間去研究它的配置,甚至是它的原始碼。
  • 所以,去花時間學習這些程式設計思想,掌握這些工具,都能夠很好的幫助我們提升技術。除了會“偷懶”之外,我們也要勤奮,雖然業務忙,但往往也不會忙到8小時工作時間都在寫程式碼的地步吧。
  • 如果我們把每天在群裡鬥圖、刷微信朋友圈等等的時間節約下來學習技術的話,相信只要堅持,技術一定會提升比別人快,特別是初級的同學,你們的進步空間還很大,一定要多花時間在學習,而不是浪費時間問 “我工作 1-3 年,出去要多少錢合適” 這類的問題,薪資一定是和能力匹配的。
  • 至於學習的方向,只要和你工作相關,你沒有掌握透徹的技術,都是可以的。

問題

學習到了一個進度學不進去了,靜不下心看書。想問問大佬有沒有遇到類似的情況,有什麼調解方法嗎 ?謝謝~

解答

  • 學習學不下去的時候,不妨做一些放鬆自己的事情,然後在狀態好的時候再回過頭去看喔~

問題

Node.js 對於前端是必備的麼,但目前公司並沒有應用場景, 學了用不上,就忘了。

解答

  • Node.js 至少在工具方面的表現還是很不錯的,比如一些構建工具、腳手架工具都是通過 Node.js 寫的,可以通過學習他們的原始碼去了解 Node.js。
  • 另外一些不錯的 Node.js 後端框架,比如 express,也可以去了解一下,因為通常使用 webpack 起的內建 server 就是使用了 express。

問題

作為一名初級前端工程師,前路很迷茫,不知道要怎麼學習提升,老師,您可以給點建議嗎 ?

解答

  • 首先是基礎,這裡不僅僅是前端基礎,還有計算機相關的基礎知識(資料結構、網路),基礎務必要打牢。可以通過反覆看書、coding 練習的方式。
  • 其次是專案開發,你工作中用到技術棧,一定要熟練掌握,可以通過官方文件入門,通過工作中的 coding 鞏固,並可以去看一些高質量的進階教學視訊課程做提升(這裡有廣告嫌疑)。
  • 以上是入門-中級的階段主要做的事情,其實就是不斷花時間學習 +coding,想辦法讓自己先成為熟練工,初級可提升的空間還是很大的。
  • 中級-高階,下面有一個類似的問題喔。

問題

黃老師,請問一下中級前端開發和高階前端開發分別需要具備什麼樣的能力素質 ?

解答

  • 中級前端基本上就是能夠獨立開發,滿足基本功能需求,質量一般,對於複雜業務需求實現吃力,需要指導,對標阿里 p5。
  • 高階前具備獨擋一面的能力,能夠高質量完成工作,勝任複雜業務需求開發,能把握一個系統/團隊的整體實現,在推行過程中能提煉新的方法或方案,或對現有方案提出改進建議並被證明有效,對標阿里 p6。

問題

node ts 確實自己都在玩,ts 是跟你課程面學的,但有的面試官就反問我,node ts 並沒有在真正生產環境玩過還敢拿出來說會, 就把我拒絕了,這些東西確實會,只是之前公司沒有機會發揮,但我不知該如何應付這樣的面試官,希望你解答。很多東西也需要遇到一個好團隊才能發揮,但現在沒有這個機會。

解答

  • 其實不妨把你自己玩的東西形成一些作品,釋出到 GitHub 上,可以是文章,也可以是專案。
  • 我之前面試一個攜程的小朋友,他們的技術棧是 React,但是他自己研究過 Vue.js 實現並寫了一個 Mini 版本的 Vue 實現,這樣給我的感覺就很好。
  • 所以雖然有些技術沒有在生產環境中用過,但是你通過自學掌握了並且折騰出一些成果,我會認為你是一個喜歡技術,愛折騰的人。
  • 如果說你這麼做了面試官依然不認可你,那說明你們的價值觀不符,那麼面試不通過也沒什麼好遺憾的,面試本來也是一個雙向選擇的過程~

問題

對於一箇中大型的前端專案來說,各種元件如何分類更合理呢 ?比如基礎元件、業務元件。

解答

  • 通常分為基礎元件、業務元件、檢視元件,基礎元件通常都會在元件庫裡解決了。

問題

大佬,我現在就職一家比較大的公司,做前端,外包。每天平均 9 10 點下班,平常學習的時間感覺太少了,想補基礎知識。
只能通勤時間看看電子書,回家了再敲一會程式碼。有時候,11 點,12 點。有點幹下去了,有點迷茫,求大佬指導。

解答

  • 你屬於人力外包還是專案外包,如果是人力外包到大公司,就想辦法轉正。
  • 另外你需要評估一下你每天工作這麼長時間是否有提升,還是一味地重複勞動。
  • 如果有提升的話,那還是可以繼續做,如果沒什麼提升,並且也沒什麼好機會提升的話,那可以考慮出去看看機會了~

問題

畢業三年,第一年在一個小公司,第二年在一個大公司的外包到現在。
現在的狀態是這樣的,公司有老專案(13 年一直用到現在的)需要維護,也有新專案( vue + 微服務),總之我的工作上主要在維護那些老專案上,實際上工作上用的時間不多,每天有一定量的空閒時間,對應的工資也上不來,一年了也沒有調薪,由於老專案的重要性自然是日益下降的,未來也不像是多能期待。
新專案實際上我也接觸過,還做過一些腳手架整體升級一類的工作,所以現在工作中能帶來的學習方向和提升實在不多,於是我現在在學習一些基礎性的東西( http 協議,資料結構與演算法,網路硬體,甚至計算機組成)。
由於我是轉行來的這些東西沒有系統的學過,現在撿起來說有用也有用,但短期看來帶不來什麼明顯的改變,我的問題就是,如果從現實出發,之後的歲月應該怎麼規劃合適,短期來說有什麼能帶來收益(比如方便麵試 ?)的學習方向 ?

解答

  • 短期如果是面向面試學習的話,我認為一方面你需要準備面試,可以看一下掘金那本面試相關的小冊,查漏補缺。
  • 一方面需要好好地對你現有的工作總結,即使看上去技術含量不太高的工作,是不是也會有一些亮點,讓面試官看到你對工作的思考。
  • 長期的話,如果想讓自己的天花板變高,還是需要學習計算機的一些基礎知識的。
  • 工作中如果遇到了相關知識不明白的,就認真去學習,直到弄明白為止。

問題

我大學也是 .net 方向,現在大三,已經轉向前端,基礎知識已瞭解,準備學習 vue。我現在有些焦慮,即將秋招,可是我還沒有拿的出手的專案,怎麼辦啊 ?求解。

解答

  • 校招主要看重的是候選人的基礎和潛力,如果有實習經驗更佳。
  • 建議你這段時間就認真備戰秋招吧,先把基礎好好學習,除了前端知識外,資料結構演算法也是考點,刷刷題吧。
  • 至於專案的話,如果你有時間能高仿個 xx,並在掘金上釋出文章 ,也可能是一個亮點吧。
  • 去年有個同學就通過這個方式獲得滴滴的面試,不過可惜基礎略薄弱。所以重點還是先搞基礎吧~

問題

我參加了滴滴的校招,但遺憾面試沒有通過,後來我去了一個創業公司到現在也快一年了,負責開發公司的 webapp( Cordova + vue )和官網,node 和 mysql 對於正常的開發都能熟練使用,後臺介面和前後端聯調也要我負責,但是我非常想去大廠和優秀的人在一起,提升自己,不過我投過幾家大廠要求 1 到 3 年經驗卻沒有任何訊息,所以我現在對於未來有點迷茫了,因為我真的真的想去大廠,現在的我該怎麼辦,是不是我太急躁了 ?

解答

  • 不用太急,你也只工作一年而已,這個過程你可以提升的東西有很多,先多做業務,提升技術。
  • 等 2-3 年後,再嘗試去投大廠,但你的簡歷一定要有亮點,並且基礎足夠紮實,相信以後機會還是會有很多的,加油~

問題

現在多端統一開發框架這麼多,有沒有學習的建議 ?

解答

  • 首先思考一下你的業務是否需要多端框架,比如 App、h5 和小程式需要一樣的設計嗎,答案是很多情況下是不一樣的,從產品設計上來說,App 通常是最完善的功能,h5 保留主要功能,而小程式多半是一個快速入口。
  • 其次目前多端框架多半不成熟,如果是核心業務,務必謹慎使用,很多情況下,大公司也會在一些偏運營展示的簡單業務中使用這類多端框架。
  • 最後,一定要做技術選型,那麼就從技術棧、框架維護力度,以及社群的活躍度幾個方向權衡吧。

問題

黃老師,請問應該怎麼培養自己的架構思維呢 ?

解答

  • 這個需要長期的經驗積累的,說幾個關鍵詞吧,借鑑、思考、總結,交流。
  • 借鑑是站在巨人的肩膀上,比如可以學習張雲龍大佬的部落格: https://github.com/fouber/blog
  • 思考是多去想我怎麼設計才是最合理,能否解決當前業務的痛點,如何做到開發時對開發者友好,上線時對使用者友好。
  • 總結就是每次經驗用文字記錄下來,積累和沉澱。這個時候也可以多思考思考,有沒有哪些地方是不合理的,有沒有更好的方案。
  • 交流就是把一些案例分享出去,和大家一起探討和交流,碰撞一些不一樣的思維火花。

問題

前端的職業發展,怎麼建立良好的知識體系呢 ?

解答

  • 深度優先,不忘發展廣度,前端相關的知識體系可參考樸靈大佬這幅圖:https://github.com/JacksonTian/fks。
  • 當然,這幅圖只是一個參考,你的知識體系還是要通過工作建立起來的,所以要以你的工作為準,深入學習周邊的工具鏈技術,學習過程中要多思考,勤總結,對於每個知識點,最好是能學精學透,切忌囫圇吞棗。
  • 對於些熱門的技術,不要盲目追新,如果工作用不到,除非很感興趣,否則瞭解關注即可。

問題

老師好,我是一名工作一年的前端菜鳥,目前,有點迷茫,不知道以後自己的生涯規劃朝那個方向發展,橫行還是縱向,求教 ?

解答

  • 對於初入行我的建議都是多做業務,多提升技術,等到 2-3 年,再考慮之後的發展方向。
  • 關於職業生涯規劃,我下面有回答喔。

問題

黃老,這幾年的前端趨勢是 mvvm、元件化、工程化以及 typescript,您覺得接下來的近幾年前端會向哪個方向重點發展呢 ?目前前端部分還有什麼痛點需要解決呢 ?期待您的解答,感謝!

解答

  • 前端往深入做通常是幾個方向,複雜應用(比如 web doc 這種規模的)、資料視覺化(2D、3D)、前端工程化、架構。
  • 痛點如目前非常火的多端框架,本身是值得探索的一個方向,但是由於各個端的標準和實現不一致,導致目前的狀態是除錯困難,坑多。
  • 另外,感興趣的話也可以把視野放更廣一些,比如可以關注 AI,入門機器學習等等。

問題

你以前剛接觸 web 前端時,每天看幾本書 ?通過啥方式提升 ?

解答

  • 我看的前端書並不多,也遠達不到一天幾本,經典的紅寶書和犀牛書我有反覆的看過,前期基本就是一個編碼 - 看書 - 編碼 - 看書的節奏。
  • 另外,我也比較推薦看一下廣度相關的書籍,比如《http 權威指南》、《精通正則表示式》、《Head First 設計模式》《程式碼整潔之道》 等。

問題

大佬,請問下公司就我一個前端,沒有經驗比較豐富的人可以交流學習,依靠自己學習可以從初級進階到中級前端工程師嗎 ?

解答

  • 現在學習資源比之前豐富太多了,除了看一些經典書籍,還有一些很不錯的教學視訊可以去學習,講師很多也是一線網際網路公司的大佬,投資自己總不會錯的。
  • 也可以適當參加一些技術會議,認識一些人。
  • 另外,對於在小公司如何做技術提升,可以參考我下面的一些回答。
  • 當然,當你能力提升到一定水平後,能進大公司就去大公司。大公司相對來說,業務挑戰更大,也更加規範,是一個非常不錯的鍍金機會。

問題

老師怎麼看待未來桌面應用,例如 electron 的發展前景 ?

解答

  • electron 讓前端工程師開發桌面應用更加容易,但它本身還是桌面應用,需要安裝,大部分企業還是會更傾向於 web 的方式吧。
  • 另外,我覺得 PWA 可以多關注喔。

問題

大佬,天天加班嚴重,忙於業務,還是基於老的框架,如何能提升自身 ?感覺很困惑 。

解答

  • 首先需要提升自己的開發效率,思考一下能不能抽象一些通用的模組和元件等,開發過程中有沒有痛點,有沒有能通過工具而不用人解決的問題,如果你能發現一些問題並通過技術手段解決,那麼已經是一個提升了。
  • 其次,老的框架是否需要升級,如需要,如何平滑升級,如何做到升級對現有業務影響最小,如果影響很大,思考一下現有專案的組織方式是否合理。如果把上面這些問題都想清楚,並解決,也是一個提升了。
  • 再次,我每天做的業務,接觸到的一些工具鏈和技術棧,我是否已經對它們的原理深入掌握了,出現 Bug 和坑我能否快速定位和解決,如果現有輪子不能滿足需求的時候,我能不能快速造一個出來,做了這些又是一個提升。
  • 最後,如果覺得公司對技術重視程度不夠,也可以考慮換一個坑。

問題

前端的架構師一般都做些什麼呢 ?

解答

  • 主要是分析當前業務的痛點和目標,結合場景去提出一套合理的解決方案。
  • 其中涉及到編碼的部分包括不限於編寫一些工具外掛、腳手架、甚至是框架。
  • 前端架構是沒有銀彈的,不同場景的架構方案也往往是不同的。

2. 效能優化

問題

效能優化有什麼推薦的書嗎?

解答

  • 《高效能網站建設進階指南》

3. Vue.js

問題

你好,老師,前端使用 vue 技術棧的,有哪些提升開發效率的經驗 ?

解答

  • 對 Vue.js 熟練掌握,可以方便你快速開發。
  • 深入瞭解 Vue.js 的原理,對於快速定位 bug,瞭解它的職責邊界有很大幫助。
  • 另外,儘量使用第三方成熟庫,避免重複造輪子。

問題

培訓結束一年,三大框架只瞭解 vue,目前準備跳槽,但是覺得自己 js 基礎也不紮實,vue 也沒有特別的熟練,react 更是完全都不瞭解,想問下接下來的學習路徑大概是什麼 ?

解答

  • 查漏補缺吧,知道自己什麼不足,就花時間去學習。
  • Vue.js 技術棧方向的可以考慮去學習我的課程,不過會有一定難度,也是需要你花時間和耐心去學的。
  • 另外就是在工作中學習和成長了,如果是一年經驗,還是多做業務,在業務中多思考和總結,使用 Vue 就先把 Vue 用熟,接下來研究其原理實現,學透。
  • 之後有需要再學 React、Angular 都比較容易了。
  • 總之前期還是先讓自己成為一名熟練工,之後再去做一些有挑戰的事情。

問題

黃軼老師,vue.js 原始碼都跟著您學完了,另外還學過 ts,網路,基礎的構建,接下來如果像往前端繼續深造應該學什麼呢,深入演算法還是可以看看 webpack 原始碼 ?謝謝。

解答

  • 通常都是結合你工作中使用到的一些工具鏈,做深入的學習和研究。
  • 另外,你已經學習了這麼多東西,可以嘗試一下學以致用,比如用 ts 重構一些專案,給一些基礎庫和元件編寫測試等等。
  • 學習了 Vue 原始碼,可以嘗試去編寫一些自定義指令、外掛等,或者是去研究社群 Vue 相關生態工具,做進一步研究和學習。

問題

Vue 應該如何進階和提升呢 ? 總感覺自己處在一個業務仔的技術水平。

解答

    1. 做複雜的應用,思考不同場景在 Vue 下如何解決,並搞清楚 Vue 的邊界職責(即 Vue 能做什麼,不能做什麼)。
    1. 瞭解一下週邊生態工具如 vue-router、vuex 的實現原理,嘗試去寫一些簡單的輪子,比如自定義指令、外掛等。
    1. 閱讀原始碼,瞭解 Vue 的核心原理實現。
    1. 參與 Vue 或者周邊生態工具原始碼的共建。
  • 推薦學習工作中使用的工具鏈的原始碼,比如用了 webpack 就看研究一下 webpack,如果能順手寫一兩個 webpack 外掛就更好了。
  • 另外也可以多看一些經典的書籍和一些進階的視訊課程學習。

4. 個人成長

問題

在對未來規劃的方面老師可否給一些參考性的建議 ?

解答

  • 一般建議只做 3 年內的規劃,你作為一個應屆生,前幾年的目標就是多做業務,提升技術。
  • 關於職業規劃,下面有個類似的問題喔。

問題

黃老師,你在滴滴的時候你是你們團隊的第一個人 ,團隊都是你組建起來的嗎 ?可以分享一下組建團隊的時候,你是怎樣考慮自己要選擇的隊員 ,以及如何對他們的工作進行分配和評估的 ?

解答

  • 是第一人,不過後來沒有做 leader,有些事情就不便這裡說啦。
  • 我可以分享一下我後來做 WebApp 前端架構團隊負責人是如何招人的,主要看候選人是不是符合團隊的整體氣質,比如我們團隊是一個愛折騰技術,喜歡分享的團隊,如果候選人在這方面突出,肯定是大大的加分項。
  • 工作分配主要是看他們每個人的情況,通常一個人會負責一塊業務,同時也有相關的技術方向。
  • 會把一些基礎的開發工作分配給應屆生,因為他們是需要大量做業務的階段,會把一些有挑戰的工作分配給一些有潛力的同學,讓他們快速成長。
  • 另外我們團隊還有很優秀的同學,會主動承擔和負責一些技術方向,這些我都非常鼓勵的。

問題

小公司沒有什麼大公司背景,沒有牛逼的專案,怎麼走上前端架構之路 ?

解答

  • 首先,你需要能快速響應公司的業務需求,成為一名熟練工。
  • 然後可以思考開發過程中有沒有什麼痛點,能不能通過技術的手段,比如開發一些工具和外掛來提升開發效率,在這個過程中,你可以去調研業內有沒有成熟的輪子,輪子能不能滿不滿足你的需求,可以對輪子做研究甚至去做貢獻,這個過程你會接觸到學習到很多不曾接觸到的知識,積累沉澱下來。
  • 另外,你也需要多花業餘時間去學習,學習的方向是你工作相關的技術棧,學精學通。
  • 等自己有一定能力了,不妨去投簡歷到心儀的大公司,剛提到的這些經歷可以成為簡歷的亮點。
  • 進入大公司後,你會遇到更多的挑戰,業務規模、開發效率、效能、穩定性等等都會有更高的要求,在你不斷去面對挑戰,解決問題的過程中,你自然就會慢慢成長了。
  • 當然,進入大公司後你可能一開始也可能是一顆螺絲釘,但是你自己是可以多花時間,對自己接觸到的工具鏈做研究,主動承擔一些有挑戰的任務,如果你的能力得到了認可,你就會有機會接觸到更多有挑戰的任務。能夠分析出問題的痛點,提出一些適合場景且合理的解決方案,就是前端架構師通常做的事情。
  • 我以上說的,會有很多時候都需要跳出自己的舒適圈,並且需要付出更多的時間和努力,勤思考,多總結。所以,想成為前端架構師並不容易,加油吧~

5. 原始碼

問題

想請教一下大神在最初學習原始碼,組織開源時如何入門的,同時學習原始碼對於工作變現是不是有必然的聯絡,如何把控 ?

解答

  • 拿 Vue.js 為例吧,最初是興趣驅動,好奇,後來是寫文章,需要深入研究,再之後就是工作中陸陸續續地看,然後錄原始碼課程前系統地看了好幾遍。
  • 看原始碼的好處在於可以提升自己的內功,工作中遇到 bug 能快速定位和解決,充分了解它的職責邊界等,另外現在面試似乎都喜歡問原理實現,熟悉原始碼肯定是一個加分項咯。

問題

框架熟悉哪幾個比較合適呢 ?

解答

  • 通常優先精通工作中使用的框架,其它的瞭解即可。因為框架很多設計思想都是相通的,一旦精通一門,之後想學習其他框架非常容易。

問題

人到 30 ,該如何規劃未來 5 年的時間 ?

解答

  • 職業規劃我下面有回答,我個人認為這個時間還是應該做技術、寫程式碼的時間。

問題

你認為如何做職業生涯規劃呢 ?從前前端幾年了,感覺處於瓶頸期,目前比較迷茫,目標不明確。

解答

  • 通常做技術往上 2 條路。
  • 1 :純技術路線:架構師技術專家
  • 2 :技術+管理路線。
  • 先找準你的方向,如果對技術感興趣,建議走 1 路線,否則就走 2。
  • 對於管理,我不是很擅長,我的經驗就是首先你自己的技術要過硬,讓底下人認可你,其次就是思考怎麼發揮團隊的最大價值,為團隊小夥伴謀福利,關注他們的成長等。
  • 但是無論哪條路線,你的技術一定要好,而且我是不太建議工作個 5,6 年就轉純管理,時間太短,即使做了也不要落下技術。
  • 所以你目前還是需要精進技術,突破瓶頸通過就需要跳出舒適圈,解決一些需要你跳一下才能搞定的問題,最好是能找到你目前工作中的一些痛點,通過技術的手段去解決。
  • 我看你在位元組跳動,也可以關注一下其他團隊做的事情。
  • 我知道頭條有一個非常牛逼的大佬-張袁煒,他是我在百度時期的導師,你也可以找他交流下。

6. 最後

筆者部落格首發地址: GitHub。

以上問題及回答全部來自: 我是開源庫 better-scroll 的作者 -- 黃軼,你有什麼問題要問我 ?

以上問題及回答,對筆者很有幫助,相信以上回答對前端開發者也會有很大的啟發,能解決很多人的迷茫,所以整理成了這篇文章