我的 2021 年記
- 5 minutes read - 2308 words前言
不知不覺又一年了,時間過好快啊,又到了實行每年生日回顧計畫的時候了。
在寫這篇文的時候,遇到的第一個困難就是:因為今年的疫情還在繼續,甚至比去年更加嚴重,所以多數活動都取消了,我竟然找不到一張好的封面圖可以用
,最後只好找了一張大嘴鳥陪看手機🐦📱。
工作
沒想到今年還可以用疫情開頭,哭啊,已經算不清遠端上班幾天了。
那些已經過去的…
2021 年初時進入這間公司,主要使用的一樣是 Laravel
,因為算是專案型的公司,所以這一年接觸了很多元的開發,包含任務管理、物聯網、複合型的服務整合平台、ETL 專案、區塊鏈交易相關平台等等,把各個領域的開發都踩了一遍。
其中除了肯定會有的功能開發以外,也接觸了跟測試相關的技術,包含基礎的 Unit testing
、Integration testing
,可以用 Mock
做到依賴的抽離,並參與了專案的 負載測試
,實際撰寫壓力測試的腳本,且了解整個壓力測試的流程和標準如何定義,算是在測試這個領域暫時可以劃上一個休止符了。
在這一年中間段靠後的時期,參與一個大型的 ETL(Extract-Transform-Load) 專案,一千多張的表和數以十億計的資料量,在我的職涯中確實算是大型的專案了。雖然在過程確實學習到大資料量的情況下相關的設計、和轉移過程中的各種 trade-off,但也更確認一件事,那就是自己對資料處理的領域確實沒什麼興趣,這也埋下了我換工作的伏筆。
結束這個專案之後,剛好有朋友牽線內推,順利拿到 offer 後其實非常糾結,因為公司在專案結束後有做出一些承諾和溝通,而且 Team Leader 是一位技術很深又樂於分享的、很棒的前輩,我也自認有許多東西學得還不夠扎實,不離開的話也有很多技術可以持續深耕,所以我頓時陷入了自責和掙扎。
但苦思冥想(認真)了一週之後就想通了,公司做出和我溝通的選擇後,我可以理解公司的立場,但我權衡利弊之後仍然選擇離開,其實都是彼此的選擇而已,無關對錯
,比起自責和掙扎,不如盡量降低自己離職帶來的衝擊,把收尾收好,才是一個稱值的員工最後應該做的。
也非常感謝前輩在知道我要離職後還願意和我聊這麼多,期許自己在未來也可以成為這樣一位工程師。
那些準備開始的…
這一輪面試值得檢討的地方就是 HR 階段了吧,我真的是 Behavior questions 超級苦手,前測的刷題算是勉強過關,前兩關的技術面試我都準備蠻充足的,技術部份也都可以相談甚歡,正當我以為穩了的時候,HR 關狠狠的打了我一巴掌。
除了自己雷以外,我的問題可以總結為以下兩點:
- 故事包裝得不夠好
- 不確定面對 HR 時技術要講到什麼程度
第一點就不用多說了,就是自己爛,太大意沒準備好。第二點則是這次面試才比較具體發現的問題,在聊一些履歷上的成就時,我一方面下意識的會想提到技術、另一方面又要壓抑自己不要談太多技術、又另一方面會想用跟 HR 專業相關的方向去回答問題,結論就是講出了一坨屎。
總之,花了約一個多月的時間面試,最後以約 52% 的年薪漲幅,準備在下個月初加入新公司。本來參考了一些資訊、身旁朋友大概的薪水和最近大缺工時代的背景,其實想開得更高一點,但自己第三關搞得一團糟,也只能怪自己蠢,希望這些蠢事都會成為未來的養分。
開源
ssocr-php
這個套件的靈感來源自工作上的一個 feature,簡單來說是一個用來處理七字節影像辨識 (Seven Segment Optical Character Recognition) 的套件,用純 PHP 實現。我有寫一篇文章聊這個專案,懶得看長篇大論的話,也可以直接到 Github 或是 Packagist,有興趣的話歡迎移駕參考。
notification-line-bot
另一個有趣的專案是一個 Line 機器人,一開始是因為 Discord 把 Github webhooks 的功能串接的很好,完全不需要開發就可以開箱即用,但 Line 上面沒看到類似的功能,所以就自己搞了一個。
在過程中我也嘗試了很多有趣的技術:
- Python (Flask)
- 使用
Docker
開發,並用dockerfile & docker-compose
控制 - 使用
Github actions
部署,並實作 Approve 機制
之所以用 Python 只是因為下一份工作會用到,單純用來練練手而已,我一直認為 語言不應該限制工程師
,因為一個工程師的基礎能力就包含了快速上手一個新的程式語言,但秉持著 Talk is cheap. Show me the code. 的精神,還是快速搞了一個本來就想實作的專案。
最後成品會像這樣:
希望你不要笑那個機器人的名字,畢竟做人如果沒夢想,那跟鹹魚有什麼分別?
主要就是兩個功能啦,每天一個隨機的笑話,和 Github webhook 的 events 通知,其實程式很簡單,有興趣可以到 Github 上看。
技術
這個部分主要想紀錄 Infrastructure,畢竟 PHP 就那樣,沒啥長進,只有追了一下最新版的語法;Go 有計劃一些小專案,但也還在進行中;Python 則是上面提到的那個機器人。語言的部份比較沒有值得紀錄的成就。
Infrastructure
和去年相比,現在已經可以獨立負責一些小專案的 CI/CD 了,本來很執著於要模仿公司前輩,用 Jenkins 複製一套一樣的出來,但最後很感謝前輩的指導,重要的是這套 CI/CD 的 flow,用什麼工具是很枝微末節的討論了,所以後來就選擇用 Github actions
去做 Build 和 Deploy 的工具。
在自己的主機上也用 Docker 架了一台 Nginx Proxy
,並且在新的容器被新增時,透過 ACME protocol 自動地去要新的 SSL certificates
。
一切都是自動的,其實最主要就是不想花錢租新主機和新 Domain,通通放在同一台,用 Nginx Proxy 去導流,也不需要買新的 SSL certificates,果然懶惰和客家精神是工程師進步的原動力。
展望
寫了很多,但也好像有很多沒寫,畢竟一年足以發生很多事了,遠遠不是一篇部落格文章能夠描述。
本來約好五月底要報到新公司,但因為確診,經歷過前幾天的沒死就算輕症的輕症症狀之後,隔離期間多了很多計畫外的時間可以去思考、反省、和回顧一些職涯以外的事,可能有一些關於疫情、關於感情、關於本以為遙遠的生死,後來想想,其實都是關於人生。
我想人就是這樣的吧,腦子想的像抽象類別,腳步踏的像實體物件,中間實作了那些方法則組成了人生。
這篇年記也是實作的方法之一吧,希望可以一直寫下去,至少寫個十年二十年。
那今年就寫到這啦,年記系列我們明年再見。