2018 下半年回顧

Jalex Chang
Jalex’s Murmur
Published in
8 min readJan 2, 2019

--

生活是種選擇,工作也是。

前言

這篇文的目的是為了回顧自己在2018下半年的生活點滴。而之所以只回顧下半年是因為上半年大概只有放棄博士學位面試找工作兩件事,還真的沒什麼好回顧的,詳情可以參考我的新鮮人面試心得

2018年年中,小弟脫離了學生身份,正式進入了職場。對許多人來說,半年只是職場生涯中的滄海一粟。但對一個初入職場的新鮮人來說,半年卻足以讓他人對你有全然不同的評價。是從 Freshman-level 到 Junior-level ,這種認知差異上的不同。

因此,我想紀錄一下這半年的生活狀況。給自己一個回顧與反思的機會,釐清這半年哪些點做得不錯,哪些事情還可以再加強

Being a Umbot

2018年6月底,因為好朋友的引薦與邀請 (?),加入了Umbo Computer Vision(簡稱Umbo),正式開始了我的菜鳥工程師生涯。

雲霄飛車般的生活

相比於大公司的穩定, 在新創的每一天都像是在坐雲霄飛車。不知道明天會發生什麼事情,也不知道幾個月後公司是起飛還是殞落。這樣的環境對於一個討厭一陳不變、朝九晚五生活的人來說,的確再適合不過。

相比於草創時期的 startup 需要以命相搏, Umbo 相對穩定許多,但依舊要面對資源不足、人力吃緊、產品與專案取捨等問題。許多時候,我們必須在時程與品質上找尋平衡,但更多的時候,我們是在堅持與堅持之間尋求妥協。

半年不短

半年的時間其實不算短,足夠接觸並開發許多兼具趣味與挑戰性的系統與服務。這邊簡單列一下比較有記憶點的項目與成果:

Real-time Alert Monitor System Refactoring

是公司內部使用的即時監控系統,可以即時監控與評估目前 CV alert 的品質 ,並將結果回饋至 data pipeline 的上游。這算是公司十分重要的應用服務,有著非常嚴格的 downtime 要求,也是我進公司後接手的第一個 project。我的任務是改進它的效能並增加穩定度,以新人熱身角度,做得還算可以。

  • 補了一大堆 Unit test,讓 code coverage rate 從 0.2% 上升到 75%。
  • 重新設計了核心處理機制。解決了 duplication tasks 與 unbalanced assignments 的問題,變向地也提升了 throughput 。
  • 調校了使用的 DB cluster,讓 production need 與 analysis need 的 DB query 可以分流。大家再也不用因為人為失誤,半夜被叫起來尿尿。

Sidecar Caching Service Design for Video Streaming Servers

這是一個兼具狀態監控與快取功能的邊車系統,主要功能是快取客戶的攝影機排程設定,並在設定更新或是排程狀態改變時通知 video streaming server。除了達到 offloading 外,也可以避免不必要的視訊上傳,減少網路流量。是我在 Umbo 的第一個獨立設計與開發的專案,也是 Golang 初體驗。

雖然前前後後耗了近兩個月才上線,但就結果而言,算是有成功幫助到公司。畢竟 video stream 的上傳與儲存,對一家新創而言,是筆可觀的開銷。

  • 節省了約1/3的 video streaming traffics 。
  • 複習並精進了 concurrent programming,goroutine 真心好用。
  • 走上了 Golang programmer 的不歸路。

Payment Gateway Design and Integration

俗稱的”串金流”。毫無反應,就是設計一個基於公司商業邏輯的payment service,並將它與付費方式相關的金流服務整合。是一個 payment gateway 與 payment gateway 的激烈碰撞與纏繞。整體而言沒有什麼高深的技術,但卻是做起來最辛苦的。服務整合這件事,本身就是趟險途,加上事關金錢,每個細節都得斤斤計較。

  • Spec 每個星期都不一樣。
  • 整合第三方服務時,什麼鳥事都有可能發生。
  • Repect IT 從業人員,錢真難賺。

半年不長

半年其實也不算太長,起碼沒有長到可以改變一個人的本質,也不夠讓努力這件事足以彌補自己與旁人經驗上的差距。對於程式開發與系統設計這兩件事,自己實習過幾年,算是有些底子,表現也還過得去。但對於維運這件事則是徹頭徹尾的毫無經驗。

當開始要身兼開發與維運 (DevOps)時,我覺得自己表現地非常掙扎。在設計架構時常忽略掉系統維運的難度,維護線上服務時也顯得很混亂,常常東繞西繞才找到原因與解法。感覺像是回到大一,第一次接觸程式設計時的手足無措。真的對 operation 這件事感到十分挫折啊。

除此之外,另外一個沮喪的點便是深深感受到溝通能力的不足。我常常因為太過專注在開發上,導致 daily scrum 時無法回神而語無倫次。除了恍神外,也發現自己非常不擅長對執行中的工作進行抽象化的描述,不是講得太過細節冗長,就是講不出個所以然。 而這個狀況也在外籍 PM 加入後,變得更嚴重了。 用中文都講得很落漆了,用英文根本是列車向下QQ

社群參與

除了工作外,這半年自己也花了些心力在技術社群中走跳。

Apache Kafka Workshop

因緣際會之下,我加入了由台灣資料工程協會所舉辦的 Apache Kafka Worksop,成為了助教之一。助教的職務內容是協助講師郭二文(二哥) 進行課程的準備與校正,並在課程當天輔導學員完成實作練習。 這個系列的活動,在今年9月到12月之間一共舉辦了四場,教學內容從基本的 Kafka 原理到相關應用整合,評價不錯, 每場都爆滿。

雖然過程很辛苦,但也確實收穫滿滿。除了更加深入了解 Kafka 與相關應用外,也認識了不少業界人士,偷偷擴展了自己的人脈。

Golang Taipei

由於主管 David Chou 是台灣 Golang 社群的 co-organizer,加上工作開發上大量使用 Golang 的緣故,我便很自然地成為了社群的一份子。偶而看看相關技術文章,參加每個月一次的定期聚會。

除了參與外,也在 David 的各種推坑利誘之下,於今年 12 月的 Golang Taipei Meetup 上,給了出社會後的第一個技術演講,內容是介紹 Go 1.11 的 Garbage Collector。聽說評價還不錯,是社群裡少數 Hardcore 的演講 XD 之後有時間的話,也慢慢把演講內容整理成便於理解的文章。

貢獻其實並不困難

在參與技術社群活動的這半年後,有了一些小小心得:

  • 台灣的技術社群普遍缺乏講者。一個社群要蓬勃發展,除了需要熱情的人員參與外,更需要勇於分享的朋友參與。
  • 貢獻與分享其實並不困難,不需要是什麼技術大牛,只要願意花心思準備即可。很多時候,大家缺乏的只是站上台前的勇氣。
  • 有了貢獻社群的紀錄後,生活真的會有點不一樣。起碼 LinkedIn 上的各種邀約挖角變得更多了XD

Keep Learning Keep Going

在工作與社群參與之餘,我還是持續用著自己喜歡的步調,學習世界上的新知。這半年間我看了些與工作及興趣有關的書籍:

此外,偶爾也會吸收點世界前緣的狂想,白話文就是它媽的讀論文。不管是 technical report 還是 conference/journal papers,看到有趣的題目還是會想花點心力去閱讀消化。 我想這也是自己成長背景與他人的不同之處,儘管最後沒有拿到博士學位,自己仍然沒有忘記那些年的訓練與教誨。

Work-life Balance

除了正向能量的事情外,這半年也是買了不少 Switch 遊戲:

  • Mario Tennis Aces (瑪利歐網球:王牌高手)
  • Mario Kart 8 (瑪利歐賽車8 豪華版)
  • Overcooked (煮過頭)
  • Just Dance 2019 (舞力全開 2019)
  • Super Mario Odyssey (瑪利歐奧德賽)
  • The Legend of Zelda: Breath of the Wild (薩爾達傳說:曠野之息)
  • Donkey Kong Country: Tropical Freeze (大金剛:熱帶急凍)
  • Mario + Rabbids Kingdom Battle (瑪利歐與瘋狂兔子:王國之戰)
  • Super Smash Bros. Ultimate (任天堂明星大亂鬥:特別版)

其中最大的遺憾,便是我始終打不贏馬利歐網球的最終 boss,它是款真正的網球遊戲 (累

此外也去了香港一趟,走走逛逛,買了聽說是貴婦級的蝴蝶餅乾。但這趟旅行也讓我更加堅定了”打死也不去香港工作”的信念,真的不是人該生活的地方啊。

總結

2018下半年,我離開了學校,進入了大人的世界。相比於博士班時期的陰鬱與掙扎,工程師的生活儘管顛簸卻安心了許多,起碼這些都是我喜歡也願意投入的事情。至於辛苦與否 — 雖然看起來風風雨雨,但老實說我覺得過得滿輕鬆自在的 XD 只能說大家對痛苦的定義不同,建議有機會可以去體驗一下邊讀博班邊實習的生活 (誤

希望 2019 年的我也能夠像現在這樣,即使偶爾唉聲嘆氣,還是能秉持初衷,無論日子好壞地探索與前行。

--

--