Avatar of James Chang.
James Chang
技術主管
Profile
Posts
17Connections
Print
Avatar of the user.

James Chang

技術主管
我擁有超過 10 年的 C# 開發經驗(使用 .Net Framework 與 .Net Core)、2 年 Java 開發經驗(使用 Spring Framework),、 1年 PHP 維護經驗(使用 Laravel Framework)、 1 年 Python 維護經驗(使用 Tornado)、4 年地端伺服務器管理經驗和4年雲端機房管理經驗。 擔任團隊成員時曾為 5 個以上的團隊量身訂制 Git flow 與 CI/CD 並且傳授相關知識給團隊成員。曾帶領 1 個 Scrum 團隊從 0 到 1 的執行一個專案,瞭解 Scrum 的 3 個支柱與 5 個事件的意義與重要性。擔任技術總監後基於 SDLC(軟體開發生命週期)擬定每個階段的品質指標以達到符合期望甚至超出期望的交付品質。並透過 DevOps 的精神讓軟體工程師與系統工程師之間的資訊透明化,讓系統在持續迭代更新的同時也能保持良好的服務品質。 我相信技術存在的目的是創建公司價值。因此,在系統架構和解決方案的分析與設計過程中,我會思考如何達到範疇、時程與成本的平衡進而取得最合適的成本效益。
聯翔有限公司
Logo of the organization.
德明財經科技大學 Takming University of Science and Technology
台灣台中

Professional Background

  • Current status
    Unemployed
    Ready to interview
  • Profession
    Technical Manager
    DevOps / System Admin
    Full Stack Development
  • Fields
    Games
    Software
  • Work experience
    More than 15 years (More than 15 years relevant)
  • Management
    I've had experience in managing 15+ people
  • Skills
    Java
    Kotlin
    C#
    PHP
    JavaScript
    TypeScript
    HTML5 & CSS3
    React
    Vue.js
    Spring Framework
    ASP.NET MVC
    ASP.NET Web API
    ASP.NET Core
    Laravel PHP Framework
    Spring Cloud Gateway
    Android
    ORM
    Unit Testing
    Docker
    Mediator Pattern
    Swagger / Postman
    Clean Architecture
    Domain-Driven Design (DDD)
    Microservices Architecture
    CQRS Architecture
    CRUD
    Pub/Sub
    Sharding
    Windows Server
    CentOS
    Ubuntu
    IIS
    Nginx
    DNS
    SMB
    NFS
    SSH
    FTP
    NTP
    OpenVPN
    Firewall
    Load Balancing
    CloudFlare
    Terraform
    Ansible
    Jenkins
    Shell Scripting
    Microsoft SQL Server
    OracleDB
    MangoDB
    MySQL
    Redis
    Azure Cloud Services
    AWS
    NewRelic
    Azure DevOps Services
    JIRA
    GitLab
    BitBucket
    Git
    PMP Certification
  • Languages
    Chinese
    Native or Bilingual
    English
    Beginner
  • Highest level of education
    Associate

Job search preferences

  • Desired job type
    Full-time
    Interested in working remotely
  • Desired positions
    Technical Manager / System Architect / DevOps Lead
  • Desired work locations
    Taipei City, Taiwan
    New Taipei City, Taiwan
    Taoyuan City, Taiwan
  • Freelance
    Non-freelancer

Work Experience

技術主管

聯翔有限公司
Full-time
Dec 2021 - Mar 2024
2 yrs 4 mos
Taichung City, Taiwan
職責: * 公司的第一名員工,向老闆取得人力配置計畫的同意後,進行招聘與組建團隊。 * 擔任技術團隊的對外窗口,溝通對象為營運單位,負責整體系統架構規劃。 * 帶領團隊成員共同合作完成產品的系統開發,成員包含 PO 、PM 、前端工程師、後端工程師、安卓工程師、測試工程師與 UI 設計師。 * 負責整體系統架構規劃、開發、上版、維護與優化,並且與 PM 共同制定出團隊的開發流程。 * 參與需求討論,進行需求分析與設計,產出相關技術文件,並提供預估的時程。 * 從入職到現在,共經歷過三個產品,包含產品從零到一的研發與維運以及即有系統的維運與優化。在負責不同的產品時,也為產品的特性量身訂作不同的開發流程與策略。 成就: 產品一 海外線上網貸 (2021/12 ~ 2023/3): * 因團隊裡只有產品負責人對於這個產品有點熟悉,所以採用 Scrum 專案手法,讓整個團隊透過探索的方式瞭解產品的商業模式。 * 衝刺週期為兩週,透過「規劃會議」讓團隊成員清楚知道需求的內容,「每日會議」讓成員彼此工作狀況,「展示會議」讓產品負責人驗收與提出反饋,「回顧會議」讓團隊成員共同學習成長,「雙週會」向老闆回報專案進度、風險與議題。 * 在專案運行的過程中,確保資訊的透明性,讓團隊知道實際狀況與專案目標。同時透過專案資訊管理系統「 JIRA 」記錄專案進度與過程。 * 系統環境採用四個環境,DEV / QAT / Staging / Production,盡可能讓 bug 提早發現提早修復,而不是推上正式環境再讓問題追著跑。 * 專案如期交付,在上線後團隊轉型成混合式流程運行,也因為良好的交付品質,只保留 20% 的資源在做系統維護。但最後因市場因素導致產品沒收益,最終老闆要求團隊轉移到新專案。 * 專案的技術選擇: - React, Kotlin (APP & Backend), Java - Onion clean architecture & CQRS - Event Driving (RabbitMQ) - Mediator Pattern - MongoDB + Distributed Lock - AWS 產品二 海外金流系統 (2023/3 ~ 2023/9): * 第二個接手的產品是已經在線上的產品,所以團隊需要在短時間內熟悉系統並開始接需求。 * 在接手的一開始,先進行系統分析並產出流程圖,讓團隊透過閱讀文件的方式熟悉系統。 * 在接手產品的過程中,因公司成本考量有進行裁員。 * 老闆計劃同時在多個國家架設同一套系統,故採取的策略為一個系統相容於多個國家,採用策略模式與Spring框架特性在執行階段依照不同設定載入該國家的模組,進而減少維護的成本,同時降低系統的複雜度。 * 金流系統需維持高可用度,盡可能達到不停機維護,在應用端採用負載平衡與輪流更新,在資料庫採用最大相容性變更,最終達到在這六個月的期間的更新都是不停機維護。 * 一個國家的系統環境採用三個環境,分別為 DEV / QAT / Production,因少了一層品質把關,所以將測試的工作量部分轉移到工程師身上,採用單元測試與本地整合測試盡可能分擔測試工作量,進而做到良好的品質保證。 * 在每次交付版本給營運團隊時, PM 會整理一份版本說明,讓營運團隊知道每個版本的變化。同時共同維護需求表,由營運團隊列需求內容、需求者與優先級,再由 PM 依序排程與交付,讓有限的資源投入在對營運最有幫助的地方。 * 因商戶端發展不順利的關係,導致營收一直沒有好轉,最終老闆要求團隊轉移到新專案。 產品三 海外遊戲平台 (2023/10 ~ 進行中): * 這個產品的時程緊迫,需盡快的將產品推上線,同時拿到手的原始碼與資料庫結構有缺漏,除了做好任務調派之外,同時也找外包協助分擔工作量。 * 平台的商業模式為快速開分站,所以在系統環境的部分先建置好 Production 並對其做測試與修復 Bug ,同時建立範本與撰寫部署文件讓成員可以橫向支援,盡可能讓每個成員可以跨領域作業。 * 在需求量相對穩定時,緊急補上 QAT 環境,讓開發好的功能有一個環境可以測試,避免未測試通過的功能直接交付到 Production 環境。 * 市場對站台的需求量大,加上原產品架構不支援 SaaS,所以在交付給客戶採取「開新站」策略,同一時間運行中的伺服器接近 1 千台,透過手動建置的方式勢必無法滿足市場需要的交付量。因此在站台建置上導入Jenkins/Terraform/Shell script/Ansible,逐步將手動步驟轉化成自動化,取得的成果是從原先站台建置需要 3 天縮短成 2 個小時,進而滿足市場需求。
Logo of the organization.

技術總監

強勝有限公司
Full-time
May 2019 - Aug 2021
2 yrs 4 mos
Taipei City, Taiwan
職責: * 在2019年5月剛進公司時,擔任後端經理,負責管理後端開發與資料庫開發,並於2020年4月升任為技術總監。 * 帶領團隊的核心價值:以產品的最大利益為考量。 * 直接管理三個部門,包含技術研發部、管理資訊部與產品發展部,成員最多到58個人。 * 主要專注於管理技術研發部與管理資訊部,包含協調、流程、規範和技術選擇。 * 產品發展部的管理為協助總經理管理,主要範圍在開發流程整合與重要需求安排。 * 當不明確的需求或不足夠的測試降低產品品質或造成排程衝突時,與客戶協商。 成就: 管理面: * 使用Azure DevOps優化問題追蹤流程並達到以下目標: - 減少重工,優化工作效率 - 定義標準作業流程,強化問題解決 - 定義嚴重程度,優化資源運用 - 建立延遲報表,強化問題追蹤能力 - 分析問題趨勢,強化資源指派 - 建立分析報表,強化產品品質 * 在過去,客戶沒有習慣在Staging環境驗證新功能,導致新功能被更新至Production環境時,有問題被一併帶出去,或功能不如預期。經過我與客戶的主要聯絡人協商後,客戶同意開始於Staging環境驗證新功能。最後的成果為,交付功能後造成的問題或功能不如預期的狀況減少了75%。 * 原本的CI/CD流程一次性建立所有的專案然後再進行部分服務或全部服務的手動部署。為了避免CI/CD流程中有人為錯誤,我重構CI/CD流程,讓每一個服務都有自己的CI/CD流程,並且在重要的環境 (Staging / Production) 設定簽核關卡,需要被授權的人員進行審核。最後的成果為,作業時間減少一半並且人為錯誤減少至0。 * 擔任後端經理時,發現到後端成員彼此不清楚或不熟悉彼此正在開發的功能,造成負責上版的成員時常造成上版失敗。為了讓負責上版的成員可以更有信心,我導入了Deployment Guide文件,每個成員在開發完後,都需要在這份文件上記錄需要更新的服務以及相關的前置/後置作業。最後的成果為,負責上版的成員不再擔心上版時遺漏或上錯功能。 開發方面: * 擔任新產品開發專案的專案負責人,負責維護產品待辦清單以及參與開發。以下是專案的技術選擇: - ASP.NET Core 5.0 - 微服務與領域驅動開發 - API Gateway - 容器化 (Docker) - Event Bus - Clean Architecture - CQRS (Command and Query Responsibility Segregation) - Azure SQL - 商業邏輯不放在資料庫 - 分散化鎖 基礎架構與網路方面: * 在產品維運過程中,當用戶端遇到網路問題時,維運團隊只能透過線路調整或要求用戶做一些不合理的檢查 (ping或traceroute)來協助用戶排除問題,非常被動。為了解決這個問題,技術團隊選擇導入APM監控用戶端的網路品質並在用戶端實作智能網路選擇的功能。最後的成果為,維運團隊不再需要為用戶進行線路優化或調整的作業。* * 在產品維運過程中,當某個地區的線路品質變不好的時候,第三方服務不願意提供其它的線路來解決主機到主機的線路問題。為了解決這個問題,維運團隊在多個地區架設代理伺服器,並為每個第三方服務配置最佳路線。最後的成果為,每日失敗的交易請求從50次減少至0次。* * 基於產品的特性與確保產品可以持續的營運,技術團隊進行地區型的全雲端服務遷移的作業。 * 雲端服務曾經被過度使用並造成不必要的成本,同時在地端機房仍有許多閒置的實體主機。為了降低雲端服務費用,前任技術總監啟動內部相關環境 (DEV, QAT) 遷移專案。我負責規劃後端相關服務的規格需求/申請/環境置配和軟體安裝的作業。最後的成果為,整體費用減少80%。
Logo of the organization.

後端工程師

軒昂有限公司
Full-time
Aug 2014 - May 2019
4 yrs 10 mos
Taipei, Taiwan
職責 * Oracle 資料庫開發負責人。 (負責效能調整與Code Review) * 正式環境問題支援。 * 維運作業與需求開發。(分析與設計、寫程式、除錯) * 維護Git流程與CI/CD。 * 自動化測試開發。 成就 * 使用行為驅動開發 (Specflow) 實作自動化測試。開發人員和測試人員共同合作,優化回歸測試的效率以及減少測試案例的維護成本。回歸測試的單次執行時間從24個工時減少至2個工時。 * 使用最終一致性和等幂的機制實作遊戲結果修正的功能。功能的流程被分割成多個階段,當功能執行失敗時,可以在中斷點回復並且略過已經被處理過的資料,避免資料被重覆處理。 * 隨著資料庫持續成長 (每月20到30GB) ,公司要求團隊幫產品實作資料封存的功能。我負責分析/設計與實作這個功能,在設計時,我將資料分為三個等級 (熱資料/冷資料與離線資料) ,在實作時,使用Oracle DB的 data_pump 和 partitioning,讓資料封存的功能在執行上更有效率。 * 隨著產品接入越來越多同類型的第三方服務,程式碼變的越來越肥大 (一個第三方服務配上一份程式碼)。為了讓開發更有效率並讓程式碼瘦身,我將相同邏輯的部分整合成為模組,並把不同邏輯的部分轉變成插件。最後的成果為,開發時間從5個工作天縮短至2個工作天。

副理

Feb 2014 - Jul 2014
6 mos
Taipei, Taiwan
職責 * 管理開發團隊 (3名成員) 。 * 安排開發團隊的排程和工作。 * 負責所有技術相關事務。(MIS/網路管理/開發環境建置) * 分析客戶的需求和預估工時。 * 教導設計團隊網頁前端技術。 成就 * 當老闆指派專案給開發團隊時,需求內容只有一個參考網站,接著為了提供報價單給客戶,要求盡快提供預估的工時,所以我透過過去的經驗進行分析與預估。 * 透過預估,開發時間需要40個工作天,但客戶希望可以在20個工作天內完成,所以我透過加班的方式完成這項專案。 * 主要功能: - Single Sign-On (使用一個帳號登入平台和遊戲) - 購買API (遊戲內購買) - 基本的購買記錄 (節省時間和費用) * 主要技術:ASP.NET MVC & Web API, NHibernate (Code-First), Software Layer, jQuery
Logo of the organization.

主任

Oct 2009 - Feb 2014
4 yrs 5 mos
New Taipei City, Taiwan
職責: *開發輔助系統推廣 beanfun!。 *社群遊戲:建置/安裝/維護以及更新。 *完成歐洲分公司的開發需求。 *加入團隊完成被指派的專案。 *管理軟體開發部的第一組。 成就: 1) 專案:提供大量的電子信箱供測試人員做測試 角色:規劃人員與開發人員 說明: * 在 beanfun! 上線前,測試人員測試註冊流程時都需要一個沒有被使用過的信箱。 * 在公司規定下,MIS部門無法提供大量的電子信箱給測試團隊,所以每次的註冊流程測試,都需要測試人員額外耗費3到5分鐘申請新的電子信箱。 * 為了改善這個問題,我制定了一個解決方案給測試團隊,讓他們不再需要耗費額外時間申請新的電子信箱。 2) 專案:beanfun! 檢測頁面 角色:開發人員 說明: * 在 beanfun! 剛上線時,客服單位接到了許多客訴,但他們不清楚用戶遇到了什麼問題。 * 我使用 JavaScript 和 Flash 開發檢測頁面,協助客服單位分析用戶遇到的問題,同時蒐集用戶的網路品質。如果檢測結果的解決辦法在 Q&A 裡的話,頁面會轉址到 Q&A 的頁面,如果沒有,則會轉址到客服系統。 * 三個月後,客訴量減少了 70%。 3) 專案:臉書遊戲維運 角色:主機與網路管理人員,開發人員 說明: * 我們團隊是公司第一個維運臉書遊戲的團隊。 * 在維運過程中,我使用 Flex 開發營運報表和監控主機的健康程度。 * 我規劃了監控與告警機制,維護檢核表,即時備份與遠端備份機制。 4) 專案:虛擬化技術實作 (Citrix XenServer) 角色:系統工程師 說明: * 我們團隊是公司第一個將虛擬化技術實作在遊戲維運上。 * 經過評估/規劃/安裝與測試後,我們選擇將虛擬化技術運用在遊戲維運上。 * 我們使用負載平衡器提高服務的高可用性。 * 最後的成果為,維運費用降低了85%。 5) 專案:歐洲分公司緊急告警系統 角色:分析人員與開發人員 說明: * 我使用 Email 和簡訊確保技術團隊能被通知到。使用Mobile Web讓團隊成員能夠使用他們的手機存取系統。這個系統減少75%的溝通成本與85%的傳輸時間。 * 主要技術:ASP.NET MVC, Mobile Web Layout 6) 專案:Fungoodo (手遊平台) 角色:分析人員與開發人員 說明: * 專案經理要求開發團隊儘快完成專案,所以團隊透過加班的方式來完成。我實作SDK來減少整合階段的時間。 * 主要主機:Database Server, Internal API Server, Backend Server, Web Server, Mobile Web Server, Public API Server。 * 主要功能:手遊排名、廣告系統、文章發佈、手遊推廣新聞、手遊資訊自動同步、Mobile Web支援、APP介接。 * 主要技術: ASP.NET MVC, Web API, jQuery, jQuery Mobile, Kendo UI, NHibernate (Code-First), Software Layer。 7) 專案:新技術教育訓練 角色:講師 說明: * 安排新技術的教材,並且幫開發團隊上課。 8) 專案:beanfun! OpenID 角色:分析人員、開發人員 說明: * 主要功能:會員 API、扣點 API、Open ID 機制 * 主要技術:ASP.NET MVC, Web API, OAuth 2.0, NHibernate (Code-First)
Logo of the organization.

MIS工程師

Nov 2008 - Aug 2009
10 mos
Taipei, Taiwan
職責: * 電腦管理。 (安裝/配置與更新) * Render Fram 管理。 * 網路管理。

Education

Logo of the organization.
Associate’s Degree
資訊管理學系
2001 - 2003