要認清公司能帶給你的「技術功力」有限,你得自己額外補起來

你如何看待你的技術成長?你在公司一兩年,但總覺得越到後期成長幅度低到不行?或是都認為工作內容都在做重複性的事物?你最後一次很快樂地寫程式是什麼時候?如果上面的問句有讓你產生漣漪,就必須小心自己的程式能量正在逐步萎縮中,為什麼會這樣呢?就讓我一一道來。

你是不是變成「有 N 年經驗,但根本是重複第一年工作?」

當你開始第一份工作,任何事情都讓你覺得十分新鮮,以我來說來了,當時我開始在幫企業設計網頁時,就覺得「哇,我在幫公司設計他的形象網頁耶,這東西是會上線的,不是自己練習的,好有成就感~」、「公司有好多 Code 可以參考哦,看完我一定可以變得超強!」、「工作要用到的程式還不是很熟悉,趁這機會補起來」。前幾次你會覺得很新鮮又超有成就感,但是如果是超過十次、五十次?甚至一年兩年,你真的還會覺得有趣嗎?

答案自然是否定的,所以工作到最後當然會乏味,原因是每間公司都會有自己的生存法則,當你前一年已經習慣他們的 SOP 後,到後面就會覺得無趣,且技能也培養到能夠應付公司業務的程度。假使靠這套流程就能養起一整間公司,它們自然不會想要更動,除非有重大改版會影響到營收,才會認真思考改進。如果剛進社會的前端沒意識到這點,就很容易在一間公司待了兩三年,但還是會覺得自己沒什麼成長,就算要找工作,也會覺得沒什麼可以拿來當做籌碼的能力而退卻。

所謂的專業就是瞭解自身不足,並刻意補起來

究竟什麼是「達人」呢?要怎麼樣才可稱自己具有「匠人」等級?所謂的專家就是在各種細節上都會有病態般地自我要求,而前端開發更是如此。

你認為前端開發是什麼呢?新增個 HTML 裡面寫一寫用瀏覽器打開就會出現,就以為是自己是前端嗎?那麼以下數點你掌握幾點?

  • 瀏覽器原理:你知道瀏覽器的網頁渲染機制嗎?
  • 資訊安全:你知道前端要如何寫才能避免 XSS 攻擊?
  • 效能優化:當資料量多到無法負荷時,你該如何優化效能呢?
  • 程式趨勢:你是否有掌握到目前最新趨勢的寫法,是否有目前雖然是測試階段,但你能預測到他未來有機會成為一個產品服務?
  • 網站追蹤:你知道 SEO 嗎?有辦法與行銷部門協作,共同開發 Growth Hack 精神的 Funnel 追蹤呢?
  • WebGL 動態設計:你知道網頁甚至能夠在瀏覽器呈現 3D 介面,要你設計一個互動性線上遊戲你思考得環節夠全面嗎?
  • 狀態設計:當網站離線狀態時,你的網站仍然有辦法運作,直到連線又能夠連接到伺服器去嗎?
  • 協同開發:你有辦法和其它前端討論模組化概念,讓多位前端加倍開發產能在同一個專案上嗎?
  • 無障礙設計:你有想過你的網站是否能讓身障人士都能輕鬆地瀏覽網頁嗎?
  • 後端邏輯:你知道後端是如何傳送網頁資訊到瀏覽器的呢?知道什麼是 Header、狀態碼、Session、Cookie 嗎?

每一個層面都值得花上大半年的時間去投入,如果公司沒有提供這個養分,為了讓自己成為專業的前端工程師,和前端有關係的細節你當然都需要深入去瞭解。

尋找要投入的目標,並思考要花幾年追上

承上所提,也不是要你像無頭蒼蠅一樣學東學西,如果你希望自己學得更有成就感,最容易的方式就是尋求更有挑戰性的工作。所以我都會貼 Toptal 上面的前端人才履歷給新手前端參考,Toptal 其中的優點是在每個前端人才裡面都會寫到自己的工作經驗,以及在每間公司上負責的工作項目,也可因此拓展自己的前端視野,不會以為自己待得公司就是全世界,這樣就太過井底之蛙了。

如果國外的職缺很遙遠,其實你也可以在 FB 前端社群或 104 尋找資深前端工程師的職缺,思考一下自己還欠缺什麼,再來去評估自己要花上幾年才能配得上這份職缺,那它就會是一份很棒的目標。

有哪些方法能夠補起技術起來呢?Side Project 是你的好朋友

我都會建議朋友可以多做一些 Side Project,什麼是 Side Project 呢?就是工作之外,你自己也去搞一些東西來實作。譬如來說公司本身已經有一套很成熟的開發流程,直到有一天你發現目前有幾項新技術能加速工作流程,但因為自己還不熟悉,所以自己找了些專案來實作,等自己玩得比較熟以後,覺得這流程可行再推薦公司使用。

那有沒有一些 Side Project 的方向呢?這裡也條列一些讓你參考,也是我幫自己挖坑的項目:

  1. 學會新技術,拿舊專案重寫優化
  2. 臨時需要設計一個平台協助他人時,例如八仙塵爆,那時我也設計一個查詢介面,順便練習從 jQuery 轉 Angular 。
  3. Open Data 獲得寶貴數據資料,拿 JSON API 自行介接地圖、圖表資訊
  4. 思考大眾常遇到的問題,設計一個小服務來解決,當初的求職天演通其實也是從 Side Project 變成公司創業方向
  5. 從自己生活周遭不便來想靈感,例如寫一個 Node.js 爬蟲去抓最便宜的機票,若有釋出則發 Mail 通知
  6. 跟朋友組隊參加技術黑客松,將想練的技術在比賽過程中來發揮得淋漓盡致
  7. 做自己想做的服務,讓自己具有產品思維來運營它,未來的有一天說不定有機會靠它創業(好大的坑

最後我也來分享自己學習技術的方向,當我想學一個新技術時我會先自己研究個大概輪廓,然後主動和上面的人說:「我會 XX 技術了,它可以幫業務帶來一些不同的方向,可以去推推看」,可能是吸引力法則吧,就真的會有幾個專案跑進來讓我實際應用技術在專案上。能幫公司賺錢,技術也可以跟著升級,實在一舉兩得。所以如果發覺公司沒辦法給你成長時,另外個方向就是你自己推坑新技術給大家,至於要如何在公司推坑新技術又是另外一個坑了,有機會我會再到下篇來分享。