I had a chat with Chang Teck Khai over the phone to talk about his 15 years of experience as a programmer in automation and control system. He started his first job as a test engineer, with a Japan MNC that supplies PCBA used in testing solutions. He now works as a freelance programmer with his service registered as Octosoft Sdn Bhd in Malaysia.
How did you start to get into computing? What was the first program that you wrote?
I had my first computer, an NEC 86x486 in 1997. I started with graphic drawing on MS DOS during my computer lesson. I wrote my first program in QBasic during my high school.
What factors made you stay in the automation industry for so long?
I personally find it monotonous to focus only on software or hardware alone. There are many possibilities that arise when software and hardware functions are combined in a system, which is what my projects are about. My projects are on SCADA (Supervisory Control and Data Acquisition), IoT (Internet of Things), and Industry 4.0, there is a wide variety of components that we can implement in control and monitoring. I also like meeting different people and work environment in each of my project, as well as spurring myself to keep up with new technologies in the field.
What programming language do you specialize in?
C++, VB, C#, Labview, and Python. Labview is a graphical programming tool, different modules are linked up using lines. I also like the syntax of Python, it is more straightforward, and simpler than C for example.
What are the most important considerations in system architecture design?
Scalability is important, clients might change their requirements, if the program is not scalable, then it would be a nightmare to modify. For new functions that need to be added after a program is completed, I would always modify the existing program, and try not to re-write the program. For new programs, I always aim improve the system architecture design based on past experiences and recent new experiences gained over time.
What are the contributions of your company’s solutions to the industry?
My clients are mostly manufacturers, such as Dyson that manufactures household appliances, Flex that manufactures electronic products, Venture that produces circuit boards, Celestica that manufactures electronic parts, and V.S. Electronics that supplies Electronics Manufacturing Services (EMS).
The automation solutions that I provide helps them to achieve their goals in the production line. I help to build the control system to automate their testing equipment used for quality assurance purpose. My job is to assemble the components, develop the program to integrate them, and make sure the PCB (printed circuit board) is working properly. For example, if a client manufactures a coffee maker, part of the test is to ensure the water supply and dispense functions are working fine.
What are the challenges that a freelance automation programmer would face in his job?
Technical: Managing and meeting client’s requirement is important in every project. In some projects, when I need to work with new functions, equipment or components such as sensors, I would be corresponding directly with the R&D (research and development) team of the equipment manufacturer (instead of my client) to find out how the new equipment work.
Project management: Meeting deadlines and schedule management is another factor. I need to delivery my project in compliance with the client’s schedule. Sometimes the software that I deliver is in the last stage of the system integration project, in the earlier stages, hardware delivery or configuration might be delayed, leaving me less time than planned to work on the software part. Sometimes during the software integration stage I discover hardware problems that were not in my scope, the client would have to spend time to troubleshoot which was also unplanned and affecting my delivery schedule.
Business: Managing the project scope is also crucial. For example, I have to be aware of the impact of requests on additional functions after the project specification and service fees had been decided upon. It will impact the man hours and erode the profit margin. Other than that, I am also doing account management, maintaining relationships and rapport with clients.
In freelancing, are there period of times when you have no project?
There are companies that start their financial year in April, while some in October. The start of the financial year is the time when new upgrades are planned and yearly budget approved; while the last months of the financial year is the time when leftover budget need to be spent. When I am aware of the financial cycle of my clients, I know which months to focus on which accounts, I almost end up with projects all year long.
How do you price your projects in general?
It is quite subjective from the client’s perspective, it is mostly judged from the ROI (return on investment) of the project pricing. From my end, pricing is affected by man hours, complexity, equipment involved, testing or control flow. The simplest of my projects can be completed in a week, the more sophisticated projects such as a warehouse automation system might need half to one year to complete.
What do you do when you are not working?
I spend my down time with my pet, Kai-kai, a Japanese Spitz.