標籤:

橫行的前端(上)

這是篇神志不清下的胡言亂語,可能也還因為最近看了《程序員的吶喊》有點被影響,如有得罪請輕噴。

先說明橫行不是指霸道,而是說前端開發們通常都會橫向地擴展能力,而縱向地深入到某個領域的可能性可能較小。

這大概是因為,前端往往只是瀏覽器端做的事情,複雜度似乎大多數時候都是有限的——至少不太可能出現百萬級別的以上的代碼量;然後,前端乾的稍微複雜點的事情,似乎都能歸屬到其他領域:比如最近火熱的 Reactive 開發大可以歸結到狀態機或者別的什麼領域去,比如 H5 遊戲引擎開發者們大概也不會認為自己是前端;

這裡也不提「大前端」的概念,且不說本身這個概念就有些模糊,而且對於挺多前端同學們可能是一注不錯的雞血;但這種 AOE 武器不利於說明具體的情況,就還是不提微妙。我直說狹義的 WEB 前端:瀏覽器跑的才算,node 也不算,否則照挺多團隊的看法 PHP / JAVA / Python / Go / 甚至 C++ 寫的 CGI 都得來湊熱鬧。

說白了,前端並不太像是一門技術,而更像是 WEB 發展後界面開發延伸出來的一份工作罷了。我們甚至不敢說自己是界面開發,我們只是在用一些別人已經提供好的工具(瀏覽器、盒模型、HTTP)來畫圖罷了。JavaScript 命名時很聰明卻又謙卑,知道自己要借那時 JAVA 的風頭,卻又很明白自己只是個腳本罷了,當初所承載的作用估計就比配置文件高一點,設計得很快也很放飛自我,只是後來沒想到瀏覽器端其他語言沒一個能打的,才火爆成這樣。也可能其實藏著 Lisp 內核披著 C 語言的外衣本身就很牛叉,而且本身太弱太自由可能也給了 DSL 很大的想像空間吧。

最近才跟朋友聊起,覺得現在 JS 的各種方言似乎都來自於其他語言的程序員們。比如 CoffeeScript 顯然來自於 Python,最近火熱的 TypeScript 是 MS 那邊 C# 的人搞的鬼,asm.js 估計是接近底層彙編那幫人弄出來的……而現在也越來越多其他語言的人們開始往前端擠,從 Angular 可以有如此多簇擁就可見一斑——我覺得專業寫 HTML / CSS / JS 的人挺難想像會能接受突然來一個龐大的全家桶重新全部學習一遍。

這些是橫行來了前端的同學們。我總感覺他們或多或少有些鄙夷前端,認為前端乾的事「沒什麼技術含量」,雖然有些前端乾的事情的確沒什麼技術含量,但同理其實也可以用在其他語言上。技術含量的事情並不是那麼多見的,重複造輪子充 KPI 是可恥的。

但想想也對,的確前端比其他領域更少機會做有技術含量的事,大概是因為有些有牛逼的前端乾的事情並不是「技術」活,而是設計、項目管理、產品、QA、後端之類的事,至少不是前端的技術活;然後剩下的大多數前端都被產品、設計、後端秀操作之後趕在 Deadline 之前各種忙著收拾爛攤子,還得為他們的各種個性買單(我就知道很多前端都巴不得 Server 端全部自己寫,省得溝通起來鬧心),誰還有空玩技術含量?有誰比我們更慘呢?QA 以及運維。


橫行來前端的不少,前端又能橫行去哪裡?(說實話這個才是我想寫的,一不小心前面已經嘮叨了這麼長)

就像我前面所說的觀點,我現在傾向於認為前端不是一個專業領域,尤其只是 HTML / CSS / JS / DOM 是撐不起一個專業的;所以,如果身邊有所謂專業的前端,他一定是個通菜,至少不可能是 1 字型人才,否則只會那幾個東西什麼都做不了,頂多給別人打下手寫些靜態頁面。騰訊給「頁面重構」安了個設計師的名頭估計也是通道的人在給他們警示:如果你們只會寫頁面的話就等死吧。

曾經的前端真的十分不成火候,也就只是弄些 Table 和 document.write ,可能再加上些跑馬燈,簡直令人汗顏;直到客戶端開發的人來了,才有了 Web Outlook 和 Ajax,然後 GMail 和 Google Map 出來教大家做人:前端是可以像客戶端那樣撐起一個複雜 App 的。那麼,同一個頁面裡面,做的事情變多了、代碼量變得龐大,也就需要狀態、模式、架構了,而且還需要進行各種調度、通信等等……否則 jQuery 就吃遍天了,誰還管現在的三大框架。這大概是前端橫行的一個方向: **架構師** 。但其實說實話我覺得跟其他語言的架構師差異可能不大,甚至書都可以看同一套——反正 C++ / JAVA 大學的時候大多數人都看過。

而另一些前端可能跟設計師們溝通得比較多,可能他們本來就不是計算機專業的,也可能這些前端更有藝術細胞,然後他們就往設計師方向跑了,比如 Airbnb 的那幫人,以及做 UI 組件庫的那些人。Bootstrap 為什麼能火起來?為什麼比 jQueryUI 還火?我覺得就是因為他給了你一個現成的 CSS 文件和相關的 HTML 寫法。這些前端開發真是造福人類。這種 **設計師前端**簡直就是國內無良老闆們眼裡的香餑餑,用一個人的價格拿到了兩份的人力,而且哪邊確認就可以把他往哪邊塞,如果他再會寫 Server 就更好了,勉強算是全棧開發工程師了。

其實我覺得前端開發中有全棧能力的人應該比其他領域的多,當然必須也會點設計,然後尤其是有了 Nodejs 和 MongoDB 以後,Server 開發似乎變成了小菜(而且反正大多數產品沒火起來就會死掉,那麼堆機器就能解決大多數的問題,基本輪不到 C/C++/JAVA 那幫人來秀操作)。只是展現出全棧能力可能是件有些危險的行為,否則被當成萬金油的話很可能就很難再選方向了,而且萬金油被挪來諾去地可能也不好有所積累,那換工作可能也會沒底氣,那就更糟糕了。但有一種情況另論:就是噹噹當——轉管理!沒人比原來的萬金油更適合做管理了吧?尤其是潤滑油性質的管理——反正現在其實也沒什麼真正的專精技術型的人能上管理層,因為他們大多都太 Geek 了,雖然這個可能對於行業而言是個悲哀。話說回來,潤滑油型的管理人才不是也挺好的嘛,哪邊的問題都能溝通,用來做項目主管再好不過。但似乎實際情況更多還是那些做 C++/JAVA 的人上去了,我覺得一定是因為他們人實在太多了,而且他們比全棧更極端,他們很可能兩三年就放棄技術直奔管理技術去了。


媽呀寫不完,之後看看有空再繼續寫把。先就這些。

推薦閱讀:

小爝的知乎Live-如何監控性能 & 分析數據
序章 曦粥簡言
我理解的同步載入與非同步載入
我的CSS學習之旅
實現符合 Promise/A+ 規範的Promise

TAG:前端開發 |