今年是工做的第六個年頭,從事專職前端開發也有四年多了。前後換過兩家公司,從後臺開發逐漸轉到專職Web前端。前端
一開始我是微軟.Net陣營的開發者,這源於大學時代的偏好。那個時候,在Windows平臺上開發桌面應用和Web應用,.Net Framework有着不可比擬的優點。優雅無比的C#語言加上宇宙第一 IDE Visual Studio,簡直是軟件開發領域的倚天屠龍。藉助可視化的開發工具,隨便拖拽幾下,加上幾行代碼,一個桌面軟件就出來了,Web開發也差很少。這也致使了不少程序員的誤解,認爲用 .Net 開發無非就是拖控件。其實,這只是淺層次的認識。可視化的工具只是爲了方便界面佈局,提升開發效率。你徹底能夠不經過拖控件,而是用代碼實現全部界面元素的佈局。只是代價比較大,你認爲值得嗎?《荀子·勸學》裏有句話說得好:「君子生非異也,善假於物也。」咱們的最終目的無非是爲了又快又好地完成開發任務。程序員
大學時QQ上有一款休閒遊戲叫《你們來找茬》,看室友玩了幾回,因而突發奇想,能不能寫個軟件,自動找出兩張圖片的差異呢?在作以前也去網上找了下相似的工具,大部分都操做不方便、識別率不高。通過幾天的折騰,終於作出來了。核心技術就是圖像處理,加上鍵盤鉤子。恰好當時有圖像處理課程,這也算是學以至用吧,哈哈。後來還把這個工具放到網上供別人下載,幾個月時間下載量好幾萬。而後就動了點當心思,在界面上加了廣告,而且有付費去廣告的功能。沒想到後來真有人給我轉帳了,這大概是我在軟件開發上賺的「第一桶金」。(或許應該叫「第一桶鐵」,錢太少了╮(╯▽╰)╭)不過貌似不太光彩,遊戲做弊o(╯□╰)oweb
畢業後順成章地從事 .Net 方面的開發工做。當時作的是產品的後臺管理系統和在線辦公系統。因爲是內部系統,用戶量很是有限,技術含量就沒那麼高。基本上是一些數據的增刪改查,以及Web界面上的東西。那個時候 jQuery 還統治着 Web 前端開發的半壁江山,市面上充斥着海量的 jQuery UI框架和插件。學好 jQuery 也就能解決一大半問題。但我意識到 jQuery 不能解決全部問題,原理性的東西仍是要懂的。好比JavaScript 語言,DOM 操做,CSS 規則等。面試
學這些東西不難,難的是找到用武之地。因爲工做上開發的系統都是對內的,整個公司也就那麼幾百號人,就算作到極致也難有跨越性的提高。作了大概兩年後,我開始尋找別的出路。算法
而後就進了一家作金融服務的外企。當時選擇這家公司是由於工做內容恰好契合個人技術背景:一部分.Net 桌面開發,一部分Web。作了半年桌面開發後,開始全面轉向 Web 前端。編程
當時 Web 技術發展迅猛,各類框架如雨後春筍般冒出來。Backbone, Ember, Angular, Knockout……還能夠列更長。還有模塊化工具Require.js, Sea.js, Webpack。CSS預處理工具SASS, LESS。簡單來講,就是本來用HTML, JavaScript 和CSS 就能夠完成的頁面開發,變得規模化、工程化。這個轉變源於業務邏輯愈來愈複雜,項目規模愈來愈大,瀏覽器的能力愈來愈強。這也給前端開發人員帶來很多壓力,彷佛天天一睜眼就要不停地學習,生怕錯過某個新框架、新理念、新工具。同時,這些新東西也在不停地優勝劣汰,剛流行不久可能就難逃被遺棄的命運。這就是前端開發領域的狀態。跨域
在那家公司作的產品是PC端的單頁Web應用。項目規模中等,瀏覽器要兼容到 IE8 。這也是我第一次接觸到比較大型的項目,不管是代碼組織、模塊化管理,仍是瀏覽器兼容性處理,還有項目打包部署等等,都刷新了個人認知。我開始系統地學習 JavaScript 語言自己,研究原型鏈、閉包、面向對象開發方式,學習 CSS 盒子模型、優先級,研究前端性能優化、Web 安全、跨域、數據可視化技術等等。公司員工每一年有1000塊學習基金,能夠用來買書。那段時間買了不少編程語言、算法、軟件工程方面的書,不過也沒看完。一年下來,算是能夠稱本身爲 Web 前端開發了。瀏覽器
也是從那時開始,斷斷續續地在各類平臺上寫技術博客。最先在博客園,一個以 .Net 技術爲主的博客網站,也有很多前端的內容。後來利用 Github Pages 搭建了本身的站點,甚至還綁定了本身買的域名。可是沒堅持多久,只寫了十來篇。內容基本是本身平時工做上碰到的問題和解決辦法,算是一些技術備忘吧。因爲英語還過得去,常常看些英文技術文章和資料,有空的時候還翻譯過很多。有段時間在開源中國上翻譯技術文章,排進月度前十,網站還送了兩本書做爲獎品。工做之餘,也喜歡折騰些小項目,寫過簡單的股市行情圖,也寫過 web 小遊戲,還給合租的室友們寫過AA記帳平臺。但都是小打小鬧,上不了檯面。安全
我是一個不安分的人,一旦發現本身在原地踏步,就開始焦慮。爲技能提高慢而焦慮,也爲工資拿得少而焦慮。看着周圍的同事,好多都是在公司待了四五年甚至七八年的,有的青雲直上,但多數仍是平平淡淡,安心地作着螺絲釘。心裏彷佛有個聲音在召喚,因而我踏上了新的征程。也是從這時開始明白履歷的重要性。當時去騰訊面試過不少次,幾乎跑遍了深圳的各大辦公點,然而接連受挫。要麼是某些基礎不過關,要麼是項目經驗未入流。基礎不牢還能夠補救,畢竟也系統學習過,只是某些平時用不到的知識點沒有去關注,像臨考複習同樣應付下也能解決。可是項目經驗就不一樣了,有些工具就是沒用過,有些工做流程就是不同,有些技術場景沒到那個產品級別就是碰不到,這個就麻煩了。你說你學習能力強,能夠立刻掌握?很差意思,已經有候選人掌握了。因此,能在畢業後或者一兩年內進入大公司學習,優點是十分明顯的。固然,能進去也是一種能力。這麼屢次面試,最好成績是騰訊某個部門的GM面試。然而不巧的是遭遇架構調整,崗位不須要人了。性能優化
後來由於機緣巧合,進了如今的這家互聯網金融公司。當時公司處於起步階段,產品從零開始打造。當時以爲大施拳腳的機會來了。我也是第一次從事移動端 Web 開發,第一次從頭至尾掌控一個項目,也是第一次過上常常加班的生活。要知道,在此以前的四年多時間裏,加班的次數一隻手都能數過來。我不反對加班,我只反對無效的加班。當時的加班顯然是必要並且有效的,由於咱們要趕在年末發佈產品,時間緊迫。因爲團隊小而精,溝通效率很高,有問題能立刻響應、解決。但也因爲產品定位不清晰,需求也一直變化,有過屢次推倒重來。溯洄從之,道阻且長。這都不是問題,只要有個共同的目標,哪怕艱難險阻,都能一一克服。通過幾個月的日夜奮戰,產品好歹上線了。做爲回報,年終獎金還算可觀。
第二年公司人員迅速擴張,由最初的十幾人增長到近百人。作事的人多了,加班反而沒有改善,這個問題一直困擾着我。技術方面,我也算是獨當一面,還帶幾個新手。我知道,我可能永遠也作不成頂級程序員。因此只能退而求其次,儘可能把手頭的工做作到極致,不斷探索更高效的工做方式,多幫助他人。一年多下來,手頭負責的前端項目也有好幾個,都是從零開始的。現已基本穩定,處於維護階段。
最近,面對深圳日漸高企的房價,對比穩如磐石靜如止水的工資條,我開始思考人生。工做六年的前端開發,該何去何從?通過本身的努力,還能到達怎樣的高度?公司的發展和我的的成長究竟是怎樣的關係?是追求公司的承認,仍是但行善事莫問前程?