王英皓 (Harry)


畢業於國立中山大學資訊管理學系105級,本著對程式開發的興趣,在學期間主要專注於與程式設計與計算機概論的相關課程。畢業之後,首先應朋友的邀約開始了在市場小攤販創業之旅,之後在等待去語言學校的空檔,到了親姊開的火鍋店幫忙。2019年的4月帶著兩年的積蓄和學生時期的夢想 ,到日本就讀了六個月的語言學校,之後成功的在2019年底通過日本語能力試驗N3及N2。在盤纏耗盡後便返台結束這段人生的gap year,開始投入程式開發的工作,目前主要負責票務平台OQR Ticket App及PHONEKEY SDK/Demo App開發及維護工作。 


Native iOS Android mobile RD

[email protected]

 

Skills


Android

  • 熟悉 Kotlin, Java, XML
  • 熟悉 APK簽署、上架流程,有完整上架經驗
  • 熟悉 View Model + LiveData + MVVM 架構
  • 熟悉 客製化元件, XML and code-based Layout + Navigation Component 的 Single Activity UI架構
  • 熟悉 Hybrid, WebView 開發
  • 熟悉 Firebase Cloud Messaging Push Notification
  • 略懂 Gradle 專案管理
  • Native Bluetooth, Camera, NFC, Location, ARCore 開發經驗
  • Coroutines, Web API, JSON, SQLite, SQLCipher, Room, SharedPreferences, Package Manager 等使用經驗
  • 模組化, SDK設計開發經驗
  • 第三方library, SSO(Line, Facebook, Google, Firebase Auth) 等串接使用經驗

iOS

  • 熟悉 Swift,有Objective-C轉Swift經驗
  • 熟悉 APP簽署、TestFlight、上架流程,有完整上架經驗
  • 熟悉 UIKit + Storyboard的MVC UI架構,曾有 SwiftUI 使用經驗
  • 熟悉 客製化元件, xib, code-based Layout, IBDesignable & IBInspectable 設計經驗
  • 熟悉 Hybrid, WKWebView 開發
  • 熟悉 Firebase Cloud Messaging Push Notification
  • 熟悉 Cocoapods, Swift Package Manager 套件管理
  • Native Bluetooth, Camera 開發經驗
  • Web API, JSON, FMDB, SQLCipher, Keychain, UserDefault 等使用經驗
  • RxSwift, RxGesture 等使用經驗
  • 模組化, SDK設計開發經驗
  • 第三方library, SSO(Line, Facebook, Google, Firebase Auth), 等串接使用經驗

其他

  • Git, Github 專案版本控制,GitLab on Docker 架設
  • 熟悉 Kotlin Multiplatform Mobile 跨平台架構
  • 熟悉 基本計概、OS、Network、Network protocolsSocket、Client-Server架構等基礎知識
  • 熟悉 Object-oriented, Abstraction, Builder pattern, Lambda 等開發技巧 
  • 略懂 Functional reactive programming
  • WAMP, LAMP 架設經驗
  • Kali Linux, Ubuntu, CentOS, Fedora 使用經驗
  • Docker, Reverse Proxy, Apache 等架設經驗
  • C, C++, PHP, Python, SQL 等基本語法、簡易應用開發經驗
  • Hackintosh 黑蘋果, Clover, OpenCore

Work Experience


Nov. 2019 - Present

Mobile App工程師  優仕達資訊股份有限公司

OQR Ticket 2019 iOS & Android (已下架) 維護/上架
OQR Ticket 2021 iOS & Android 完整開發/維護/上架
OQR Manager iOS & Android 完整開發/維護/上架

PHONEKEY 籃球櫃藍芽智能鎖 Android Demo App 維護
PHONEKEY 置物櫃藍芽智能鎖 iOS & Android SDK/Demo App 開發/維護PHONEKEY 藍芽智能鎖跨平台SDK 開發

Sep. 2018 - Mar. 2019

空降店長  雅香石頭火鍋 基隆店

Mar. 2017 - Sep. 2018

老闆兼員工 老家餡餅 北投店

Oct. 2016 - Mar. 2017

內場服務員  麥當勞

Projects


OQR Ticket 2019 維護及上架

在2019年初入優仕達資訊時,主要負責OQR Ticket iOS版本的維護工作。因為是第一次接觸iOS開發,在職期間自學了Swift及iOS相關的開發知識。另外在前輩的帶領下,從Localization開始熟悉整個專案架構、Xcode及Storyboard的使用方法。到後面整個接手iOS版本的維護、新功能開發、上架等工作。隔年因公司人力的調度,也接手了Android(Java)版本的維護、開發、上架等工作。

  • Android legacy migrate to AndroidX,解決混用而導致不穩定的問題
  • iOS - migrate CoreData to SQLite and Keychain 
  • iOS & Android導入SQLCipher強化Persistent data安全性
  • 程式碼重構,提高相同程式碼重用性,改善專案架構及提升維護簡易性
  • 導入第三方登入 (Google, Facebook, Line, Firebase),提升使用者註冊便利度

OQR Ticket + Manager 2021 完整設計開發、維護、上架

iOS: OQR Ticket, OQR Manager

Android: OQR Ticket, OQR Manager

2020年底OQR Ticket售票平台全新改版,APP也進行重新設計和全新開發。和前輩的商討下,順勢將Android專案改為以Kotlin開發,並導入Kotlin Multiplatform Mobile跨平台架構。除原生UI架構之外,如商業邏輯,Web API,Data storage等部分程式皆以跨平台的方式設計,成功提高開發速度,降低維護複雜度。

此外,這次專案加入了另外一支App,「OQR Manager」,同樣採用KMM跨平台架構,並且和OQR Ticket共享大部分模組。

開發經驗及設計思維 - 

  • 第一次上架所需的設定及流程 及 下架
  • 客製化UI、功能型class(如相機存取、權限檢查)、常用functions等整理打包建立為內部專用SDK
  • 更多code-based UI元件及Layout因應動態生成的View和動畫
  • 以觀察者模式為主設計API回傳資料和UI綁定
  • iOS及Android的程式碼架構及UI以最大限度設計為類似的樣子,方便後人接手
  • 以「將App以功能切割為不同模組之後,像樂高的方式將特定模組拼接完後成一隻完整APP」的概念設計開發
    • 規劃完後總共切割為 Common, User, Ticket, Manager
    • OQR Ticket = Common + User + Ticket
    • OQR Manager = Common + User + Manager
  • iOS
    • Custom UI設計為IBDesignable class、獨立Xib等
    • 設計如Android的ViewModel及Live Data
  • Android
    • 由Java轉為Kotlin
    • Custom UI設計為搭配declare-styleable屬性的Custom View、Style等
    • 導入View Model + LiveData的MVVM架構
    • 導入Navigation Component為UI架構開發
    • 導入Coroutines

PHONEKEY 籃球櫃藍芽智能鎖 Android Demo App 維護

這為一支公司內部原有搭配籃球櫃藍芽智能鎖Demo用的App,因為藍芽鎖的韌體更新,所以我負責接手更新相對應的程式流程,主要應用前輩所開發的SDK,測試並修正UI相關流程。同時也替此App維護非藍芽部分的其他bug。此App當時主要為給瑞士和印度客戶搭配SDK的demo,在對方開發期間以skype提供技術支援,是一次很難得的經驗。

  • 導入Glide解決大量使用gif而使記憶體不足導致crash
  • 導入Firebase Crashlytics方便錯誤偵測
  • Localization

PHONEKEY 置物櫃藍芽智能鎖 SDK/iOS & Android Demo App 完整設計開發、維護

此為籃球櫃藍芽智能鎖Demo的簡化版,單純只有功能列表Demo App,主要是提供給開發人員參考SDK的使用方法。在開發此Demo App時主要著重於SDK API的呼叫使用,因此對我而言在開發此類App時都是嘗試未使用過的技術的時機,因此在開發此App時成功爭取到以Swift和Kotlin分別開發iOS及Android的demo。

  • 重構藍芽掃描、連線、資料傳送(scanning, connecting, services and characteristic discovering) 程式碼
  • Central and peripheral as client-server
  • 資料傳送(Write)、資料接收(Notify)
  • SDK開發

Side Projects


Goods 家具展示 demo app

GitHub - rsZWang/Goods

應朋友的邀約,替朋友的朋友開發了一款簡易的家具展示demo app。對方的主要需求是透過AR的概念,展示家具在實體空間內的擺設及感覺,因此利用Android ARCore開發,加入3D模型,並且利用View疊加的方法達成對方期望的效果和功能

  • AR Core 簡易應用
  • Android Room
  • View Model + LiveData MVVM
  • 手勢縮放
  • 拍照去背 (透過串接RemoveBg)

即時天災應變系統

這個project為大四的時候畢業專題發表的題目,主要是Android App及政府公開資料的應用,透過即時資料的串接模擬災害發生時,顯示災害發生的地點及強度等資訊,及規劃1.如何快速前往附近避難地點或2.避開災害發生路段且前往指定地點的路線。整體架構為

Backend

  • CentOS + Apache + MySQL + PHP
  • Web API 設計
  • 從高雄市政府公開資料API讀取天災即時資訊及避難地點資訊存入資料庫
  • 路線規劃 - 排除淹水或地震導致路不通的路段

Frontend

  • Android + Google Map Android SDK
  • Android GPS Location
  • Web API串接, XML and JSON parsing
  • 災害發生地點及相關資訊標示
  • 就近避難地點標示
  • 可通行路線規劃, 導航

Education


2013 - 2017

國立中山大學

資訊管理

2012 - 2013

實踐大學 高雄校區

金融管理