我的前端之路
闞自強(qiáng)
政企云 & 烏鶇科技 高級(jí)前端工程師,freeCodeCamp Top Contributor,杭州社區(qū)核心組織者。從天津漂流到杭州尋找一份生活和工作的歸宿,經(jīng)常游走于社區(qū)論壇,熱愛和技術(shù)社區(qū)朋友交流分享學(xué)習(xí)成長(zhǎng)心得。
大家好,今天我給大家?guī)淼姆窒硎顷P(guān)于“前端之路”。我不是要教大家怎么去從事前端開發(fā),而是我自己給自己規(guī)劃了一條前端之路,行走這些年也沒有給自己帶來什么遺憾,所以我想分享出來,希望可以給大家?guī)硪恍﹩l(fā)。
0、一名初入大學(xué)校門的小青年如何選擇了未來的路
我的經(jīng)歷
先來一個(gè)自我介紹,我畢業(yè)于天津農(nóng)學(xué)院人力資源管理專業(yè),畢業(yè)之后和朋友一起創(chuàng)辦過一個(gè)小公司。離開天津之后我來到了杭州,就職于某區(qū)塊鏈公司,后來就加入了阿里巴巴-政企云 & 烏鶇科技體驗(yàn)技術(shù)前端團(tuán)隊(duì)。
首先給大家分享第一個(gè)問題:我作為一個(gè)初入大學(xué)校門的小青年,如何選擇了自己未來的路?
想做一個(gè)什么樣的人
可能很多同學(xué)在剛進(jìn)入大學(xué)之后,有些松懈,因?yàn)楦呖歼^后想給自己放松一下,很少有同學(xué)會(huì)去想未來想要去做一個(gè)什么樣的人,或者是想要從事什么樣的職業(yè)。我覺得大學(xué)生走入大學(xué)最好是要給自己一個(gè)長(zhǎng)遠(yuǎn)的規(guī)劃,想一想自己未來要做一個(gè)什么樣的人。當(dāng)然這個(gè)問題可能對(duì)于很多人來說是比較難的。
我們不妨換另外一個(gè)問題:?jiǎn)栆粏栕约翰幌胱鍪裁础1热纾闶遣皇窍氘厴I(yè)之后去做電話銷售?或者是去做餐飲銷售員?或者是在企業(yè)里面做策劃運(yùn)營(yíng)工作?想想自己不想做什么,最后剩下的這一點(diǎn)就是自己想要做的。

興趣是什么
第二點(diǎn)是問一問自己:我的興趣點(diǎn)是什么?
如果說能把自己的興趣點(diǎn)當(dāng)成一種職業(yè)來做,我個(gè)人認(rèn)為是一件比較幸福的事。至于我,因?yàn)槲冶旧硎强釔劬幊?,然后最后把編程做成了自己的一個(gè)職業(yè),這些年也感覺很幸福,樂在其中,所以在這方面的成長(zhǎng)也會(huì)稍微快一些。
明確自身優(yōu)劣勢(shì),制定規(guī)劃
第三點(diǎn)就是當(dāng)你明確了自己的方向之后,再去判斷一下自身的一些優(yōu)劣勢(shì)。
我不知道是不是好多同學(xué)和我一樣,在上大學(xué)的時(shí)候可能會(huì)認(rèn)為自己足夠優(yōu)秀或者是能力比較強(qiáng)。后面我有問自己一個(gè)問題,覺得自己能力強(qiáng),我強(qiáng)在什么地方?是不是別人有些東西能做,而我不能做?或者是我能做的東西別人做不到?有沒有這種情況出現(xiàn)?如果有的話,那就證明我們的能力是比別人強(qiáng)的。
找到自己的一些劣勢(shì)或者優(yōu)點(diǎn),我們就要去揚(yáng)長(zhǎng)避短,然后把自己的短板補(bǔ)齊,把優(yōu)勢(shì)放大,這個(gè)時(shí)候就需要制定一些計(jì)劃。
比如,如果你是想從事技術(shù)工作,你要規(guī)劃一下我大一需要學(xué)一些什么東西,比如計(jì)算機(jī)基礎(chǔ),是吧?然后未來如果說你想做前端的話,可能你后面就要去針對(duì)前端的一些知識(shí),像 CSS、JS,去做一個(gè)很好的計(jì)劃,然后慢慢去補(bǔ)足。
時(shí)間管理
如何保證你這些計(jì)劃很高效地去執(zhí)行?你需要有一個(gè)時(shí)間管理的觀念。好多同學(xué)進(jìn)入大學(xué)之后,可能有課你就會(huì)去上課,但沒有課的話可能就會(huì)在床上躺著,或者去網(wǎng)吧待著。沒有了之前上高中或者上初中時(shí)老師和家長(zhǎng)的監(jiān)督,可能時(shí)間概念在自己這里就會(huì)比較松懈。
我大學(xué)時(shí)是這么做的,每天早晨會(huì) 7:30 左右起床,然后每天看一篇技術(shù)博客,上午會(huì)去正常的上課,下午是下了課之后會(huì)去做一些計(jì)算機(jī)基礎(chǔ)的一些學(xué)習(xí)。比如我上大學(xué)的時(shí)候會(huì)學(xué)一些 Java,然后給自己做好了一些計(jì)劃,然后還要有一些階段性的檢測(cè),比如兩個(gè)月或者三個(gè)月之后,會(huì)給自己做一些小的 demo,仿京東的官網(wǎng),或者做一個(gè)小型的公眾號(hào)網(wǎng)站,然后給自己做好一個(gè)時(shí)間管理。
實(shí)踐參與
第五點(diǎn)是實(shí)踐參與。如果你的校園里面有一些比較好的展示機(jī)會(huì),像社團(tuán)辦一些活動(dòng),可能要給活動(dòng)做一個(gè)官網(wǎng),某某學(xué)院會(huì)有一些官網(wǎng)的一些更新,如果你能參與進(jìn)去,我覺得是比較好的。
1、破繭而出,我該如何幫助自己快速適應(yīng)工作
第二個(gè)問題:畢了業(yè)之后,如何幫助自己快速適應(yīng)工作?
機(jī)會(huì)大于既得利益
對(duì)于我來說,我是一個(gè)非計(jì)算機(jī)專業(yè)出身的工程師或者是一個(gè)程序員,然后我求職的第一點(diǎn)給自己的一個(gè)定位就是“機(jī)會(huì)要大于我的既得利益”。找第一份工作的時(shí)候我并沒有看重收入,而是看哪一家公司給我的展現(xiàn)平臺(tái)會(huì)比較大,愿意接納我,并且是我想要從事的崗位,就像前端工程師。

深入學(xué)習(xí)的能力
第二點(diǎn),入職了之后,作為一個(gè)新人,如何去快速學(xué)習(xí),補(bǔ)足自己的一些大學(xué)初入職場(chǎng)的一些中間的斷層,怎么去快速?gòu)浹a(bǔ)?
我們這時(shí)候也是要去看公司和業(yè)務(wù)所要涉及的技術(shù)面,進(jìn)行深入的學(xué)習(xí),學(xué)習(xí)一些原理。可能大部分的同學(xué)感覺自己能夠?qū)崿F(xiàn)需求,能夠?qū)崿F(xiàn)功能就 ok 了,他并沒有去研究。比如像我最開始進(jìn)入職場(chǎng)時(shí),會(huì)關(guān)注一些 jQuery 實(shí)現(xiàn)原理,比如鏈?zhǔn)秸{(diào)用它是如何實(shí)現(xiàn)的,比如一些查找的方法它是如何實(shí)現(xiàn)的。
如果你探究了實(shí)現(xiàn)原理,后面會(huì)對(duì)你學(xué)習(xí)技術(shù)(比如性能優(yōu)化,或者一些異常 bug 的處理)有很大的幫助。
很多文章會(huì)寫,不提倡去造輪子。其實(shí)我也是比較不提倡造輪子,但是我覺得作為一個(gè)工程師,如果說你打算在這個(gè)行業(yè)長(zhǎng)久做下去的話,一定要有一個(gè)造輪子的能力。
沉淀方法論和原則
第三點(diǎn),如何讓你的工作更高效,或者是和別人合作起來更輕松?一定要去沉淀自己的一套方法論。比如你和服務(wù)端去溝通,或者和客戶端去溝通,要站在他們的立場(chǎng),為他們?nèi)タ紤],然后去闡述你的觀點(diǎn),這樣你說出來話才更有說服力,而不是說一味的站在自己只是一個(gè)前端工程師的角度去和他們討論問題,這樣的話會(huì)自我設(shè)限。比如我講我前端怎么樣比較好,他肯定會(huì)站在客戶端的角度認(rèn)為怎么樣比較好。
如果說前端怎么能幫他去實(shí)現(xiàn)一些東西,我們把整個(gè)方案拿給他,把前后端的一個(gè)合作方案拿給他的時(shí)候,他就更好更方便地去接受你。
危機(jī)意識(shí)
第四點(diǎn),在我們?cè)谶@個(gè)行業(yè)里面,像我最開始身邊有很多同事和我一起去做前端開發(fā),好多人會(huì)缺少一種危機(jī)意識(shí)。比如早兩年沒有 React 和 Angular 爭(zhēng)地的時(shí)候,很多同學(xué)可能還沉浸在 jQuery 的時(shí)代,其實(shí)職場(chǎng)里面慢慢已經(jīng)淘汰這些開發(fā)的機(jī)制。當(dāng)然可能天津這塊發(fā)展是比較緩慢的,北京、上海或者杭州可能早四五年前已經(jīng)開始用這些比較流行的技術(shù)。當(dāng)然現(xiàn)在可能在所有人看來的話,Vue 和 React 都是人人必備的一些基礎(chǔ)技能。

開放的心態(tài)
第五點(diǎn),如何化解危機(jī)呢?我是這么去做,保持自己和社區(qū)的一些充分交流。當(dāng)然我也是抱著這種心態(tài)參與了社區(qū)才認(rèn)識(shí)的,像 Miya 姐、Ak、水歌等等,然后和他們交流的過程中才會(huì)了解到除了我工作崗位以及我公司之外,別人是怎么去做的、他們是怎么看待這種技術(shù)的發(fā)展、這些技術(shù)里面蘊(yùn)含的一些思想是什么樣子的......
這時(shí)候你會(huì)發(fā)現(xiàn)你所攝取的東西要遠(yuǎn)遠(yuǎn)多于你身邊的一些同事,這個(gè)時(shí)候你就會(huì)慢慢地站在主導(dǎo)的地位,去給你身邊的同事做一些普及,然后你的影響力就會(huì)高,自然而然也會(huì)得到領(lǐng)導(dǎo)的器重。
2、在大型團(tuán)隊(duì)中工作我遇到了哪些挑戰(zhàn)
我去年 9 月份跳槽之后,在大型團(tuán)隊(duì)里面(阿里巴巴-政企云 & 烏鶇科技體驗(yàn)技術(shù)前端團(tuán)隊(duì))的工作中給我?guī)硪恍┨魬?zhàn),我把它當(dāng)作我職業(yè)發(fā)展的一個(gè)突破。
風(fēng)險(xiǎn)意識(shí)
第一點(diǎn)就是風(fēng)險(xiǎn)意識(shí)。在此之前,其實(shí)可能只有自己對(duì)自身危機(jī)意識(shí)的一些認(rèn)識(shí),但對(duì)于整個(gè)項(xiàng)目開發(fā)周期迭代,其實(shí)是缺少危機(jī)意識(shí)的。
在我的之前的經(jīng)歷里面,團(tuán)隊(duì)之間合作,可能大家更多溝通的是需求、某個(gè)功能點(diǎn)的聯(lián)調(diào)方式。在任何需求排下來之后,可能埋頭就去干,并沒有去從整個(gè)鏈條,包括和別的同學(xué)對(duì)于整個(gè)需求、整個(gè)大版本的一個(gè)迭代的功能點(diǎn)、風(fēng)險(xiǎn)評(píng)估、技術(shù)方案的評(píng)估、需要花費(fèi)的時(shí)間......都沒有這些概念,可能就是埋頭直接去做,然后做到哪遇到什么問題再去拋。這樣的話就導(dǎo)致整個(gè)項(xiàng)目在推進(jìn)的過程中,會(huì)隨著你開發(fā)的問題、套路,動(dòng)態(tài)地去改變一些技術(shù)方案,導(dǎo)致產(chǎn)生一些額外的成本,也給公司帶來一些負(fù)面的影響,你的項(xiàng)目不能按時(shí)交付。
所以到大公司之后,風(fēng)險(xiǎn)意識(shí)一定要高。在任何一個(gè)版本需求確定下來,第一時(shí)間應(yīng)該做技術(shù)方案的評(píng)估,拉上服務(wù)端客戶端,包括一些產(chǎn)品/UED 同事,把后續(xù)可能要涉及的風(fēng)險(xiǎn)點(diǎn)、技術(shù)方案和大家敲定落實(shí),這樣的話在我們獨(dú)自去開發(fā)自己模塊的時(shí)候,才會(huì)降低風(fēng)險(xiǎn)。
推動(dòng)變化和響應(yīng)變化
第二點(diǎn)是推動(dòng)變化。其實(shí)第二點(diǎn)和第一點(diǎn)是相輔相成的。推動(dòng)變化主要是什么?主要是我們作為一個(gè)前端工程師,是產(chǎn)品推向用戶使用的最后一道關(guān)口,在日常工作中,產(chǎn)品和 UED 同事都很難去想象到一個(gè)產(chǎn)品功能在交互過程當(dāng)中的任何細(xì)節(jié),很難去想全。這時(shí)候我們作為前端開發(fā)者,應(yīng)該想得比他們更多。
站在用戶的角度,我們想象一下用戶真正需要的是什么樣的一個(gè)東西,到底什么樣的產(chǎn)品是對(duì)用戶有價(jià)值的。這個(gè)時(shí)候我們可以去站在用戶的視角去推動(dòng)產(chǎn)品的一些變化,這樣的話也就避免了產(chǎn)品投入到市場(chǎng)之后,由于用戶反饋所帶來的變化。
前端開發(fā)者去推動(dòng)變化,也可以提高我們?cè)趫F(tuán)隊(duì)中的一些影響力和話語(yǔ)權(quán)。我們可以把更多的時(shí)間去放在一些基礎(chǔ)建設(shè)和賦能上面。

不自我設(shè)限
第三點(diǎn),不自我設(shè)限。剛剛其實(shí)在第二點(diǎn)里面有稍微的闡述,就是不能把自己簡(jiǎn)簡(jiǎn)單單只定位為一個(gè)技術(shù)人員,我們更像是為一個(gè)最終的產(chǎn)物負(fù)責(zé),只不過是在產(chǎn)物過程中,會(huì)有我們不同的同學(xué)去分工協(xié)作。我們要在第一時(shí)間拿到這個(gè)東西的時(shí)候,去和各個(gè)方面去拉通,去評(píng)估,以確保最終交付給產(chǎn)品的是我們共同期望的最完美的一個(gè)展現(xiàn)方式,或者一個(gè)最完美的展現(xiàn)的產(chǎn)品。
技術(shù)賦能業(yè)務(wù)
第四點(diǎn),技術(shù)不僅僅是為了服務(wù)某一個(gè)項(xiàng)目,而是說我們要賦能業(yè)務(wù),同時(shí)在我們實(shí)現(xiàn)某個(gè)項(xiàng)目中所產(chǎn)生的業(yè)務(wù)價(jià)值,又能繼續(xù)反哺到我們?nèi)粘5拈_發(fā)和生產(chǎn)中,這個(gè)才是真正的價(jià)值所在。像一些開源的大廠,他們所開發(fā)的一些開源產(chǎn)品也是在這種思想下去做的。
比如我要實(shí)現(xiàn)一個(gè)上傳的功能,那這個(gè)上傳功能不僅僅簡(jiǎn)單說是為了完成我這個(gè)項(xiàng)目里面的上傳功能,而是說我把它抽離出來,做成上傳的能力——放在我這個(gè)產(chǎn)品里面可以用,同時(shí)我上傳能力又可以賦能給別的同學(xué),或者是我們接下來要負(fù)責(zé)的另外一個(gè)項(xiàng)目。
其實(shí)在前端來看的話,可能就是面向模塊化編程或者面向組件化編程的一個(gè)思想。當(dāng)我們把技術(shù)一個(gè)一個(gè)的功能模塊抽離出來之后,后面的生產(chǎn)其實(shí)對(duì)我們來說就比較輕松,我們就可以把不同的模塊拼裝到不同產(chǎn)品里面,后面迭代就會(huì)變得更加快速,我們就可以抽出更多的時(shí)間去做更多有意義的事情。
視角的轉(zhuǎn)變
第五點(diǎn),來到阿里之后我有一些視角的轉(zhuǎn)變。之前我對(duì)待任何一個(gè)項(xiàng)目,可能作為技術(shù)人員就是為了完成這個(gè)項(xiàng)目而去完成。到阿里之后呢,任何工程師或者是我自身來說,我感覺要做的東西不僅僅是為了把某個(gè)項(xiàng)目做完,而是說這個(gè)項(xiàng)目本身是有什么樣的價(jià)值。
我本身的工作能夠給我身邊的同學(xué)帶來哪些價(jià)值?最后這個(gè)產(chǎn)品交付給用戶,給用戶帶來是哪些價(jià)值?如果說價(jià)值比較高的話,即使這個(gè)項(xiàng)目有一定的延期,其實(shí)后面得到的結(jié)果也是好的,因?yàn)槲覀兒竺娼o用戶呈現(xiàn)的是一個(gè)最完美的東西。最后一點(diǎn)其實(shí)要去思考的就是這個(gè)東西給社會(huì)帶來什么樣的價(jià)值?任何一個(gè)長(zhǎng)久的東西都是有它長(zhǎng)遠(yuǎn)存在的意義和價(jià)值。
3、大廠的前端技術(shù)體系是如何搭建的
我想給大家介紹一個(gè)前端技術(shù)體系是如何搭建的,會(huì)從以下三個(gè)問題去給大家做一個(gè)簡(jiǎn)單介紹。
第一個(gè)問題是大廠的前端都是忙些啥?是不是大家理解中的搭系統(tǒng)搭頁(yè)面就 ok 了?
第二個(gè)問題可能是很多人可能目前還沒有意識(shí)到的,是不是我看了 Vue 源碼或者是 React 源碼,我的前端發(fā)展就到頭了?答案肯定是否定的。
第三點(diǎn),如果大家有興趣來到我們團(tuán)隊(duì),可能會(huì)想去了解我們團(tuán)隊(duì)需要什么樣的人。以上三點(diǎn)會(huì)通過接下來的一個(gè)短片,由我們部門的前端負(fù)責(zé)人去給大家做一個(gè)簡(jiǎn)單的介紹。
最后一點(diǎn)我想要和大家簡(jiǎn)單說的,技術(shù)人員經(jīng)常被調(diào)侃“是直男”、“情商低”,我覺得其實(shí)大家在研究技術(shù)的同時(shí),還可以多參加一些娛樂活動(dòng),比如參加一些比賽,打乒乓球,參加一些科技展,或者是去旅游,我覺得都是豐富自己生活的方式。
—————END—————
喜歡本文的朋友,歡迎關(guān)注公眾號(hào)?達(dá)達(dá)前端,收看更多精彩內(nèi)容
點(diǎn)個(gè)[在看],是對(duì)達(dá)達(dá)最大的支持!


