Chin Chau started his career 30 years ago as a software developer in NCSA (National Center for Supercomputing Applications) and has taken responsibilities on technical and management roles in research institutes, public service, private companies, and start-ups. He co-founded, and served as President, and CTO of Integro Technologies, a local banking software start-up. He was a Program Director in IDMPO (Integrated Digital Media Programme Office) in 2008, and helped jumpstart public funding for Singapore start-ups. As Ufinity’s CTO, he helped the company adopt Agile development practices, and grew its technical staff headcount to over 100. More recently, he provided consultancy services to various companies, including setting up, growing, and managing IT organisations in China, Philippines, Malaysia, and Indonesia, and currently serves as CTO of mobilityX, a mobility-as-a-service start-up.
Tell me about your team set-up at mobilityX?
The mobilityX technical group consists of about 15 people currently. Within this, the Head of Software Development manages the biggest team that includes cloud and mobile application development specialists. Apart from that, there are the quality assurance team, the infrastructure engineering group, and the data engineering team. Assisting me, we have a Chief Architect coming from the banking sector, because it’s important for our software to be reliable, highly available, and secured.
Can you tell me about the Zipster platform you're working on?
Zipster is a platform for MaaS (Mobilility-as-a-Service) apps, implemented to help commuters navigate the increasingly complex options for getting from point A to B. In recent years we’ve seen the rise of private hire vehicles as well as personal mobility services like e-scooters and bicycle sharing. We’ve also seen the Singapore government trying to change our mobility habits with ‘car-lite’ initiatives. Combined with new technologies and infrastructure, these changes provide more choices, which is great, but it also increases complexity for the average user.
We aim to disrupt and transform the traditional transportation industry, simplifying this complexity by integrating all these options with public transport. Through Zipster’s Plan-Book-Pay-Go functionality, the user can plan a trip; make their choice on modes of mobility based on factors like comfort, cost and time; locate and access the transportation and mobility devices; and pay for the trip all through the same app.
What kind of talent are you looking for to join your team and why?
In terms of programming languages and frameworks, we have standardised mainly on Spring Boot, Spring Cloud, and Java for the server platform. This enables a Microservices architecture, and while theoretically microservices can be developed with a mix of languages and frameworks, we feel that Spring Cloud provides the necessary service orchestration functionality, and standardising on fewer technologies and languages simplifies our development and maintenance efforts. For data engineering, Python tends to be the language of choice. In addition, we look for QA and DevOps with automation skills. Most importantly, we look for people who are curious, willing and able to learn new concepts and skills.
Being a small team, we tend to employ by looking at both ends of the spectrum. At one end, we look for fresh or recent graduates, and tend to focus more on their attitude, conceptual and technical skills. At the other, we look for senior staff with the right experiences. By that I don’t mean specific language or tool skills, but much rather having the right thinking on process, architecture and engineering design, especially for distributed and transactional systems.
In terms of getting your applications into the field faster, how can automation help?
One of the challenges we face is the short timeframe for deploying new features into production while ensuring good quality. Normally, testing and deployment cycles would go on for months, but within start-ups, that could be weeks or even days. And this is where automation could help greatly.
The first area of automation is in testing. In addition to enabling more testing of new functionality, this allows us to do regression testing and to ensure that older functionality still works as we make changes. As the system becomes more complex over its lifetime, it will be increasingly difficult to test without automation. Of course, automation still has its limitations and items like user interactions could be hard to automate, so we do keep manual testing to some degree.
The next area of automation is in DevOps and its associated hosting and database services. By using scripts and configurations, we can make infrastructure set-ups and operations much more consistent, much less error-prone, and as a result can handle more complex cloud-based infrastructure. This is especially critical for microservices architecture.
Lastly, automation in CI/CD – continuous integration and continuous deployment – ties together the automated testing and deployment into staging and production.
What are some innovations you hope to implement with the help of automated development going forward?
Outside of technical implementation and infrastructure management, we see new areas of applying automation in customer services and operations. In terms of DevOps, there are various new technologies for containerisation and service orchestration such as Kubernetes that we’re exploring.
What are some of the top reasons why automation can be challenging?
The main challenge is that automation technologies can be quite complex themselves. We have to ask ourselves, are we trying to solve a complex enough issue to warrant some equally complex new tech? And if so, are we applying it in the correct way to reduce the complexity of our own problem? Just because something is the new buzzword doesn’t mean we should be going straight into it. That said, for what we are doing right now, building a large platform with a lot of different interfaces and partners, and a wide range of functionality, we need integration into information sources on traffic, weather, mapping services, live transit timetables, payment systems, our mobility partners, etc. So, for us to manage such a diverse and ever-changing functionality, it does warrant the introduction of some of these tools.
How will adopting new technologies affect compliance and security?
I believe that automation actually helps us enforce security much better. If we contrast the old way of doing deployment, with manual work by system engineers, even with the best of intentions, there could be human error and certain security measures missed. With DevOps or CI/CD practices, they are a lot more explicit in their actions, with scripted or coded steps that can be easily audited.