Meet the Global LINERs


Engineering

정아연 / Web Front-end Engineering / LINE Plus

어렸을 때부터 끊임없이 ‘왜?’, ‘이렇게 하면 더 좋지 않을까?’ 질문을 던지며 개선점을 고민했고 내가 개발한 것 그대로 화면으로 확인하고 싶은 급한 성격(?) 덕분에 Web Front-end 개발자를 선택했다는 아연님! 2022년 상반기 공채로 입사 후 이제 만 2년 차가 된 주니어 개발자로, 자기소개부터 열정과 유쾌함을 엿볼 수 있었던 인터뷰였는데요. 글로벌 서비스 및 사용자에 대한 니즈로 선택한 LINE에서 아연님은 어떻게 매일 성장하고 있는지, 지금 만나보세요!

잠깐! 한 눈에 보는 세 줄 요약!

  • 아연님은 누구나 쉽게 웹사이트를 개발하고 배포하는 것을 도와주는 ‘LandPress’라는 사내 플랫폼을 담당하고 있다.
  • 아연님에게 ‘도전’은, 나 자신과 타협하지 않고 늘 최선의 방법으로 최고의 서비스를 만들어 내는 모든 과정이다.
  • Front-end 개발자는 사용자와 가장 가까운 개발자로, 스스로 작성한 코드 한 줄에 강한 책임감을 가져야 한다.

업무에 관한 이야기

Q LINE의 Platform Product Engineering 1 조직과 아연님의 담당 업무에 대해 소개해 주세요!

제가 소속한 Platform Product Engineering 1에서는 주로 웹 개발과 관련된 업무를 하고 있습니다. 저희가 담당하는 주요 서비스는 ‘LandPress’입니다. 사내 직원 대상 노코드 플랫폼으로, 기획자도 개발자도 누구나 쉽게 웹사이트를 개발하고 배포하는 것을 도와주는 서비스입니다. 모니터링을 위한 간단한 사이트부터 이벤트성 웹사이트 그리고 CMS, 블로그 등 다양한 목적의 웹사이트 개발이 가능해요. LandPress는 크게 3가지 유형으로 나눌 수 있는데요. 먼저 LandPress Contents (LPC) 는 데이터를 저장하고, API를 제공하는 headless CMS입니다. 그리고 LandPress Studio (LPS)는 노코드(no code) 웹사이트 제작 도구로, 코딩 경험이 없어도 스튜디오의 다양한 도구를 활용하여 제작한 화면이 그대로 웹사이트가 만들어집니다. 마지막 LandPress Deploy (LPD)는 개발한 웹사이트의 소스 코드를 가져와 사용자가 설정한 대로 빌드하고 배포합니다. 따라서 사용자들은 필요에 맞게 LandPress의 다양한 서비스를 조합하여 간단하고 빠르게 웹사이트를 제작할 수 있죠. 저는 그중에서도 LPC를 개발하고 있습니다. Headless CMS는 요즘 IT업계에서 많은 관심을 받고 있는 부분인데요. 말 그대로 머리(head), 프론트엔드(front-end)가 없는 CMS에요. 프론트엔드 개발자가 프론트가 필요 없는 서비스를 개발한다는 점이 어쩌면 생소하게 느껴지실 수도 있을 텐데요.(웃음) 기존의 CMS는 프론트엔드와 백엔드를 함께 제공하기 때문에 강하게 결합할 수밖에 없고, 이 때 데이터가 많아지거나 복잡해진다면 빠르게 발전하는 기술 속도에 비해, 최신화하는 부분이 느려질 수가 있어요. 그런데 headless CMS의 경우, 프론트엔드 계층이 분리되어 있기 때문에, 오직 콘텐츠에만 집중할 수 있다는 장점 때문에 각광받고 있는 주제입니다.

Q 지금 하고 계시는 주된 업무 외에, 어떤 업무들을 해오셨나요?

LINE 입사 후 2년 동안 꽤 많은 서비스를 담당했습니다. 가장 최근에는 LINE에서 제공하는 월간 멤버십 프리미엄 서비스(LYP premium)의 ‘마이 페이지’와 ‘이벤트 페이지’를 제작했는데요. 새로운 서비스로 사용자에게 처음 선보이는 시기였기 때문에 긍정적인 첫인상을 제공해야 한다는 목표로, UX와 속도를 중요하게 생각하면서 개발했습니다. 그리고 라인의 공식 계정 페이지인 Official Account Page (OAP)와 이를 관리하기 위한 CMS 프로젝트에 참여하기도 했어요. LINE의 공식 계정 페이지는 굉장히 많은 글로벌 유저가 사용하고 있는 서비스이기 때문에 안정성과 보안을 가장 중요하게 생각하고 개발했습니다. 마지막으로 제가 LINE에 입사해서 처음으로 참여한 프로젝트는 Universal Video Player (UVP)인데요. 저에게 가장 기억에 남는 프로젝트 중 하나로 아래 질문에서 더 설명드려볼게요! (웃음)

Q 업무 스케줄에 대해 간단히 소개해 주세요.

저는 주로 Remote 근무를 하고 있고, 오전 9시쯤 출근을 합니다. 가장 먼저 하는 일은, 하루 업무를 어떻게 분배할지 계획표를 먼저 짜는 것인데요. 회의를 제외하고 개발 스펙에 대한 목표를 세우고 시간 단위로 어떻게 진행할지 방향성을 세우고 개발을 시작합니다. 오전 11시에 조직 내 스크럼 회의를 통해서 어제 한 일 그리고 오늘 할 일을 공유합니다. 개발 측면에서 논의가 필요한 부분은 아젠다를 제시하고 각자의 의견을 공유하며 인사이트를 얻습니다. 예를 들어, 어떤 라이브러리를 선택하면 좋을지 혹은 풀리지 않는 개발 이슈가 있다면 다 같이 머리를 모아 고민하기도 하죠. 아젠다에 따라 짧으면 20분에서부터 최대 1시간을 채우는 경우도 있고요. 스크럼 회의를 마치고 점심시간을 갖고 오후에는 보통 1~2개의 회의가 있는데요. 회의 들어가기 전 15분 전에는 회의 아젠다를 미리 숙지하고 공유해야 할 내용을 미리 정리하는 시간으로 씁니다. 그리고 회의를 제외한 시간은 모두 개발에 집중하고 있어요. 저의 경우 회의가 많은 편이 아니라, 개발 업무에 온전히 집중할 수 있는 시간을 충분히 확보할 수 있어 좋은 것 같아요.

Q 글로벌 사용자를 대상으로 하는 업무를 하실 때, 특별히 고려하거나 준비하는 사항이 있으신가요?

LINE은 글로벌 사용자를 대상으로 하기 때문에, 서비스를 이용할 때 나라별로 다른 언어를 노출하거나 직접 원하는 언어를 선택할 수 있도록 개발하는 것이 중요해요. 이때, 언어별로 가지고 있는 특성을 이해하는 것이 필수 요소인데요. LYP premium 프로젝트를 진행할 때, 무려 19가지의 언어를 대응하며 화면에 녹여낼 때 대응해야 할 여러 케이스들이 있었습니다. 첫 번째로 사용자가 거주 중인 위치 정보에 대한 동의를 받을 때, 사용자가 사용하고 있는 웹 브라우저나 기기 설정별로 ‘언어코드’가 내려오기도 하고, ‘언어국가코드’가 내려오기도 합니다. ‘언어코드’는 특정 국가나 지역을 지정하지 않고 언어만 나타내는 코드이고, ‘언어국가코드’는 언어와 국가를 모두를 나타내는 코드에요. 예를 들어 한국어의 경우 언어코드는 ko, 언어 국가코드는 ko-kr과 같은 식인데요. 그런데 간체/번체 등 구별하여 언어를 사용하는 경우 국가코드가 없다면 어떤 번역체를 써야 할지 난감했는데요. 임의로 제공할 수 없기 때문에 이러한 엣지 케이스를 파악하여 기획, 번역팀과 고심하여 대응했던 기억이 있습니다. 두 번째로, 일본어의 경우 전각과 반각을 혼용하여 쓰는 경우가 많은데요. 보통 반각을 이용하지만, 가타카나의 경우 타이핑하는 폭이 더 넓은 전각을 사용하기도 해요. 만약 사용자가 두 요소 모두 자유롭게 사용하고 싶다면, 검색할 때 전각으로 입력 시 반각으로 바꿔 서버에 보내는 등의 케이스도 함께 고려해야 했어요. 마지막으로, 아랍어의 경우 오른쪽에서 왼쪽으로 글을 쓰고 읽는 Right to Left (RTL) 문자입니다. 그래서 문자도 반전, 컴포넌트의 위치도 반전을 시켜주어야 해요. Html의 속성에서 dir이라는 속성에 RTL을 부여하면 좌우를 반전시킬 수 있죠.

Q 타 직군과 부서, Globally 협업 시 가장 중점을 두는 부분이 있다면 무엇인가요?

Front-end 개발자는 타 부서와의 협업이 굉장히 많은 편이라고 생각해요. 개발 과정 중에 애매한 부분이 있으면 기획자와 협의하고, 화면을 개발하는 과정에서 컴포넌트에 맞지 않은 디자인이 있거나 제가 충분히 의도를 이해하지 못했을 때 마크업 팀과 논의를 해요. 또 데이터를 불러오는 API나 에러 케이스에 대해서는 서버팀과 이야기합니다. 문서가 있긴 하지만 명확하게 이해하기 위해 커뮤니케이션이 많을 수밖에 없어요. 보통 리모트 워크이기 때문에 슬랙 채널로 논의를 많이 하는 편인데요. 아무래도 텍스트 기반이고 번역툴의 오류까지 있을 경우, 의도와 다르게, 오해가 생길 수 있어요. 문제를 잘 알고 있는 것과 잘 표현하는 것은 다른 문제라고 생각해요. 그래서 저는 상대방이 지금 발생한 문제에 대해 어떠한 배경지식도 없다고 가정하고 최대한 자세히 설명하는 편입니다. 아젠다에 대한 현재 상황을 종합적으로 정리하고 화면 녹화본 등 영상이나 사진을 함께 첨부하여 상대방이 충분히 이해할 수 있도록 공유해요. 만약 글로 작성하기 어려울 정도의 복잡한 문제라면, 잠시 화상 회의를 요청하여 직접 설명을 드리곤 합니다.

Q 개인적으로 가장 ‘재미’있었다고 생각하시는 업무가 어떤 것인가요?

위에서 잠시 언급했던 Universal Video Player (UVP) 프로젝트가 기억에 남아요. 아무래도 제가 LINE 입사 후 처음 주도적으로 스펙을 개발했기 때문인 것 같아요. 사실 웹 개발자로 입사해서 처음으로 개발하게 된 것이 비디오 플레이어라 많이 당황하기도 했는데요. 덧붙여 제가 처음 전달받은 기획서는 “UVP Jump Plugin을 만들자”라고만 적혀있었어요.(웃음) 기획자 없이 개발 운영되고 있는 플러그인이었기에 하나부터 열까지 제가 직접 다 해야만 했어요. 여기서 말하는 “jump”란, OTT 서비스를 이용하시다 보면 하단 우측에 뜨는 ‘오프닝 건너뛰기’ 등과 같은 버튼을 말하는데요, 이 버튼을 커스텀 할 수 있도록 조작하는 플러그인 개발을 담당했어요. 어떤 문구로 띄울지, 동영상의 몇 초 즈음에 노출시킬지, 또 버튼 노출을 몇 초동안 유지할지 등 다양한 옵션을 고려할 필요가 있었죠. 시장조사를 열심히 하고, 디자이너 분에게 가이드를 받으며 어떤 옵션이 유저가 가장 편하게 이용할 수 있을까 고민하며 개발했습니다. 또, 비디오 플레이어 화면을 축소하여 다른 서비스와 함께 이용할 수 있도록 제공하는 Picture in Picture (PIP) 플러그인도 함께 개발했는데요. 이 모든 것이 당시에는 흔하지 않은 서비스라, 제 손으로 개발하며 직접 만들어 나가는 것이 정말 재미있었어요. 물론 첫 프로젝트인 만큼 사내 툴에 적응하고 자유롭게 활용하기까지 시간이 걸렸지만, 하나씩 시도하고 배워 나갔던 그 모든 과정에 저에게는 꼭 필요한 시간이었다고 생각합니다.

도전, 그리고 성장의 경험

Q 아연 님에게 ‘도전’이란 어떤 의미인가요?

지금까지의 저를 가장 돌아보게 만드는 질문이네요.(웃음) 저에게 도전이란, 맡은 임무 그 이상을 해내는 것을 의미하는 것 같아요. 어떤 과제를 개발하다 보면, 기획서 그리고 API 문서에 적힌 대로만 진행해도 맡은 임무는 마칠 수가 있어요. 하지만 한 발 더 나아가서 사용자가 느끼기에 불편하거나 어색하진 않는지, 속도와 효율 측면에서 기능을 발전시킬 수는 없을지, 코드 레벨에서 봤을 때 다른 개발자가 보기에 한 번에 잘 읽히는지, 보안상 문제가 발생할 수 있는 지점은 없을지 등에 대해서 더 깊이 고민하다 보면 더 나은 선택지가 나왔던 것 같아요. 그리고 이러한 결과물을 정리해서 기획자분들에게 전달하면, 긍정적으로 검토하고 답변을 주십니다. 또 QA가 진행되기 전에 제가 직접 테스트해 보고 엣지 케이스를 파악해 보고 코멘트를 남기기도 해요. 그럼 해당 영역의 전문가분들께서 더 정확하고 세심하게 피드백을 주시고, 다 함께 최고 그리고 최선의 서비스를 만들어 나가죠. 이러한 사소한 고민들까지 모든 과정이 저에게는 도전이고 저를 성장시키는 것 같아요. 물론 이렇게 다양한 영역에 대해 고민하기 위해서는 공부도 더 많이 하고 경험도 쌓아야 해요. ‘이 정도면, 여기까지만 해도 충분하지 않을까?’ 제 자신과 타협하고 싶은 생각을 이겨내고, 항상 조금 더 고민하는 개발자가 되고 싶어요.

Q LINE에서의 경험을 통해 특별히 성장했다고 느끼신 사례/계기가 있으신가요?

사실 저는 매일매일 성장하고 있다고 생각하기 때문에(웃음) 딱 하나만 뽑기가 어려운데요. 질문을 받고 가장 먼저 생각났던 것은 LYP premium 프로젝트 중 ‘LIFF’를 활용해 개발했던 것이에요. ‘LIFF’란, LINE Front-end Framework의 약자로, LY에서 제공하고 있는 사내 웹 애플리케이션 플랫폼이에요. LINE 앱 내에서 어떤 웹페이지를 열어야 할 때, 친구와 대화하고 있는 대화창에서 벗어나지 않고 앱 내에서 바로 웹을 이용할 수 있도록 하는 것인데요. LYP premium 멤버십 마이페이지와 이벤트 페이지를 바로 이 ‘LIFF’ 환경 위에서 개발해야 했습니다. 친구를 추천하면 3개월간 무료로 사용이 가능했던 이벤트였는데요. 새 창으로 웹페이지가 열리게 되면 불편함과 동시에 이탈의 가능성이 커지기 때문에 ‘LIFF’ 위에서 친구를 초대하고, 링크를 공유하는 이벤트 페이지를 개발했습니다. 사실 처음엔 ‘LIFF’ 자체가 익숙하지 않고, 어떤 프레임워크 위에서 개발을 한다는 것이 생소했어요. 그래서 ‘LIFF’와 관련된 문서들을 모두 정독하면서 어떤 API를 제공하고, 어떻게 구성되어 있는지 하나하나 파헤치며 프로젝트를 완성할 수 있었습니다. 이후에는 ‘LIFF’와 관련하여 FE 개발자가 알고 있으면 좋을 내용들, 예를 들어 기획이 나오기 전에 미리 해 놓았으면 좋을 작업부터 환경 설정, 디버깅 하는 법, API 꿀팁 그리고 완료 후 한 번 더 체크해 보면 좋을 부분까지 가이드 문서로 제작하여 조직에 공유했어요. 스스로 깨달은 것들을 정리하는 과정 그리고 그 결과물을 많은 동료분들께서 유용하게 활용하시는 것을 보면서 한 단계 성장할 수 있었습니다.

역량에 관한 생각

Q 아연님의 업무에서 좋은 퍼포먼스를 내기 위해서는 어떤 역량과 자질이 필요하다고 생각하시나요?

가장 먼저 말씀드리고 싶은 것은 ‘꼼꼼함’과 ‘책임감’인 것 같아요. 서비스를 이용하는 과정에서 사용자가 취할 수 있는 액션의 범위는 굉장히 많고, 이를 가정으로 최대한 버그 없이 운영하기 위해서는 코드 한 줄을 개발하더라도 엣지 케이스는 없는지, 이 코드 한 줄이 다른 곳에 사이드 이펙트를 발생시키지는 않을지에 대해서 꼼꼼히 검토해야 합니다. 단편적인 논리로 개발하게 되면, 서비스 배포 후에 예기치 않은 문제로 많은 사용자들에게 불편함을 줄 수 있기 때문에 자신이 써 내려간 코드 한 줄마다 강한 책임감을 가져야 해요. 그리고 ‘근거를 마련하는 것’이 중요합니다. 발생한 이슈에 대해서 다른 부서 혹은 같은 팀 내에서 이견이 생겼고 나의 의견을 충분히 설득하기 위해서는 충분한 근거를 가지고 있어야 합니다. 단순히 익숙하기 때문에 기술 및 툴을 선택하는 것이 아니라, 근거를 바탕으로 가장 적합한 방법을 적용해야 해요. 이건 직무를 떠나 개발자라면 공감하실 것 같아요. 점점 편한 라이브러리를 사용하게 되고 물 흐르듯 코드를 완성해 낼 때가 있죠. 하지만 이건 가장 좋은 방법이라는 확신을 가질 수가 없어요. 내가 활용한 기술이 가장 적합하다고 생각한 배경, 이 근거에 의한 개발을 해야 완성도를 높일 수 있어요. 마지막으로 이야기하고 싶은 것은 ‘사용자 경험을 우선시하는 것’이에요. FE 개발자는 사용자와 가장 가까운 개발자라고 생각해요. 사용자의 액션을 예측하여 불편함 없이 사용할 수 있도록 개발해야 합니다. 그래서 저는 가끔 일부러 악성 스크립트를 넣어보기도 하고, 버그를 유도하는 유저처럼 테스트해 보기도 해요. 심지어 실생활에서도 개발자라는 백그라운드를 걷어내고 온전히 사용자 입장에서 LINE 그리고 타사 서비스를 사용해 보려고 노력합니다. 일종의 직업병인 것 같지만(웃음) 제 업무에서는 꼭 필요한 과정이라고 생각합니다.

LINE에서의 특별한 경험에 대한 이야기

Q 함께 일하는 동료들을 소개해 주세요!

저에게 팀원분들은 모두 스승님처럼 느껴져요. 그만큼 배울 점들이 정말 많은 분들이신데요. 코드 리뷰를 할 때도, 제가 이렇게 작성한 이유가 있는지 의도를 먼저 확인하고, 마치 본인이 쓴 코드인 것처럼 정성껏 피드백을 주십니다. 저의 고정관념을 깨버리는 생각지 못한 의견을 받았을 때 제 자신을 돌아보면서 동기부여를 받고 또 열심히 공부를 하게 되죠. 그리고 반대로 팀원분들의 코드를 제가 리뷰하면서도 많이 배워요. 각자 코드 스타일이 다 다르기 때문에 새로운 시각에서 접근해 볼 수 있기 때문입니다. 또 개발하면서 생긴 고민거리를 공유하면 그냥 지나치지 않고 (앞서 말씀드린 것처럼) 근거와 함께 해결 방법을 찾아주십니다.(웃음) 팀 내에서 의견이 상충된다면 충분히 서로 생각하는 시간을 가지고 회의를 진행하거나 투표를 통해 상대방의 의견을 존중하며 결정을 내립니다. 이런 모든 과정이 자연스럽게 문화로 자리 잡아 팀 전체에 긍정적인 영향을 발휘하는 것 같아요.

Q 자랑하고 싶은 LINE의 업무 환경 및 조직 문화는 무엇인가요? 아연 님의 원픽은?

스터디 지원이요! 웹에 대한 기술이 방대하고 새로운 기술들이 많이 쏟아지다 보니 이를 캐치하고 제 것으로 만들기 위해서는 스터디가 꼭 필요해요. 저는 조직 내에서 동료들과 자발적으로 팀을 구성하여 스터디를 진행하고 있는데요. 최근에는 TypeScript 스터디를 하고 있어요. TypeScript를 이용해서 문제를 풀고 어떻게 해결했는지 서로 공유하는 방식이에요. 이를 통해 제가 몰랐던 기술/기능에 대해서도 알게 되고 내부 로직까지 한 번 더 생각해 볼 수 있는 기회를 가져서 정말 만족스럽게 참여하고 있습니다. 또 컨퍼런스 시청 스터디도 참여했었는데요. 웹 개발 관련 전 세계에서 열리는 컨퍼런스를 함께 시청하면서, 영상에 나온 기술이나 아젠다에 대해 각자의 근거로 찬반 의견을 던지다 보면, 개발자로서 저의 세계가 더 넓어지는 것을 느낄 수 있었어요.

마무리하며

Q 앞으로 LINE에서 이루고 싶은 목표가 있으신가요?

현재 담당하고 있는 사내 플랫폼인 LandPress Contents를 더 활성화하는 것이 목표입니다. 현재 LandPress Contents는 기획 주도 프로세스와 개발 주도 프로세스 2 track으로 운영 중인데요. 기획 주도 과정에서는 기획서에 담긴 의도가 그대로 구현될 수 있는 데에 집중하려고 하고, 개발 주도 과정에서는 개발자로서 근거와 함께 다양한 의견을 내는 데에 집중을 하려고 합니다. 두 개의 트랙으로 운영되다 보니 컨텍스트 스위칭이 굉장히 중요한데요. 제가 개발하고 있는 서비스에 애정이 높은 만큼 목표 수준으로 잘 집중을 할 수 있을 것 같습니다. LandPress Contents를 사용하는 분들이 서비스에 관련한 여러 좋은 의견을 내주시고, 그게 또다시 서비스에 반영되는 긍정적인 루프를 반복하여 더 좋은 서비스로 만들어내고 싶습니다.

Q 본 직무에 관심 있는 분들께 한 말씀 해주세요!

LINE의 Web Front-end 개발자는 글로벌 사용자와 맞닿아 있습니다. 서로 다른 문화와 언어를 가진 글로벌 사용자를 대상으로 다양한 서비스를 개발하면서, 내가 가진 틀을 깨며 시야를 넓힐 수 있고, 가장 좋은 방법을 찾기 위해 더 깊이 고민하는 경험을 할 수 있습니다. 저와 같이 매일매일 한 단계 성장하고 싶은 분들이라면 주저하지 말고 LINE과 함께 하시면 좋겠습니다!