Meet the Global LINERs


Engineering

Ahyeon Joung / Web Front-end Engineering / LINE Plus

From a young age, Ahyeon constantly asked, "Why?" and "Wouldn’t things be better if they were done this way?" This curiosity and desire to see immediate results led her to become a Web Front-end Developer. She joined the company in early 2022 and is now a junior developer. Let's talk to Ahyeon about how she is growing at LINE every day, working to develop global services and fulfill user needs!

A quick three-line summary

  • Ahyeon manages an internal platform called LandPress that helps people easily develop and deploy websites.
  • For Ahyeon, “challenge” means always striving for the best without compromising.
  • Front-end developers are closest to our users and must take strong responsibility for every line of code they write.

About Work

Q Please introduce LINE's Platform Product Engineering 1 Team and your responsibilities.

Our Platform Product Engineering 1 Team mainly focuses on web development. We handle the LandPress service, a no-code platform for internal employees that allows anyone, whether planners or developers, to easily create and deploy websites. It supports various types of websites, from simple monitoring sites to event pages, CMS, blogs, and more. LandPress is divided into three main types: 1) LandPress Contents (LPC): A headless CMS that stores data and provides APIs. 2) LandPress Studio (LPS): A no-code website creation tool that allows users to build websites without coding experience. 3) LandPress Deploy (LPD): Takes the source code of developed websites, builds, and deploys them as per user settings. I specifically work on developing LPC, the headless CMS. Unlike a traditional CMS that combines front-end and back-end, a headless CMS separates the front-end layer, allowing developers to focus solely on content. This separation helps in keeping up with fast-evolving technologies and is gaining a lot of attention in the IT industry.

Q In addition to your main tasks, what other duties have you performed?

In my two years at LINE, I've worked on quite a few services. Most recently, I developed the “My Page” and “Event Page” for LINE's monthly membership premium service (LYP Premium). Since it was a new service, we aimed to make a great first impression by focusing on the UX and speed. I also participated in the Official Account Page (OAP) and its CMS project. Given the large global user base, stability and security were our top priorities. The first project I worked on at LINE was the Universal Video Player (UVP). It's one of the most memorable projects for me, and I'll explain more about it in the next question!

Q What’s your usual work schedule like?

I mostly work remotely and start my day around 9 a.m. The first thing I do is plan my tasks for the day, setting goals for my development specs and outlining how to proceed hour by hour. At 11 a.m., we have a team scrum meeting where we share what we did the previous day and what we plan to do today. We also discuss any development issues, share insights, and decide on things like which libraries to use. These meetings can last anywhere from 20 minutes to an hour, depending on the agenda. After the scrum meeting, I take a lunch break. In the afternoon, I usually have one or two meetings. I spend about 15 minutes before each meeting reviewing the agenda and preparing any points I need to share. The rest of my time is dedicated to development work. Fortunately, I don't have too many meetings, so I can focus on my development tasks.

Q When working on international user cases, are there any considerations or preparations you like to focus on?

Since LINE caters to a global audience, it's crucial to develop services that can be used in different languages, whether based on the user's country or their selected preference. To do this, understanding the unique characteristics of each language is essential, and for a project like LYP Premium, that meant supporting 19 languages with all sorts of special cases and different attributes. 1) Language and Locale Codes: When obtaining user consent for location information, we receive either a language code or a language-country code based on the user's web browser or device settings. A language code represents only the language (for example, "ko" for Korean), while a language-country code includes both the language and the country ("ko-kr" for Korean in South Korea). For languages like Simplified and Traditional Chinese, not having a country code made it challenging to determine the correct translation. We had to identify these edge cases and work closely with the planning and translation teams to address them. 2) Japanese Full-width and Half-width Characters: Japanese often uses a mix of full-width and half-width characters. While half-width characters are commonly used, full-width characters are preferred for Katakana to ensure proper typing width. If users want to use both freely, we need to consider converting full-width input to half-width before sending it to the server. 3) Right-to-Left (RTL) Languages: For languages like Arabic, which are written and read from right to left, we need to reverse not only the text but also the layout components. This can be achieved by setting the dir attribute in HTML to RTL, which flips the direction. By addressing these considerations, we ensure a smooth and user-friendly experience for our international users.

Q What's your focus when collaborating with other roles, departments, or globally?

As a front-end developer, I often collaborate with a range of departments. When there are ambiguities during development, I consult with the planners. If I encounter design issues or misunderstand the intent behind a component, I discuss it with the markup team. For APIs and error cases, I communicate with the server team. While documentation exists, effective communication is crucial for clarity. Since we primarily work remotely, we use Slack channels for discussions. However, text-based communication and translation tools can sometimes lead to misunderstandings. I believe that knowing the problem and expressing it clearly are two different things. Therefore, I assume that the other person has no background knowledge of the issue at hand and provide detailed explanations. I summarize the current situation, attach screenshots or recordings, and share them to ensure everyone understands clearly. If the problem is too complex to explain in writing, I request a brief video call to explain directly.

Q Among the tasks you've undertaken thus far, what did you find the most enjoyable?

The Universal Video Player (UVP) project stands out as the most memorable and enjoyable. It was the first project I led after joining LINE, and I was responsible for developing the specs from scratch. Initially, I was surprised to be tasked with creating a video player as a web developer, especially since the initial brief I received was simply, "Let's create a UVP Jump Plugin." (laughs) Without a dedicated planner, I had to handle everything myself. The "jump" feature refers to buttons like "Skip Intro" that appear on the bottom right of OTT services. My task was to develop a plugin that allows customization of these buttons, including the text, timing, and duration of their appearance. I conducted thorough market research and worked closely with the designers to determine the most user-friendly options. Additionally, I developed the Picture in Picture (PIP) plugin, which allows users to minimize the video player and use other services simultaneously. At the time, these features were not common, so creating them was particularly exciting. Although it took time to adapt to and fully utilize the company's tools, the process of learning and experimenting was invaluable. This project was a significant and enjoyable learning experience for me.

Challenges and Failures.

Q What does the word “challenge” mean to you?

This question really makes me think. (laughs) To me, a challenge means going beyond the tasks assigned to me. While I could simply follow the project plan and API documentation to complete my tasks, I believe in taking my work a step further. I consider whether the user experience is smooth, if the functionality can be improved in terms of speed and efficiency, if the code is easily readable by other developers, and if there are any potential security issues. By deeply contemplating these aspects, I often find better solutions. When I share these refined results with the planners, they usually respond positively. Before QA testing, I also perform my own tests to identify edge cases and leave comments. This allows experts in each area to provide more precise feedback, and, together, we create the best possible service. Every small consideration and effort in this process is a challenge for me and contributes to my growth. Of course, to tackle this wide range of issues, I need to study more and gain more experience. I don’t ever want to be a developer who settles for "good enough"; I always want to take things a bit further.

Q Has there been a particular situation or turning point where you feel you grew significantly through your experience at LINE?

It's hard to pinpoint just one moment since I feel like I'm growing every day (laughs). However, the first thing that comes to mind is the experience of using “LIFF” during the LYP Premium project. LIFF stands for “LINE Front-end Framework,” an in-house web application platform provided by LINE. It allows web pages to open within the LINE app itself, so users don't have to leave their chat window. For the LYP Premium membership's My Page and Event Page, we needed to develop within the LIFF environment. One of the events allowed users to invite friends to get three months of free usage. Opening a new web page could be inconvenient and increase the chance of users leaving, so we developed the event page to invite friends and share links directly within LIFF. Initially, I was unfamiliar with LIFF and found the concept of developing within a specific framework quite new. I thoroughly read all the documentation related to LIFF, exploring the APIs and understanding its structure to complete the project. Afterward, I created a guide for my fellow front-end developers, covering everything, including pre-planning tasks, environment setup, debugging tips, useful APIs, and final checks. Sharing this knowledge and seeing my colleagues find it useful made me realize how much I had grown. This process of organizing what I had learned and seeing it benefit others was a significant growth experience for me.

Thoughts on competencies

Q What abilities and qualities do you believe are necessary for delivering excellent performance in your role?

First and foremost, I believe attention to detail and responsibility are crucial. Users can take a wide range of actions while using a service, and to ensure everything works smoothly, without bugs, every line of code must be meticulously reviewed for edge cases and potential side effects. Developing with a superficial logic can lead to unexpected issues post-deployment, causing inconvenience for many users. Therefore, it's essential to have a strong sense of responsibility for every line of code you write. Another important quality is providing evidence. When issues arise and there are differing opinions within or across departments, having solid evidence to support your stance is vital for persuasion. Choosing technologies or tools should be based on evidence, not just familiarity. This principle resonates with developers universally. While it might be tempting to use familiar libraries and write code the easy way, this doesn't guarantee the best solution. To ensure high-quality outcomes, you need to justify your choices with solid reasoning. Lastly, prioritizing user experience is essential. As a front-end developer, you are closest to the user. You need to anticipate user actions and develop your projects in a way that ensures a seamless experience. I sometimes intentionally insert malicious scripts or test like a bug-inducing user to identify potential issues. Even in my daily life, I try to use LINE and other services purely from a user’s perspective, setting aside my developer background. While this might seem like an occupational hazard (laughs), I believe it's a necessary process for my role.

Special experiences at LINE

Q Please tell us about the colleagues that you work with at LINE.

To me, my team members feel like mentors. They all have so much to teach. During code reviews, they first try to understand the intention behind my code and then provide detailed feedback. When I receive unexpected suggestions that challenge my preconceptions, it motivates me to reflect and study harder. Conversely, I also learn a lot by reviewing my teammates' code. Each person has a unique coding style, which allows me to approach problems from new perspectives. When I share any challenges I encounter during development, my colleagues don't just brush them off. Instead, they help me find solutions, often providing evidence to support their suggestions (laughs). If there's a disagreement within the team, we take the time to think through each perspective and either hold a meeting or vote to respect everyone's opinions. This collaborative approach has naturally become part of our culture, positively impacting the entire team.

Q Is there any benefit or cultural aspect at LINE that you think is particularly notable?

The study support is something I find particularly notable! Given the vastness of web technologies and the constant influx of new advancements, continuous learning is essential. At LINE, we can form study groups with colleagues voluntarily. Recently, I've been part of a TypeScript study group. We solve problems using TypeScript and then share our solutions. This not only helps me learn new technologies and features but also gives me a chance to rethink internal logic, making the experience highly satisfying. I also participated in a conference viewing study group. We watched web development conferences from around the world together and discussed the technologies and agendas presented in the videos. Sharing and debating our opinions, backed by evidence, helped broaden my perspective as a developer.

Wrap-up

Q Do you have any goals you personally want to achieve at LINE?

My current goal is to further enhance the internal platform, LandPress Contents, which I am responsible for. LandPress Contents operates on two tracks: a planning-driven process and a development-driven process. In the planning-driven process, the focus is on faithfully implementing the intentions outlined in the project plan. In the development-driven process, I aim to provide various suggestions backed by solid evidence from a developer's perspective. Given that we operate on these two tracks, context switching is crucial. I have a strong attachment to the service I'm developing, which helps me maintain focus and achieve my goals. I aspire to create a positive feedback loop where users of LandPress Contents provide valuable feedback, which is then reflected in the service, ultimately leading to continuous improvement and a better overall service.

Q Any message for those interested in this position?

As a Web Front-end Developer at LINE, you'll be directly connected to a global user base. Developing services for users from diverse cultures and languages allows you to break out of your comfort zone, broaden your perspective, and deeply contemplate the best solutions. If you are someone who, like me, wants to grow a little every day, don't hesitate to join us at LINE!