Bqfbufswl2o0onmn5i4n

施文彥 Wen-Yen, Shih

您好,我是施文彥,目前在 KKCcompany 擔任 Senior Android Engineer 和 Telasa Android Tech Lead,引領團隊高效運作,透過指導其他夥伴和負責專案重構,實現良好的專案品質與準確性。已有12年的程式開發經驗,擅長 App 程式設計、SDK 設計與開發、自動化測試、專案架構設計與功能規劃等。我熱愛學習,樂於分享自己的知識,同時也很開放地吸收新的事物。


主要開發語言涵蓋 Kotlin (Android)、Swift (iOS) 和 Dart (Flutter),目前我正專注於使用 Kotlin 開發影音串流的 Android App。我積極地累積開發經驗,旨在能夠高效開發高品質的產品。同時,我也通過分享知識,推動整個團隊不斷學習和進步,期待能在未來的專案中繼續貢獻,並藉此協助驅動團隊的成長。

Live: New Taipei City, Taiwan (R.O.C) 

TEL: (+886) 937-707194

Email: [email protected]

Work Experience 

KKCompany,Senior Android Engineer,2022 年 9 月 - 目前

  • 開發和維護下載量高達 500 萬的 Android App,負責規劃開發時程以滿足專案需求。 
  • 順利與前同事在兩週內完成專案交接,並在接下來的近半年中,獨自開發新功能並持續提交新版本。 
  • 與 PM、QA 和 UI/UX 設計師合作,共同評估、規劃並實作優良使用者體驗的 App。 
  • 與後端團隊協調,設計適用於前端的資料結構,以降低未來資料調整所需的時間和減少 force update 的機會。 
  • 建立 Android 團隊內部可共用、重用且實用的 core modules 進行協作開發和使用。這些core modules 將減少新團隊成員的上手和學習時間,使他們能夠專注於功能開發,同時解決專案結構不一致的問題,在更短的時間內提高效率。
  • 制定新人培訓計畫,幫助新進同仁能學習專案相關的技術,減少熟悉專案的時間成本。 
  • 撰寫 YAML 檔並利用 Gitlab CI 建立 CI/CD 流程,實現自動化的版本發佈。 
  • 重構並最佳化 TELASA App,移除冗餘的程式碼,降低 APK 大小約 20%。 
  • 透過 Kotlin 重新撰寫,將 Java 代碼比例從 55% 降至 30%。 
  • 定期處理 Crashlytics 回報的問題,確保 crash-free 維持高於 99.5%。 
  • 在專案中使用 Kotlin 取代 Java,並採用 Model -View-Intent (MVI) 架構進行模組分離,提高擴展性和可重用性,並協助其他專案成功採用 MVI 架構。 
  • 積極探索 ChatGPT 和人工智能新技術應用,使用 PlantUML 和 ChatGPT 產生 Class Diagrams 或 sequence diagram,可提升專案開發效率和減少製作文件的時間。
  • 積極參與公司內部黑客松活動,透過實際的專案開發過程,探索並掌握各種新技術。成功將所學應用於專案開發,並取得兩次活動的優異成績,分別獲得第一名和第三名的殊榮。
  • 積極研究並引入Android平台的新技術,透過實際的專案實作,驗證其應用價值並建立範例程式。 
  • 制定程式碼撰寫指南和審查流程,以提升程式碼品質和團隊效率。 
  • 分享並應用Flutter開發經驗,運用 Clean Architecture 架構打造高品質的Flutter應用程式。
  • 撰寫單元測試案例,提升產品品質。

Experiences 00 00@2x 504900dc09d82f711fdb54cf5763251cab5193a844856da978b2b8f3907ecd5a

聯合智網,Mobile Team Lead,副理,2019 年 1 月 - 2022 年 8 月

  • 規劃專案時程,帶領團隊開發電商類型的 Android/iOS native App 和 Flutter App。 
  • 與 PM 和 UX/UI 設計師合作,共同評估、規劃並實作具備良好使用者體驗的 App。 
  • 與後端協調適合前端串接的資料結構,以減少後續資料調整的時間。 
  • 重構和優化 udn 買東西 App:
    • 重構並移除亢餘的程式碼使 Apk Size 減少約 25%。 
    • 增加 null 檢查和錯誤處理機制,提升 crash-free 率從 83% 至 99%。
    • 實作資料預載和快取的機制,減少首頁載人時間約 45 %。
  • Android/iOS 或 Flutter 新技術、工具或應用的研究與導入評估,以及範例程式的實作。 
  • 規劃 Kotlin / Swift / Flutter Training Plan,用於內部教育訓練與新人培訓。
  • 制定 Coding Guidelines 與 Code Review 方式,提升程式碼品質。 
  • 用 Kotlin 取代 Java 開發新專案,使用 Android Jetpack 和 MVVM 架構開發 Android App,分離畫面顯示和資料處理的邏輯,增加程式可讀性和可維護性。
  • 學習 Swift 和 iOS 開發,參與 MyMind iOS APP 功能開發和重構首頁。
  • 學習 Flutter 和分享學習心得,使用 Clean Architecture 建構 Flutter App。
  • 撰寫 Unit Test Case,提升產品品質。
  • 研究 Katalon Studio 並舉辦教育訓練,協助 QA Team 建立自動化測試案例。
  • 使用 Jenkins 和 Shell Script 建置 CI/CD 流程自動包版。

Experiences 00 00@2x 504900dc09d82f711fdb54cf5763251cab5193a844856da978b2b8f3907ecd5a

Mattel,Senior Software Engineer,2016 年 1 月 - 2018 年 12 月

  • 負責 Android/iOS App 專案開發、SDK 和 Framework 開發與設計。
  • 參與系統規劃與設計,使用 Lucidchart、drwo.io 或 Cacoo 繪製 UML 圖表。 
  • 建置 Android Open Source Project (AOSP) 環境,在 Framework layer 開發 app 和 service 的應用服務。
  • 建置 Android SDK,並提供公司內部的工具集給其他開發者使用,可增加開發速度並減少程式碼重複的情形。
  • 使用 JUnit、Mockito 和 PowerMock 撰寫 Unit Test Case,提升產品品質。 
  • 研究並整合第三方套件,如 OpenCV、WebRTC 和 Eclipse Paho MQTT 等等。
  • 學習 Swift 並舉辦讀書會分享學習心得,使用 MVVM 架構開發 iOS App。
  • 支援 iOS Team 開發 iOS / tvOS SDK、Reference App。

Experiences 00 00@2x 504900dc09d82f711fdb54cf5763251cab5193a844856da978b2b8f3907ecd5a

Fuhu,Senior Software Engineer,2015 年 8 月 - 2016 年 1 月

  • 負責 Android App 專案開發和 SDK 開發與設計。
  • 建置 Android SDK,並提供工具集給其他開發者使用,可增加開發速度並減少程式碼重複的情形。
  • 負責 NabiPass App 維護和優化,並使用 MVC 架構減少耦合度和增加程式碼可讀性,。
  • 使用 JUnit、Mockito 和 PowerMock 撰寫 Unit Test Case,提升產品品質。 

Experiences 00 00@2x 504900dc09d82f711fdb54cf5763251cab5193a844856da978b2b8f3907ecd5a

新軟系統,Software Engineer,2010 年 9 月 - 2015 年 6 月

  • 主要負責 Android App 專案開發、SDK 和 Firewall 開發與設計。
  • 依客戶提供之硬體及 API 文件,開發客製化的 Android App。  
  • 與 UI/UX 溝通合作,實作使用者介面。 
  • 導入 Git 版本控制系統,藉此改善程式碼互相覆蓋問題。 
  • 使用 Libvlc 實作 Real Time Streaming Protocol (RTSP) 串流播放的功能。 
  • 整合 FFmpeg library,並透過 Java Native Interface (JNI) 開發影音合併的功能。 
  • 使用 Perl 進行 IPv6 互連性測試,並根據測試結果調整 Firewall 原始碼和參數,幫助公司產品順利取得 IPv6 認證。 
  • 擴充並維護公司內部使用之函式庫。

Experiences 00 01@2x 6daa47d1df70d315f129dcecdd562003831581c4cdd8f9c819aa22d4a24ae150






Project


TELASA (Android App)

相關技術: Android, Kotlin, MVI, Hilt, Retrofit, Firebase, Coroutines, Flow

  • 開發和維護影音串流類型的 Android App,提供客戶在行動端觀看影片、訂閱與下載影片的功能。 
  • 採用 Model -View-Intent (MVI) 架構進行模組分離,提高擴展性和可重用性,並協助其他專案成功採用 MVI 架構。
  • 重構並移除亢餘的程式碼使 Apk Size 減少約 20%。 
  • 透過 Kotlin 重新撰寫,將 Java 代碼比例從 55% 降至 30%。 
  • 定期處理 Crashlytics 回報的問題,確保 crash-free 維持高於 99.5%。 
  • 撰寫 Unit Test Case,提升產品品質。

品牌商店 (Android / Flutter App)

相關技術: 

Android: Kotlin, MVVM, koin, Retrofit, Firebase, Coroutines, Data Binding 

Flutter: Dart, Clean Architecture, Provider, go_router, json_annotation

  • 提供用戶在後台設計版面架構和店面風格,建立專屬的品牌 App。 
  • 根據不同版型建立對應的 Custom View,依據首頁資料建構客製化首頁。 
  • 整合 Android Jetpack 和 MVVM 架構實作 Android App。 
  • 使用 Koin 實現依賴注入,使程式碼更容易測試,易於擴展和維護。
  • 學習 Flutter 和 Dart,用 Clean Architecture 開發 Flutter App。 


Paragraph image 00 00@2x ebb59a6d9adb03673d06762584bb6a0cc401a7cc4bd081bb82ce6f841d95aa2b
Paragraph image 01 00@2x 1a3881c875a7a1fb1e859435ef9363b5ddf36f4e73d1ad63a1a0af69f2a9f745

買賣 MyMind (Android / iOS / Flutter App)

相關技術: Android, Kotlin, MVVM, MPAndroidChart, TOTP, Swift, Flutter

  • 提供店家在行動端的基本買賣功能,如重要訊息和代辦事項提醒、首頁dashboard 瀏覽、TOTP 認證、 採購申請和審核、帳號設定。
  • 兼任 PM 參與需求分析和設計,繪製 Feature Map 和 User Story Map,使用 Axure 撰寫 MyMind App 規格書,交付給工程師開發。
  • 與後端合作規劃 Time-based One-Time Password (TOTP) 身份驗證流程,加強帳號認證的安全性。
  • 根據 Wireframe 和 API 文件開發 Android App。
  • 學習 Swift 和 iOS 開發,參與 iOS APP 功能開發和重構首頁。
  • 使用 JUnit、Mockk 撰寫 Unit Test Case,提升產品品質。
  • 在 Flutter App 使用 fl_chart 繪製折線圖和圓餅圖。

買東西 (Android App)

相關技術: Android, Java, Kotlin, Jetpack, MVVM 

  • UDN買東西電商App,提供客戶在行動端瀏覽商品、購物與訂單管理的功能。  
  • 負責維護和優化、新功能開發買東西 App。
  • 重構並移除亢餘的程式碼使 Apk Size 減少約 25%。 
  • 增加 null 檢查和錯誤處理機制,提升 crash-free 率從 83% 至 99%。 
  • 實作資料預載和快取的機制,減少首頁載人時間約 45 %。 
  • 使用 RxJava 和 Retrofit 實作 API 資料請求的框架,提升程式可讀性和減少 API 巢狀callback 的情形。
  • 使用 JUnit、Mockito 和 PowerMock 撰寫 Unit Test Case,提升產品品質。

Paragraph image 00 00@2x ebb59a6d9adb03673d06762584bb6a0cc401a7cc4bd081bb82ce6f841d95aa2b
Paragraph image 01 00@2x 1a3881c875a7a1fb1e859435ef9363b5ddf36f4e73d1ad63a1a0af69f2a9f745

買東西 SPM OTP App (Android App)

相關技術: Android, Java, Kotlin, Koin, MVVM, TOTP

  • SPM OTP 是一款為udn買東西供應商專用,該工具可提供供應商登入搭配的一次性動態性密碼,以提升供應商帳號的資訊安全性。
  • 根據 Wireframe 和 API 文件開發 Android App。
  • 負責維護和優化 SPM OTP App。
  • 學習 Kotlin 語法,將原本的 Java 轉為 Kotlin,精簡程式碼並減少 App Size。
  • 使用 Koin 實作依賴注入的框架,提昇程式可測試性。
  • 使用 JUnit、Mockito 和 PowerMock 撰寫 Unit Test Case,提升產品品質。

智能語音設備 Aristotle

相關技術: Android, Java, C/C++, Bluetooth, MQTT, WebRTC, OpenCV, STT/TTS

  • 能用聲控方式和使用者互動的智能助手,配備攝像頭,可以向手機傳輸視頻。 
  • 負責 Core service 系統規劃與設計,開發 Android Framework, App, SDK。
  • 開發 ActionQueue 處理同步或非同步的 Action,可排程和分配工作給對應的 Handler Service。
  • 開發 Monitor 服務框架,可檢測 Action Sender / Handler 服務狀態。若錯誤發生時,可記錄相關錯誤訊息,並試著重啟服務。
  • 開發 Bluetooth 配對和資料傳輸的功能。
  • 使用 C/C++ 和 OpenCV 實作 Motion detection 的功能,可偵測物體是否離開安全區。
  • 使用 EventBus 傳遞物件,以事件驅動的方式來簡化事件傳遞邏輯。


Paragraph image 00 00@2x ebb59a6d9adb03673d06762584bb6a0cc401a7cc4bd081bb82ce6f841d95aa2b
Paragraph image 01 00@2x 1a3881c875a7a1fb1e859435ef9363b5ddf36f4e73d1ad63a1a0af69f2a9f745

嬰兒智慧腳環 Sproutling Baby Monitor

相關技術: Android, Java, Bluetooth, MQTT

  • Sproutling 是一款可以綁在嬰兒腳踝上的智能可穿戴設備,它能夠讓父母時刻掌握嬰兒的狀況,能夠監控的指標有:心率、運動頻率、嬰兒睡眠狀況等等。
  • 根據 Wireframe 和 API 文件開發 Android App。
  • 透過 MQTT 蒐集腳環提供的資料,並將相關資料上傳至 Backend Server。
  • 開發 Pipeline Library 處理 HTTP 或 MQTT Action,將原本複雜的商業邏輯切割成幾個較小的元件,不僅可降低系統複雜度,並易於重複使用與測試。
  • 使用 EventBus 傳遞物件,以事件驅動的方式來簡化事件傳遞邏輯。 
  • 使用 ProtoBuf 描述一些資料結構,並提供程式工具根據這些描述產生程式碼,用於將這些資料結構產生或解析資料串流。

Mercurius

相關技術:Android, Java, Google Map

  • 藉由提供飯店地理位置周遭的店家廣告促銷,促使房客至實體店家消費,將飯店與周圍區域串接成為一大型購物圈。
  • 開發 Android App 和 SDK。
  • 介接 Google Map API。
  • 使用 Volley 和 OkHTTP 與後端 API 介接。

Paragraph image 04 00@2x 0a60eca693a10c928b852fbc59ecb80f69e59f0d26acd4c74f39c7f256369567
Paragraph image 04 01@2x d7b528f9ab8e34777562695011fbbc2a4f3f28d8b47f4c8e57ee7c3410afdfa8
Paragraph image 01 00@2x 1a3881c875a7a1fb1e859435ef9363b5ddf36f4e73d1ad63a1a0af69f2a9f745

NabiPass

相關技術:Android, java, Middleware

  • NapiPass 是一個為兒童設計的訂閱服務平台,包括影音、音樂、文章和遊戲,可在 Nabi 平板中使用已訂閱的影音內容。
  • 進入公司參與的第一份專案,負責維護 Middleware 和修復 Bug。
  • Middleware 優化,提升程式可讀性和可維護性。
  • 使用 OkHttp 替換原本的 Apache HttpClient Library。

Replay XD

相關技術:Android, Java, LibVlc, RTSP, Facebook / Twitter / Youtube / Dropbox API

  • 使用者能夠遠端控制攝影機,顯示 RTSP 即時影像,並提供使用者錄影或照相的功能。
  • 檔案管理模式中,使用者能下載或刪除已錄好的檔案,並且可經由 Facebook 或其他社群分享。
  • 使用 LibVlc 開發視訊播放器,並調整影像輸出參數,可減少視訊延遲的問題,另外也增加 Libvlc 的錯誤處理程序。

Paragraph image 02 00@2x cb1a9cce8ec2420576e7f93d4a97d2663cb38d3060b7943702140d7f6da9f81e
Paragraph image 03 00@2x a10257c22ab8b43ba541f7170ecfbbafea76718648ab6504b9015d9950ed2250

DirectScan

相關技術:Android, Java, Facebook / DropBox / Evernote / OneDrive / Google Drive API

  • 可顯示手持掃描器的即時影像,當掃描完成後,使用者可編輯或分享 影像。 
  • Direct Scan 提供檔案管理介面,使用者可移動或刪除檔案。
  • 在即時掃描的過程中,影像串流會經由 Socket 傳遞進來,再根據圖片的特殊表頭切割並顯示圖片。

Skills 


Programming

  • Kotlin
  • Swift
  • Flutter
  • Dart
  • Java
  • Java Native Interface (JNI)
  • HTML / CSS
  • C
  • Java Script
  • JQuery

IDE / Editor

  • Android Studio
  • Xcode
  • Visual studio Code
  • Atom
  • Eclipse
  • Vim
  • Xcode
  • Katalon Studio
  • Axure


Version Control

  • GitHub
  • GItLab
  • BitBucket
  • SourceTree

Issue Trackers
  • Jira
  • Bugzilla
  • Redmine





Education

靜宜大學,資訊管理系資訊科技組,碩士,2006 年 9 月 - 2009 年 8 月

畢業論文 IPv6-MPLS網路封包快速遞送之研究 

Fast Packet Forwarding Mechanism for IPv6-MPLS Networks ( 2009 )

靜宜大學,資訊管理系,學士,2001 年 9 月 - 2005 年 6 月

畢業專題 數位學習系統