工具 VS 業(yè)務(wù)的 Offer,我選擇了后者
最近面了一些公司,拿到一些 offer,這些 offer 的崗位做的事情可以分為工具、業(yè)務(wù)兩種,最終我選擇了業(yè)務(wù)開發(fā)的 offer。這篇文章來(lái)講下原因。
前面一篇文章講過前端工作的五個(gè)層次:引擎層、runtime 層、工具層、業(yè)務(wù)層、搭建層。
- 引擎層:定制容器,包括 JS 引擎、渲染引擎等。一般是 C++ 來(lái)做,這類工作主要集中在跨端領(lǐng)域。
- runtime 層:定制前端框架、SDK。小程序和跨端引擎等都要對(duì)接前端框架,需要做一些修改。音視頻等領(lǐng)域需要專業(yè)的團(tuán)隊(duì)提供 SDK 供業(yè)務(wù)開發(fā)用。
- 工具層:定制工具鏈。包括編譯、調(diào)試、文檔等。處理的對(duì)象是代碼,為業(yè)務(wù)開發(fā)提供工具支持。
- 業(yè)務(wù)層:實(shí)現(xiàn)產(chǎn)品需求?;谇岸丝蚣芎凸ぞ哝溚瓿僧a(chǎn)品經(jīng)理的需求。
- 搭建層:實(shí)現(xiàn)搭建工具,支持拖拽的方式生成代碼,并投放到不同環(huán)境。服務(wù)對(duì)象是非開發(fā)者。
這是前端工作的大概分類。
引擎層一般是 c++ 開發(fā)或者懂 c++ 的前端開發(fā)來(lái)做,做 runtime 層的定制前端框架、做 SDK 的人也很少,大部分前端還是做業(yè)務(wù)層的開發(fā),還有一小部分人做工具層的開發(fā)。(搭建層其實(shí)和工具層做的東西類似,只不過服務(wù)對(duì)象不是開發(fā)者)
其實(shí)我個(gè)人的話,最開始是做業(yè)務(wù)開發(fā),但是近幾年更多是做一些工具層的事情,比如在阿里跨端團(tuán)隊(duì)就是專門做工具鏈的,包括:
- 編譯:把源碼編譯成跨端引擎能跑的代碼,中間做各種 lint 和 transform。
- 調(diào)試:對(duì)接 chrome devtools 來(lái)調(diào)試跨端引擎的代碼,還有其他基于 websocket 的調(diào)試服務(wù)
- IDE:修改 VSCode 源碼來(lái)定制 UI,集成其他工具。打造一系列 VSCode 插件,輔助開發(fā)。
- 文檔和代碼生成:通過編譯的方式,由 ts 生成 markdown、c++ 和 ios 的頭文件、android 的抽象類等
因?yàn)橄肴トA為做編程語(yǔ)言才離職的,但最終沒去,所以又面了一些前端的崗位,拿到了一些 offer。
這些 offer 的崗位按照前面的前端工作層次劃分,分為 3 類:
- 工具層:繼續(xù)做編譯、調(diào)試、IDE 的工具鏈,包括小程序的和 React Native 的。
- 搭建層:做可視化搭建和投放的工具。
- 業(yè)務(wù)層:常規(guī)業(yè)務(wù)開發(fā)。
最終,我選擇了去一家外企做業(yè)務(wù)開發(fā),原因有兩個(gè):
- 做工具鏈主要是寫 Node.js,寫組件少一些,離瀏覽器上的前端技術(shù)遠(yuǎn)一些。而且服務(wù)的對(duì)象是開發(fā)者,不是最終產(chǎn)品的用戶,離用戶遠(yuǎn)一些。我想離瀏覽器、離用戶近一些,想提升下寫組件的技能,所以想做去業(yè)務(wù)開發(fā)。
- 外企工作時(shí)長(zhǎng)相對(duì)短一些,大概是 10 6 5 的節(jié)奏,這樣每天自己可用來(lái)學(xué)習(xí)和寫文章的時(shí)間會(huì)多幾個(gè)小時(shí)。
其實(shí),主要還是第二個(gè)原因,比起工作內(nèi)容,我覺得有更多自己的時(shí)間更重要一些。因?yàn)槲乙呀?jīng)具備了在工具領(lǐng)域自主探索的能力,并不需要靠做工具的工作來(lái)進(jìn)入這個(gè)領(lǐng)域。
當(dāng)然,這是我個(gè)人的一個(gè)選擇,并不是說(shuō)也建議大家這樣選。
如果要給建議的話,大概有 2 個(gè):
- 在三年左右的時(shí)候最好能進(jìn)入一家大廠,在大廠你的視野和成長(zhǎng)速度和在小公司是完全不一樣的。比如阿里的前端四大方向:IDE、Serverless、搭建、智能化,這些小公司基本不會(huì)做,只有大廠能接觸到。而且內(nèi)部也有很多技術(shù)分享,可以開闊視野,豐富你自己的發(fā)展方向。
- 大廠 titile 固然可以鍍金,但是更好的鍍金方式應(yīng)該是你的作品。所以下一個(gè)目標(biāo)應(yīng)該是打造你個(gè)人的代表作,或者是某個(gè)業(yè)務(wù)產(chǎn)品、或者是某個(gè)工具等都可以。
這篇文章主要是講了前端工作的分類和我對(duì)工具 or 業(yè)務(wù)的 offer 的選擇。
每個(gè)人的經(jīng)歷不同,想法不同,做的選擇也會(huì)不同。如果讓你來(lái)選擇,你會(huì)想做業(yè)務(wù)多一點(diǎn),還是做工具多一點(diǎn)呢?
【編輯推薦】