半熟前端

軟體工程師 / 台灣人 / 在前端的路上一邊探索其他領域的可能性

雜談

2019 回顧

2019 年,1 月的頭 5 天,我還在兵營裡頭數饅頭,好不容易才熬過四個月的軍旅生涯開始找工作。上半年幾乎都在準備面試與沈澱自己,而下半年移居到日本後生活逐漸步上正軌。

上半年

2019 上半年,因為沒有工作的關係,除了有點焦慮之外,其實也還蠻閒的。這期間除了補齊前四個月的前端領域知識之外,也把 React 這四個月的變化(就是 hook 啦!)補上。

我也趁著這段期間,把自己的部落格全部用 gatsby 改寫(前端老毛病 XD),買了 dev 網域。

另外值得一提的是,當時對瀏覽器的 Audio Context 蠻有興趣的,所以做了幾個感覺蠻有趣的小專案,如果有機會把他們具現化的話再給大家分享。

等待面試的空檔,主要就是刷刷 Leetcode,寫一些前端小專案練手,然後也開始規劃了一系列的前端文章。這段時間,我也回去報名了以日籍老師為主的日文補習班,為之後的日本生活做準備,也是期許自己可以定期複習日文跟有點規律的活動可以進行。

這期間也有幾個面試開始進行,詳細的話可以參考我在前幾個月前寫的求職心得

就這樣,時間線來到了下半年,我在 6 月下旬飛往日本,花了一些時間安頓好基本生活之後,在七月份上工。

我也花了一些時間把我這幾年學日文到去日本工作的心得寫成一系列的文章,有興趣的話可以看看

我與日本的距離

下半年,日本生活上工

雖然在這裡開發的前端跟以前開發的前端方式大相逕庭,不過在一家大公司工作,更能感受到資源豐沛的情況下,能夠對職涯帶來的幫助有多大,不過或許也因為如此,如果沒辦法善加利用的話,就會變相成養老區,久而久之就變成尸位素餐的冗員了。

在這樣的情況下, 跟著強大的 backend 團隊,我也開始研究更深入的後端知識以及 infrastrcture,試著更深入理解後端的運作,具體來說:

  • 如何設計一個穩固的 message queue 機制。跟著團隊的腳步,也發現了 Kafka 這個萬用的瑞士刀
  • 快速且有效率地架 server。也趁著團隊中有人有 ansible 的經驗,把基本的設定與如何做調整的方式有了基本的了解,不再像以前土炮 ssh 進去 server,只要走錯就要全部砍掉重練,不懂的話還有人可以指導。內部也有許多 playbook 可以參考
  • 自己寫了一個通用的 slack bot,可以應付不同的使用場景,也很容易自己寫 script 客製化
  • 架設了前端通用的 CI 以及自動部署機制(slack)
  • PromethuesKibana 這些性能指標監視工具,也自己架了一遍,更能理解這些工具的重要性
  • 自己建立了 ElasticSearch,試著把資料庫(Postgres)跟 elastic search 做搭配來做更完善的全文搜尋機制。
  • 了解 DB 的運作。Postgres 陪我走了五年,仍然是個穩固好用的夥伴

除了後端之外,也花了一些時間研究手機開發(iOS)跟 Swift 這門語言,覺得前端與 App 開發的本質其實是相同的,我們都在處理 UI 以及對應的資料流跟狀態處理。只是語言跟開發平台的不同,從不同的語法來看不同領域是怎麼處理 UI 跟狀態是一件很有趣的事,也時常可以互相學習。像是最近新出 SwiftUI 跟 Combine,我覺得就是在前端很適合參考的狀態管理手法。

另一個轉變最大的大概就是寫測試這件事吧,以前沒有一整個 QA 期間,所以測試也是沒有寫得很完善,但現在有一整個 QA 期間是專門在做 QA 的,所以寫測試這件事情就變得格外重要,不然到最後回報一堆 QA Bug 到頭來還是搞死自己而已。

我很樂意犧牲一點效能,換取更多可測試性與維護性,因為 Bug 以及隨之而來的 wordaround 通常才是搗亂整個 codebase 的最大原因。也發覺到 React 寫測試真的很容易啊!而且也很好去模擬實際使用者行為。

以前很喜歡用 enzyme(一個強大的 react testing wrapper),不過現在反而覺得有那麼強大的工具反而會讓自己糾結在測試過於細節的實作而非測試行為,所以現在比較傾向 react-testing-library 輕薄短小的方式做測試就好。

在工作上,2019 年試著涉略更多管理(跟人)相關的書籍,印象比較深刻的是這兩本:

  • Driving Technical Change
  • 橫向管理

雖然還不夠成熟,但至少已經跨出了第一步。

突破瓶頸

對我來說,在前端這個領域上可能走到了瓶頸,除了想要接觸一些比較不一樣的領域(互動要求高、影片處理、圖片處理、文字編輯、音樂等)之外,也想要繼續往更底層的技術邁進。

另外就是最近正在想的一件事,慢慢想要帶領一個優秀團隊,一起打造更好的產品了,雖然 25 歲這個年齡,對於一個 lead 來說,往往是阻礙大於優勢,不過如果有這樣機會的話,的確想要好好把握住。

生活

2019 對我來說是目前最 work-life balance 的一年,除了下廚的次數更加頻繁之外,也因為工具(烤箱、微波爐)變多,廚房變大的關係,能夠嘗試的料理種類也越來越多了。

煮過一些比較特別的料理像是:

  • 東坡肉(非標準版本)
  • 西班牙海鮮燉飯
  • 失敗的烤麵包
  • 烤餅乾
  • 烤布丁
  • 煎魚(包含自己處理內臟、去鱗片)
  • 自製漢堡排

自己的廚藝又更上一層樓,希望今年也可以繼續嘗試不同種類的料理,還有找到更優質的肉品來源,日本不像台灣,到處都有那種傳統肉鋪啊 QQ。

來到日本後體重也大幅上升,所以報名了健身房,然後盡量控制自己的飲食和喝酒頻率,雖然日本喝酒的頻率實在高得可怕啊!

在旅行上,雖然沒有特意規劃什麼大行程,但連假時如果沒有特別的事情要處理,通常都會到附近走走:

  • 糸島
  • 西新
  • 能古島
  • 由布院
  • 輕井澤
  • 福岡近郊

未來

就像剛才在瓶頸那段提到的,在未來還是希望繼續深入技術領域,但可能不想只侷限在 Web 前端的知識而已,而是盡量往各個不同的領域邁進。

2020 年,除了繼續在前端領域深耕之外,也想把範圍延伸到整個計算機領域。其中想要特別涉略的有 WebGL、底層語言(C++ 與 C、Assembly)、作業系統、程式語言,理解這些東西對我來說很有趣。

想要特別提一下,2019 年年底時趁著優惠買了 PS4 跟死亡擱淺這款遊戲,覺得死亡擱淺的劇情徹底改變了我的人生和想法,也讓我開始想了解小島秀夫這個人物。2020 年,希望自己可以多接觸一些有關於遊戲領域的知識。

感謝

在每間公司跟身旁,總會有比自己厲害許多的人值得學習,也是因緣際會遇到這些人才有現在的我,以下按照腦中冒出來的順序:

  • weak self:雖然是 iOS 的 podcast,其實有很多概念是互通的,每次到健身房的時間就是 weak self 發布的時間,能在異地聽到熟悉的聲音,還是覺得很感動啊。(雖然台灣人同事很多啦XD)
  • koji:除了日文猛到跟日本人一樣之外(完全沒有口音!),身為管理職也很常關心大家的狀況,也讓我在公司當中可以安心做事。
  • 平山:現在的主管給我很大的空間去做我想做的事,也總是鼓勵我去做對團隊有幫助的事情,覺得能夠遇到好主管是讓職涯順心的重要因素啊!
  • Huang:有點像職場大前輩,已經在職場中打滾許久,深諳各種職場八卦還有公司文化,在有煩惱的時候很容易就可以找到指點迷津的方法。
  • denny:現在想想還蠻神奇的,從前同事到在他鄉一起共事。偶爾看到熟悉的 sudo 帽 T,就會想到以前訂五十嵐、RD Team 一起吃飯,一起在辦公室看 Mr.Robot 的回憶。
  • Thomas:是我目前看過最工作狂的同事,但是涉略的東西很廣,只要能夠幫忙的他都願意兩肋插刀,不管前後端都一樣。除此之外也很熱衷於技術,時常討論底層的東西像 linux、作業系統等等,從他身上學到很多東西,也是目前看過最猛的工程師。
  • Jimmy:除了很喜歡參與討論之外,也總是幫忙改善團隊裡頭比較瑣碎的事情。最讓我印象深刻的是一連串的 devops,讓整個開發變得更順暢。
  • Peter:偶爾會突然冒出來丟給我新的設計跟 logo,也時常給我網站上要怎麼修改的建議,除了感謝還是感謝!