Our Internship Experiences as a Technical Writer, Android Engineer, and Backend Engineer in Traveloka

3 Months Experience in Learning and Doing While Having Fun

Puspacinantya
Traveloka Engineering Blog
9 min readAug 22, 2019

--

“Welcome to Traveloka! Congratulations on your new role. We can’t wait to have you on our team.”

The first time I saw these sentences, I immediately burst in my own excitement. I felt the flutter of joy all around me and though it might sound like I am exaggerating, I couldn’t deny that I was purely ecstatic. Having applied to so many companies (and usually ended up failing or getting ignored), I was in a state of delight, surprised, and puzzled at the same time.

I received that particular email almost 3 months ago and now my internship is about to come to an end. There may no longer be the daily commute to this office, no more lunch session with my team, and I might not be able to lounge in the comfiest and the most peaceful common room ever (which I am grateful to have, at least for 3 full months). So, to reminisce about my soon-to-be-over internship days, let me tell you thoroughly about what me and my friends, Inas and Wildan, have been learning and doing inside this fast-growing tech company while having fun.

A little bit of background….

Inas and Wildan are my seniors on campus, who are also a part of the summer internship program in Traveloka. Inas and Wildan are assigned to work with the Flight team as an Android Engineer and the Xperience team as a Back-end Engineer respectively. Despite studying in the same campus, I don’t think I have ever had an encounter with both of them before I joined the company. However, I know that Inas and Wildan are truly passionate about learning Computer Science; Inas herself has been enthusiastic in learning about and developing for Android since her freshman year and Wildan did various back-end-related projects before he signed up for an internship here.

(Left to right) Wildan, me, and Inas.

Anisha Inas

Inas, as an Android engineer for the Flight team, Inas was given a task to upgrade the flight seat selection feature by creating a zoomable seat layout with a mini-map on the corner of the page, similar to the one that the Movies team has had in the Traveloka app when you order a movie ticket from. The objective of this project is to give a better experience for customers to visually pick their seats comparatively on the airplane. The mini-map will also stay in its position with a well-defined accuracy, even when the customers have lifted their finger off the screen. Though Inas followed the similar zoomable seat map as the Movies team has, but she told me that the map for cinema and for airplanes are different in terms of width and height, and thus needing a different approach to build.

Inas is also responsible for converting the seat selection module written in Java to Kotlin, but the real obstacle was in implementation logic for actual seat selection because it took a pretty long time to measure the zoomed seat map, and consequently, she had to find the perfect ratio for it to be not only looking neat but also accurate to the bigger plot.

Wildan Fahmi

While Inas tackles some hurdles on the front-end side, Wildan performs technicality from the back-end part (in a different project too, of course). Wildan is assigned a task to improve the operational processes of the Experience and Extranet Tools (we call it AXES, which stands for Attraction and eXperience Extranet System). He has to migrate some hardcoded templates into the database. The objective of Wildan’s project is to automatically send Salesforce tickets to the operations people for every new ticket types that booked. If the team did it in a hardcoded way, the new changes have to wait until the latest AXES app is released, whereas by enabling the template into the database, his team can implement the changes right away without having to wait for the new release, while also provide better manageability and delivery for the product in time.

Me, Puspa!

I, myself, am a technical writer intern, working under the Accommodation team. My daily workflow is composing a post-worthy, engineer-related material for Traveloka Engineering Medium (just like this one!). I also help in reviewing the matters related to our external use affiliates and some other internal documents. In brief: I craft words and connect them to make a worth-telling story.

I have written on numerous things since I was 9, ranging from daily life stories self-ramblings which were purely written just as creative and fun outlets. They worked as a personal diary or a journal, the kind of place for me to express what I had in mind.

In addition, during the past 3 months here, I have been working closely with and had a chance to interview many awesome, prominent figures who continuously contribute to Traveloka app on a daily basis such as Afrishal Priyandhana, the lead engineer for Accommodation Web & Tools and Denni Gautama, the past CTO of Transportation and Accommodation. One thing that I learned from both of them is to always work to give impacts for other people.

Even though Inas, Wildan, and I may have been working on different domains with non-identical languages (Kotlin, Java, and English respectively), but the common thread that the three of us do here at Traveloka is: we write. It’s just in a totally different media with a noticeably distinct language.

Posing in front of Independence Day backdrop🎉

The Key Takeaways

1. When you have the option to learn, go in-depth.

Inas’ team is currently updating some of their modules from Java to Kotlin and before she joined in, Inas was hinted that she will also need to work with Kotlin (even though she knew nothing about it). Inas told me that she was fine with learning it, since mastering Kotlin actually exists in her bucket list. As the internship progresses, she realized how Kotlin turns out to be way simpler than Java’s in terms of verbosity. Kotlin also ensures that there is no null references happened somewhere in the code, minimizing the risk of the app she developed being imperfect. (Apparently, the feature is called Null Safety). Wildan also had the opportunity to learn Go (which, just like Inas, he knew nothing about. I think he will do great in Go, just like how he already is).

So, dive in. Stop thinking for too long and just start doing it right away. Whatever is proposed to you, if it is related to learning the things that you’ve been longing to master, just say ‘yes‘.

Opportunity does not always knock twice. Who knows you may find something interesting along the way?

2. Data is important!

Wildan realized the importance and the correct way to analyze the metrics from data through Datadog and New Relic, especially in latency and APIs call counts to determine which API is mostly used. Using latency and request count metric, Wildan can analyze and improve the APIs, if it is necessary. The APIs that we have to prioritize are those that are frequently used because due to their popularity, once they build up and queues, they can possibly take a longer time to execute. From this knowledge, Wildan and his team could review the best query structure to make it more efficient. This approach is similar to what the Accommodation engineers did last April in preparing the EPIC SALE.

3. Ask and intentionally listen to what is being told to you.

Everyone in Traveloka has a buddy, a person who will guide you through the first three months in the company. Buddy can also mean a first friend and a mentor that will help you to understand and adapt to the new environment and culture.

I myself have asked a lot of questions to my buddy, ranging from some technical terms that I have never heard of, to something trivial like the closing time of the nearest minimarket. Every new joiner in Traveloka is expected to proactively ask our buddy to address any of our confusion, and I remember at one point, somewhere in my internship period, I asked Niko (my buddy) something that he already told me. I think it was a question about the company’s structures and business units that keep getting mixing up in my mind. I asked him that identical question twice on distinct occasions, simply because I didn’t quite gather it the first time and did not ask for his further explanation. Maybe, I was too afraid to look ‘slow’ and was too horrified to make a mistake?

It was a bad move. Do not say you understand when in reality you don’t. It is okay to pause and process enormous amounts of information and it is okay to ask for greater clarification.

4. Things happen and sometimes we don’t know why it happens.

Making a mistake, by its nature, is inevitable. We slip and make a blip, just like what Inas once did. It was not a big blunder, but it made her spend quite a lot of time fixing one thing and another. For example, using the reformat code feature in IDE is one of her habits and maybe she was unaware of her IDE settings or configuration. When she once activated the reformat code feature for one file, for some reason, the other untouched files on her local are also changed. It caused conflicts on hundreds when she was about to pull the recent commits. She asked her buddy for some enlightenment on the anomaly, but her buddy was also as clueless as she was. Later on, she was suggested to create a new branch from the very beginning, ending with her manually copy-paste her works one by one.

Fortunately, her work was still minimal at that point.

5. Get to know more people

Inas and I are placed in two different teams, where all of the members are obviously more senior (and more experienced) than we are. I think I am personally fine talking to people more senior than I am, and I am sure Inas feels the same way. The people who we work with can be a great epitome, a reflection on how we should behave in the working environment. We can later apply the same composure and excellency they have in handling various problems the next time when we become a full-timer. I believe reflecting my coworkers’ great behaviors can be beneficial to hone my non-technical skills.

I realized that the more people I talk to, the more I can broaden my knowledge. And by knowledge, I don’t necessarily mean complicated matters like physics or math. I figured out a couple of awesome tv-series and books over lunch or afternoon banter, thanks to my coworkers, who are avid readers and movie lovers. I never knew I would enjoy reading Origin by Dan Brown if it wasn’t because of my coworker and I am grateful to know that such a book exists. You really just don’t know what you’ll discover when you get to know people.

(by the way, the book is really that good. A real page-turner, 10/10 recommended).

6. The most important thing: have some fun.

Because who says work and fun can’t coexist? We worked and we learned, and if we did not do it wholeheartedly, I suppose it would just be a waste in our lifetime.

Intern’s Day 2019
My team in Traveloka

Conclusion

As much as we love the internship, we eventually have to bid adieu to Traveloka. Overall, having been given a chance to ride in Traveloka is one of the most rewarding experiences I have ever had the privilege and luck to be a part of, despite how short-lived the run was. It’s amazing to know that what we have been working will be implemented and used by many users, and if we have an opportunity to come back, we don’t think to say ‘yes’ will be a hard thing to do. In fact, I personally will be ecstatic once more.

Thank you for reading this post, Inas, Wildan, and I are very much happy to see you being interested in our journey. Although our internship period is coming to an end (😢), you can still experience the same thing that we have had with Traveloka. Head out to our career page and see the available opportunity!

--

--