在資拓宏宇一開始參與的是M3公路監理系統介接專案,在這過程中學習了spring framework, hibernate等框架的使用,增強了Web開發架構的基礎。在專案上線後,AP遇到嚴重的crash問題,之後知道是由於某支程式當被呼叫時會一直創建新物件導致記憶體不足,之後改成Sington模式解決了這個問題。經由這次事件知道好的Design Pattern可以避免一些重大的問題。
在之後參與了BankWiz產品開發,他是一套工具,可以讓使用者輕易的開發SOA Application。而開發產品與開發專案不同,需要更注重軟體架構的可擴充性,以及如何穩定的交付給客戶,因此,我為這套產品設計了一套框架,使其他同事可以很容易的開發新的功能,這套框架之後也成為了公司其他產品遵從的框架。在SOA Mapping的部分,我設計了演算法使原本需要數秒才能mapping到服務進而優化為數毫秒。此外,我也在團隊中積極導入CI/CD流程,在導入的過程中,我增強了許多有關IaC的知識以及自動化腳本撰寫等技能。
在趨勢時主要做的是DevOps的工作,在工作的過程中熟悉了AWS與Azure的使用,由於趨勢是一間資安公司,特別重視資安議題,也因此學到了很多安全知識,也影響我之後開發軟體會更注重安全。為了從log分析可疑行為,我使用了Kafka, Logstash, Elasticsearch,來建立一套收log系統,更使用pandas去處理分析log這塊。而目前公司強調自動化,所以關於IaC這部分也熟悉了Terraform的使用。
在開發的過程中,需要常常跟不同人溝通,在溝通的過程中,常常會發現自己所沒有發現的盲點,並且找到更好的解法,或是從別人寫的code中,學到更好的做法,對於已經完成的功能,會去思考有沒有更容易維護的做法,並且重構它,這些訓練,使得我的能力有著很好的提升。我對開發的興趣廣泛,對我來說沒有一定要使用什麼特定的技術來解決問題,只有依當下的情境以及取捨而選擇適合的語言或工具,所以我從原先使用JAVA轉為Python為主要的開發語言,從原本地端為主的環境變為雲端,都是為了適應迅速變更的業界所做的改變。
專題:節奏追蹤的應用 - 音樂節拍地圖產生