ⓒ 센드버드
Q. Foundation 스쿼드와 UI Kit 팀은 어떤 일을 하나요?
Chris Foundation 스쿼드는 SDK 기능과는 직접적인 관련은 없는 CI/CD, 배포, 로깅, 분석, 그리고 기술부채 해소 등 서비스가 잘 운영되기 위한 기반을 만드는 팀입니다. 원래는 하나의 팀에서 기능 개발과 Foundation 업무를 같이 했었는데요. 팀의 업무가 기능 개발에 편중되는 문제가 있어 Foundation 업무를 위해 따로 조직을 분리, 운영함으로써 유지보수 및 관리를 더 효율적으로 하게 되었습니다.
Leo 센드버드는 Chat SDK 기반으로 성장을 한 회사인 만큼, Chat SDK는 채팅에 관련된 API를 제공을 함으로써 고객들에게 좀 더 손쉽게 채팅에 관련된 부분을 개발할 수 있도록 돕고 있습니다. 채팅을 만들어 보신 분들이라면 아시겠지만, 채팅은 쉽다면 쉽게, 어렵다면 아주 어렵게 만들 수 있거든요. 그렇다보니 Chat SDK로 제공하고 있는 API를 가지고 서비스를 만들려면 Chat SDK가 제공하고 있는 가이드 준수가 필수죠. 저희는 ‘어떻게 쉽게 센드버드 채팅 API를 구현할 수 있을까’를 고민했고, 결과적으로 Chat SDK를 가지고 UI Component를 만들어 고객이 쉽게 센드버드 채팅을 사용할 수 있도록 UIKit 팀을 구성했습니다.
Q. 센드버드는 스쿼드 단위로 일을 하고 있다고 알고 있는데요. 어떤 분위기에서 어떻게 일하고 계시나요?
Chris 스쿼드라는 단위가 어색한 분들이 있으실 거 같아서 먼저 스쿼드의 개념과 장단점에 대해 말씀을 드리는 게 좋을 것 같습니다. 스쿼드는 매니지먼트 관점에서 팀을 기능 중심으로 소규모로 운영하기 위한 단위이고요. 보통 8명을 넘지 않게 만드는 것 같아요. 이를 통해 보다 긴밀하고 빠르게 움직일 수 있고, 기능을 명확히 하기 때문에 이와 연관이 없는 다른 업무로부터 방해를 받지 않을 수 있다는 점이 장점입니다. 다만 스쿼드 간에 커뮤니케이션이 필요할 때의 비용이 배가 된다는 점은 단점으로 꼽힙니다. 그러나 각 스쿼드의 역할을 서로 겹치지 않게 잘 조직화할 수 있다면 스쿼드 단위 운영의 장점을 극대화할 수 있을 거라 생각합니다.
그리고 업무 분위기는 팀 단위와 마찬가지로 스쿼드 바이 스쿼드입니다.(웃음) 같이 일하는 사람에 따라도 다르고 스쿼드의 기능에 따라서도 다른 것같아요. 제가 일하고 있는 Foundation 스쿼드는 저까지 3명뿐이라 가족 같은 분위기(웃음)로 일하고 있습니다. 업무도 데드라인이 정해져 있다기보다는 알아서 우선순위 정해서 해결하는 식으로 상대적으로 자율적으로 운영되고 있고, 스쿼드 멤버들끼리 신뢰를 기반으로 서로 존중하며 일을 하고 있습니다.
Leo 다른 스쿼드와는 다르게 UIKit은 팀에 가까운 스쿼드인 것 같아요. 왜냐면 UIKit에는 엔지니어만 존재하지 않고, 엔지니어, PM, 디자이너, Technical writer, QA 모두가 모여 있거든요.
저는 업무에 따라서 사람들의 성향이 어느 정도 있다고 생각을 하는 편인데요. 그래서 그런지 다양한 분야의 사람이 모여 있어 엄청 재밌어요. 하나의 일을 바라보는 시각이 다양하거든요. 기능 개발에 여러 의견을 듣고 그것을 취합해 wireframe을 만든다면, QA와 문서 업데이트까지 이어지죠. 어느 하나 뺄 수 없는 과정이 매 기능을 만들 때마다 이뤄져요. 어떻게 보면 복잡하지만 한 팀으로 존재할 수 있기 때문에 좀 더 수월하게 일할 수 있지 않나 싶어요.
Q. 주로 같이 일하게 되시는 협업 멤버분들은 어떤 직무의 분들이실까요? 최근 해결하셨던 성공적인 프로젝트나 애로사항을 가볍게 공유해 주세요.
Chris 팀 성격상 타 스쿼드 분들과 협업하게 되는 경우는 많지 않은 것 같아요. 같은 스쿼드 안에서 각자가 담당한 플랫폼(Android/iOS/Web/React Native)이 정해져 있어요. 보통 한 스쿼드에 적어도 플랫폼 당 한 명씩은 있기 때문에 Foundation 스쿼드의 경우 저와 다른 플랫폼 SDK를 담당하시는 분들과 같이 일하고 있습니다.
최근에 했던 일들 중 한 가지를 공유해 본다면 서버 테스트를 위한 SDK CI 테스트 연동 작업이 있었는데요, SDK 테스트를 서버 테스트의 프로세스에 추가함으로써 서버의 안정성을 높이고자 했던 업무였습니다. 이를 위해 CI 테스트를 CLI 명령을 통해 실행할 수 있도록 테스트 워크플로우(workflow)를 수정하고 테스트 결과를 서버에서 특정한 형식으로 받아볼 수 있게 작업했습니다.
Leo 최근 멘션 기능을 UIKit에 반영해야 하는 상황이 있었는데요. 요구사항 인입부터 해결까지 PM, Server, Disign, Chat SDK 등 다양한 직군과 스쿼드와 협업을 해야 할 일이 있었어요. 각자의 일정 속에서 맡은 일들이 있었을 텐데도, 하나의 팀처럼 빠르게 대응해 주셨고 덕분에 일정 내에 완료할 수 있었습니다. 여러 직군과 스쿼드가 협업을 하다 보니 커뮤니케이션 비용이 많이 들어 애로사항이 좀 있었는데요, 이 문제를 제기를 했더니 CTO가 나서 counter part도 순식간에 정리해 주셔서 금방 속도를 되찾을 수 있었어요.
ⓒ 센드버드
Q. 평소 일과가 궁금해요. 주로 어떤 일을 하시나요?
Chris 저는 약간 특수한 경우이긴 한데요, 비교적 초기에 입사를 한 편이라 Foundation 업무 외에 서포트 역할도 함께 담당하고 있습니다. 제가 제일 좋아하는 업무 중 하나는 클라이언트 팀의 JavaScript 엔지니어분들과 1:1로 대화하는 시간이에요. 공식적인 업무는 아니지만 서로 좋아하는 것들에 대해 토론하거나 업무에 애로사항이 있다면 해결 방안을 같이 고민해 보거나 또는 각자의 살아가는 이야기를 나누면서 견문을 넓혀나가는 등, 개인적으로 정말 소중한 시간입니다. 시간만 더 주어진다면 더 많은 분들과 더 오랫동안 얘기를 나눠보고 싶네요.
이외에도 Foundation 스쿼드 본연의 업무인 CI/CD, 배포, 로깅, 분석, 그리고 기술부채 해소 등의 일을 하고 있고요, 클라이언트 팀에서 JavaScript 엔지니어 리드 역할 및 신규 입사자 교육을 겸하고 있습니다. 평소 일과를 유형별로 정리해 보면 업무 시간을 개발 50%, 미팅 일괄 30%, 코드 리뷰 5%, 기타 15%에 할애하는 것 같은데요, 작년까지만 해도 미팅 시간이 꽤 긴 편이었는데 미팅 시간이 늘어날 때마다 업무 프로세스 개선 제안을 계속 해오면서 지금은 많이 줄어든 것 같습니다.
Leo UIKit 스쿼드 테크리드, Android engineer 리드를 하고 있는데 80프로 이상은 UIKit 서비스 관련 업무를 담당하고 있습니다. 대부분의 하루는 미팅, 개발, 리뷰의 반복인 것 같아요. 예전에 회사가 작을 때는 정말 미팅이 많았었거든요? 스쿼드로 나뉘게 된 이후로 다른 스쿼드의 업무를 직접적으로 신경을 쓰지 않아도 되니 이젠 제가 속한 UIKit에만 좀 더 집중을 할 수 있는 것 같아요. 이게 스쿼드를 나누게 된 핵심 목적이라고도 생각하고요.
Q. SDK를 개발하는 것은 직접 피쳐를 개발하는 것과 개발자 입장에서의 차이, 혹은 성장 포인트가 있나요?
Chris 하나의 장점은 곧 다른 하나의 단점이라고 볼 수 있기 때문에 SDK 개발의 장단점에 초점을 맞춰 제 개인적인 의견을 정리해 보았습니다.
장점
▲ 고객을 통해 엔지니어들이 선호하는 방식이나 트렌드를 파악하기 용이하다.
▲ 같은 기능이라도 다양한 옵션을 고민하면서 더 넓게 사고를 할 기회가 주어진다.
▲ (장점일지는 모르겠지만) UI보다는 비즈니스 로직에 집중할 수 있다.
단점
▼ 레거시를 쉽게 빼기 힘들다 : 언어의 발전이나 유행하는 패턴, 프레임워크/라이브러리의 업그레이드 등을 바로 적용하기가 어렵다.
▼ 하위 호환성을 지키기 위한 비용이 크다.
아무래도 SDK를 개발하면 최신 트렌드를 따라가기가 부담스러워 잘 안 따라가게 되는 경향이 있고 이로 인해 트렌드에 뒤처진다는 생각이 들 수 있는데요, 요즘에는 트렌드 정보가 워낙 잘 정리가 되어있기 때문에 저는 이 부분은 개인이 마음만 먹으면 언제든지 따라가는 게 가능하다고 생각합니다. 그리고 오히려 반대로 특정 기능에 대해 넓게 사고하는 훈련이나 엔지니어들이 선호하는 방식 또는 패턴 등은 쉽게 얻을 수 없는 부분이라고 생각하기 때문에, SDK 개발은 성장의 관점에서 정말 매력적인 옵션이라고 생각합니다.
Q. 목표하고 계신 팀 과업은 무엇일까요? 이를 위해서 고민하고 계신 부분이 궁금합니다.
Chris 제 개인의 입장에서 바라보는 팀의 궁극적인 과업은 결국 고객과 임직원 모두를 위한 가치를 창출해 내는 게 아닐까 생각합니다. 더 좋은 프로덕트를 만들어 고객의 성공을 돕고, 또한 팀원들이 효율적으로 업무를 해나갈 수 있는 환경을 만드는 것이 팀 단위에서 고민해야 할 포인트라고 생각해요. 이를 어떤 방식으로 구체화해서 고객과 팀원들을 만족시킬 수 있을지를 주로 고민하는 편인데요, 고객에게는 높은 프로덕트 품질과 문제에 대한 신속한 대응으로, 팀원들에게는 생산성 최적화 방법 연구 및 적용, 1:1을 통한 개별 팀원의 의견 수집 및 개선, 성장을 위한 기회 제공 등 다양한 방법을 통해 이 가치를 실현하고자 노력하고 있습니다.
Leo 대표적으로 말씀드리자면 UI testcase를 어떻게 만들지 고민을 하고 있습니다. 많은 엔지니어분이 겪으셨을 경험인데요. UI test는 만드는 것도 힘들지만 유지 보수엔 더더욱 많은 노력과 의지가 필요하거든요. 어떻게 방향을 잡아야 하는지 현재도 멤버들과 함께 고민 중에 있습니다.
Q. ‘센드버드의 입사를 꿈꾸는 분들을 위해 이것 3가지만 기억해라!’ 하는 것은 무엇이 있을까요?
Chris 사람마다 추구하는 가치가 다르다 보니 제가 잘못 생각하는 부분이 있을 수도 있을 것 같아요. 그래도 한번 개인적인 생각을 정리해 봤는데 그냥 참고 정도로 생각해 주시면 좋을 것 같네요.(웃음)
일단 솔직한 게 중요한 것 같아요. 기본적으로 서로에 대한 신뢰를 기반으로 팀이 움직이다 보니 이 부분에서 무너지면 팀에 적응하기도 어려울뿐더러 함께 일하는 분들의 의욕까지 꺾을 수 있기 때문에 자신을 숨기거나, 과장하거나, 혹은 잘못된 정보를 전달하지 않도록 하는 게 좋습니다.
그다음 메타인지와 학습 역량도 제가 중요하게 보는 포인트 중 하나입니다. 내가 뭘 알고 뭘 모르는지, 뭘 할 수 있는지 또는 못하는지 등을 이해하고, 내가 잘 모르고 못하는 영역에 대해 빠르게 학습할 수 있는 역량이 있으면 도움이 됩니다.
마지막으로 저는 현실 파괴력도(웃음) 중요하게 생각합니다. 현재의 상황에 안주하는 걸 경계하는 편이라 끊임없이 의심하고 문제를 찾아내 해결하면서 지속적으로 팀과 프로덕트를 개선해나갈 수 있는 사람들이 모여 있다면, 구성원 개개인뿐 아니라 팀, 회사, 나아가 인류 사회가 조금씩이나마 앞으로 나아가는 데 기여할 수 있을 거라 생각합니다.
Leo 우선 적극적인 자세가 중요합니다. 얼마나 많이 알고 모르는지는 같이 일하는 사람이 아니고서는 알 수가 없죠. 하지만 적극적인 자세는 누가 보더라도 알 수 있는 부분인 것 같아요. 면접 때 티가 나는 부분이기도 하고요. 그리고 부드러운 소통도 중요합니다. 개인적으로 Sendbird의 특징이 소통이 정말 많은 회사라고 생각하는 편인데 상대방을 배려하며 자신의 주장을 부드럽게 전달할 수 있다면, 어느 팀에 가서든 즐겁게 일할 수 있을 것 같아요. 실제로 그런 분들과 일하는 건 저도 너무 즐겁거든요.
마지막으로 존중하는 자세입니다. Sendbird의 Core-value를 보면 ‘Global citizenship’이라는 가치가 있는데 저희 회사가 다양한 문화의 멤버가 함께 일하는 회사다 보니, 잠시 긴장을 늦췄다가는 실수를 하는 경우가 많아요. 한국 문화에선 문제가 안되는 게 타 문화에선 실례가 되는 경우도 많거든요. 무엇보다 중요한 요소이지 않을까 생각됩니다.