Profile 03 00@2x 0f8539d7f013fd11030f4f7a7b97caf8c2dc5732bc61cba71764f3365c568794

楊禮忠

目前將重心放在 重構模組化 。 

喜歡將事情自動化,減少做同樣的事情。

喜歡寫擴充性佳的程式,看到自己的程式被容易使用會覺得很開心。

專注訓練自己的解決問題的能力,而非訓練程式語言,所以轉換語言快速

喜歡將問題分解成小問題後再一個一個解決,對症下藥。

Github: https://github.com/exia56   

Mail: [email protected]   

Blog: https://exia56.github.io/   

通用程式能力:模組化、重構、架構設計


主導的重構項目,重構後的程式都節省了不少的開發時間。(某功能的開發時間五天減少至三天的開發時間

目前重構的方法主要分割為三個層次(controller、service、repo),在service層則額外分離各個客製化的抽象層。

controller 處理 API 的驗證、service 處理商業邏輯、repo 處理資料的存取,各層次都互相抽象化,方便物件的抽換。

Code Review 時會了解開發者的想法/需求後再給予合適的回饋,讓專案可以有好的循環。

程式語言:NodeJs,JavaScript, Typescript


目前開發環境: Express。

對於 async、await、promise 等非同步語法的使用時機與使用方法都有詳細研究。

OOP 的知識在 JavaScript 中使用 Class 語法實現。

專案中使用 Websocket 技術,並且實作物件中兼容了 Microservice、 Cluster 等 server 架構上的限制。

開發中,使用 JsDoc 進行變數的型態判斷,減少弱型態可能造成的問題。

學習、了解 Typescript 的開發羅傑,並且將舊有系統逐步轉換成 Typescript。

轉換期間,同步編寫 BDD 類測試流程, 保證轉換前後都有一致的程式邏輯。

技能


程式語言:

主要: Typescript, Javascript, Kotlin, C#

次要: Python, Java

後端: NodeJs, .NET Core

前端: NodeJs,VueJs



其他技能:

OS環境: Windows, Linux(Ubuntu), Docker,AWS

開發技巧: OOP, Design Pattern 

App:Android, React Native 

DB: MongoDB(Mongoose), MSSQL(Sequelize)

技術:Websocket,Kafka

經歷


拓連科技 Noodoe - 後端工程師 2019年3月 - NOW

使用技能: NodeJs, AWS,express,Websocket,Typescript
負責電動車電池系統的後端程式,維護及開發需求。(同時維護其他專案)
主導程式與服務架構優化,並與團隊夥伴合作進行優化。(提出方案後由leader指派主導)
設定服務的程式架構,將各個層級的程式分層、抽象化,增加unit test的彈性。
維護 CI/CD 流程,將重複的事情交給 CI 自動進行。
逐步將專案由 JavaScript 轉換成 TypeScript ,增加專案的型態定義,減少開發的問題。
串接第三方登入服務,將程式編寫成有彈性的,容易擴充的邏輯架構。(Facebook、AppleID、QQ、WeChat)

STAR BIT - 後端工程師 2018年7月 - 2019年2月 (8個月)

使用技能: .NET Core, ReactNative, NodeJs。
建立後端的架構,設計各個服務的架構。
編寫公司手機App(使用React Native),並且介面層與邏輯層分離,可以快速更換介面產出不一樣的App。
幫助公司上架App。(android與ios)
學習了以太坊(Ethereum)基礎知識。 

精英電腦 - 雲端服務工程師 2016年8月 - 2018年6月 (1年 11個月)

使用技能: C# WPF, VueJs, Android, Azure, NodeJs, VueJs, GCP DialogFlow。
將專案程式碼整理,在整理後輕鬆地由原本支援的7種MediaType擴充到了20多種的MediaType**MediaType並非影片格式
編寫自動測試程式,節省開發時的測試耗時。
將Server由傳統電腦環境擴充為Azure App Services 可以彈性轉換的程式架構
將Client端的程式由C# WPF 改寫為 Android App。
將公司內部會議室控制App重寫,更改架構,更好擴充,彈指之間就可以新增一間會議室的控制架構了。
不定期與團隊同事分享程式概念,傳授程式編寫技巧。
編寫IOT相關系統。(進入公司參與的第一個專案
編寫公司內部使用系統。(共編寫2個小專案)
期間接觸API.ai(現為DialogFlow)聊天機器人之開發。 
進入公司後,在短時間內就適應了新的程式開發環境,快速成為戰力。

實習工讀生 

大學時期共在2家公司實習過,主要負責前端的程式開發工作。
在這段時間內學習到了觀看API文件的能力以及模組化開發程式的知識。

專案(粗體底線專案為重點作品)


智慧家電 - 精英電腦

工具: NodeJs

  • 家用智慧IOT系統。
  • 接觸時系統的開發週期已經到了尾聲。
  • 負責開發系統後台的後端部分。
  • 進入業界後的第一個專案。

出院照護規劃通 - 台大黑客松(獎)

工具: Javascript,Bootstrap

  • 統整病患在出院後會遇到的問題,讓病患出院後不再不知所措。
  • 負責前端開發。
  • 與團隊溝通,了解團隊的需求。
  • 獲得“政府機關頒發的企業獎”

智慧建築報表系統 - 精英電腦

工具: NodeJs, c3.js

  • 彙整精英大樓智慧建築的系統數據,顯示簡單的系統數據。
  • 為接下來導入大數據應用做準備。

聊天機器人 - 精英電腦

工具: Nodejs,DialogFlow,VueJs

  • 用於公司內部報修時,減少同事處理報修的時間週期。
  • 透過報修紀錄,訓練機器人了解使用者的問題,再導出解決模板,讓使用者解決問題。

數位看板系統 - 精英電腦

工具: C# WPF 

  • 透過雲端後台系統直接部署廣告媒體至客戶端現實於看板上,並且可以設定播放開始與結束的時間。
  • 接觸時為系統開發中期,負責Client端程式。
  •  接觸時就向主管要求重構程式。 重構後,程式開發效率增加2倍。 
  • 可以快速切換不同的底層播放器套件,測試播放效率,增加程式穩定性。
  •  可以快速開發出新的媒體類型,由7種開發到最終的20種。
  •  過後也為了系統後端因為使用在Azure中的環境不同而重構後端部分程式碼,彈性轉換後端部分架構。 
  • 也編寫了後端Api層的測試程式,為接下來重構後端程式做準備,測試程式雖然完成了,但最終因為其他專案而沒時間重構。

會議室控制系統 - 精英電腦

工具:Android,Kotlin

  • 公司大樓會議室的控制APP,登入後即可遠端控制會議室的設備(電燈、窗簾、投影螢幕等)。
  • 重構公司的會議室控制系統的控制端。
  • 可以在手機上直接控制會議室內的投影屏幕,燈具,空調等設備。
  • 重構後的程式更加有彈性,可以快速、簡單地更換會議室的架構。

數位看板移動端 - 精英電腦

工具:Android,Kotlin

  • 將原本PC端的程式修改為移動設備適用的程式。
  • 修改原本的播放架構,增加程式可讀性與可測試行以及擴充彈性。

虛擬幣去中心化交易所 - STAR BIT

工具:.NET Core MVC,VueJs

  • 建立公司主產品,虛擬幣的去中心化交易所。
  • 主導規劃整體的架構與設計方法。
  • 設計DB架構,學習了索引等基本知識。
  • 為公司編寫規格書,方便業務開發。
  • 為公司同仁科普相關科技基礎知識。

去中心化交易所(外包) - STAR BIT

工具:.NET Core MVC,VueJs

  • 依照顧客需求,客製化去中心化交易所系統。

成交量計算服務 - STAR BIT

工具:NodeJs,0x.js

  • 定時計算交易所之成交價與成交量。
  • 架構分割清楚,可讀性佳。

交易所SDK - STAR BIT

工具:NodeJs,0x.js

以太坊手機App - STAR BIT

工具:React Native,Web3Js

  • 開發手機上可以直接與以太坊溝通之App。
  • 建立基礎架構,方便日後快速更換功能。

電動車電池雲端系統 - 拓連 Noodoe

工具:NodeJs, AWS,Websocket,MongoDB

  • 電動車電池交換,
  • 維護與開發系統需求。
  • 主導重構系統的程式與服務架構。
  • 細化系統邏輯,為系統未來在各個地區/國家的客製化上快速開發。
  • 設計系統叢集的資訊同步機制。

帳號管理系統 - 拓連 Noodoe

工具:NodeJs, Typescript, AWS

  • 公司服務的通用帳號系統。
  • 維護與開發系統需求。
  • 重構程式架構。
  • 串接第三方登入服務(Facebook,AppleId).