黃德銘

我有 12 年 Java 學習經驗、5 年 Kotlin 實務經驗與 7 年 Android app 開發的工作經驗,現在仍不停精進自己的能力,並且時常研究新出的東西,期望讓自己變得更好


[email protected]

(+886) 935-500-807

新北市,Taiwan

工作經歷

Dcard Senior Android 工程師,2021 年 5 月 - 至今

  • 完成功能的開發及維護,並設計新架構改善開發流程與重構舊有程式碼
  • 導入 Kotest 並用 Kotest 以 BDD 方式撰寫測試,以降低出錯機會
  • 導入自行設計的 RequestResultController 讓同時間打多支 api 的處理更容易
  • 將 Gson 全面換為 Serialization
  • 成為新成員的 mentor
  • 開發 PngquantToWebp 小工具,讓 Png 進行壓縮並轉為 WebP 格式
  • 導入 Koin Annotation 讓專案能更好更簡單的使用 DI,讓專案架構更彈性
  • 設計 FragmentResult 架構讓 Fragment 及 DialogFragment 使用更容易
  • 使用 Kotlin Class delegation 以及委託模式設計可複用的 Handler 架構,能以極少量的 code 進行複用與商業邏輯變為可寫測試的狀態
  • 設計新的 RecyclerViewAdapter 架構簡化 RecyclerView 的使用,讓 adapter 更容易依職責切分邏輯且便於做 a/b test,程式碼亦可減少 10 ~ 15%
  • 開發 Slack App 改善工作流程
  • 撰寫 Medium 文章,目前累計 6 篇
  • 在 Android team 的讀書會進行進行技術分享,目前累計分享 46 個題材
  • 由於持續在 Android 讀書會分享,讀書會從兩週一次改為一週一次
  • 獲選 2022 年 Dcard Core Value "Keep Breaking" 的 Dcard 之星

上恩資訊 Android 工程師,2019 年 11 月 - 2021 年 4 月

  • 新功能以 MVVM 搭配 Clean Architecture 開發
  • 用 Spek Framework 和 Kotest 以 BDD 方式撰寫測試,以降低出錯機會
  • 用 Robolectric 撰寫 deeplink 的 unit  test,便於後人能快速知道 deeplink 對應的後續動作為何
  • 撰寫小工具將 Firebase 與 Amplitude raw data 匯出至 CSV 檔,並進行數據處理,後續可使用 Data Studio 或 Excel 查看數據
  • 追蹤或協助追蹤數據是否正常。或是尋找問題點
  • 針對新 feature 規劃 A/B Test 並透過 Firebase 實作
  • 使用 Espresso 撰寫 UI test 增加產品穩健度
  • 使用 Firebase, Amplitude 追蹤使用者行為
  • 使用 LeakCanary 尋找並修復 memory leak 問題
  • 導入 Coroutine 減少多執行續開發成本,並降低發生 memory leak 的機會
  • 使用 Coroutine 開發 CoroutineEventBus 取代 EventBus 減少使用難度並避免操作不當導致 leak 問題
  • 使用 Coroutine 開發不會造成 leak 的動畫架構
  • 使用 Profiler 工具優化 app 效能
  • 主動開發小工具幫助他人工作更順利
  • 推動公司與 app team 撰寫 unit test 與 UI test
  • 使跨部門溝通次數大幅增加
  • 在公司對 app team 內部進行技術分享
  • 負責 iOS 工程師面試
  • review iOS PR
  • 參與 Team Lead 會議並排週和月計劃

Pinkoi Android 工程師,2018 年 5 月 - 2019 年 10 月

  • 開發並維護舊有功能,將程式重構為 MVVM 架構,後續導入 Clean Architecture 架構
  • 使用 Spek Framework 與 Mockk 以 BDD 方式撰寫測試
  • 導入 Coroutine 減少多執行續開發成本
  • 將架構改為 single activity,使多平台的操作行為更加統一
  • 使用 Profiler 工具優化 app 效能
  • 在品牌煥新時協助統一 app style,並將相同邏輯的功能製作成 UI 元件
  • 與同事共同建立 Flexible Component 架構,使不同頁面的元件可重複利用以及減少上版次數
  • 在公司對 app team 內部進行技術分享

台灣康樂科技 高級工程師,2017 年 9 月 - 2018 年 3 月

  • 開發電子白板、床旁系統、智慧居家患者端
  • 串接靈雲語音合成系統達到朗讀文字功能
  • 用 Socket 製作即時通訊功能
  • 用 WebRTC 製作視訊功能
  • 協助釐清產品規格

遠時數位 工程師,2015 年 11 月 - 2017 年 8 月

  • 開發巷弄、巷弄x臺南、STAYFUN 員工福利整合平台、friDay 頭家
  • 使用 Calabash 撰寫 UI testing
  • 依照現有 app 架構製作網路連線程式
  • 串接 Facebook SDK
  • 串接 Google Analytics
  • 串接遠傳電信帳單
  • 開發巷弄快付功能
  • 串接 OneSignal 的推播服務功能

經歷作品

  • 巷弄、巷弄x臺南

巷弄為遠時自有產品,是個美食 O2O 服務,強調當天買當天使用。負責介面優化及製作以下功能: 製作網路連線程式、臉書打卡、遠傳電信帳單、第三方推播平台串接、支付密碼、快付、UI Testing、Google Analytics、Deep Link

  • STAYFUN 員工福利整合平台

與 MAYO 公司合作製作福委會相關的 app,整合了訊息牆、調查所及福委會相關優惠…等功能

  • friDay頭家

此 app 提供”巷弄”及”遠傳friDay錢包”店家使用的app,透過此 app 可看到商品銷售狀況以及進行請款,訂單成立時會有推播通知店家有訂單成立。

  • 自動灑花機器人

PokemonGo 於 2016/8/6 開放台灣地區進行遊戲,其中灑花功能會吸引玩家聚集於該區域,於是製作了自動灑花機器人,配合”巷弄”的活動於指定時間與區域灑花

  • PokeIV小助手

這是提供給 PokemonGo 的玩家使用的輔助工具,可以在 app 中看到每隻寶可夢的 IV 值,並可直接操作改名、進化、轉換糖果等重要功能,此 app 獲得使用玩家的好評。

使用 Google maps 並搭配 Google 登入給予特定使用者使用自動孵蛋功能

  • 電子白板

電子白板為台灣康樂科技開發的產品,提供醫院將傳統白板數位化的服務,以往需要手寫的資料可以改用電腦輸入,並提供簡潔的畫面使護士一目瞭然。 電子白板以 MVP 架構設計,用 Socket 與伺服器做即時溝通 

  • 床旁系統

電子白板為台灣康樂科技開發的產品,提供病患於病床上時可使用的工具。床旁系統可顯示醫院提供給病患的注意事項、用藥資訊、護理衛教等功能,並可送出需求通報給護士手持裝置及電子白板。此外,並透過靈雲語音合成系統達到朗讀文字功能 床旁系統以 MVVM 架構設計,用 Socket 與伺服器做即時溝通 

  • 智慧居家患者端

智慧居家患者端為台灣康樂科技開發中的產品,醫院提供機器讓患者帶回家,並透過 Socket 及 WebRTC 製作即時通訊功能。

開發並維護舊有功能,將程式重構為 MVVM 架構,並使用 Spek Framework 與 Mockk 進行 unit test,並導入Coroutine 減少多執行續開發成本;將架構改為 single activity,使多平台的操作行為更加統一;在品牌煥新時協助統一 app style,並將相同邏輯的功能製作成 UI 元件;與同事共同建立 Flexible Component 架構,使不同頁面的元件可重複利用以及減少上版次數

現今 Android 的 RatingView 不易調整星星之間的間距,所以自己做出一個可設定圖片及間距的 RatingView

串接 Google 推出的影像辨識 Vision api,利用此 api 做出辨識傳統發票的發票號碼及期別,亦可掃描電子發票的QRCode,發票開獎後即可得知發票是否中獎

利用 PHP 撰寫 api server 並搭配 MySQL 儲存發票資訊

開發新功能與重構舊功能並撰寫 unit test 以降低出錯機會;導入 Coroutine 減少多執行續開發成本;協助埋設 Firebase Analytics 並透過自己撰寫的小工具將資料可以匯出至 CSV 檔,後續可配合 Data Studio 查看數據;使用Espresso 撰寫 UI test 增加產品穩健度

後來也開始 review iOS PR,並討論 iOS 的架構,如:MVVM, VIP, VIPER

  • 自行開發的小工具

使用 Kotlin 撰寫 Java jar 檔執行程式,可取得存在 BigQuery 的 Firebase Analytics 以及 Amplitude 數據,並可依照選擇的條件將資料匯出至 CSV 檔,並提供歸因數據模擬計算等功能,後續可透過 Data Studio 或 Excel 查看數據

可使非程式人員不必學習SQL語法即可查看所需資訊,大大降低查詢資料的門檻。

  • LineBot 自動回話機器人
將 Line 後台的 webhook 設定至自己的 php server,在使用者對機器人講話時可以取得使用者傳送的訊息,並讀取已存在 MySQL 的回話內容將指定訊息回傳給使用者,達到自動回話功能。