Alex Ho

Alex Ho

Software Developer

I am a software engineer and half a DevOps engineer with interests in UI/UX development, API, software architecture and infrastructure design. C# and Javascript are the programming languages used in my day jobs. I love building some small CLI tools to make my work more efficient and those developer tools are written in Go and open-sourced. Besides hands-on work, improving hiring processes and building scalable development teams are some of the interests I have in recent years.

Cycling and trail runing are some of my hobbies and I like exercising in general.

Interests
  • Microservice architecture
  • Event-driven architecture
  • Docker and Kubernetes
  • Hiring and scaling development team
Education
  • BEng in Computer Engineering, 2006

    Hong Kong University of Science and Technology

  • HD in Electrical and Information Engineering, 2003

    The Hong Kong Polytechnic University

  • Sun Hing Holdings Ltd. Scholarship, 2003

    The Hong Kong Polytechnic University

Repositories

*

Experience

 
 
 
 
 
Head of Engineering (promoted from Development Lead since April 2021)
Sep 2016 – Present Hong Kong

Business nature:

Providing a software platform to gain visibility and insights into events of entire supply chain for all stakeholders including forwarders, retailers and manufacturers

Archivements and Responsibilities:

  • Designed software architecture

    • Breaking down a monolith, which is expensive to scale, into multiple microservices running on Kubernetes and connected the services using messaging (Pub/Sub) and it allows
      • scaling of individual services independently
      • features such as auto-retry
      • an event-based architecture
    • Implemented pattern Strangler Fig to allow the migration of the monolith to microservices without disrupting the existing business
    • Implemented code changes to make sure the platform is conformed to 12-Factor app which is a battle-tested enterprise application pattern
    • Designed and implemented permission system in a multi-tenant environment
    • Implemented component architecture on front-end for easier maintenance as to avoid scope soup and prepare eventual migration from AngularJS 1.x to React
  • Documentation on architecture to ensure the ease of understanding by developer and support team

  • Providing technical and architectural guidances to development leads

  • Responsible for hiring new developers

  • Responding to questions on security audits from potential customers

  • Helped in transition from waterfall model to Agile Scrum methodology

    • Guiding team members to perform task breakdown and task estimations (including the use of planning poker)
    • Setup of JIRA workflows to fit scrum practices
  • Worked with product team to ensure requirements are technically feasible and provided high-level estimations

  • Oversaw technical development of software product on both frontend and backend

    • Performing code reviews of all pull requests from development team
    • Implementing training scheme and documentations for new developers to ensure their on-boarding experience and they can get up-to-speed soon
    • Collaborating with and guiding other team members to come up with architectural decisions
    • Performed major code refactoring on both backend and frontend as, at the time of joining, most of the code base was still in POC stage and it did not have a proper structure to scale
    • Ensuring the libraries are up-to-date to avoid technical debts and fellow developers can enjoy the latest syntax and technologies
    • Ensured there is a steady increase of code coverage by working with fellow developers to implement more unit tests and by implementing code coverage reports and automating the report generation
  • Implemented CI/CD

  • Implemented proper logging and instrumentation to get insights of the platform and identify bug and performance issues proactively

    • Use of structured logs
    • Use of Prometheus metrics and Grafana dashboards
    • Built metrics using logs
    • Use of alerts to allow problems to be identified and resolve pro-actively
    • Use of OpenTelemetry for distributed tracing
  • Designed the infrastructure architecture on public clouds including AWS, Azure and Google

    • Migrated cloud infrastructure using only VMs on Azure to using mutiple cloud services on AWS
      • Implemented the change of one deployment per client to multi-tenant in single deployment (including addition of software of multi-tenant permission system)
      • Migrated database servers running on VMs to managed service of AWS RDS to reduce server maintenance
      • Automated deployment using AWS CodeDeploy
      • Utilised AWS S3 for store files to reduce cost and avoid persistence hard drive maintenance
      • Implemented integration with clients using AWS Lambda and avoided implementing it on the existing monolith
    • Migrated cloud infrastructure from AWS to Azure again
      • Containerised the web application originally running on virtual machines of Windows and deployed it onto Kubernetes using Linux containers
      • Leaded the effort of migrating from .NET framework to .NET Core
    • Migrated from Azure to Google
  • Implemented urgent fixes required on production

  • Created developer (command-line) tools for fellow developers to perform their processes in a quicker and more accurate manner

  • As a Git expert to help out any fellow developers with Git issues

  • Worked in a multicultural development teams and design and user experience teams, and testing teams

 
 
 
 
 
Software Development Manager (promoted from Senior Developer since November 2015)
Sep 2013 – Sep 2016 Hong Kong

Business nature:

Providing serviced office, virtual office and co-working space services in all major cities in APEC region

Archivements and Responsibilities:

  • Improved software development processes

    • Ensuring the team follows Agile software development process by using Scrum practices
    • Utilised new deployment technology Docker to simplify DevOps matters and to allow setting up a machine for development, testing or demo purposes in several minutes
    • Setting up new continuous integration and continuous deployment solution using Jenkins and Docker
    • Enhanced code review process using GitHub pull requests
    • Defining technical requirements and writing technical specifications
    • Gathering requirements from internal users and assisting to conduct external user interviews
    • Implementing and maintaining unit-tests and end-to-end tests to ensure high test coverage and software quality
  • Introduced new technologies and architecture

    • Introducing the team to new technologies and languages such as node.js and Go
    • Introducing a gradual transition from an existing monolithic application to a more flexible microservice architecture by using Docker containers
  • Designed and implemented a new client portal

    • Designing APIs consumed by web application, mobile application (including iOS and Android) and existing legacy in-house applications. Implemented an OAuth 2.0 provider in node.js to allow 3rd-party clients to access the APIs
    • Managing a team of 3 developers located in Hong Kong and coordinating a mobile application team in Argentina
    • Implemented a pricing engine for room reservations allowing flexible configuration of pricing rules for different cities, centers, or rooms via a web UI
  • Maintained the integration of different existing third-party software products, such as Salesforce.com and NetSuite for accounting

  • Responsible for hiring new developers

  • Implemented a new web-based solution for areas including CRM, ERP and daily operations

    • Developing a brand new platform for organising company resources and operations
    • Developing a new invoicing system on the platform and replacing the existing one from a third-party solution
    • Integrated different existing third-party software products, such as Salesforce.com for coverage of sales processes, NetSuite for accounting, into the new platform
    • Producing reports for management and daily operations
    • Migration of data of existing third-party software products to the new platform
    • Maintaining and deprecating legacy systems
  • Designing software architecture

    • Designed the software architecture of invoice processing system using distributed system (NServiceBus from Particular Software)
    • Designed notification system using SignalR
  • Maintaining software quality

    • Applied software patterns such as dependency injection
    • Refactoring to increase the testability and readability of software
    • Implemented system logging and notifications to allow developers to look into potential bugs or issues in an earlier stage
    • Introduced team members to advanced Git source control operations
    • Produced technical documentations
  • Provided suggestions to user interface design

    • Providing usability feedbacks to initial user interface design
    • Designing the interface of some parts of the new platform based on user requirements
  • Tested out new solutions

    • Performing feasibility tests to new software libraries
    • Investigating new integration to third-party products
 
 
 
 
 
Senior Analyst Programmer
Nov 2012 – May 2013 Hong Kong

Business nature:

Integrating its in-house mobile game online store with telephone companies in APEC region

Archivements and Responsibilities:

  • Implemented web-based mobile content shops

    • Implemented a mobile content shop platform using .NET, Bootstrap and jQuery
    • Rewritten more than 60% of the existing core code with suitable software design patterns (such as factory, singleton, adaptor, … etc) to make the software more maintainable and unit-testable
    • Integrated the shops with payment gateways of major telephone network operators
    • Implemented localization (l10n) and internationalization (i18n)
    • Integrated with APIs of the parent company in Germany to retrieve exclusive contents to serve to the telephone operators
    • Worked with designers to enhance user-experience (UX) of mobile web sites
  • Maintained in-house content management system (CMS)

    • Upgraded Windows desktop applications and web applications from .NET framework 2.0 to 4.0
    • Implemented new modules to serve localised text and image contents in a more maintainable manner (with better database design)
    • Implemented proper error logging using Apache log4net to allow developers to discover potential bugs sooner
    • Expanded systems involving carrier billing and transactions to handle more telephone network operators
  • Implemented web services

    • for telephone operator companies to manage content subscription services and for serving content metadata to these companies
    • for content providers to upload their content to the CMS
    • mainly on WCF with various exchange formats (such as proper SOAP, simple XML, JSON or simple text)
  • Refactored backend services

    • Rewritten over 90% of the existing Windows services using Quartz.NET scheduler to make the services more maintainable and more resource-efficient
  • Coordinated software development work for fellow teammates

    • Performing task breakdown on major software projects to allow more teammates to get involved and work in parallel
    • Made decisions on the technologies and methodologies for major software projects and designed its architecture
    • Provided estimates on major projects
    • Oversaw the whole software development process from feasibility studies to expert testings
    • Implemented code-review process to make sure code committed is up to a common standard and to allow developer to learn from each other
    • Taking care of all the software development processes within the company
  • Responsible for hiring new developers

  • Improved the development environment

    • Ported code from Subversion hosted on a desktop onto GitHub
    • Educated fellow developers on using GitHub and Git as source control
    • Deployed online documentation system [Confluence (from Atlassian)(https://www.atlassian.com/software/confluence) to make technical and user documentation searchable and easily discovered by all members of the company, and to make collaboration of documentation easier
    • Deployed online project tracking system JIRA (from Atlassian) to make the software development process more transparent to all members of the company, and make it easier to keep track of problems occurred or questions raised during the development process
    • Connected GitHub to JIRA so that code commits on GitHub can be visualised on JIRA
  • Wrote documentation

    • Technical documentation for fellow developers
    • System documentation for non-technical colleagues of the company
  • Oversaw the deployment process of web sites and services on production servers

 
 
 
 
 
Developer (Analyst Programmer)
Sep 2009 – Sep 2012 Hong Kong

Business nature:

Providing a software platform for investment banks to manage information from origination to distribution and provides a connection across banking, capital markets, sales and trading, and institutional investing

Archivements and Responsibilities:

  • Built custom reports for DealManager, EventManager and ConferenceManager

    • involving functional and technical design
    • involving translation of business (or functional) requirements from relationship managers to technical requirements
    • using VB6, C#, ASP.NET WebForm, WCF, jQuery, HTML and IIS
  • Worked as a technical architect

    • preparing technical and implementation documents for fellow developers
  • Participated in refactoring to improve quality of code

  • Worked in a multi-cultural team of 13 members

    • 2 of them located in UK
    • 6 of them located in Hungary
  • Mentored junior developers

    • Supervising and coordinating their tasks
    • Ensuring a high overall throughput
  • Responsible for training new comers (HK, UK and Hungary)

    • Responsible for preparing training documents
 
 
 
 
 
Senior Programmer (promoted from Programmer since August 2009)
Sep 2006 – Sep 2009 Hong Kong

Business nature:

The sole agent of Panasonic Corporation in Hong Kong and Macau

Archivements and Responsibilities:

Skills

*

Certifications

Elasticsearch Engineer II
Course on setting up Elasticsearch cluster
Elasticsearch Engineer I
Course on setting up Elasticsearch cluster
Certified ScrumMaster
Course and cerification on using Agile Scrum

Contact