James Chang

Between jobs

I have over 10 years of experience in C#.Net Development (Including .Net Framework and .Net Core), and 4 years of experience in on-premise server management, and 2 years of experience in cloud service management.

I believe that technology exists for the purpose of creating business values. Therefore, during the analysis and design of architecture and solution, I would think about how to achieve a balance between scope, schedule and cost to get the most suitable cost-benefit. 


  New Taipei City, Taiwan

Work Experiences

Technical Director  •  JohnsonTech Inc.

Responsibilities:

  • My title was backend lead in May 2019 and promoted to Technical Director in April 2020.
  • Core value: lead the team for the maximum product benefits.
  • Directly managed three departments (including RD, MIS, and Product Development), up to 58 people.
  • My focus is on managing MIS and RD (including coordination, processes, policies, technical decisions).
  • The PD management is on development process integration and important requirements arrangement.
  • Negotiated with the customer when uncertain requirements or insufficient testing decreased the product quality or a conflict occurred with the schedule.

Achievements:

Management:

  • During the product operation, the Dev Team and OP Team used different tools to trace the production issues. It caused reworks in the issue trace process. To improve the process, I initiated a project to use Azure DevOps as a single tool to implement the process. After the project closed, the result reduced 60% of the reworks and brought other benefits.

  • In the past, the customer was not used to validating the new features in the Staging environment, which caused the features being released to the Production environment with bugs or unexpected. I negotiated with the contact person about doing the features validation in Staging then he approved this proposal. Finally, the result reduced the number of issues by 75%.

  • The original CI/CD process built all projects at once and performed the partial or all deployments for the services manually. To prevent the CI/CD process from human error, I refactored the CI/CD process. Each service has a CI/CD process on its own, and the release manager checks the deployment of the import environment whether he approves or rejects it. Finally, the result reduced the operation time and reduced human errors to zero.

Development:

  • I took on as a project leader of new product development, maintained the product backlog, and participated in the development.
    These technologies are used in the project: ASP.NET Core 5, Microservices, DDD, API Gateway, Docker, Event Bus, Clean Architecture, CQRS, Azure SQL Databases, No business logic in DB, Distributed Lock.

  • In the original design, APP requested the game data from API server when users open the game page, it caused users to wait around 1 to 5 seconds. It was a bad experience. In order to improve this situation, I categorized the data as hot or cold by its frequency of updates and defined strategies for the different kinds of data category. The result is that the users open the game page immediately.

Infrastructure and Networking:

  • During the product operation, the operation team could only adjust the CDN configuration or ask the user to do some unreasonable checks (ping or traceroute) when a user was in a bad network condition. To resolve this problem permanently, we decided to introduce APM (NewRelic) to monitor the network quality and implement Intelligence Network Selection functionality on the client-side to choose the best CDN edge location when a client is connecting to our API servers. Finally, the result reduced the network problem from 10 times per day to zero.

  • During the product operation, when the connectivity went bad due to regional concerns, the third-party services refused to provide another network to us, and the communication was unstable between our server and their server. To resolve this problem permanently, the MIS team arranged the proxy server (Nginx) in multiple regions and measured the best route for each third-party service. Finally, the result reduced the failed HTTP requests from 50 times per day to zero.

  • The cloud services were overused and caused unnecessary costs, and there were many physical servers in our local server room. To reduce the cloud service cost, the previous director initiated a project to move the internal testing environment to the local server room. I planned on moving all the services of the DEV and QAT environment to the local server room and keeping PaaS servers in the cloud for consistency between all environments. Finally, the result reduced the cloud service cost by 80%.

May 2019 - August 2021

IT Consultant  •  Xuenn Private Limited

Responsibilities:

  • Oracle DB Owner. (In charge of performance tuning and code review)
  • Production Issue Support.
  • Operational Maintenance and Change Requirement Development. (Analysis and Design, Coding, Bugfix)
  • Maintained the process of Git and CI/CD.
  • Automation testing development.

Achievements:

  • Used BDD (SpecFlow) to implement automation testing. Developers and testers worked together to improve the efficiency of regression testing and reduce the maintenance cost of test cases. The regression testing time is reduced from 24 working hours to 2 working hours.

  • The eventual consistency and idempotent mechanism are used to implement the function of game result correction. The process of the function is divided into several phases, while the function is abnormal, the function can recover at the interruption point and the processed data would be ignored to prevent them from repeated calculations.

  • As the database size continued to grow up (20 ~ 30GB of data per month), the organization asked us to implement a DB archive feature to the product. As a DB Owner, I categorized the data with 3 access levels (hot, cold, and offline), and implemented DB archive with data_pump (Oracle DB built-in package) and partitioning (Oracle DB built-in functionality), made data movement being more efficient.

  • As the product integrated more and more the same types of third-party services, the codebase became huge (one third-party service integration with one copy of code). To improve the development efficiency and shape the codebase, I extracted the consistent logic as the module and the inconsistent logic as the plug-in from the integration code. Finally, the duration of the integration development was reduced from 5 working days to 2 working days.

August 2014 - May 2019

Assistant Manager  •  Pri-One Marketing Co., Ltd.

* Manage DevTeam (Around 3 people).
* Scheduling the DevTeam tasks.
* In charge of all the technical work. (MIS, Network Management, Development Environment Building)
* Analyze the client’s requirements and estimate the labor hours.
* Teaching the Design Team members about web frontend technology.

February 2014 - July 2014

Supervisor  •  Gamania Digital Entertainment

* Develop a support system to popularize beanfun!.
* Social Game: building, installation, maintenance, updating
* Accomplish the requirement from the European branch.
* Join a team to complete the assigned projects.
* Manage Team 1 of the SD department.

October 2009 - February 2014

MIS Operator  •  Taipei Postproduction Co., Ltd.

* Computer Management. (Etc. installation, configuration, and upgrade)
* Render Farm Management.
* Network Management.

November 2008 - August 2009

Education

2001 - 2003

Takming University of Science and Technology

Department of Information Management

Development Skills

Languages

  • C# (Primary)
  • SQL (Primary)
  • Javascript
  • HTML5
  • CSS3

Databases

  • Microsoft SQL Server
  • OracleDB
  • MongoDB
  • Redis

Frameworks

  • ASP.NET 4.8
  • ASP.NET Core 3.1/5.0
  • Entity Framework 6.0
  • EF Core 3.1/5.0
  • Moq
  • xUnit / NUnit
  • SpecFlow
  • MediatR
  • StackExchange.Redis
  • RedLock.Net
  • Swagger API Doc
  • Polly

Architectures

  • Docker
  • Clean Architecture
  • Microservices
  • CQRS
  • CRUD
  • Pub/Sub
  • Sharding

Tools

  • PMIS
    -- Azure DevOps
    -- Jira
    -- GitLab
  • CI/CD
    -- Azure Pipeline
    -- Jenkins
    -- GitLab CI/CD
  • SCM
    -- Git
    -- SVN 

Cloud/Server/Networking Skills

Cloud Services

  • Azure —
    Virtual Machines, Azure SQL Database, App Service, Azure Functions, Logic Apps, Container Registry, Web App for Containers, Azure SQL Managed Instance, Azure Cache for Redis, App Configuration, Azure Pipelines, Azure AD, API Management, Service Bus, Traffic Manager, Application Gateway, Virtual Network, Key Vault, Storage Accounts (Blob, Queue, Table), Application Insights
  • AWS —
    EC2, S3, VPC, CloudWatch, CloudFront, ELB, Security Groups, SNS, SQS

Server & Networking

  • Windows Server
  • IIS Server
  • CentOS
  • Ubuntu Server
  • Nginx
  • DNS Server
  • Firewall
  • Load Balancer
  • IPv4
  • CDN
  • NFS / NTP / SMB / FTP

Credentials


  • Project Management Professional (PMP)®

Languages


  • Chinese — Native Language
  • English
    Intermediate (Read/Write)
    Basic (Listen/Speak)
Powered by CakeResumePowered by CakeResume