Growth is driven by insights and experiences unique to "LINE," which are deeply rooted in users' lives.
Growth is driven by insights and experiences unique to "LINE," which are deeply rooted in users' lives.
Hidetsugu Tamaki joined the company in 2018.
After joining LINE as a new graduate, he has been working as an Android engineer on the team responsible for the chat and related features of the Android version of "LINE." His duties involve developing new features, improving existing ones, enhancing code quality, and managing in-house tools.
*This article is republished with some revisions from an interview conducted in 2021. The service names and affiliations are as of the time of the interview.
My name is Hidetsugu Tamaki, and I joined LINE as an Android engineer in April 2018. Why I chose LINE as my employer was because LINE is the largest of the companies I considered working for, and I believed it would offer challenging and rewarding work and opportunities to grow as an engineer. Another significant reason was that I enjoyed the interview process. During the interview, the interviewer asked me to write code on a whiteboard to implement a specific feature. They then posed follow-up questions like, "How would you handle this issue under these conditions?" and I had to adjust the code accordingly. This interactive and engaging interview process made me feel that LINE would be an exciting place to work.
I was assigned to the team responsible for the chat and related features of the Android version of "LINE." My role has included developing new features, improving existing ones, enhancing code quality, and managing in-house tools. I have also spoken at developer events such as "LINE DEVELOPER DAY" and "GDG DevFest" organized by the Google Developer Group community.
When I first joined, I worked on internal improvements and quality enhancements, such as processing to share images and other content from other apps to "LINE" and sending them as messages for six months. Then, I began to get involved in developing new features.
Initially, I was more of a contributor for both internal improvements and new feature development. Senior engineers and managers handled coordination with the planning side, and I implemented the specifications they finalized.
My second year in summer, I had a discussion with my supervisor about how to take the next step as an engineer. I expressed my desire to take on more leadership roles in projects. Since then, I have gradually had more opportunities to communicate directly with planners and server-side engineers and be involved in defining specifications. To be honest, I wasn't very good at communicating with people before joining the company. However, LINE has many engineers, and there are many opportunities to work on projects with colleagues from different countries, which naturally helped me improve my communication skills.
I was aware of such self-improvement during the development of a tracking system for "LINE Official Accounts" in chat rooms. We had been collecting data such as the number of message views and click rates for messages sent from "LINE Official Accounts" and providing it as an analysis feature for administrators. However, there was feedback that this was not enough, so we added functionality to collect events related to the rich menu. During this process, it was necessary to coordinate between the client side and the server side about who would handle which tasks. I represented the client side and discussed with the server-side team to decide how to divide the responsibilities.
If we finalized the specifications solely based on the client side's convenience, it could result in inefficient processing on the server side or unable to collect all necessary data. So, we needed to find a compromise, listening to the server side's opinions while conveying our requirements, and finally arriving at a workable specification.
This experience of negotiating with server-side engineers and finalizing the specifications boosted my confidence. I realized that to grow further as an engineer, I need to continue improving my communication skills. I hope to take on more leadership roles in various projects in the future.
The most memorable and challenging project for me was implementing background effects in the message screen of the Android version of "LINE." This feature was initially created by an iOS engineer as an idea. It received positive feedback both internally and externally, which led to the addition of patterns like cherry blossoms falling in spring and snow falling during the Christmas season. Also, effects were added to be triggered by specific keywords in the text messages.
While the feature was successfully implemented on the iOS version, the Android version of "LINE" faced issues due to a problem with a library called "Lottie," which was used to display the animations. Specifically, when layers of the animation overlapped, the colors of semi-transparent elements were not shown correctly. This issue was due to a missing feature in the library that causes the animations to look different on iOS and Android.
Without resolving this issue, we couldn't achieve the same effects on Android as on iOS. Although this problem was frequently reported on the library's GitHub page and acknowledged by the library's creators, they stated that "Implementing a fix would significantly impact performance, so we won't address it." Normally, this would be a common point to give up. Without this feature, the project would not be feasible, though. So, I decided to dive deep into the problem and attempt a solution, believing there might be a way to fix it without severely impacting performance,.
After about two weeks of trial and error, I found that while the performance did degrade when modifying the rendering of semi-transparent elements, optimizing the calculations to only correctly render overlapping semi-transparent elements while using the existing process for other cases significantly reduced the performance impact. I submitted this optimized fix to the library developers, and it was eventually integrated, and it allowed us to achieve the same visual effects on Android as on iOS.
I found this development quite challenging, but given the user feedback expressing a desire to see the effects on Android, I didn't want to give up and say, "We couldn't do it." By pushing myself to explore the limits, I gained deeper knowledge of the Android platform and found a way to solve the problem. It was a valuable and rewarding project.
There are several areas, but one example is my ability to write readable and maintainable code, which I believe has improved significantly while working at LINE.
As around 100 engineers are involved in working on the Android version of "LINE," it's crucial to write code that is easy to understand for anyone who reads it. If the processing logic is inherently complex, it's important to add comments to clarify it. The Android app development team emphasizes maintaining readable code to ensure sustainable development.
Given this context, the importance of writing clear code is well understood across the team. We regularly review each other's code, discussing aspects like "this design is more understandable" or "this approach is confusing." Working in such an environment has helped me develop the skill to write more readable and maintainable code.
One practice I consistently follow is the "Boy Scout Rule," which involves leaving the code cleaner than you found it. For example, when modifying code, I might rename functions to make them more descriptive or remove unused code. While this takes more time than just doing the task at hand, it improves the overall productivity and efficiency of the team by maintaining clean code afterwords. Some might argue that there's no need to rewrite code that works fine, but poorly maintained code can become a barrier when adding new features. Regularly checking for technical debt and addressing it is crucial, and the skills and knowledge gained from focusing on code readability and maintainability, as well as refactoring, are very useful in this regard.
Unique insights and experiences from working at LINE have also contributed to my growth. One of the such aspects is the strong emphasis on writing secure code. To prevent cyberattacks and protect user data, it's essential to write code that is free of vulnerabilities. Our team conducts mutual reviews and constantly exchanges ideas to eliminate vulnerabilities from our code.
I am surrounded by manyhighly skilled engineers, which is one of the factor raising my motivation. LINE has many senior engineers with advanced skills, and interacting with them provides valuable learning opportunities. When I consult them about things I don't understand, they often explain not just the immediate issue but also the language specifications and background that affect the behavior. Talking with such seasoned engineers is very helpful and contributes to my growth.
My company fits me well and I find it very comfortable to work in. Just after I joined, I was given significant responsibility for implementation methods that make me think and find the best solutions independently. As I gained more experience, I was also entrusted with the investigation phase, and I could propose solutions based on my own analysis.
For example, when we needed to change the storage location for message data to keep up with new Android version features, I had to think about the best process to minimize issues, how to implement the code to reduce bugs, and propose various solutions. We then implemented the most effective one based on our evaluations.
Having a certain degree of autonomy in development and being able to think and work independently makes it a very satisfactory environment for me. It also makes it easier to feel the value of my work.
One of the reasons I chose to work for LINE was that I wanted to be involved in a service used by many people, including myself. Being part of the development of a service I use daily, adding new features, and making improvements is a unusual and valuable experience.
When we add a new feature and know many people mention or the media covers it, it brings a great sense of accomplishment. This is something unique to a widely used service like "LINE," and it adds to the sense of fulfillment. Of course, there is also significant pressure, as issues can have a large impact to the society. Still, if you are looking to grow as an engineer, the experience of working at LINE is incredibly rewarding. I would be delighted if those who can enjoy both the challenges and some pressure join us.
Developing an open and inclusive web has been my life’s work. I hope to enhance the developer experience for everyone in the company.
LY Corporation has a mountain of technically challenging jobs. That's what makes working here so interesting.
Find and focus on the intersection of what excites me and what people need me for.
Developing an open and inclusive web has been my life’s work. I hope to enhance the developer experience for everyone in the company.
LY Corporation has a mountain of technically challenging jobs. That's what makes working here so interesting.
Find and focus on the intersection of what excites me and what people need me for.