Working at Agoda as a Software Engineer

Thammarith
10 min readApr 1, 2021

There are two ways to write error-free programs; only the third one works.
— Alan J. Perlis

About a year ago, I made an important decision of my life. I moved from my previous start-up company to Agoda.

In this article, I’m going to share about my experience working here, how we work, what our daily routines look like. Even though my position is Full-stack Engineer, I believe this will be applicable for other tech positions as well.

How did I join Agoda?

I was working with my previous company, ViaBus, for some time. ViaBus was a start-up that creates a tracking app for the Thai public transport systems used by hundreds of thousands if not a million. It was great working there.

However, I have always wanted to try something new, working in a multicultural enterprise. It would be fun working with people from different backgrounds and learn different ways to work, wouldn’t it?

An opportunity approached me. There was a programming competition held by Agoda in late-2019. I instantly joined, just for fun. The competition saw around 5–7 questions. Some of them are algorithmic, some are problem-solving challenges. I finished at the 50th-ish place.

A few months later, there was a call from Agoda’s recruitment team. They gave me a list and asked me if I was interested in an opening position. I responded that I was interested in the client-side engineer, and full-stack engineer positions.

After a few more calls, I found myself in the Agoda office at the Offices at Central World, located in the heart of Bangkok. I was there to do interviews.

Interviews

For me, I had three rounds of interviews in a day. The first one was with two senior engineers. We discussed about my projects at the previous place. They asked me to solve a development scenario and try to optimise my solution.

The second one was with a data-team manager. He gave me a number of functions and asked me to use only these functions to find a solution to the challenge.

Finally, I did my last interview with a full-stack development manager. He asked my in-depth questions about JavaScript and asked me to solve some problems.

All interviews were conducted in English and there was a take-home development question that asked me to write a program in my language of choice.

I think this approach is a good approach since not only does it checks your computer science knowledge, but it was designed to ensure that you can actually write a program. Some people may find it stressful during the face-to-face interviews so they have not done very well but there is homework to help them prove themselves.

By the way, I asked a couple of colleagues, some said they had done only one round of interviews, the others said they had done up to five interviews.

First Day at Agoda

After the interview, about a week later, I got a call that landed me a position at Agoda. I delightedly accepted the offer and was asked to pick up equipment at the office.

I went to collect accessories at the offices a couple of weeks before my first day. I got a performant DELL laptop along with a laptop docking station, a set of welcome kit, and other necessary equipment. For other projects that require Mac, or you happen to need it, you will get a MacBook.

My first day at Agoda was in late-March. The infamous Coronavirus forced companies to embrace working from home. Agoda started working from home about a week before I joined. So, I began my first day at home.

Working from Home

Although I am an introvert and always try my best to avoid the presence of other human beings, working from home was not the best experience I have had, especially as a new joiner during the probation period.

Fortunately, I was placed in a team with a great, friendly, caring lead engineer. There was a coding scenario for new joiners to work with to get used to the technologies we are using. He helped and guided me through difficult parts and explained concepts I had never heard before. Props to him.

After the COVID-19 situation got better, we came back to our lovely office again. Now, we are working in the office.

The Teams

At Agoda, you will have great opportunities to rotate amongst exciting projects and teams.

My first team was the white-label team. We have been working with our Japanese partner, JTB, for a while. We are helping them build their new websites based on Agoda’s website and features. After a couple of quarters, I moved to a new team which is vastly different from the former.

The second team that I joined was YCS. Not only do we focus on hotel customers, but we also have a property management system for hotels to manage their bookings, properties. In this team, I got a great opportunity to design and implement a new feature which keeps track of external data of properties.

After the project has finished, I moved on to another team, SEO. Most of us search for hotels on search engines and book from one of the top results. The responsibility of this team is to make sure that we are at the top when a user search for a place to stay. Undoubtedly, SEO is one of the critical parts of Agoda. In this team, I was working on a project to migrate our indexation system from SQL to Hadoop, and create a new sitemap generator system.

All of these happen in just about a year! I have been rotated through teams which have enabled me to learn and acquire new knowledge and skills, and my journey will continue.

Technologies

On the client-side, we are using React + TypeScript. On the server-side, we are using C# (.NET Core) as the web server. These three pieces of technologies are the ones that all full-stack engineers have to touch.

If you are a a back-end developer, we are using a lot of cool technologies. The main tools are Scala, Docker, Hadoop, Spark. For databases, we are using Microsoft SQL, Couchbase.

How about tests? We write extensive tests for almost every project. We use Jest for testing our React code, NUnit/xUnit for C#, etc. We do all kind of tests, unit tests, integration tests, end-to-end tests, Selenium tests. We have a global site test system that catch production errors as well. Every time you encounter an error, we know and will fix it!

Apart from publicly available technologies, we build our own in-house tools as well. We have our excellent experiment system that does A/B testing and measure the success. Another example would be our BuildFlow system which handle our CI/CD process since we have over a half a hundred pull requests a day.

We have made some of our internal tools open-source which are available on our agoda-com GitHub.

Like other big enterprises, we still have some (ready for the scary words?) legacy code. Fortunately, it appears in few places and we are working to get rid of them. 😎

Daily Routine

We work using the Agile methodology. Most teams are using Scrum with 2-week sprint.

As a cool company, our start time is very flexible. On the paper, work starts at 9:00 but we can come whenever we want (just try to arrive before the stand-up meeting).

We begin our day with a stand-up meeting at around 10:30 and try to keep it short so we can spend our time on the thing that matters, coding.

Lunch is at around 12:00 but, again, you can have it whenever you want. Most people leave the office around 18:00–19:00. If you finish your work early, again, there is no need to stay late (or you can if you want to 😉).

How about meetings? We try to have as fewest meetings as possible and keep it short.

Working Cultures

As a diverse company, we have talented people from around the world. At Agoda, we commit to make the workplace inclusive for everyone no matter of one’s skin colour nor race.

We use English as the main language. Still, you should be able to speak Thai Dai Nid Noi (= a little bit) after a few months in.

Sometimes you may find it difficult when you disagree with your boss but, here at Agoda, you should be comfortable challenging your boss, your manager, your co-worker, or even the CEO (I have seen him got asked many challenging questions), as long as you’re challenging objectively, professionally, and respectfully. Why? Because everyone can be wrong, and anyone can be right. We should try to avoid going down the wrong track before it is too late.

Of course, there will be times when there is something in the way of getting your tasks done. If there is a blocker or anything that hinders your working velocity, you can always escalate to your or your team manager to solve the issue as timely as possible.

Speaking of managers, they are really easy to catch. You can always walk and talk to them to express any of your concerns, or just to have a chit-chat! You can also request a one-on-one meeting with your manager whenever you feel like one.

Agoda’s Tech Cultures

Another working culture at Agoda that really shapes the way the company has been is experiments. If you have an idea that might improve the website, why not experiment it? If the experiment results look promising, we will integrate as a feature. We have our own A-B testing experiment platform that we use to measure the success of a feature/implementation.

This is all possible with our data-driven approach. We trust data. Decisions are made based on the data that we have.

But how do we get the data? We measure. We measure (almost) everything, from the number of bookings increased with an experiment, to the clicks that a user makes. Thanks to this, we can deliver what users need.

Fun fact: we even measure the number of messages sent, meeting held, etc. during the WFH period and compared them with our time in the office.

Perks and Environments

On every floor, there is a pantry room for everyone to get some coffee or tea, grab some snacks, and have your lunch.

There is a coffee machine for you to have your essential cup before or during work. There are also cereals, bananas, and apples for you would you be hungry (but be quick! Bananas run out really fast!).

If you happen to be bored of the office’s snacks and drinks, you can always go down and pop into a café or restaurant in the shopping centre. There are hundreds of them to choose from! Don’t worry, there will always new shops to get you excited.

How about lunch? Many restaurants offer 10–20% exclusive discount when you show your Agoda badge!

What if you are tired of sitting? You can request a standing desk to improve your posture. If you experience back pains, there are massaging sessions on every Friday by people with visual impairments.

Also, there is a programme called Agoda Choice which allows you to choose between Fitness First’s subscription or 20,000 Baht to spend on well-being every year.

Activities

We have many kinds of activities here at Agoda. After work, we play board games, FIFA, Nintendo Switch, etc. If you are into physical sports, we have badminton, football, diving groups, etc. Sometimes we gather a group of people and do some CSR activities for communities and charities as well.

If you think working here has to be serious, I am sorry to tell you that we even have a Slack channel called #random. It is the place for great memes and everything else. On our internal Facebook Workplace, we have a group call ‘Cats Cats Cats’ which we share images of our cats at home or around our offices. It is one of the best groups.

A peak of what’s inside the ‘Cats cats cats’ group. I turned the notification on specifically for this group (Photo: Sarah Chew)

If you want to expand your knowledge, we have Slack channels such as #dev-knowledge-share, #mastering-scala, etc. where you can learn and ask questions about development.

Every month, there often are internal tech talks where we share our knowledge, experiment results, or cool stuff. Some tech talks were really cool, for example, one explained how we are setting up our system so that it can handle a really huge number of data requested in a second, etc.

I’m Interested! What Should I Do?

If you’re interested and want to join this amazing company, you can visit https://careersatagoda.com and apply for your desired positions. Everyone from new grads to veterans are welcomed!

We hope to see you here!

--

--

Thammarith

Senior Software Engineer at Agoda・Coding and having existential crisis simultaneously・thammarith.dev