程序員一定會(huì)有35歲危機(jī)嗎?
你好,我是黃老師。
最近經(jīng)常在知乎刷到一些類(lèi)似的問(wèn)題——《普通程序員真的無(wú)法度過(guò) 35 歲危機(jī)嗎?》。一般問(wèn)這類(lèi)問(wèn)題的題主年齡都超過(guò) 30 歲,希望有人來(lái)分享他們的經(jīng)驗(yàn)。
我今年 33 歲,從畢業(yè)到現(xiàn)在工作也有九年多的時(shí)間了,即將到 35 歲這個(gè)年紀(jì),那么我就從自身的工作經(jīng)歷,結(jié)合行業(yè)中的一些現(xiàn)象,來(lái)談?wù)勎覍?duì)這個(gè)問(wèn)題的看法。
為什么是 35 歲
有沒(méi)有想過(guò),為什么是 35 歲開(kāi)始出現(xiàn)危機(jī)呢,其實(shí) 35 只是一個(gè)大概的數(shù)字,通常這個(gè)年紀(jì)左右的人都已成家,大部分人背負(fù)著房貸車(chē)貸,會(huì)一定的經(jīng)濟(jì)壓力。
另外,隨著自身年齡的增加,身體素質(zhì)也大不如前,不能像年輕人那樣去加班,甚至是熬夜。再加上上有老下有小,也需要分出一部分的精力去照顧家庭。
很多人就開(kāi)始擔(dān)心,真的到了這個(gè)年齡,如果公司裁員,會(huì)不會(huì)首先把自己裁了?如果再出去找工作,會(huì)不會(huì)四處碰壁?
以上就是大部分人焦慮的原因,但仔細(xì)想想,這個(gè)難道不是普遍存在的問(wèn)題嗎,似乎和程序員這個(gè)職業(yè)并不是完全綁定的,大部分行業(yè)其實(shí)都有這個(gè)問(wèn)題。
那么為啥程序員貌似更加敏感,企業(yè)真的排斥大齡程序員嗎?
企業(yè)真的排斥大齡程序員嗎
在我看來(lái),企業(yè)并不是排斥大齡程序員,而是排斥能力與自己工齡不匹配的大齡程序員。換位思考,如果你是企業(yè)老板,你會(huì)招一個(gè)工作十年以上,但能力只有工作兩三年經(jīng)驗(yàn)水平的大齡程序員嗎?
有人說(shuō)醫(yī)生這個(gè)行業(yè)是越老越香,因?yàn)殡S著工齡的增加,他們的經(jīng)驗(yàn)也越來(lái)越豐富。那么程序員難道不是嗎,在我看來(lái)是也應(yīng)該是一樣的,工作越久的程序員,它的技術(shù)基礎(chǔ)更加扎實(shí),工作經(jīng)驗(yàn)更加豐富,技術(shù)視野也更加廣闊。
程序員群體是一個(gè)金字塔的結(jié)構(gòu),目前的現(xiàn)狀是塔底的人很多,因?yàn)檫@行的門(mén)檻低,收入高,很多人涌進(jìn)來(lái)。而在金字塔上層的人卻不多,實(shí)際上整個(gè)行業(yè)是非常缺技術(shù)能力強(qiáng)的程序員的。
所以?xún)?yōu)秀的企業(yè)對(duì)于那些厲害的大齡程序員,不僅不會(huì)排斥,反而非??是蟆F髽I(yè)在招聘一些架構(gòu)師、技術(shù)專(zhuān)家的崗位的時(shí)候,也明確的寫(xiě)到工作經(jīng)驗(yàn) xx 年以上,這就充分的說(shuō)明了不僅要技術(shù)能力強(qiáng),豐富的工作經(jīng)驗(yàn)也同樣重要。工齡應(yīng)該是你找工作的優(yōu)勢(shì),而不應(yīng)該是劣勢(shì)。
但是如果你工作了很多年,仍然在金字塔塔底,那么被淘汰是必然的趨勢(shì)。如何讓自己爬上金字塔的上層,度過(guò) 35 歲危機(jī)呢?不要著急,我想先和你分享一下我個(gè)人的成長(zhǎng)經(jīng)歷。
我的經(jīng)歷
我于 2012 年畢業(yè)于北京科技大學(xué), 計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)的碩士。我本科成績(jī)還可以,順利保送了本校研究生。研究生期間由于被導(dǎo)師派出去實(shí)習(xí),很多課翹了,所以綜合成績(jī)不理想,但是我的專(zhuān)業(yè)成績(jī)還不錯(cuò),只要有那種編程的大作業(yè)課程,我的作業(yè)經(jīng)常被同學(xué)作為參考的對(duì)象。
在校期間我并沒(méi)有學(xué)習(xí)過(guò)前端,而是自學(xué)的 C#。和現(xiàn)在的學(xué)生不同,那時(shí)我們并沒(méi)有多少學(xué)習(xí)的資料和途徑,不像現(xiàn)在網(wǎng)課非常多,我學(xué)習(xí)的途徑就是看書(shū) + 寫(xiě)代碼,當(dāng)然在校期間我也在一些小企業(yè)做過(guò)實(shí)習(xí)和兼職。
直到快畢業(yè)我才尷尬地發(fā)現(xiàn),一線互聯(lián)網(wǎng)公司都沒(méi)有 C# 的崗位,為了進(jìn)大公司,我選擇了 Web 前端開(kāi)發(fā)。雖然沒(méi)有前端經(jīng)驗(yàn),好在我上學(xué)期間寫(xiě)代碼比較多,參加過(guò)競(jìng)賽也獲過(guò)獎(jiǎng),我在百度的導(dǎo)師還是讓我通過(guò)了,于是我就以一個(gè)前端小白的身份加入了百度。
百度的第一年,主要以業(yè)務(wù)開(kāi)發(fā)為主。由于剛?cè)腴T(mén)前端,前期主要做一些簡(jiǎn)單的頁(yè)面功能開(kāi)發(fā),漸漸地接觸到一些動(dòng)畫(huà)的開(kāi)發(fā)和稍微復(fù)雜的交互邏輯。
記得當(dāng)時(shí)我們節(jié)日經(jīng)常會(huì)有一些運(yùn)營(yíng)抽獎(jiǎng)活動(dòng),后端同學(xué)為此寫(xiě)了一套通用抽獎(jiǎng)程序。其實(shí)這些所謂的 Web 抽獎(jiǎng)活動(dòng),無(wú)非都是前端發(fā)起一個(gè)抽獎(jiǎng)?wù)埱?,后端根?jù)一系列處理返回抽獎(jiǎng)結(jié)果,前端再通過(guò)某種動(dòng)畫(huà)或者游戲的方式展示結(jié)果。
抽獎(jiǎng)的流程都是類(lèi)似的,因此在前端也是可以復(fù)用的。我和導(dǎo)師討論一番后,決定做一套通用的抽獎(jiǎng) JSSDK,使用方可以配置抽獎(jiǎng)的游戲類(lèi)型(轉(zhuǎn)盤(pán)、老虎機(jī)),通過(guò)這種配置的方式,讓使用方可以幾行代碼就實(shí)現(xiàn)了一套抽獎(jiǎng)系統(tǒng)。
這一次經(jīng)歷讓我學(xué)會(huì)主動(dòng)發(fā)現(xiàn)業(yè)務(wù)中的痛點(diǎn),用技術(shù)的手段提升研發(fā)效率。
工作第二年,我跟隨我的導(dǎo)師做了我們首頁(yè)的前端性能優(yōu)化項(xiàng)目,并且這次的性能優(yōu)化是從工程的角度來(lái)實(shí)現(xiàn)的,對(duì)寫(xiě)業(yè)務(wù)代碼的人并無(wú)感知。
當(dāng)時(shí)我們參考的是 facebook 的 BigPipe 的技術(shù)方案,把頁(yè)面分成了多個(gè)區(qū)塊 Pagelet,每個(gè)區(qū)塊用前端 JS 的方式去渲染。因?yàn)楫?dāng)時(shí)使用的是 PHP 的 Smarty 模板開(kāi)發(fā)的頁(yè)面,每個(gè)區(qū)塊就會(huì)用一個(gè) Pagelet 標(biāo)簽去標(biāo)識(shí),然后在 PHP 運(yùn)行時(shí)動(dòng)態(tài)分析和收集每個(gè)區(qū)塊的 JS、CSS、和 HTML,然后在渲染區(qū)塊的時(shí)候會(huì)先去加載 CSS,加載成功后渲染 HTML,最后執(zhí)行 JS。
那個(gè)時(shí)候我們就已經(jīng)實(shí)現(xiàn)了前端模塊化,每個(gè) JS 模塊可以通過(guò) require 關(guān)鍵字去加載其它的 JS 模塊,也支持 require.async 去加載異步模塊,這部分代碼是交給我來(lái)寫(xiě)的。起初我對(duì)這塊并不是很了解,于是我就研究了業(yè)內(nèi)的一些成熟方案比如 require.js 和 sea.js 的實(shí)現(xiàn),最終配合我們框架的特點(diǎn)實(shí)現(xiàn)了一套完整的前端模塊化方案。
這個(gè)性能優(yōu)化框架落地后,通過(guò)性能監(jiān)控我們發(fā)現(xiàn)首屏性能優(yōu)化效果并不明顯,雖然我們采用分塊渲染的方案,但還是在首次渲染就把所有區(qū)塊的資源都加載并且渲染了。
于是這個(gè)繼續(xù)優(yōu)化的任務(wù)就又交給了我,我當(dāng)時(shí)搜索了一些首屏優(yōu)化的文章,其中一篇淘寶首頁(yè)的首屏優(yōu)化文章給了我很大的啟發(fā),文章中提到讓瀏覽器盡快渲染前提是讓首屏渲染的 DOM 盡量少。
而我們的首頁(yè)有好幾屏,確實(shí)非首屏的內(nèi)容首次渲染是沒(méi)有必要的。于是我在之前實(shí)現(xiàn)的前端框架的基礎(chǔ)上,實(shí)現(xiàn)了延遲渲染 BigRender:對(duì)于不可見(jiàn)區(qū)塊可以先不渲染,當(dāng)用戶(hù)滾動(dòng)頁(yè)面的時(shí)候再渲染相應(yīng)區(qū)塊。這樣不僅僅減少了首屏渲染的 DOM 數(shù),還減少不可見(jiàn)模塊的圖片和數(shù)據(jù)接口請(qǐng)求等。
通過(guò) BigRender 的優(yōu)化,我們頁(yè)面的首屏性能大幅提升,而且不論后面的業(yè)務(wù)寫(xiě)的再?gòu)?fù)雜,也基本上不會(huì)影響首屏性能。
這一次經(jīng)歷讓我學(xué)會(huì)遇到問(wèn)題可以參考業(yè)界的主流解決方案,并學(xué)習(xí)它們的文章或者是源碼。
我們開(kāi)發(fā)的這一套前端框架,構(gòu)建和打包部分還是用 PHP 實(shí)現(xiàn)的,我使用 PHP 實(shí)現(xiàn)了一個(gè)在線點(diǎn)選打包的工具,在上線前需要通過(guò)這個(gè)工具來(lái)實(shí)現(xiàn) split chunks,但這是一個(gè)需要人工參與的過(guò)程,并沒(méi)有實(shí)現(xiàn)全自動(dòng)化構(gòu)建流程。
當(dāng)時(shí)百度內(nèi)部在推一個(gè)前端構(gòu)建工具 FIS,并且他們也有一套基于 FIS 搞的 PHP + Smarty 的前端解決方案。但是這套方案相比于我們實(shí)現(xiàn)的前端框架,僅僅是實(shí)現(xiàn)了前端模塊化開(kāi)發(fā),并沒(méi)有任何性能優(yōu)化方面的提升。
實(shí)際上 FIS 本身的實(shí)現(xiàn)還是很靈活的,支持插件化,有點(diǎn) webpack plugin 的意思。于是我決定研究 FIS 的構(gòu)建機(jī)制,并參考它現(xiàn)有插件的實(shí)現(xiàn),然后編寫(xiě)相關(guān)的 FIS 插件來(lái)配合我們的運(yùn)行時(shí)框架,最終這套東西被我搞出來(lái)了,實(shí)現(xiàn)了前端的自動(dòng)化構(gòu)建方案。
當(dāng)初做完 FIS 這一套東西,我覺(jué)得還不夠,非常想把自己這套前端框架推到業(yè)內(nèi)。因?yàn)楫?dāng)時(shí) FIS 主要還是百度內(nèi)部在用,業(yè)界比較火的構(gòu)建工具是 gulp,于是我就研究了一波 gulp 并開(kāi)發(fā)了一整套 gulp 的插件來(lái)模擬 FIS 的構(gòu)建行為。雖然 gulp 這套方案做成功了,但是距離我想推廣出去還差的很遠(yuǎn),還是太年輕了。
這一次經(jīng)歷拓展了我的廣度知識(shí),我學(xué)會(huì)了如何使用 Node.js 去編寫(xiě)前端構(gòu)建工具。
后來(lái)由于做的業(yè)務(wù)對(duì)技術(shù)的要求也并不高,在百度的成長(zhǎng)不大,于是在百度工作三年后,我選擇了離開(kāi),加入當(dāng)時(shí)高速發(fā)展的獨(dú)角獸公司——滴滴。
當(dāng)時(shí)面試滴滴公共部門(mén)的時(shí)候和滴滴一位技術(shù)大牛相談甚歡,雖然我只有三年工作經(jīng)驗(yàn),但他對(duì)我還是很認(rèn)可的,并給我發(fā)了一個(gè)難以拒絕的 offer。
來(lái)到滴滴的公共部門(mén),讓我體驗(yàn)到在大公司里創(chuàng)業(yè)的感覺(jué)。作為這個(gè)部門(mén)的第一個(gè)前端,這里的基建幾乎是零,部門(mén)經(jīng)理第一次找我聊天,跟我說(shuō)的也就是我們大概要做什么樣的東西,你看著搞吧。
百度的基礎(chǔ)設(shè)施是相當(dāng)完善的,從項(xiàng)目的開(kāi)發(fā)到最終上線,都有成熟的系統(tǒng)。而來(lái)到滴滴這邊,幾乎什么都沒(méi)有,連前端靜態(tài)資源的回源機(jī)器,都是我去找 op 申請(qǐng)的。
來(lái)滴滴后,我的開(kāi)發(fā)方向從 PC 端轉(zhuǎn)到了移動(dòng)端,在百度做的前端框架也不再適用。當(dāng)時(shí)前端工程化在國(guó)內(nèi)興起也沒(méi)多久,這方面的布道者張?jiān)讫埨蠋煱l(fā)表了多篇博客,我讀了后深受啟發(fā)。
張?jiān)讫堅(jiān)?UC 搞了一套基于 FIS 二次開(kāi)發(fā)的 WebApp 模塊化開(kāi)發(fā)框架 Scrat。我看了后覺(jué)得在滴滴也很適用,于是我向他詳細(xì)了解了一下,就在滴滴把 Scrat 搞起來(lái)了,前后端分離的開(kāi)發(fā)模式,且用 zepto 作為運(yùn)行時(shí)增強(qiáng)的庫(kù)。
這一次經(jīng)歷讓我體會(huì)了自己一個(gè)人把整個(gè)前端工程化的方案搭起來(lái)的過(guò)程。
由于我加入的是滴滴公共部門(mén),需要編寫(xiě)很多公司級(jí)別的 JSSDK,比如 H5 統(tǒng)一登錄 JSSDK,打通移動(dòng)端各個(gè)頁(yè)面的登錄態(tài);統(tǒng)一地圖 JSSDK,對(duì)高德地圖和騰訊地圖做了封裝;JSBridge SDK,抹平了 Web 與 iOS、Android 端通訊交互差異。
這些 JSSDK 的使用者也是開(kāi)發(fā)人員,因此除了功能完善,靈活好用也是非常重要的。在開(kāi)發(fā)這些 JSSDK 的過(guò)程中,我也參考了一些曾經(jīng)看過(guò)的源碼中好的設(shè)計(jì)思想。
這些經(jīng)歷不僅讓我學(xué)會(huì)如何開(kāi)發(fā)好用的 JSSDK,也提升了我在公司內(nèi)部的影響力。
我在滴滴的主要業(yè)務(wù)是開(kāi)發(fā) WebApp 的主頁(yè),做的事情就是集合各個(gè)業(yè)務(wù)線,保證它們的順利集成和獨(dú)立上線,其中的難度和挑戰(zhàn)我?guī)啄昵霸凇兜蔚?webapp 5.0 Vue 2.0 重構(gòu)經(jīng)驗(yàn)分享》中說(shuō)過(guò),整體的架構(gòu)設(shè)計(jì)有一點(diǎn)“微前端”的味道。
這一次經(jīng)歷鍛煉了我在架構(gòu)設(shè)計(jì)方面的能力,以及對(duì)外溝通的能力。
由于想回老家發(fā)展,18 年我從滴滴離職加入了現(xiàn)在的公司 Zoom。
其實(shí)從 12 年畢業(yè)的時(shí)候,我就一直在關(guān)注老家的就業(yè)機(jī)會(huì),但合肥這個(gè)二線城市并沒(méi)有好的互聯(lián)網(wǎng)公司,直到后面聽(tīng)說(shuō) Zoom 這家公司還不錯(cuò),我就在朋友的推薦下面試入職了 Zoom。
說(shuō)到回老家發(fā)展,這里要多說(shuō)一句,除了一直關(guān)注老家的就業(yè)機(jī)會(huì),我給自己定的目標(biāo)也是以一個(gè)技術(shù)專(zhuān)家的身份回去。
在 18 年左右的時(shí)候,我就有一種感覺(jué),至少在前端這個(gè)領(lǐng)域我不太需要?jiǎng)e人的指導(dǎo)了,我靠自己就可以持續(xù)學(xué)習(xí)新的技術(shù)為我所用。直白一點(diǎn)說(shuō)就是在北京技術(shù)已經(jīng)學(xué)夠了,可以回去建設(shè)家鄉(xiāng)了。
來(lái)到 Zoom 后,我對(duì) Zoom Web 項(xiàng)目的前端開(kāi)發(fā)現(xiàn)狀做了充分的研究,分析其中的痛點(diǎn)和問(wèn)題,然后結(jié)合 Zoom Web 產(chǎn)品的特點(diǎn)我設(shè)計(jì)了一整套前后端分離的架構(gòu)設(shè)計(jì)方案,包括了項(xiàng)目初始化、本地開(kāi)發(fā)、聯(lián)調(diào)、測(cè)試、上線等各個(gè)環(huán)節(jié),并在多個(gè)項(xiàng)目中落地。
在這個(gè)過(guò)程中,我還產(chǎn)出了很多工具和插件。通過(guò)新的架構(gòu)方案,前端可以擁有最先進(jìn)的的開(kāi)發(fā)體驗(yàn),極大提升了開(kāi)發(fā)工作效率;從項(xiàng)目部署角度,前端可以獨(dú)立發(fā)布部署項(xiàng)目,從龐大的 Web 工程中解耦,可以支撐項(xiàng)目的快速迭代、灰度發(fā)布等。
同時(shí),我還基于 ElementUI fork 出 ZoomUI,并致力解決 Accessibility 問(wèn)題和性能優(yōu)化,另外除了基礎(chǔ)組件之外,我們還針對(duì)一些業(yè)務(wù)場(chǎng)景設(shè)計(jì)了業(yè)務(wù)組件,極大提升開(kāi)發(fā)效率。
除了做前端架構(gòu)和公共組件,我也獨(dú)立負(fù)責(zé)了一些復(fù)雜的業(yè)務(wù)開(kāi)發(fā),也經(jīng)常幫助同事解決各種技術(shù)方面的疑難雜癥。雖然我已經(jīng)工作多年,但仍然堅(jiān)持在一線寫(xiě)碼,并樂(lè)此不疲。
其實(shí)回顧我這些年的工作,不難發(fā)現(xiàn),除了日常業(yè)務(wù)開(kāi)發(fā),我還做了很多不一樣的活,嘗試了不同的方向,每一年我都很有收獲。
但實(shí)際上我也并不是一路順風(fēng)順?biāo)?,因?yàn)楹芏鄷r(shí)候做的事情對(duì)當(dāng)時(shí)的自己都是有一定挑戰(zhàn)的,也會(huì)遇到很多困難,有些時(shí)候也是很痛苦的,甚至需要摸著石頭過(guò)河。不過(guò)一旦克服了這些困難,我會(huì)有一種開(kāi)竅的感覺(jué),也會(huì)非常有成就感,技術(shù)也得到了提升。
除了工作之外,業(yè)余時(shí)間我也發(fā)揮余熱,比如做課程、寫(xiě)書(shū)和寫(xiě)文章,它們?cè)诮o我?guī)?lái)額外收入同時(shí),也提升了我的能力。
在做這些事情的過(guò)程中,我把 Vue.js 源碼都翻爛了,也反哺了我的工作。比如為了支持 CSP,我把 Vue.js 2.6.11 版本魔改并支持了 CSP;我還研究了 Vue.js 源碼的一些性能優(yōu)化技巧,應(yīng)用到我的開(kāi)發(fā)工作中。
我的理念是掙外快可以,但掙外快的過(guò)程中一定要提升自己,否則就是在浪費(fèi)時(shí)間。當(dāng)然,做這些事情前提是你的技術(shù)能力已經(jīng)達(dá)到一定程度了,如果你還處于初中級(jí)的水平,且自學(xué)能力不強(qiáng)的話,我非常推薦去買(mǎi)一些付費(fèi)課程學(xué)習(xí)。
對(duì)于我而言,是不存在 35 歲危機(jī)了,因?yàn)槲夷軌虺掷m(xù)為公司帶來(lái)價(jià)值,反過(guò)來(lái)我的公司也是非常需要前端領(lǐng)域的技術(shù)專(zhuān)家。而且我加入的是一家快速發(fā)展的公司,公司的業(yè)務(wù)在行業(yè)內(nèi)領(lǐng)先,現(xiàn)金流也非常充裕,我不用擔(dān)心公司會(huì)出現(xiàn)什么問(wèn)題。此外,公司的工程師文化氛圍我也非常喜歡,WLB 的節(jié)奏也舒服,我在公司繼續(xù)工作十幾年也沒(méi)啥問(wèn)題。
即使我真的因?yàn)槟承┑脑虿坏貌浑x開(kāi)現(xiàn)在這家公司,以我的經(jīng)驗(yàn)和技術(shù)能力相信很多優(yōu)秀的公司也會(huì)向我拋出橄欖枝。
普通人的成長(zhǎng)
可能一些人看到這里會(huì)說(shuō):老黃你也太凡爾賽了,又不是人人都像你一樣畢業(yè)就能進(jìn)大公司。沒(méi)錯(cuò),可能我的讀者有部分還沒(méi)進(jìn)過(guò)大公司,學(xué)歷也很一般,那么這些人想要成長(zhǎng),想度過(guò) 35 歲危機(jī),該怎么辦?
如果你恰好是這些人中的一員,在我回答這個(gè)問(wèn)題之前,你先想清楚兩件事情:你是否真的熱愛(ài)寫(xiě)代碼?你愿意付出更多的努力嗎?如果你做不到這兩點(diǎn),那么大概率到 35 歲還是一個(gè)平庸的代碼熟練工。
很殘酷吧,但現(xiàn)實(shí)就是如此。首先為什么要熱愛(ài)寫(xiě)碼,因?yàn)榕d趣驅(qū)動(dòng)還是很重要的,它能驅(qū)使著你主動(dòng)學(xué)習(xí),也能讓你在遇到困難和挑戰(zhàn)時(shí)堅(jiān)持下去。
其次為什么需要付出更多的努力,因?yàn)橄啾扔谀切?985、211 畢業(yè)的應(yīng)屆生,你的起點(diǎn)已經(jīng)落后了。他們?cè)趯W(xué)生階段已經(jīng)足夠努力,而且很可能已經(jīng)養(yǎng)成了好的學(xué)習(xí)習(xí)慣,如果你想追趕他們,不付出比他們更多的努力幾乎是不可能的。
我這并不是在制造焦慮,而是讓你們明白一個(gè)道理,沒(méi)有人能隨隨便便的成功,各行各業(yè)都是如此,那些你眼中的大佬、成功人士背后付出的辛苦只有他們自己能體會(huì)到。
那么具體該怎么做呢,我在《解密初、中、高級(jí)程序員的進(jìn)化之路(前端)》和《如何成為公司獨(dú)當(dāng)一面的工程師》 這兩篇文章中介紹了很多方法,雖然是多年前寫(xiě)的文章,但這些方法仍然適用。
知道自己該怎么做后,最好還要列一個(gè)計(jì)劃,在什么時(shí)間內(nèi)要達(dá)成一個(gè)什么樣的成長(zhǎng)目標(biāo)。隨著年齡的增長(zhǎng),特別是成家后,一些瑣事確實(shí)會(huì)分散我們一部分精力,所以你最好要在 30 歲之前成為一個(gè)資深及以上級(jí)別的研發(fā)的工程師。
大公司需要什么樣的人才
如果你沒(méi)有在大公司待過(guò),我的建議還是最好能加入一家大公司工作幾年。相比于小公司,大公司往往在薪資待遇、人才培養(yǎng)、晉升機(jī)制等方面都更勝一籌。而且大公司有很多厲害的人,跟他們一起共事,你會(huì)學(xué)的更多,成長(zhǎng)更快。
那么大公司希望招什么樣的人才呢?
對(duì)于應(yīng)屆生而言,喜歡招學(xué)歷背景好的,有實(shí)習(xí)經(jīng)驗(yàn)的,技術(shù)扎實(shí)的,學(xué)習(xí)能力強(qiáng)的,主觀能動(dòng)性高的。
對(duì)于社招而言,喜歡招有大公司背景的,工作經(jīng)驗(yàn)豐富的,技術(shù)扎實(shí)的,學(xué)習(xí)能力強(qiáng)的,主觀能動(dòng)性高的。
可以看到,技術(shù)扎實(shí),學(xué)習(xí)能力強(qiáng),主觀能動(dòng)性高這三個(gè)素質(zhì),無(wú)論校招還是社招,都是大公司看重的。
技術(shù)扎實(shí)
所謂技術(shù)扎實(shí)就是你熟練掌握了你的專(zhuān)業(yè)領(lǐng)域內(nèi)的技術(shù)知識(shí)。想要做到技術(shù)扎實(shí),就需要不斷地理論學(xué)習(xí)和實(shí)踐論證。
你可以通過(guò)看書(shū)、看視頻等方式學(xué)習(xí),然后在工作中去應(yīng)用你學(xué)習(xí)到的知識(shí)。因此我們學(xué)習(xí)的技術(shù)知識(shí),也應(yīng)該和工作內(nèi)容相關(guān)。
顯然,如果想要技術(shù)全面,你可能需要嘗試不同的工作內(nèi)容,然后通過(guò)反復(fù)的學(xué)習(xí)和工作論證去強(qiáng)化你的技術(shù)。
學(xué)習(xí)能力強(qiáng)
對(duì)于應(yīng)屆生來(lái)說(shuō),好的學(xué)歷背景和在校成績(jī)就是學(xué)歷能力強(qiáng)的一種體現(xiàn);對(duì)于有工作經(jīng)驗(yàn)的來(lái)說(shuō),能夠快速學(xué)習(xí)并掌握一門(mén)新技術(shù)是學(xué)習(xí)能力強(qiáng)的表現(xiàn)。
那么,如何提升學(xué)習(xí)能力呢?我的經(jīng)驗(yàn)就是多思考,多總結(jié),刨根問(wèn)底。這就是為什么我喜歡看各種源碼的原因,從源碼中我不但能了解各種技術(shù)背后的實(shí)現(xiàn)原理,還能學(xué)習(xí)到很多好的編程思想和開(kāi)發(fā)技巧,并總結(jié)為我所用。
不同技術(shù)棧之間也會(huì)有一些相通或者是借鑒的地方,因此精通一門(mén)技術(shù)棧,你再學(xué)習(xí)其它的技術(shù)會(huì)容易的多。
主觀能動(dòng)性高
主觀能動(dòng)性高體現(xiàn)在會(huì)主動(dòng)承擔(dān)一些有技術(shù)挑戰(zhàn)性的工作,以及主動(dòng)去學(xué)習(xí)和研究一些新技術(shù)。
主觀能動(dòng)性高的人通常有一個(gè)特點(diǎn),就是對(duì)技術(shù)感興趣,他們樂(lè)于并崇尚用技術(shù)的手段去解決問(wèn)題。他們要么活躍在開(kāi)源社區(qū),要么經(jīng)常發(fā)表高質(zhì)量的技術(shù)博文。
這類(lèi)人基本上把職業(yè)當(dāng)做了愛(ài)好,所以在工作上的產(chǎn)出有些時(shí)候會(huì)超出預(yù)期,這樣的人才企業(yè)怎能不愛(ài)呢?
這些事情最好別做
前面都在跟你聊應(yīng)該怎么做,接下來(lái)我想跟你分享哪些事情最好別做。
上班摸魚(yú)
很多人抱怨活干不完,需要經(jīng)常加班,實(shí)際上大部分都是因?yàn)楣ぷ餍实汀9ぷ餍实屯ǔS袃蓚€(gè)原因,一是自身技術(shù)能力不夠,導(dǎo)致開(kāi)發(fā)效率低下,還會(huì)經(jīng)?;〞r(shí)間修 bug;另一個(gè)就是上班摸魚(yú),摸魚(yú)不僅僅浪費(fèi)大量時(shí)間,還會(huì)導(dǎo)致工作不夠?qū)W?,影響工作效率?/p>
技術(shù)能力是需要花時(shí)間提升的,你沒(méi)有辦法突然就變成一個(gè)技術(shù)大牛,但是上班摸魚(yú)是可以杜絕的,最好給自己設(shè)置一個(gè)免打擾時(shí)間專(zhuān)心 coding,提升自己的工作效率。
一旦你的工作效率提升了,那么你幾乎是不用加班的。我的九年工作經(jīng)歷就很少加班,而且我只接受偶爾加班,比如突擊做某個(gè)緊急項(xiàng)目,但這不能成為常態(tài)。如果加班成為常態(tài),你就應(yīng)該思考是自身的問(wèn)題還是公司的問(wèn)題,如果是公司問(wèn)題,果斷換個(gè)工作吧。
炒股
最近幾年 A 股行情不錯(cuò),很多人都開(kāi)始炒股。股市的 721 規(guī)律,也就是 7 虧 2 平 1 盈,大部分散戶(hù)都有一個(gè)錯(cuò)覺(jué),覺(jué)得自己就是那個(gè)盈利的。
但現(xiàn)實(shí)是很殘酷的,就算行情最好的 2015 年牛市,大部分散戶(hù)都是虧錢(qián)的。不論從消息面、資金、專(zhuān)業(yè)程度,散戶(hù)都完全不是主力資金的對(duì)手,還喜歡往里面沖,這不是在給主力送錢(qián)嗎?
我自己也有炒,但是我對(duì)股市研究不深,個(gè)人感覺(jué)我的行為和賭博沒(méi)啥區(qū)別。雖然我炒股是賺錢(qián)了的,但是我非常清楚自己之所以賺錢(qián)完全都是靠運(yùn)氣,憑運(yùn)氣賺的錢(qián)最后還會(huì)憑實(shí)力虧掉的,所以我賺了一波后果斷清倉(cāng)不玩了。
如果你只是那種要代碼的非專(zhuān)業(yè)選手,我是非常不建議炒股的。一是因?yàn)椴粚?zhuān)業(yè),不是主力的對(duì)手,就好比你只是一個(gè)拳擊愛(ài)好者,但會(huì)站在擂臺(tái)和一個(gè)專(zhuān)業(yè)拳手打拳嗎?另一個(gè)原因是炒股非常分散精力,你會(huì)經(jīng)常忍不住去盯盤(pán),浪費(fèi)時(shí)間。
炒股波動(dòng)太大了,你賺錢(qián)了,有些時(shí)候比自己上班的收入還高,就會(huì)產(chǎn)生一種上班不如炒股的錯(cuò)覺(jué),但稍微多想一想就知道,國(guó)家怎么可能允許散戶(hù)隨隨便便炒股就能賺錢(qián),那樣的話誰(shuí)還上班?事實(shí)上股市大部分時(shí)間都是在跌,你看著資金的賬戶(hù)一點(diǎn)點(diǎn)地變少,還是非常影響心情的。
你可能會(huì)說(shuō),那我多花點(diǎn)時(shí)間研究炒股唄。如果你資金不足 20w,你花時(shí)間研究炒股帶來(lái)的收益是遠(yuǎn)不如你花時(shí)間投資自己成長(zhǎng)帶來(lái)的收益多的。
我并不反對(duì)投資理財(cái),我的建議是專(zhuān)業(yè)的事情交給專(zhuān)業(yè)人士做,你可以利用閑錢(qián)去定投一些基金,買(mǎi)一些理財(cái)產(chǎn)品,并不需要花多少時(shí)間在上面。
過(guò)度娛樂(lè)
工作勞累了一天,你回到家放松放松,勞逸結(jié)合是一件很好的事情,但是一定要注意一個(gè)度。如果回到家,刷一晚上短視頻,或者是打一晚上游戲,這就都屬于過(guò)度娛樂(lè)。
我的建議是分配一些時(shí)間來(lái)學(xué)習(xí)充充電,并做些運(yùn)動(dòng)鍛煉身體,這才是健康的生活方式。
其它出路
我本人偏愛(ài)寫(xiě)碼,因此我會(huì)選擇技術(shù)專(zhuān)家的發(fā)展路線。除此之外,做技術(shù)管理,自主創(chuàng)業(yè)也是程序員的一個(gè)出路。
但是不管是做技術(shù)管理,還是自主創(chuàng)業(yè),都是建立在你在技術(shù)這個(gè)方向已經(jīng)做的足夠久,且有不錯(cuò)的技術(shù)能力的基礎(chǔ)上的。
對(duì)于技術(shù)管理來(lái)說(shuō),管理者的技術(shù)能力越強(qiáng),底下的人就會(huì)對(duì)管理者越認(rèn)可;對(duì)于自主創(chuàng)業(yè)來(lái)說(shuō),對(duì)技術(shù)的要求會(huì)更高和更全面。
當(dāng)然,由于我對(duì)這兩部分的認(rèn)知有限,就不展開(kāi)講了。但是要記住,程序員的三大發(fā)展方向:技術(shù)專(zhuān)家、技術(shù)管理、自主創(chuàng)業(yè),前期都需要足夠多的技術(shù)積累。
寫(xiě)在最后
通篇下來(lái),核心思想就是只要技術(shù)足夠強(qiáng),就不會(huì)有 35 歲危機(jī),畢竟程序員就是吃技術(shù)這碗飯的,技術(shù)強(qiáng)的人怎么會(huì)丟飯碗呢?所以趁著自己還年輕,應(yīng)該多努力花時(shí)間去提升自己的技術(shù),這樣等到你 35 歲的時(shí)候,不僅不用擔(dān)心工作的問(wèn)題,還可以有時(shí)間陪陪家人,享受生活。
當(dāng)然想要提升技術(shù)并非易事,要敢于跳出自己的舒適區(qū)追求進(jìn)步,要能熬得住突破瓶頸長(zhǎng)時(shí)間的寂寞,要多年如一日的堅(jiān)持。
此外,加入一家好的企業(yè)也很重要,比如我司(有想來(lái)的歡迎私信留言)。但是加入的前提是你的技術(shù)能達(dá)到企業(yè)用人的標(biāo)準(zhǔn)。因此工作中的技術(shù)積累非常重要,不要等機(jī)會(huì)來(lái)了,你卻抓不住。
相關(guān)閱讀
《滴滴 webapp 5.0 Vue 2.0 重構(gòu)經(jīng)驗(yàn)分享》:https://github.com/DDFE/DDFE-blog/issues/13
《解密初、中、高級(jí)程序員的進(jìn)化之路(前端)》
往期推薦

Vite 太快了,煩死了,是時(shí)候該小睡一會(huì)了。

如何實(shí)現(xiàn)比 setTimeout 快 80 倍的定時(shí)器?

萬(wàn)字長(zhǎng)文!總結(jié)Vue 性能優(yōu)化方式及原理

90 行代碼的 webpack,你確定不學(xué)嗎?
如果你覺(jué)得這篇內(nèi)容對(duì)你挺有啟發(fā),我想邀請(qǐng)你幫我三個(gè)小忙:
點(diǎn)個(gè)「在看」,讓更多的人也能看到這篇內(nèi)容(喜歡不點(diǎn)在看,都是耍流氓 -_-)
歡迎加我微信「huab119」拉你進(jìn)技術(shù)群,長(zhǎng)期交流學(xué)習(xí)...
關(guān)注公眾號(hào)「前端勸退師」,持續(xù)為你推送精選好文,也可以加我為好友,隨時(shí)聊騷。

如果覺(jué)得這篇文章還不錯(cuò),來(lái)個(gè)【轉(zhuǎn)發(fā)、收藏、在看】三連吧,讓更多的人也看到~

