There are two ways to write error-free programs; only the third one works.
— Alan J. Perlis
About a year ago, I made a big decision in my life. I moved from my previous start-up company to Agoda.
In this article, I’m going to share my experience working here, how we work, and what our daily life as Full-stack software engineers looks like. Now even though I am a Full-stack engineer at Agoda, this will be applicable to other tech roles at Agoda as well.
My journey to Agoda
I was working for ViaBus — a startup whose product is a tracking app for the Thai public transport systems—and it’s there where I heard about an Agoda Programming Competition in 2019. I joined just for fun and finished in 50th-ish place.
A few months later, Agoda approached me asking if I was interested to join their Tech team as a Full-stack engineer. After a few calls, I found myself interviewing in the Agoda office at Offices at Central World, located in the heart of Bangkok.
I went through three rounds of interviews in a day. The first one was with two senior engineers, discussing my projects in my previous job, as well as solving a development scenario and optimizing my solution.
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 it was a good approach to not only check your computer science knowledge but also ensure that you can write a program. Some people may find it stressful during face-to-face interviews, so they may not do very well, but there is a take-home to help them prove themselves.
Work from home: My first few months at Agoda
A week after the interview, I finally got a call that landed me the position of Full-stack engineer at Agoda. My first day at Agoda was in late March when the infamous Coronavirus forced companies to embrace working from home.
So, I was asked to pick up the equipment at the office and started my first day at Agoda from home.
Although I am an introvert, working from home was not what I’d enjoy as a new joiner during the probation period. Fortunately, I was placed in a team with a great, friendly, and caring lead engineer.
There was a coding scenario for new joiners to work on to get used to the technologies here. 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.
At Agoda, you will have great opportunities to rotate amongst exciting projects and teams.
My first team was the white label team. We worked with our Japanese partner, JTB, to build their new websites. After a couple of quarters, I moved to a new team that is vastly different from the former.
The second team that I joined was YCS. Not only do we focus on travelers, but we also have our own property management system for accommodation partners to manage their properties.
In this team, I got a great opportunity to design and implement a new feature that 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 searches 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 this happened in just about a year! I have been rotated through teams which has enabled me to learn and acquire new knowledge and skills and kept me excited.
Tech stack at Agoda
On the client-side, we are using React + TypeScript. On the server-side, we are using C# (.NET Core) as the webserver. These three pieces of technology are the ones that all full-stack engineers use.
If you are a back-end developer, 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 kinds of tests, unit tests, integration tests, end-to-end tests, Selenium tests. We have a global site test system that catches 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 success. Another example would be our BuildFlow system which handles our CI/CD process since we have over half a hundred pull requests a day.
We have made some of our internal tools open source which are available on 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. 😎
The work culture
We use the Agile methodology, and most teams adopt Scrum with 2-week sprints. So, we start our day with a stand-up meeting at 10:30 am, updating the team on work progress. We try to have as fewest meetings as possible and keep it short to make time for coding.
At Agoda, we commit to making the workplace inclusive for everyone. As a diverse company, I work with talented colleagues from around the world, so we use English as the main language. Still, you would be able to speak Thai Dai Nid Noi (= a little bit) after a few months in the Bangkok office.
Sometimes you may find it difficult to disagree with your boss, but here at Agoda, we’re encouraged to challenge our managers, our co-workers, or even the CEO (I have seen him getting asked many challenging questions), if 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 something is in the way of getting your tasks done. When there’s a blocker or anything that hinders your working velocity, you can always escalate to your team manager to solve the issue as timely as possible.
Speaking of managers, they are super easy to catch. You can always walk and talk to them to express your concerns, or even just chit-chat. You can also request a one-on-one meeting with your manager whenever you feel like one. This is true not just for Full-Stack engineers at Agoda but also in every other role.
Agoda’s tech culture
One culture at Agoda that really shapes the way we work is experiments. If you have an idea to improve the website, why not experiment with it? If the experiment results look promising, we’ll integrate it as a feature.
We have our own A-B testing platform that we use to measure the success of a feature or implementation.
This is all possible with our data-driven approach. We trust data. Decisions are made based on the data that we have.
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 tracked the number of messages sent, meetings held, etc. during the WFH period and compared them with our time in the office.
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, and other cool stuff. I find some tech talks very cool, for example, the one that explained how we set up our systems to handle a really huge number of data requested in a second.
Life at Agoda
If you think working here must always be stressful, let me tell you that we 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 called ‘Cats Cats Cats’ where we share images of our cats at home or around our offices. It is one of the best groups!
A peek of what’s inside the ‘Cats cats cats’ group. I turned the notification on specifically for this group (Photo: Sarah Chew)
On every floor, there is a pantry (or two) for everyone to get coffee or tea, grab some snacks, or have lunch. There is a coffee machine for you to have your essential cup of joe before or during work. There are also cereals, bananas, and apples for you would you be hungry (Be quick! Bananas can 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 one of the cafés and restaurants in the shopping center, just downstairs. Plus, many restaurants offer 10–20% exclusive discounts when you show your Agoda badge!
Tired of sitting? You can request a standing desk to improve your posture. If you experience back pain, we’ve started offering massage sessions every Friday by people with visual impairments.
Also, there is a flexible-benefit program that allows you to reimburse your expense on learning and well-being every year.
After work, I often play board games, FIFA, Nintendo Switch, etc. with my colleagues. If you are into sports, we also have groups for badminton, football, diving, etc. Sometimes we gather in groups to do CSR activities as well.
Interested in our culture and want to join Agoda? Check out open roles in the technology team here.
See you at Agoda!
Thammarith Likittheerameth is a Full-stack Engineer at Agoda.
This blog post was originally published on Medium.com