Conversations with Goh Chun Teck
By Sundar Karthick
Goh Chun Teck works at Garena, a private internet company, as a software engineer, developing software applications and coding programmes. A Computer Science major in university, Chun Teck’s interest in Computing began even before then, having taken Computing as a subject at his GCE ‘A’ Level Examinations. This exposure to technology as a discipline and continued to expand during his time in university, when he began taking many Information Technology modules.
How’s it like for you where you work?
I do quite varied work. There’s the more deskbound sort of jobs: emailing clients, or thinking about and designing engagement guides for clients. Beyond the office though, there’s also meeting clients or prospective clients, or delivering the engagement plan itself, be it through conducting a workshop or facilitating a session or dialogue. Sometimes, you also get meet other people to explore possibilities of working together on potential collaborations, or partnerships.
How’s your experience in this line of work? Have you always seen yourself doing something like what you do now?
As far as skillsets like facilitation; networking; problem solving are concerned – yes! I studied Marketing and Human Relations in Singapore Management University, and these domains, I’d say, also require these same skillsets I now use in what I do. As for my interest in public policy, it was developed along the way. I used to be in Proctor and Gamble doing sales, which was largely bottom-line driven. I realised later that perhaps this wasn’t really the domain of work I was looking for. I moved to the public service for four years, and was involved in two main portfolios: strategic planning and public engagement. I am now working in a local consultancy firm, where my clientele mostly comes from the public service.
How has making this shift been for you? Has it been what you expected?
When I left Proctor and Gamble, I was looking for something new. I didn’t really consider the public service at first – because of the general stereotype or perception of the bureaucracy and the public service. But I did have friends in the service, and so I could hear about the good work that actually does go on, and they seemed to be enjoying their work and found meaning in it. So I thought, why not give it a try?
I think that I’ve also been quite fortunate to have experienced relatively progressive cultures and processes and work in the workplaces I was in, so it wasn’t as stark a transition. However, I still had to work within the ecosystem and there may be times where I had to overcome bureaucracy and red tape. My job scope was broader as it included additional responsibilities like staffing matters – like writing minutes, or administrative work.
Now, I am in a small private organisation, with 10 people in the team. It’s relatively easier to align everyone’s expectations in the team, and for us to be nimble and flexible. My work now is a lot more focused – my main goal is to serve my clients.
Did you have any concerns or worries when making this switch? How did these pan out you?
Not really; having spent 4 years in the working world, I have learned that there are pros and cons working in a big, or small organisation.
Do you enjoy what you do now?
I think it may still be too early for me to say whether I will enjoy it, since it’s only 5 months in for me here, but it’s been good thus far. What I really enjoy most is helping clients solve problems, meeting people, and helping to foster good relationship with my stakeholders.
But I have also faced some challenges, mainly in two aspects: personal development and business profitability. I think personal development can be challenging when everyone is busy in an organisation, which leaves less time and fewer chances to learn from each other. There’s also the challenge of maintaining profitability as a business. There are many potential projects and potential engagements, but sometimes the prospective client may not have the budget for it; and so we’ll have to then hold many internal discussions about whether to go ahead with the engagement or not.
How do you conduct your engagement? What’s the process like?
The most important first step is to help the client understand their desired end goal. This could be tangible or intangible. Tangibles could be something like having five new ideas to tackle a certain problem by the end of the session; and intangibles are like having everyone agree by the end of the session to take collective action or to agree that the issue is important and should be addressed.
After we have determined the desired end state, we’ll then clarify on the impetus: why do they want to do this thing? Some reasons could be that they’ve found a problem that’s pressing enough for them to want to take the time to look into it; or perhaps they’ve noticed an issue for a while now and they now have the time to look at it; or maybe a certain event recently happened, like an accident or retrenchment, and so they think it’s a good time to look into the issue. Sometimes, it’s because there’s been a change in leadership, and the new leader says, ‘Hey, now’s a good time for us to look at this.’
We gather the data from these two main questions first, and then help the client to see whether they are approaching the right problem. For example, a client could come to us with a case, saying, ‘We’ve had discussions in internal senior management and think that the bell curve system is not relevant or should not be relevant for performance management. Can you help me find a solution for this?’ In this case, the more important issue could be about performance evaluation and recognition, and not just about the bell curve system per se.
What’s a good day at work like for you?
One good thing about my work now is that it is not strictly deskbound. There’s a lot of variation in terms of the types of work to be done and the physical space I’m in, so I’m rarely stuck doing one thing in one place for a long period of time. And having this mix of types of work is really quite enjoyable. I can enjoy having the time to think about the engagement and things to be done, and still have the time to be sociable, to talk to and meet people.
Do you see yourself doing this for long?
As with all things in life, I try to approach it with an open mind. Maybe I’ll start something on my own someday – I’m not as inclined to this for now – but it’s a possibility. I know a lot of my friends do hold this prospect as a future aspiration, and I do see that are both pros and downsides to it. But for now, what I want is to achieve more impact for the people I serve, my clients. And to do that I’ll need to gain more expertise, and to sharpen the skills I need for my work. Over time, I’m also hoping to increase my portfolio in terms of the types and profiles of clients I engage, and the work I do.
Which would you consider the most relevant, important, or applicable skills from this list to what you do and your work now?
This would definitely be adaptability. I think adaptability is extremely important in specific engagements, such as in workshop settings. We conduct quite a number of workshops, usually attended by 15 to 20 people. But every case is different and you really need to be able to sense the dynamics in the room – how people are feeling and reacting to what other people are talking about – and then accordingly adjust the next thing to do or to say.
This adaptability is also quite important when moving from or between projects. Because these can be quite varied: you could have one project looking at performance management, and another maybe looking at tackling family violence on the national level – and you’ll have to adapt to learn what the content is all about for each of these.
Adaptability also comes in in understanding what clients’ needs and concerns are. Some are more detail-oriented, and to give them what they need, you really have the specifics all planned out; with some, you’ll be looking at how to manage expectations; some are more big-picture-oriented, and they’d like to have a roadmap that can plot ten steps ahead.
Yes, and building partnerships is key as well, especially when working in small organisations, or with limited resources. Sometimes you really have to be creative about who to partner with, to try to effect bigger change through productive partnerships, especially when working in small organisations, or with limited resources. And building positive working relationships is important too, maybe even more so in bigger teams and organisations.
There’s also energy: first, I think at least based on my own experience, the intensity of work can and does vary quite a bit. This is so that when it gets tough, you’ll need the energy to drive through it. Second, projects may or may not have definite deadlines. Deadlines can be quite clear if it’s a client-driven project; but some are not so clear, or maybe not as time sensitive. But even, or especially, when there’s no burning pressure to meet deadlines, you’ll still need that energy to drive the project forward.
For facilitating change, I think this comes in through the relationship with our clients, because it’s the focus for many of them, and so we come on board to help them navigate this change.
You also need planning and organisation at the project level. When working in a small team, everyone really needs to know what’s going to happen next. At the client-consultant level and workshop level, you’ll also need communication. This is quite key to the things that we do, and involves internally updating your bosses on what’s happening, or fellow teammates on who’s going to do what and what to do next. Between our clients and us as consultants, there’s also a need to communicate what needs to be done, and what can or cannot be done, and what our role as consultants is vis-à-vis our clients’.
Continuous learning is also important because you’re dealing with very different domains; so you need to continuously read and learn about them. I think you also have to be quite flexible about how you learn and where you learn from. It’s not just about going through courses or learning in formal ways. There’s also subscribing to news, keeping up to date on what’s happening, and learning through other informal ways.
Are there any other skills you’d like to add that aren’t reflected on this list but are key to what you do?
I would say the skill of networking; I see this as quite different from “building partnerships”.
Partnership has an end goal: somebody meets you because the two of you have a project to work on together. Building networks occurs with a longer time frame in mind. Beyond just making friends, it’s also about having contacts to tap on when the need arises. Networking across varied work contexts allows you to explore potential opportunities to work together. Networking can also be helpful for personal development, to have people to bounce ideas off with when you find that you have a problem; or just to have an outlook on the job market and an avenue to access another job or field.
Actually, this network is more irreplaceable as compared to your other skills. Because in terms of knowledge, knowledge is a commodity. But it’s much harder to find someone with the same contacts as you; and even if two people know the same contacts, the level of relationship can be quite different.
Another skill set which might be especially important in the context of students, who will probably have to work under someone when first entering employment, is learning to manage your bosses. The truth is that not everyone is a great boss. Sometimes, it may not be purely intentional either. It could be just that they are too busy, or don’t have the skillsets to be good boss, and as a subordinate you’ll just have to learn to manage that.
How will you describe your typical workday at Garena?
As a software engineer, I mostly do coding everyday. We develop software applications by designing and planning the architecture, and the framework which will build it subsequently. If there are new features or new requests for the applications then we will just adapt accordingly. So most of our time is really spent sitting in front of the computer and writing code. We also have numerous technical meetings and general meetings as well to discuss our applications. As a server developer, I also spend time monitoring the servers to ensure nothing goes wrong.
We don’t really meet customers as software engineers. There is a layer of abstraction, so in front of us are the product managers and operations people who interface with clients and then proceed to allocate work to us. Product managers coordinate everything. For example, they give software engineers the specificities and requirements in the product, and set deadlines for the features.
The time spent at work may go beyond the official hours of 9.30am – 7.30pm, depending on the projects and deadlines we have. Newer startup companies may try to create and deploy their products as fast as possible, and may have tighter deadlines.
What is the workplace environment like, and how has your experience in this line of work been?
I work in an office environment, which is a desk-bound job with a team of 5-6 people. Because my interest lies in coding and developing software, I enjoy what I do daily. I get to work with other skilled engineers and learn from them as well.
I like it that we constantly get to explore and learn new technology. So on that note I get to learn and improve my technical skills. I also get to see different perspectives and bounce ideas across each other, so we are able to learn from each other. Occasionally, we also get to provide feedback on the products that we build as well.
What I would like to change about it? Coding can be a little solitary so it could involve a little more teamwork and cooperation – this depends on the companies as bigger companies may have multiple engineers working on the same feature, so there is more teamwork and cooperation. On the other hand, smaller companies may have a single engineer working on multiple features by themselves.
Has there been a case where you really could not solve the bugs?
There are cases where we really could not solve, which I’m sure will exist for many software companies. Then there are of course bugs that will take us days to fix, or bugs that we really cannot reproduce no matter what we try. This is in a way the more tedious part of the job. You really have to just look through the code and perform many tests, trying to narrow down the location of the bug. Eventually, we may seek help from others, or let others try to solve the bug, as they may bring in new insights. Worst case is when we give up and decide to rewrite that portion or do it a different way hoping that will clear the bug. Debugging is actually a very big part of the job. There are days where we spend more time debugging than coding.
What are the best parts of your job that also motivates you to go to work?
I look forward to solving a problem that is unresolved. Because of my interest for coding, I am motivated to continue to fix the problem, solve the problem and build the feature or product. After everything is finished, getting to see the completed application running smoothly without any problems and being used by users gives me satisfaction.
How was your university experience studying computer science?
I studied Computer Science in University, but actually started learning it in junior college where it was taught as a subject. My subject combination then was Physics, Chemistry, Mathematics and Computing.
I took a lot of IT modules in University and was exposed to a lot of new technology. I actually took a DDP (Double Degree Programme) in Computer Science and Mathematics but I decided to drop Math after 2 years since I would rather focus on computing. Though maths was related, the math you learn in university didn’t really apply to software engineering as you learn more about mathematical theories. I made the decision at the end of Year 2. This allowed me to take more computing modules. Eventually I converted Mathematics into a minor since I already took some math modules. Most of the people I know went on to become IT professionals rather than deciding to change to another field.
I think undergraduate formal training and all the core modules in the degree is really crucial in becoming a good software engineer. Online courses to learn coding may allow you to become a developer but you actually require a lot more in depth knowledge to become a good software engineer – for that you really have to understand about how operating systems, networks and so on work under the hood. Structured learning will provide a good foundation. Of course, that’s not saying that you cannot become a developer through online courses and self-learning, but I feel that proper formal training in a university will give you a good advantage.
Is a degree a necessity before becoming a software engineer?
I feel that it is not necessary to have a degree, but non-graduates have to work a lot harder to actually learn things without having undergone structured learning in university. On the other hand, although university provides undergraduates with a lot of formal training, you may lack the hands on experience if you don’t take up internships (like me). Thus, learning a lot on the job is important as well – you will really get hands on experience about the full software development flow, which may differ across companies and products. In university, most of the homework and projects is about solving a given problem and getting the right answer. In the real world, however, there are a lot more crucial external factors that come into place, such as optimisation and scalability.
You can still go into CS in university even if you don’t know anything about computer science. It would however be good if you are little bit more fluent in Math-oriented, logical stuff – but it’s fine even if you were from an arts course before attending university. In university, the modules train you from bottom-up because they assume that you don’t know anything – even though you’d probably have to work a bit harder at the programming courses (the first few module you will take) as compared to those who are already somewhat fluent.
In terms of career aspirations, where do you see yourself in the next 5 years?
I see myself doing the same thing, software engineering. But I would want to see myself as becoming more proficient and more of an expert in what I do. I hope to become more proficient in different fields within software engineering as well. There are two tracks I can follow – either management or technical. In the management track, you may gradually start to manage your whole team of programmers, but you may end up doing less coding. The other track allows you to advance and further your technical knowledge. Personally, I am more inclined towards the latter track as I am more interested in the technicalities rather than management.
Do you look for individuals with different types of ideas or different abilities? Do you think that’s important? Or is it just primarily coding abilities?
It’s not just coding ability, but problem-solving ability. I mean, coding is easy to pick up. Once you learn one programming language, eventually it’ll be easy to pick up the other languages that the company you are joining uses. It’s important to know how to solve the problems that the product faces. Some examples include knowing how to build your application such that it can support millions of users, how to optimise your program and scale it, how to structure the architecture such that it is easy to add new features and remove features, and how to do things in a way such that you get fast, responsive applications which won’t consume so much data in a mobile application.
In short – It’s a lot of problem solving.
Harvard University has compiled this list of 42 professional competencies. So in your opinion, which of these would you consider the most relevant or more applicable to your work on a daily basis?
Adaptability is important. There are constant new technologies out there. Our features and requirements for our products change constantly. All these require us to learn how to adapt and go with the current flow.
Attention to detail. That’s pretty important because as we have to pay attention to literally everything while we code. Even a minor detail or one single line of code can drastically affect our product.
Teamwork is also pretty important. Although I said previously that coding can be a bit solitary, we eventually we work as a team to develop a single product. So, we’ll still have to be able to work well with others.
Another thing is communication. This is pretty obvious also. You need to be able to communicate well with your colleagues.
Stress tolerance. This one can be pretty important because inside our field, we normally have a lot of tough deadlines and a lot of things to meet. So we will need to be able to take the stress if we need to be able to take the workload. Everything is very fast paced. Like I said before, if you encounter bugs, you can’t just give up even if you can’t find them. So it’s actually pretty important.
Continuous learning is also very important because there is constantly a lot of new technologies emerging. In IT, the things you’ve learned 5 years ago may become obsolete today if nobody is using it. So you have to constantly keep trying to learn – to keep discovering new technologies out there, whether it can be used inside the product, whether we can apply this in our work.
In a way, it’s the same as innovation. After learning all the new stuff, see how we can actually use it, how we can apply to our development.
Technical knowledge is a given.
Do you see the tech industry in Singapore developing further?
Definitely. IT is still growing very fast in Singapore and there’s always a demand for software engineers. There’s high demand and not enough supply. So it would be good to go into this industry – the pay is pretty good as well. So if you’re a good programmer, good software engineer, a lot of tech companies will pay well for you. There is a lot of foreign talent in universities and I’m guessing in tech companies here. I think there is a shortage of local talent – a lot of Singaporeans don’t do this job, and go towards more traditional stuff such as banking, medicine, law.
If you’re technically good, regardless what race or what country, companies will hire you. Of course, there might be communication issues arising from your background. You should be fluent in English. But regardless of that, it’s the technical skill. If you’re good, people will hire you.
If you’re giving advice to someone much younger than you, who wants to do software engineering or computer science, what would you say?
One or two courses will not suffice as formal training. To be a good engineer, you need a lot of technical depth to actually write good code that won’t break right at the start. Education is basically very important. For those who just want to do it as a hobby, simply taking a programming course online is okay. They get to play a little bit of coding. But if you really want to go into this field full-time or for the rest of your life, then you really need the proper background knowledge and depth.