我敢打賭,在中國,一半以上甚至更多的,以網站為主營業務的或者把網站很看重的公司,沒有Web前端工程師和產品工程師這兩個職位,甚至有些有點規模的公司也可能沒有這個職位,當然,這不能包括像alibaba,sina,163這樣的公司,只是指中小型公司而言。如果你們公司有,請給我留言告訴我你們公司的規模和相關的信息。
做得好一點的公司,一般是項目經理/部門主管+投資方(項目管理中的投資方,實際上就是老板,反正就是決定你要做什麼並給你錢的人)來承擔產品工程師的角色,由美工來承擔Web前端工程師的角色,特別是Web前端工程師,是最容易被忽略的角色。
企業想擠出利潤,無非兩個方面,一個是開源,另一個是節流。而這兩個角色,恰恰可以用開源節流來比喻,產品工程師可以設計出更好的產品,這就是開源,Web前端開發工程師可以精簡網頁代碼,提高用戶訪問速度,減小企業帶寬上的支出,甚至可以減小服務器上的支出,這不是節流是什麼?相比有些企業,以靠克扣員工工資來實現節流,這個節流要節省得多。
產品工程師
很多公司的流程基本上是這樣的,由需求部門(一個或者多個,如果公司小,可能就是老板等幾個人)提出需求,提交到項目經理或者IT部門主管,然後 IT部門主管根據需求進行開發,這中間可能要判斷是做還是不做,判斷的依據主要是開發難不難,麻煩不麻煩,很少去考慮合不合理。各位,看到什麼問題沒有,很多IT的部門主管,他只是一個管理者+項目經理的組合,或者干脆就是一個項目經理。需求部門交給我的需求,我按照要求按時按質做完就OK了。但時,需求部門往往是不懂互聯網的,這種情況很多公司大量存在,對於一些老板本身就是做互聯網的,或者較大的公司,這種情況會比較少。
問題就來了,一個不懂互聯網的人,根據自己的喜好或者自己的判斷來提出一些需求,有些需求可能很無理,有些時候可能是自己的喜好,有些時候可能是違背互聯網的基本准則的。而技術部門往往是只要沒有技術難度就開發吧,反正我就按你要求做了,這個中間,沒有一個懂互聯網的人來把關。注意,懂互聯網的人,不是懂技術的人,懂技術的人很多都是不懂互聯網的。比如說我曾經見過有公司的老板要在網站的兩邊加一副對聯,結果別人說像靈堂一樣,也曾經有公司的老板要把網站做得像電視一樣(不是視頻網站,就是一個非常酷的過場動畫這樣子,想法是好的,可惜不適合大型網站,不利於訪問也不利於SEO)。
這個時候一定要有一個產品工程師或者產品組來承擔這個中間人,注意,還沒有到美工的層面,他需要根據需求方的需求,再加上自己對互聯網的了解,來設計這個產品。他要考慮到浏覽器、帶寬、用戶習慣等等內容,以確定如何布置頁面中的內容,確定功能之間的關聯。在這個時候,如果產品工程師不懂技術,可以邀請Web前端工程師和項目經理/部門主管參與,因為某些地方為了用戶體驗可能要使用到一些技術,需要由這些人來確定是否要行。
Web前端工程師
相對於產品工程師,這個職位顯得很加缺乏,因為產品工程師很多時候可以由項目經理或者部門主管兼任,但Web前端工程師這個職位,是很多公司都不重視的職位,很多公司是這樣的,Html和CSS由美工負責,而Javascript由程序員負責。但問題是,很多美工對Html/CSS只能實現,至於規范也速度很少考慮,而程序員對Javascript就更加了,從我接觸過的程序員中,絕大多數人覺得Javascript是一個比較簡單的語言,沒什麼前途,看不起這種語言,也認為Javascript只能實現一些交互而已。
所以實際上,很多企業是用兩個懂一點點的人,來做這個重要的工作。如果讓我來選擇,我願意放棄一個,甚至兩個程序員,來換一個Web前端工程師。為什麼要這麼做?我認為,一個網站兩個非常重要的地方,就是他的交互性與速度。很多程序員喜歡劃分前台與後台,他們都認為前台不重要,只要後台功能完成了,前台不是很簡單的事麼!不!不是這樣的,前台比後台重要,為什麼這麼說?你想想,一個用戶是通過什麼接觸到你的網站的,是前台,是Web頁面,而不是後台冷冰冰的程序。你有再強大的功能,如果用戶操作起來很復雜,那麼用戶也會拋棄你的,除非用戶別無選擇,比如說工信部的備案,但問題是,現在互聯網同質化越來越厲害,抄襲也變得風行,你真的有這麼高的技術壁壘讓其它公司沒有辦法做到和你一樣的產品麼?
注意,不要鑽牛角尖,我並非說後台完全不重要,你要非說就算你前台再好,我後台一個死循環出不來,那不是也沒戲,這是抬槓!除了大型網站和邏輯錯誤,現在多數網站並不存在後台影響速度的問題,或者說影響不是那麼明顯。前台所帶來的問題,要比後台帶的問題多得多,也容易解決得多,往往是可以花少量的代價來解決大問題的,可是往往很多企業願意去花錢買帶寬買服務器租CDN以提高速度,卻不願意請一個Web前端工程師來解決這個問題。同時,請注意,就算你服務器再快你的帶寬再高,用戶的帶寬是不變的,如果你超出了用戶帶寬的閥值,你所做的一切將都是豪無意義的。
程序員往往可以實現Javascript的功能,但是由於Javascript的特殊性,他們很難以最優化的方式來開發Javascript代碼,就可能就造成他們去網上Copy一段Javascript,然後只要實現效果即可,大量重復的甚至是有Bug的代碼被應用到網站中,這些代碼將會影響到用戶的執行效率,降低用戶體驗。在HTML方面,這也是程序員的弱項,他們也覺得這個東西太簡單,實現起來很容易,但是HTML和Javascript都是入門易深入難的東西,如何合理地組織Html+CSS,讓浏覽器更快更有效率地執行,這個也是需要很多年的經驗的。
在用戶體驗方面,大公司可能用UE/UI等部門,而小公司的話,一定要有Web前端工程師,美工只是設計頁面,很難照顧到用戶體驗這個層面,當然不排除有些美工已經有這樣的水平。實際上用戶體驗也和產品設計一樣,都屬於開源的一部分,因為如果用戶體驗好就能帶來更多的用戶,不是開源是什麼。
最後,我想分析一下造成這兩個職位被忽視的原因,產品工程師一職,往往被項目經理或者部門主管+投資人代替了,一般來說,做到主管級的人對行業多多少少算比較了解,所以這個職位的缺失可能不會帶來大問題,但也有時候會因為這個職位的缺失而導致項目失敗的安例發生,這就要求主管同時也要有產品工程師的能力。
Web產端工程師是最容易被忽略也是最不好招聘的職位,究其原因,是因為部門主管往往是做技術出身的,而技術人員常常會輕視或者忽視前台的工作,也正是這個原因,造成了Web前端工程的工作比較低,所以很多人不願意去做這個職位,我就常常看到新人如果讓ta學習Html/CSS /Javascript,ta就會問你,什麼時候我才可以真正編程啊,這樣就形成了一個惡性循環,企業不重視,工資上不去,程序員也就不願意學習了。然後,這個職位可以給公司省下非常高的費用,可以節省數個程序員,減少帶寬及服務器。不信?試試看吧!