20536132_10211492920570899_1934810031_o.jpg

倪僑德 ( CHIAO-TE, NI)

      有帶領8~10人團隊的經驗,並熟知適合多人分工協作,並且易於測試的App軟體架構。重構過百萬量級的App,並利用Domain的概念規劃分層,讓程式更具可維護性。熟悉多線程開發概念,Layer繪製,以及原生加密流程的處理經驗 

      熱衷於技術社群的參與,藉由與各公司工程師的交流保持自身技術的廣度。本身是社群 iOS@Taipei的固定講者,並分別有在2019與2020,於台灣iOS的研討會 iPlayground 作為講者之一分享議題 (Swift Smart KeyPath / Clean Swift Workshop)

(+886) 953 - 145951 
Taipei, Taiwan

Work Introduction - iOS APP


ArcusChat

Download URL: https://testflight.apple.com/join/NQro68Dj

  • 聊天型態App,主要功能在各品牌的群組聊天與線上客服。
  • 架構上有搭配Router與Repository做UI與資料面的邏輯彙整。
  • 聊天訊息使用CoreText做背景計算,以及CALayer的繪製 對聊天頁面做效能優化
  • 自製帶Cache功能的檔案下載機制。
  • 仿weChat的發送螢幕截圖訊息功能,做了在App內外均可監聽截圖產生的Observer
  • 技術&套件: CoreText / UIBezierPath / GRPC / 部分頁面鑲嵌RNView / 強制更新 / 緩存下載 / Bugly

捕夢網小說

Download URL:  https://apps.apple.com/tw/app/id1476815947

  • 小說閱讀器App, 利用CoreText做文字切頁,以達到內容及字型變更時的文字排版即時運算。
  • 在UI上有仿Facebook的資料讀取畫面,利用Gradient搭配Mask製作了可搭配到任何Cell的ShimmerView動畫。
  • 自製輕量的像Pull to Refresh / Footer等UI元件。
  • 架構上採MVVM,用closure做binding,並用Repository處理DB與ServerSide api的資料流彙整,以達到簡化VM內資料流的處理,並做好物件權責分配與封裝
  • 除了Debug工具外僅保留了FMDB 與Kingfisher兩個第三方lib,讓其他功能與UI全部自行製作來達成更全面的專案細節掌控,而唯二的Lib也經我們完整的封裝,以便未來需要時專案內可無痛抽換
  • 技術&套件:  GradientLayer & CABasicAnimation / MVVM / Router / Repository / Factory Pattern / Fluent Interface                             Builder / Fluent Interface AutoLayout / CocoaDebug

卡提諾論壇

Download URL: https://itunes.apple.com/us/app/卡提諾論壇/id1395126723?l=zh&ls=1&mt=8

  • 論壇App版,有包含網友提供的小說與文章,並支援IAP購買。
  • 與ServerSide的request均有實作加密,對文章的連線亦有做CF Signed Request 加強保護。
  • UI部分亦有諸多客製化FlowLayout / Trasition / 與自製元件的製作。
  • 技術&套件:  CommonCrypto (AES加密) / CFSignedRequest / CoreAnimation / 客製TransitionController                                                   / Lottie / GA / Crashlystics

漫畫App (委託製作)

  • 因對方公司無App團隊而委託製作的漫畫App,該App全部從設計到上架僅2個月,在一個半月內完成ProtoType,再於半個月內完成 PM陸續新增的需求變更並上架。
  • 本App除了對Server做全程加密外,亦有許多客製化元件,並因應iOS9橫向PullRefresh的需求做了類似MJRefresh的橫向精簡版自製套件。
  • 廣告部分除串聯播廣告商外,亦有做委託方公司所對外販售的CPI廣告。
  • 技術&套件:Codable / 客製Encode Decode / Universal Link / Facebook SDK / Firebase, FirebaseRemoteConfig

Travel By MySelf 

Download URL: https://itunes.apple.com/tw/app/travel-by-myself/id1261796125?l=zh&ls=1&mt=8#

  • 剛學程式時因自己需要而撰寫的App。功能為依照User輸入旅遊景點,自動排序出一建議的的行程路線,並附上各景點間的交通資訊/時間。另有提供URL  Scheme功能,可外部連結到google map作為旅途導航用
  • 技術&套件: Alamofire / SwiftyJSON / Google Direction / Google Places / CoreLocation / MapKit / Scheme URL

經歷

Gamania (beanfun!) - Technical Assistant Manager, Nov 2020 - Until Now

- 帶領近10人團隊進行super app的開發,並於1月將重
  構與大規模UI改版後的版本成功完成上線

- 導入測試觀念,帶領團隊以易於測試的軟體架構進行開
  發,並導入單元測試與整合測試來維護專案的品質 

- 導入定期技術分享習慣,提升團隊的技術能量 

- 輔助PM與設計團隊進行流程與規範的優化,增進整體
  團隊的生產能力

Gamania (beanfun!) - Staff iOS engineer, Feb 2020 - Nov 2020 

- 帶領2~5人團隊,重構用戶數百萬量級IM的App  

- 利用Domain的概念規劃分層,導入適合多人分工協作 

   的軟體架構  


- 導入code review的機制,增加團隊產出的品質 

- 制定Coding Style Guide,降低多人開發的風格歧異

  性,以減少code review的門檻  


- 設計並建置App的的網路層,使專案的Data Layer更易

  於維護以及做更細節的操控

Paradise-soft - iOS App Develope, Oct 2018 - Until now

- IM類型 app的開發,重構並優化原大陸團隊交付App的
  品質與效能 
- 小說型App的架構規劃與開發,並以CoreText為基底客
  製化撰寫小說閱讀器,達到字體大小與分頁動態計算的
  效果 
- RN型App與原生super app內鑲嵌RN小程序的製作,包
  含解決RN原始設計上module name不適合動態帶入的
  缺點,以及在RN團隊遇效能瓶頸時製作原生Bridge給
  RN使用

網鈺數位科技 - iOS App Develope, Aug 2017 - Sept 2018

- 在一年共完成兩款新App開發,兩款App的Phase 2 製作。
- 最短曾在一個半月完成一款漫畫App的製作,並在之後的一個月內完成PM與設計所提出的新需求變更並完成上架。

Taidoc - 生化研發工程師,07 July 2014 - 26 Jan 2017

主力於新產品的開發: 平均同時間身兼兩個研發案 (ex: 血糖試片, 乳酸試片, 鈣離子配方, 膽固醇配方, 濾血結構試片, 一般生化研發案開發時間在一年以上) , 並從第二年開始身兼部門新進大型分析儀的維護管理者 

iOS@Taipei 講者,June 2018 - Until now

 https://www.facebook.com/groups/ios.taipei/

目前主要有我與另外兩位講者輪班,每週二進行iOS技術的分享。

瑋育iOS養成班學員,08 Feb 2017 - 09 June 2017

IOS Programming進修, 擅長於Swift撰寫, 但對Objective C與PHP亦有所了解。

大同化工所,Sept 2011 - July 2013

專職於研究光電半導體、太陽能水解、燃料電池的研究 , 並用 Matlab 簡化繁瑣重複的數據處理程序。

淡江化學工程與材料工程學系,Sept 2005 - Jan 2011

擅長於實驗規劃&產線設計 , Fortran的程式撰寫 , 並於課餘接觸過基礎的C與 JAVA (SCJP) 課程。

師範大學附屬高級中學 , Sept 2002 - July 2005

接觸過基礎VB課程。

Skills


iOS 

  • 熟悉Web API的串接與JSONData解析,並能依需求自定義encode/decode
  • 了解iOS原生AES加密,負責撰寫過公司兩款App的API加密流程
  • 寫過Signed Request流程,並了解對一般後台的Signed Request機制
  • 慣以SQLite搭配UserDefault進行本機端資料保存
  • 有聯播廣告SDK串接的經驗,並有串接過公司個別販售的CPI廣告
  • 開放於了解架構與pattern,像今年便在公司從外包接手回來的專案中導入Repository與Router進行重構,建立更好的物件權責與邏輯拆分,並簡化頁面跳轉的複雜度


UI

  • 能客製化Transition,包含互動式的轉場動畫 
  • 有撰寫客製化的CollectionView Layout ㄩFlowLayout的經驗 
  • 了解CoreAnimation框架操作動畫特效的應用。 像是CAGradient搭配mask做fadeout,或CAShapeLayer搭配BezierPath進行聊天視窗繪製,彈跳動畫等效果
  • 擅長封裝與客製元件:利用KVO與Delegate pattern設計易於使用的元件,並能依需求靈活以純code或xib進行UI元件製作


Swift

  • 熟悉delegate與protcol的設計與使用,善於以此進行元件及Controller間的委派設置
  • 熟悉generic的使用,善於以此對register / reuse,或func回傳值方面的操作進行優化
  • 撰寫過subscript,曾以此搭配extension對有confirm Sequence protocol的進行功能擴增
  • 善於利用Extension對原生功能做擴充,並以此建立了自己的常用庫


熟悉技術與套件

  • CommonCrypto
  • CoreAnimation
  • IAP
  • RN Bridge
  • GA / Fabric / Crashlystics
  • FirebaseRemoteConfig / FirebaseRealtimeDB
  • FBSDK
  • Lottie


Autobiography


          我自認是個有執行力,並富有工作熱誠的人。入行以來熱衷於專研技術,力求在有限時間內,增加自己技術的深度與廣度。主要興趣在專研各種UI的繪製技術,努力於讓自己達到設計不受限的程度。為了增加自己的成長幅度,在2018年6月開始與朋友共同接下社群iOS@Taipei的主講者,讓自己除了在工作上得到的實務經驗外,也能督促自己持續學習不同的技術面,並藉由在社群與其他工程師間的交流來增加自己的技術廣度。


        Coding習慣方面,我對物件設計的權責分派,以及物件的Access Control有一定程度要求,認為一個物件的設計都至少要達到Interface僅暴露該物件的使用者該知道的項目,以此來減少日後自己及同事在使用自製物件時所要理解該物件操作方式的時間。在UI操作上習慣因應需求彈性使用Storyboard, xib, 純code 方式撰寫layout,以達三種方式個別最大的效益,並且習慣建Router來做UI的跳轉,排除VC的相依性以及規範轉場前的流程。另外會盡可能避免套件的使用,即便使用也會額外對套件進行封裝,以達到套件不堪使用時專案內可無痛抽換的效果。


          入行這兩年來,經手過許多專案的規劃與重構,在過程中學習到很多架構與pattern的優點,並體會到各種情境下,架構應先了解其優缺點,再依需求導入。像做app流程的Cache,可以實作Redux 或 全App的單一事件流。彙整多項資料流,可藉由製作Repository進行整理,而MVVM除了將資料流抽出VC外,還容易抽換假資料以便api完成前的UI製作等等,因此日常除了對UI與動畫的專研外,也保持跟朋友間對架構設計的討論,比方說在製作小說這個專案中,我與同事封裝出自己的網路層,並在研討會聽完王魏的網路架構後,更進一步思考對自己網路層的重構。


        綜合這兩年的經驗,我認為自己是一個喜歡挑戰,並努力於增進技術的人。若恰好認為我的技術面向適合貴公司所需,請不吝於給我一個呈現自己機會,謝謝。