今年是工作的第六個(gè)年頭务冕,從事專(zhuān)職前端開(kāi)發(fā)也有四年多了血当。先后換過(guò)兩家公司,從后臺(tái)開(kāi)發(fā)逐漸轉(zhuǎn)到專(zhuān)職Web前端洒疚。
一開(kāi)始我是微軟.Net陣營(yíng)的開(kāi)發(fā)者歹颓,這源于大學(xué)時(shí)代的偏好。那個(gè)時(shí)候油湖,在Windows平臺(tái)上開(kāi)發(fā)桌面應(yīng)用和Web應(yīng)用巍扛,.Net Framework有著不可比擬的優(yōu)勢(shì)。優(yōu)雅無(wú)比的C#語(yǔ)言加上宇宙第一 IDE Visual Studio乏德,簡(jiǎn)直是軟件開(kāi)發(fā)領(lǐng)域的倚天屠龍撤奸。借助可視化的開(kāi)發(fā)工具吠昭,隨便拖拽幾下,加上幾行代碼胧瓜,一個(gè)桌面軟件就出來(lái)了矢棚,Web開(kāi)發(fā)也差不多。這也導(dǎo)致了很多程序員的誤解府喳,認(rèn)為用 .Net 開(kāi)發(fā)無(wú)非就是拖控件蒲肋。其實(shí),這只是淺層次的認(rèn)識(shí)钝满《嫡常可視化的工具只是為了方便界面布局,提高開(kāi)發(fā)效率弯蚜。你完全可以不通過(guò)拖控件孔轴,而是用代碼實(shí)現(xiàn)所有界面元素的布局。只是代價(jià)比較大碎捺,你認(rèn)為值得嗎路鹰?《荀子·勸學(xué)》里有句話(huà)說(shuō)得好:“君子生非異也,善假于物也收厨〗”我們的最終目的無(wú)非是為了又快又好地完成開(kāi)發(fā)任務(wù)。
大學(xué)時(shí)QQ上有一款休閑游戲叫《大家來(lái)找茬》,看室友玩了幾次,于是突發(fā)奇想蜗细,能不能寫(xiě)個(gè)軟件注竿,自動(dòng)找出兩張圖片的差別呢?在做之前也去網(wǎng)上找了下類(lèi)似的工具,大部分都操作不方便、識(shí)別率不高。經(jīng)過(guò)幾天的折騰联贩,終于做出來(lái)了。核心技術(shù)就是圖像處理捎拯,加上鍵盤(pán)鉤子泪幌。剛好當(dāng)時(shí)有圖像處理課程,這也算是學(xué)以致用吧署照,哈哈祸泪。后來(lái)還把這個(gè)工具放到網(wǎng)上供別人下載,幾個(gè)月時(shí)間下載量好幾萬(wàn)建芙。然后就動(dòng)了點(diǎn)小心思没隘,在界面上加了廣告,并且有付費(fèi)去廣告的功能禁荸。沒(méi)想到后來(lái)真有人給我轉(zhuǎn)賬了右蒲,這大概是我在軟件開(kāi)發(fā)上賺的“第一桶金”阀湿。(或許應(yīng)該叫“第一桶鐵”,錢(qián)太少了╮(╯▽╰)╭)不過(guò)貌似不太光彩瑰妄,游戲作弊o(hù)(╯□╰)o
畢業(yè)后順成章地從事 .Net 方面的開(kāi)發(fā)工作陷嘴。當(dāng)時(shí)做的是產(chǎn)品的后臺(tái)管理系統(tǒng)和在線辦公系統(tǒng)。由于是內(nèi)部系統(tǒng)间坐,用戶(hù)量非常有限灾挨,技術(shù)含量就沒(méi)那么高≈袼危基本上是一些數(shù)據(jù)的增刪改查涨醋,以及Web界面上的東西。那個(gè)時(shí)候 jQuery 還統(tǒng)治著 Web 前端開(kāi)發(fā)的半壁江山逝撬,市面上充斥著海量的 jQuery UI框架和插件。學(xué)好 jQuery 也就能解決一大半問(wèn)題乓土。但我意識(shí)到 jQuery 不能解決所有問(wèn)題宪潮,原理性的東西還是要懂的。比如JavaScript 語(yǔ)言趣苏,DOM 操作狡相,CSS 規(guī)則等。
學(xué)這些東西不難食磕,難的是找到用武之地尽棕。由于工作上開(kāi)發(fā)的系統(tǒng)都是對(duì)內(nèi)的,整個(gè)公司也就那么幾百號(hào)人彬伦,就算做到極致也難有跨越性的提升滔悉。做了大概兩年后,我開(kāi)始尋找別的出路单绑。
然后就進(jìn)了一家做金融服務(wù)的外企回官。當(dāng)時(shí)選擇這家公司是因?yàn)楣ぷ鲀?nèi)容剛好契合我的技術(shù)背景:一部分.Net 桌面開(kāi)發(fā),一部分Web搂橙。做了半年桌面開(kāi)發(fā)后歉提,開(kāi)始全面轉(zhuǎn)向 Web 前端。
當(dāng)時(shí) Web 技術(shù)發(fā)展迅猛区转,各種框架如雨后春筍般冒出來(lái)。Backbone, Ember, Angular, Knockout……還可以列更長(zhǎng)侄泽。還有模塊化工具Require.js, Sea.js, Webpack蔬顾。CSS預(yù)處理工具SASS, LESS诀豁。簡(jiǎn)單來(lái)說(shuō),就是原本用HTML, JavaScript 和CSS 就可以完成的頁(yè)面開(kāi)發(fā)娩践,變得規(guī)姆牛化沮焕、工程化峦树。這個(gè)轉(zhuǎn)變?cè)从跇I(yè)務(wù)邏輯越來(lái)越復(fù)雜魁巩,項(xiàng)目規(guī)模越來(lái)越大,瀏覽器的能力越來(lái)越強(qiáng)葬馋。這也給前端開(kāi)發(fā)人員帶來(lái)不少壓力肾扰,似乎每天一睜眼就要不停地學(xué)習(xí),生怕錯(cuò)過(guò)某個(gè)新框架掠廓、新理念甩恼、新工具。同時(shí)悦污,這些新東西也在不停地優(yōu)勝劣汰钉蒲,剛流行不久可能就難逃被遺棄的命運(yùn)顷啼。這就是前端開(kāi)發(fā)領(lǐng)域的狀態(tài)。
在那家公司做的產(chǎn)品是PC端的單頁(yè)Web應(yīng)用间驮。項(xiàng)目規(guī)模中等竞帽,瀏覽器要兼容到 IE8 屹篓。這也是我第一次接觸到比較大型的項(xiàng)目堆巧,無(wú)論是代碼組織泼菌、模塊化管理灶轰,還是瀏覽器兼容性處理,還有項(xiàng)目打包部署等等刷钢,都刷新了我的認(rèn)知笋颤。我開(kāi)始系統(tǒng)地學(xué)習(xí) JavaScript 語(yǔ)言本身内地,研究原型鏈伴澄、閉包阱缓、面向?qū)ο箝_(kāi)發(fā)方式非凌,學(xué)習(xí) CSS 盒子模型、優(yōu)先級(jí)敞嗡,研究前端性能優(yōu)化、Web 安全航背、跨域喉悴、數(shù)據(jù)可視化技術(shù)等等玖媚。公司員工每年有1000塊學(xué)習(xí)基金箕肃,可以用來(lái)買(mǎi)書(shū)勺像。那段時(shí)間買(mǎi)了很多編程語(yǔ)言、算法、軟件工程方面的書(shū)嘀粱,不過(guò)也沒(méi)看完。一年下來(lái)锋叨,算是可以稱(chēng)自己為 Web 前端開(kāi)發(fā)了娃磺。
也是從那時(shí)開(kāi)始,斷斷續(xù)續(xù)地在各種平臺(tái)上寫(xiě)技術(shù)博客叫倍。最早在博客園偷卧,一個(gè)以 .Net 技術(shù)為主的博客網(wǎng)站,也有不少前端的內(nèi)容吆倦。后來(lái)利用 Github Pages 搭建了自己的站點(diǎn)听诸,甚至還綁定了自己買(mǎi)的域名。但是沒(méi)堅(jiān)持多久蚕泽,只寫(xiě)了十來(lái)篇晌梨。內(nèi)容基本是自己平時(shí)工作上碰到的問(wèn)題和解決辦法,算是一些技術(shù)備忘吧须妻。由于英語(yǔ)還過(guò)得去仔蝌,經(jīng)常看些英文技術(shù)文章和資料荒吏,有空的時(shí)候還翻譯過(guò)不少敛惊。有段時(shí)間在開(kāi)源中國(guó)上翻譯技術(shù)文章,排進(jìn)月度前十绰更,網(wǎng)站還送了兩本書(shū)作為獎(jiǎng)品瞧挤。工作之余,也喜歡折騰些小項(xiàng)目儡湾,寫(xiě)過(guò)簡(jiǎn)單的股市行情圖皿伺,也寫(xiě)過(guò) web 小游戲,還給合租的室友們寫(xiě)過(guò)AA記賬平臺(tái)盒粮。但都是小打小鬧鸵鸥,上不了臺(tái)面。
我是一個(gè)不安分的人,一旦發(fā)現(xiàn)自己在原地踏步妒穴,就開(kāi)始焦慮宋税。為技能提升慢而焦慮,也為工資拿得少而焦慮讼油〗苋看著周?chē)耐拢枚喽际窃诠敬怂奈迥晟踔疗甙四甑陌ǎ械那嘣浦鄙戏ν停鄶?shù)還是平平淡淡,安心地做著螺絲釘瘦赫。內(nèi)心似乎有個(gè)聲音在召喚辰晕,于是我踏上了新的征程。也是從這時(shí)開(kāi)始明白履歷的重要性确虱。當(dāng)時(shí)去騰訊面試過(guò)很多次含友,幾乎跑遍了深圳的各大辦公點(diǎn),然而接連受挫校辩。要么是某些基礎(chǔ)不過(guò)關(guān)窘问,要么是項(xiàng)目經(jīng)驗(yàn)不夠格∫酥洌基礎(chǔ)不牢還可以補(bǔ)救惠赫,畢竟也系統(tǒng)學(xué)習(xí)過(guò),只是某些平時(shí)用不到的知識(shí)點(diǎn)沒(méi)有去關(guān)注故黑,像臨考復(fù)習(xí)一樣應(yīng)付下也能解決汉形。但是項(xiàng)目經(jīng)驗(yàn)就不同了,有些工具就是沒(méi)用過(guò)倍阐,有些工作流程就是不一樣,有些技術(shù)場(chǎng)景沒(méi)到那個(gè)產(chǎn)品級(jí)別就是碰不到逗威,這個(gè)就麻煩了峰搪。你說(shuō)你學(xué)習(xí)能力強(qiáng),可以馬上掌握凯旭?不好意思概耻,已經(jīng)有候選人掌握了。所以罐呼,能在畢業(yè)后或者一兩年內(nèi)進(jìn)入大公司學(xué)習(xí)鞠柄,優(yōu)勢(shì)是十分明顯的。當(dāng)然嫉柴,能進(jìn)去也是一種能力厌杜。這么多次面試,最好成績(jī)是騰訊某個(gè)部門(mén)的GM面試。然而不巧的是遭遇架構(gòu)調(diào)整夯尽,崗位不需要人了瞧壮。
后來(lái)因?yàn)闄C(jī)緣巧合,進(jìn)了現(xiàn)在的這家互聯(lián)網(wǎng)金融公司匙握。當(dāng)時(shí)公司處于起步階段咆槽,產(chǎn)品從零開(kāi)始打造。當(dāng)時(shí)覺(jué)得大施拳腳的機(jī)會(huì)來(lái)了圈纺。我也是第一次從事移動(dòng)端 Web 開(kāi)發(fā)秦忿,第一次從頭到尾掌控一個(gè)項(xiàng)目,也是第一次過(guò)上經(jīng)常加班的生活蛾娶。要知道灯谣,在此之前的四年多時(shí)間里,加班的次數(shù)一只手都能數(shù)過(guò)來(lái)茫叭。我不反對(duì)加班酬屉,我只反對(duì)無(wú)效的加班。當(dāng)時(shí)的加班顯然是必要而且有效的揍愁,因?yàn)槲覀円s在年底發(fā)布產(chǎn)品呐萨,時(shí)間緊迫。由于團(tuán)隊(duì)小而精莽囤,溝通效率很高谬擦,有問(wèn)題能馬上響應(yīng)、解決朽缎。但也由于產(chǎn)品定位不清晰惨远,需求也一直變化,有過(guò)多次推倒重來(lái)话肖。溯洄從之北秽,道阻且長(zhǎng)。這都不是問(wèn)題最筒,只要有個(gè)共同的目標(biāo)贺氓,哪怕艱難險(xiǎn)阻,都能一一克服床蜘。經(jīng)過(guò)幾個(gè)月的日夜奮戰(zhàn)辙培,產(chǎn)品好歹上線了。作為回報(bào)邢锯,年終獎(jiǎng)金還算可觀扬蕊。
第二年公司人員迅速擴(kuò)張,由最初的十幾人增加到近百人丹擎。做事的人多了尾抑,加班反而沒(méi)有改善,這個(gè)問(wèn)題一直困擾著我。技術(shù)方面蛮穿,我也算是獨(dú)當(dāng)一面庶骄,還帶幾個(gè)新手。我知道践磅,我可能永遠(yuǎn)也做不成頂級(jí)程序員单刁。所以只能退而求其次,盡量把手頭的工作做到極致府适,不斷探索更高效的工作方式羔飞,多幫助他人。一年多下來(lái)檐春,手頭負(fù)責(zé)的前端項(xiàng)目也有好幾個(gè)逻淌,都是從零開(kāi)始的。現(xiàn)已基本穩(wěn)定疟暖,處于維護(hù)階段卡儒。
最近,面對(duì)深圳日漸高企的房?jī)r(jià)俐巴,對(duì)比穩(wěn)如磐石靜如止水的工資條骨望,我開(kāi)始思考人生。工作六年的前端開(kāi)發(fā)欣舵,該何去何從擎鸠?經(jīng)過(guò)自己的努力,還能到達(dá)怎樣的高度缘圈?公司的發(fā)展和個(gè)人的成長(zhǎng)到底是怎樣的關(guān)系劣光?是追求公司的認(rèn)可,還是但行善事莫問(wèn)前程糟把?