Onboard 前
從德國交換回來後,我的人生規劃暫定為在台灣當個軟體工程師,同時因為非本科身份在德國找實習、工作的挫敗,當時我也抱著回去念研究所補個學歷的心情,所以兩邊並行的一邊繼續應徵公司,一邊刷題唸資料結構、演算法,當作面試跟考研所的準備。
最後決定去的一間電子雜誌平台公司,是我在德國的時候就開始面試的公司,在德國的時候經歷 phone interview (考簡單的題目像是字串反轉、 recursive ,還要提供時間複雜度)一面、二面考了 leetcode 題目、 system design (如果要做一個類似臉書的動態牆,資料庫跟 API 要怎麼設計),現在回想起來那些題目不算太難,只是當時經驗還很淺的我還是答的有點吃力,也從面試過程中學到很多。像是當時面試官有問到如果要用資料庫 table 裡某個欄位是讀多寫少,有什麼方法可以加速,我答不上來,後來反問後學到可以對欄位建立 index (建完 index 後會以樹狀結構存那個欄位的值,查找起來會比較快)
回台灣後只有簡單跟 CEO 做最終面試聊聊天,也跟當時技術主管聊了一下。雖然是新創公司,但 engineer team 裡很多工程師技術背景都很強,大概是之前草創時期的技術主管是台大資工畢業,拉了幾個身邊的人進來,加上過去在史丹佛留學的創辦人兼 CEO 也很看重工程師,總之讓我感到在這家公司當工程師可以學到不少,給的 offer 又比我面試的其他幾間高,最後就來到這間公司當全端工程師了。試用期
當時想著同時準備研究所考試的我,不希望因此就在工作上擺爛,所以在準備考試之餘,我給自己兩個要求:
- 工作時間專注工作,能做到的範圍做到最好,就算一年內離職也不覺得虧欠公司的程度
- 提高工作效率不加班,把上班前跟下班後的時間留給自己唸書
抱著這樣的想法迎接適用期,第一個面對的考驗是 - 打造一個內部的工具系統,而且是前後端包辦!對當時的我來說真的是一大考驗,因為主力工程師們還是專注在整個產品的開發,我幾乎是獨立一個人來做這個專案,跟內部團隊討論需求,構思系統架構,實作後端 API 跟前端表格,一開始光是想像之後的步驟就讓人卻步。
不過讓我很感謝的是,有位在公司待了一兩年的後端工程師來當我的 mentor ,從資料庫設計、 API 怎麼開、實際寫程式的過程,都能跟他一起討論,他也會幫忙 review 我的程式碼,多虧他的建議與幫助,讓我在一個月的時間就完成後端 API 的開發。也讓我有更多時間上手較不熟悉的前端部分。
我有自己寫過一些 react js 的 side-project ,但距離熟悉還有一段路,於是公司給了我兩週的時間,看看線上的文件與教學,有點熟悉之後就邊做邊學,我覺得公司給我了很大的彈性。
前端寫起來還算愉快,看得到畫面有即時反饋,加上 react 各種語法糖跟很多現成的套件,東拼西湊了一個多月,整個系統介面算是開發的差不多了。又花了一兩週時間,把原本存在 google sheet 的資料遷移到資料庫,整個內部工具系統的開發也告一段落。
適用期三個月快結束的時候,主管安排我對全公司的人進行一場 demo ,介紹我開發的系統,得到的反饋還不錯,從無到有開發產品、一人架起前後端系統的寶貴經驗,更是讓我有滿滿成就感。
在適用期開發系統的期間,我過著白天一步步攻克各種挑戰、晚上持續念書準備研究所的生活,只能說真的很辛苦,幾乎沒有自己的時間,但想著以後更好的發展機會,我還是咬牙撐過來了。我把這段時間準備研究所的心路歷程記在另一篇文章,有興趣的人可以去 ptt 搜尋,關鍵字:無補習、一邊工作、跨考
考試後 - 融入公司文化
農曆年後幾週,研所的考試也幾乎告一段落,心情上輕鬆了不少。原本以為可以把上下班唸書的時間拿去做其他事,過一下充實的生活,但後來發現考完只想耍廢休息 XD
在工作上算是越來越熟悉開發步調,工作內容變成跟我的 mentor 一起實作 PM 或 Business 方提的需求,釐清 feature 後跟前端 (Web, App) 對一下 API 接口,接著開發 API 、寫寫測試、走過 CI CD 流程後上線 feature ,同時也更新 API 文件方便之後查找。當時主管試著採用 Agile 敏捷開發模式 ,一到兩週的 sprint 就會走一次這個開發 feature 的流程,步調不會快到很緊張,但也不會慢到無聊,我覺得是個舒適的工作步調。
公司還有幾個我很喜歡的文化,包括每週 DEMO 跟讀書會。每週的 DEMO 讓工程師有機會向全公司的人展示自己的作品,可以固定刷刷存在感和其他人介紹自己做了什麼。對我來說是個可以練習表達的場合,也是個看看其他工程師同事做了什麼,用上了什麼技術的好機會。
至於每週數次多個主題的讀書會,是我很喜歡的部分!有一陣子工程師組了設計模式 Design pattern 的讀書會,大家各自研讀一個設計模式,每週輪流跟大家分享,我覺得實用又有趣。其實讀書會的內容真的包山包海,像是成長飛輪(我聽不太懂的主題)、非虛構寫作指南、每週一人分享(讀書心得、線上課程心得、或是個人經驗,要分享什麼都可以,也有人分享自己的爬山經驗)
其他各種活動還有公司內部的黑客松、不時舉辦的 Team building ,就工作內容、工作環境、還有整體學習成長的氛圍來說,我覺得這裡是一個能讓人開心工作的公司,我也的確在那裡度過一段愉快的工作時光。
趕著上線新網站
在研所放榜結果出來不久後,我跟幾位教授聊過,確定了未來要加入的實驗室。同時公司也打算投入一半的全端工程師人力,把過去使用舊的 Angular 框架寫成的網站,改成以新的 React 框架翻新重寫,讓未來維護跟加入新功能更加容易。
因為進來公司不到一年就要離職有點不好意思,想著在離開前對公司再多做一些貢獻,所以我加入了開發新網站的行列,同時維持著後端開發新 feature 的步調。
從我剛進來就有前端工程師在進行新網站開發,但因為原本唯一那位前端工程師的離職,導致上線計畫延宕許久,才停滯了好幾週後主管才決定繼續動工。
也因為延宕了這麼久,所以新網站開發的進度排得非常趕,包括我在內的三個全端工程師,有段時間常常加班到晚上,甚至禮拜六也需要上班。已經記不得當時刻了多少網頁了,每週每週的都從設計師手上接過網頁設計圖, RWD 刻著電腦、平板、手機的畫面,串接後端 API ,同時學著 Redux 跟 React 不斷釋出的功能。
趕著做著,不足的地方就去學,總算把網站上線了,也算是我在公司參與的一個小小里程碑。
下一段旅程
再後來為了回研究所唸書提了離職,暑假期間我接受了主管提出的讓我 Part time 工作的提案,我也同時上手實驗室的事務,自己看一些 AI, ML 的線上課程。
跟幾位當時的同事變成了持續聯絡的朋友,而在新創公司短暫的一年旅程也慢慢劃下句點,我接著加入了台大資工所的 iAgent Lab ,拾回一度中斷的學生生份,開始過著專心學習、研究、找實習的學生生活。
至於我寫這篇回顧文的時候,重新瀏覽了我曾寫的網站,把中斷一段時間的雜誌服務訂閱回來,又是另一個插曲了。