一個草根前端人的焦慮
大家好久不見,雖然變成了年更博客,但是我還是有堅持在用文字來記錄我的學習和生活的。
首先給大家安利 Notion 這款筆記應(yīng)用,這一年它確實給我的生活帶來很多改變,舉一些應(yīng)用例子:
- 博客。以前我習慣用 Markdown + Github 來維護我的博客
- 日常學習筆記、文檔。之前習慣用 MindNode 思維導圖
- 任務(wù)管理,不管是個人時間管理還是團隊項目協(xié)作。
- 寫日記、周報、總結(jié)。之前用 Day One
- 記賬等等
除了 VSCode,Notion 是我第二個重度依賴的工具。
功能強大倒是其次,重要的是我可以隨時隨地去寫東西,只要打開一個網(wǎng)頁就可以了,我可以丟棄掉其他雜七雜八的工具。這種便捷性,讓你找不到借口不去寫點東西。
它就像一張白紙,會讓人有一種提筆去寫寫畫畫的欲望。

實際上我現(xiàn)在很多生產(chǎn)工作只要一個瀏覽器就可以完成了。比如我最近就在使用 Code-Server,實現(xiàn)了在家無縫加班。再配合 Docker,將開發(fā)環(huán)境制作成鏡像,也可以快速地構(gòu)建一個開發(fā)環(huán)境。
回到正題
今天為什么又想起要寫文章呢? ?主要是早上看到一篇公眾號推送:Deno 沖上榜首,Vue.js 首次屈居第二,JavaScript 2020 年度“新起之秀”都有誰?
Vite、ESBuild、SWC、TailWind、Snowpack、Vue3.0、Recoil、Deno、Lowcode...
不管是前端領(lǐng)域、還是技術(shù)領(lǐng)域、還是娛樂圈、每年都有涌現(xiàn)出一大堆的新玩意、每年都有新的鮮肉火了。
以往一年一屆的技術(shù)大會,現(xiàn)在早早聊 一年要辦十幾次。
朋友圈轉(zhuǎn)發(fā)的各種課程海報...
這是多角度、全方位攻擊啊。我是不是落伍了? 我拿什么跟別人競爭?命嗎?
如何看待新的技術(shù)?
我在面試時看到簡歷上說精通 jQuery、熟練掌握 Vue、React。我通常會問這樣一個問題:
jQuery 當年那么火,為什么現(xiàn)在被 取代了? 解決了什么問題?
從歷史上看,所有的技術(shù)翻新和淘汰都是必然的,包括我們自己,首先我們應(yīng)該有一個開放的心態(tài)去看待新技術(shù)。
其次現(xiàn)在是一個網(wǎng)紅時代,技術(shù)圈也是。很多技術(shù)可能也經(jīng)過了過度的包裝和營銷,讓人眼花繚亂,容易盲目隨從。
這值得警惕,不是所有技術(shù)我們都值得我們花大量時間去琢磨,亂點技能樹的。隨波逐流,容易讓人舍本求末,疲于奔命,流失核心競爭能力。
所以說,怎么看待新技術(shù),先問自己這些問題:
這是啥玩意?
解決什么問題?
要回答這個問題,你需要對相關(guān)技術(shù)的歷史有所了解。以史為鑒,可以知興替。如果你是一個有經(jīng)驗的開發(fā)者,對歷史的了解是你的優(yōu)勢,至少你更容易看到問題的本質(zhì)。
說到這里,再推薦一本書 doodlewind 翻譯的 JavaScript 20 年
能不能解決你現(xiàn)在面臨的問題? ?如果不能解決你現(xiàn)在的問題,大概率你也用不上它,如果你精力有限,姑且可以放一邊,以后你需要它的時候,如果它真正有用,自然會出現(xiàn)在你眼前。
因為從實用主義角度,你沒有機會實踐它,你很快也會忘記它。
如果你很有興趣,那么你可以深入去看一下怎么解決的?
- 架構(gòu)是怎樣的,思想是什么?最重要的還是思想呀
- 再深一點,整體流程是怎么走的?
- 如果你要成為這方面的專家那就得深入去學習源碼了
如果沒搞明白上述問題,就很容易落入陷阱、走冤枉路。這種例子比比皆是,比如微服務(wù)、中臺比較火,大家都紛紛模仿,不搞這套就不牛逼了,搞到最后填不完的坑...
一方面可能是技術(shù)本身不成熟,另一方面是某些技術(shù)一旦離開了自己土壤,就很難存活。
哪些東西值得學習?
計算機科學基礎(chǔ)。越核心的東西、更新的頻率越低,這是每個技術(shù)人的內(nèi)功。像張無忌一樣,內(nèi)功越強,雜七雜八的武功可不都是信手拈來?
沉淀下來的東西。
不管什么時候,新技術(shù)往往是成群出現(xiàn)的、屢見不鮮。比如之前各種各樣的 CSS-in-js 庫、各種狀態(tài)管理庫、各種跨平臺小程序框架、視圖框架...
真的是你需要的嗎?如果不是要解決你的燃眉之急,尚且先慢下來等待他們自行洗牌,最后能活下來的才是你應(yīng)該學習的。
更進一步的是形成屬于自己知識體系,對知識進行歸納和內(nèi)化、找出知識之間的關(guān)聯(lián)。當分散的點聯(lián)系成了網(wǎng)絡(luò),等待下一步質(zhì)變。
深度還是廣度?
知乎上面有很多類似的問題:
對于年輕的程序員,知識的深度還是廣度比較重要?
知識的廣度和深度哪個更重要?
深度重要還是廣度重要?
...
顯然這是很多人的疑問
相較于糾結(jié)深度還是廣度,一個更重要的原則是:**不要給自己設(shè)置邊界。**這也是很多人容易陷進去的誤區(qū),舉一些生活中常見的例子:
- 我安安靜靜敲我的代碼就行了,業(yè)務(wù)需求問題我不關(guān)心
- 我就按照原型實現(xiàn)了頁面,用戶怎么使用我不管
- 任務(wù)沒完成是后端問題,后端接口還沒提供,前端沒辦法干活
- 老是加班,項目還是逾期了,是 TeamLeader 的事情,我已經(jīng)做了我該做的。
- 需求評審會議、技術(shù)評審會議像是后端和產(chǎn)品的相聲專場,跟我關(guān)系不大,好浪費時間
- ...
這應(yīng)該是新時代的井底之蛙吧。給自己設(shè)置邊界,只會讓自己處于一種被動的狀態(tài),這不僅限制自己的發(fā)展、限制自己的眼界,遇到事情也會互相推諉;抗風險能力也會比較差,更容易被取代。
研發(fā)效率破局之道 中一個重要的關(guān)鍵詞就是 “打破豎井”,旨在我們要打破自己的邊界,站在更高的視角、或者全局的角度看待問題。你會發(fā)現(xiàn)現(xiàn)在很多流行的技術(shù)和實踐都在體現(xiàn)這一點,比如:
- 全棧工程師。全棧開發(fā)就是讓工程師不再只是對某一個單一職能負責,而是對最終產(chǎn)品負責。全棧開發(fā)是一個很好的抓手,逐步提高全棧開發(fā)的程度,大家的目標自然就會對齊,從而主動去提高,那其他方面的提高就容易得多了。
- DevOps、SRE
- 開發(fā)左移、開發(fā)右移、測試左移、測試右移
在打破豎井后,上面那些問題可能會這樣子發(fā)展:
我安安靜靜敲我的代碼就行了,業(yè)務(wù)需求問題我不關(guān)心
你會去參與項目研發(fā)的整個過程,包括需求評審、領(lǐng)域建模、設(shè)計、開發(fā)、測試、部署上線等等。
一來你對需求信息更加清楚,避免信息在層層傳遞的過程中出現(xiàn)誤差,導致閉門造車;
二來可以發(fā)現(xiàn)流程中的各種瓶頸,做出針對性的優(yōu)化和建議;
三是,了解這些信息有利于后續(xù)的開發(fā)計劃、優(yōu)先級劃分
四是,緊密的溝通和協(xié)作,可以提高研發(fā)的運作效率,學習各自的優(yōu)點。比如產(chǎn)品面向用戶的思維、后端業(yè)務(wù)抽象能力、測試的縝密細致...
最后,這顯然也可以鍛煉業(yè)務(wù)能力
我就按照原型實現(xiàn)了頁面,用戶怎么使用我不管
Eating your own dog food, ?把自己當成用戶,從用戶角度分析需求是否合理?用戶體驗是否友好?
關(guān)注需求背后要解決的業(yè)務(wù)問題,而不是產(chǎn)品經(jīng)理的需求。如果你想擺脫被產(chǎn)品經(jīng)理支配的恐懼,那么你就需要在往上游走,找出原始的業(yè)務(wù)需求,嘗試自己去理解和分析,再配合技術(shù)的視角判斷產(chǎn)品給出的方案合不合理,是不是產(chǎn)品自己YY拍腦袋的?嘗試在產(chǎn)品需求上提出自己的看法,改進甚至拒絕不合理的需求。
任務(wù)沒完成是后端問題,后端接口還沒提供,前端沒辦法干活
前后端協(xié)作出現(xiàn)了哪些問題?能否要制定一些協(xié)作規(guī)范?例如文檔先行、API Mock、接口自動化測試
老是加班,項目還是逾期了,是 TeamLeader 的事情,我已經(jīng)做了我該做的。
項目在流程上出現(xiàn)了什么問題?研發(fā)的瓶頸是什么?怎么提高各個環(huán)節(jié)的研發(fā)效率?反饋機制是否完善?溝通是否存在問題?問題為什么不能提前暴露?哪些可以自動化、提高流程效率?
需求評審會議、技術(shù)評審會議像是后端和產(chǎn)品的相聲專場,跟我關(guān)系不大,好浪費時間
不給自己設(shè)置職能邊界,嘗試左移和右移,去參與上游和下游的流程。
業(yè)務(wù)能力很重要,技術(shù)人本來不就是用技術(shù)去實現(xiàn)業(yè)務(wù)自動化的?
很多公司的后端很重視在編碼前需求分析、設(shè)計和評審。在前面的環(huán)節(jié)把該考慮的都考慮了,后面可以少走點彎路。將業(yè)務(wù)流程梳理清楚了、建立合理的業(yè)務(wù)模型、再映射到表結(jié)構(gòu)、后面的實現(xiàn)基本就是照葫蘆畫瓢了。
這些都是值得我們學習的。
...
在打破自己的豎井之后再去談深度和廣度問題。
很顯然,兩者是不沖突的,我們需要廣度、這不僅是指技術(shù)上面的廣度、還有生活、溝通協(xié)作、管理、理財?shù)溶浖寄苌厦娴膹V度。我們也需要深度,這提現(xiàn)了你的專業(yè)水平,是你的核心競爭能力。
當然,像 Morgan 說的更理想的是 M 型人才,在多個領(lǐng)域都有深度,這種可遇不可求。

也許這里的問題在于大部分人并不清楚自己要往哪個方向發(fā)展,眉毛胡子一把抓什么都學,祖國需要我去哪里我就去哪里。你也是這樣嗎?
就前端的細分領(lǐng)域就有跨平臺、Iot、數(shù)據(jù)可視化、NodeJS...
這些領(lǐng)域也不斷在擴展、以及和其他領(lǐng)域進行交匯,比如AI、Serverless、大數(shù)據(jù)...
怎么選擇還是看自己的喜好,以及是否有平臺進行實踐。說到底還是那句話,不要給自己設(shè)置邊界。
除了避免主動性的邊界設(shè)置,也要提防被動的信息繭房。這是后話了
核心競爭能力是什么?
對于技術(shù)人,技術(shù)是立身之本。但是想想自己掌握的技術(shù)門檻并沒有那么高啊?你會JS、HTML、Vue、React,別人無基礎(chǔ)培訓幾個月出來的也可以‘一把梭’。再說你老了,拿什么跟年輕人去爭福報?
這也是我經(jīng)常問自己的問題。尤其是在日復一日,每日重復擰螺絲的日子里。
對于核心競爭能力,我覺得可以分為兩個部分:
首先是硬的。即上文說的,你的技術(shù)廣度和深度,這體現(xiàn)了你的專業(yè)水平和橫移能力。這些技術(shù)深度和廣度是不斷學習和累積,不是幾個月培訓就能實現(xiàn)的。
其次是軟的,這個涉及很多方面,比較抽象。早早聊這個面試專題不錯(二次GG、早早聊記得給我打she),通過大廠招聘給我們描繪了一個優(yōu)秀技術(shù)人的畫像。加上我的理解,整理了下:
基礎(chǔ)能力
- 邏輯思維。
- 學習能力
- 溝通、協(xié)作、組織能力
扎實的專業(yè)知識、包括理論和工程
有獨特的亮點
- 對某一領(lǐng)域、某些技術(shù)有深入了解
- 業(yè)務(wù)能力。這也算一個領(lǐng)域
- 對產(chǎn)品技術(shù)全局有清晰了解,能發(fā)現(xiàn)業(yè)務(wù)及商業(yè)模式的短板,并提出解決方案
- 對公司的業(yè)務(wù)發(fā)展甚至戰(zhàn)略有獨立見解、能夠解決業(yè)務(wù)痛點、帶領(lǐng)或影響業(yè)務(wù)發(fā)展
- 清楚自己在公司的業(yè)務(wù)價值,并嘗試提升自己的業(yè)務(wù)價值。
- 能全流程參與項目業(yè)務(wù)建設(shè)(包括調(diào)研、建模、設(shè)計等);
- 清楚自己做的項目的業(yè)務(wù)目標,用戶是誰?目標是啥?你在其中有哪些貢獻,項目的結(jié)果是什么,能否用數(shù)據(jù)說明?
- 說小點 - 項目
- 說大點 - 公司
- 說遠點 - 行業(yè)
- 深度。
- 廣度。比如后端、運維、測試、跨平臺、AI等等
- 體系化。更進階的是形成一套體系化的知識網(wǎng)絡(luò),從點、線、到面
認知
- 對自己認知。明確自己的定位和業(yè)務(wù)價值,有清晰的目標和職業(yè)規(guī)劃。
- 對專業(yè)認知。是看對技術(shù)維度、深度的理解和格局。站在點上、線上還是面上、結(jié)構(gòu)化模型思維,能夠在一定的體系認知上看事情。
- 對職業(yè)的認知。對職業(yè)、職員、團隊的認識。這些會影響人的職業(yè)規(guī)劃、工作態(tài)度、責任心、團隊合作力。
- 思辨力,即洞察事實真相和思考分析的能力,能夠看到事情的本質(zhì)。
- 避免二元論認知。即非黑即白。
- 能夠舉一反三。對于同類問題能從多個角度看待,有不同的解決方案。對于同類方案,可以延伸解決其他類型問題。
自我管理、自我驅(qū)動、自我優(yōu)化能力。主動的力量
- 有明確的目標,并有可執(zhí)行計劃
- 有時間管理的意識
- 終生學習的意識
要性
- 我看阿里系招聘都很講究要性。要性是指個體主動想去參與推動、主導改變的一種過程態(tài)度、對追求落地和拿到結(jié)果的持續(xù)行為。說白了要有追求,積極向上、主動探索、主動推動改變,而不是被動執(zhí)行。
- 不局限在自己的專業(yè)分工,也要對上下游、全局有理解和思考
- 技術(shù)熱情。好奇心、 愛折騰,愛學習,愛總結(jié)。
- 自我驅(qū)動能力。自我學習、自我管理、自我優(yōu)化。
- 不甘平庸、能自我證明。不滿足于把事情做完,追求將事情做好、甚至是極致
- 總結(jié)能力。對自己、對項目、對團隊、對公司、對行業(yè)有一定的總結(jié)能力,并能夠推動進一步優(yōu)化
有輸出、有結(jié)果、有影響力。
- 這實際上也屬于自我證明,除了管理好自己、還要去影響團隊、影響業(yè)務(wù)、影響社區(qū)。
- 還有項目成果、個人產(chǎn)出
我有時候會在面試時問一些我自己也比較疑惑的問題,看他們有沒有不一樣的答案。
雖然我負責的是技術(shù)面,但我也知道,很多時候我們考察的一些基礎(chǔ)技術(shù)問題,并不能完全體現(xiàn)一個人的真正水平。因此我會嘗試多給機會讓他們表達自己,花一些時間考察他們的軟實力(或者說潛力吧)
大家身邊應(yīng)該也有挺多 一年、半年內(nèi),成長非常迅速的人,他們可能起步比較晚,后面能實現(xiàn)超越,大部分憑借著自己的要性。
我最近面試也問過這個問題,你的核心競爭能力是什么?你能做的事情可能別人畢業(yè)一兩年,培訓幾個月可能也可以做?你怎么確保自己不被取代呢?
我得到的回答大部分是學習能力強、愿意吃苦、能獨立完成...
能拿結(jié)果說明嗎?
業(yè)務(wù)能力這個在本文提過好多次了,這個單獨拎出來講,是因為業(yè)務(wù)能力對技術(shù)人來說真的非常重要,也是很多前端開發(fā)者容易忽視的點。畢竟大部分人是做業(yè)務(wù)開發(fā)的,技術(shù)最終也是服務(wù)于業(yè)務(wù),能不重要嗎?
我之前也輕視業(yè)務(wù)能力的培養(yǎng),也就是我給自己設(shè)置了邊界,覺得業(yè)務(wù)是項目經(jīng)理、產(chǎn)品、后端是事情,前端關(guān)注頁面,關(guān)注上游給你的輸入就行了。
這其實跟流水線工人有什么區(qū)別呢?
直到我換到另一個公司,他們?nèi)珕T都會參與產(chǎn)品評審、技術(shù)評審,開始我的狀態(tài)是這樣的:

會議中關(guān)鍵的幾個人,產(chǎn)品、項目負責人、后端進入心流狀態(tài) ,各種業(yè)務(wù)術(shù)語滿天飛, 有來有往,反應(yīng)迅速,爭論不休。
我發(fā)現(xiàn)自己跟不上(盡管我發(fā)現(xiàn)挺多人跟我一樣),只是旁聽、甚至走神的...
一開始我是比較抵觸的,這種會議有的一開就是幾個小時,對于進入心流狀態(tài)的人,樂此不疲, ?忘記了時間的概念。而我們這些對業(yè)務(wù)不熟悉或者關(guān)注程度不高的人會覺得浪費時間。
事后我也反省了下,主要是在自己的舒適區(qū)待久了,片面追求技術(shù),忽略了對業(yè)務(wù)能力的培養(yǎng)。
產(chǎn)品自不必說, 后端是業(yè)務(wù)的主要實現(xiàn)方,他們對業(yè)務(wù)流程的梳理、業(yè)務(wù)建模玩得很溜,自然很容易參與進去。
至于怎么提高自己的業(yè)務(wù)能力,廢話就是多去參與,站在用戶、公司、實現(xiàn)等多角度進行思考。有興趣同學可以參考文末擴展閱讀。我自知業(yè)務(wù)能力薄弱,這方面比較強的也可以提點提點。
如果非得說一下自己的核心競爭能力,我只能說是自我驅(qū)動的反省和總結(jié)、優(yōu)化能力吧。不甘現(xiàn)狀,可以讓你去發(fā)現(xiàn)和反省問題,總結(jié)和洞察問題的本因、最后再針對性地進行優(yōu)化,螺旋式地上升
生命不息、步履不停
最近的一些感想,非喜勿噴
擴展閱讀
本文提到的一些引用以及擴展閱讀
普通的程序員和大神級的程序員有什么區(qū)別?
程序員業(yè)務(wù)能力
研發(fā)效率破局之道
10x程序員工作法
前端工程師是否有成為CTO的可能?
后端同學是不是比前端同學理解業(yè)務(wù)更快?
技術(shù)人員怎樣提升對業(yè)務(wù)的理解
中臺“搞砸”簡史:成功的中臺都是相似的,失敗的中臺各有各的失敗!
技術(shù)選型指南
捕蛇者說:個人知識管理體系系列
JavaScript 20 年
心流理論
信息繭房這個概念如何理解呢?
PDCA 循環(huán)工作法/戴明環(huán)
軟技能
程序員修煉之道
最后
如果你覺得這篇內(nèi)容對你挺有啟發(fā),我想邀請你幫我三個小忙:
點個「在看」,讓更多的人也能看到這篇內(nèi)容(喜歡不點在看,都是耍流氓 -_-)
歡迎加我微信「huab119」拉你進技術(shù)群,長期交流學習...
關(guān)注公眾號「前端勸退師」,持續(xù)為你推送精選好文,也可以加我為好友,隨時聊騷。
