개발자를 위한 개발 팀, 뭐가 다를까?

개발자를 위한 개발 팀, 뭐가 다를까?

일자

상시
유형
아티클
태그
이 아티클은 <센드버디안이 궁금해> 시리즈의 2화입니다. 


센드버드에는 개발자를 위한 개발 팀이 존재한다고 합니다. 바로 Client Team인데요. 보상과 복지는 물론이고 성숙한 개발 조직문화를 가지고 있다는 Client Team은 어떤 일을 하는 곳일까요? 센드버드 Foundation 스쿼드의 Chris 님 그리고 UI Kit 팀의 Leo 님을 만나 궁금증을 풀어봤습니다. 

ⓒ 센드버드 


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’이라는 가치가 있는데 저희 회사가 다양한 문화의 멤버가 함께 일하는 회사다 보니, 잠시 긴장을 늦췄다가는 실수를 하는 경우가 많아요. 한국 문화에선 문제가 안되는 게 타 문화에선 실례가 되는 경우도 많거든요. 무엇보다 중요한 요소이지 않을까 생각됩니다.

ⓒ 센드버드 


Q. 어떤 분과 함께 일하고 싶은지도 궁금합니다. 

Chris 위에 제가 말씀드린 입사에 필요한 3가지 역량 모두 지니신 분이라면 정말 매력적일 것 같아요. 조금 더 욕심을 내보자면 다른 팀원들에게 긍정적인 영향을 주는 것에 관심을 갖고 행동할 수 있는 분이면 완벽할 것 같아요.

Leo 함께 성장하고 싶으신 분이라면 언제든 환영입니다. 중요한 건 “함께” 라는 키워드 인데요. 저희 팀 멤버들은 각자의 색깔이 확실하신 분들이 많은데요, 본인의 장점을 잘 어필할 수 있고 잘 어울릴 수 있는 그런 분이라면 저희 팀에서 정말 즐겁게 일하실 수 있을 거라고 생각해요.


Q. 업무적인 부분 외에 회사에 대해서 자랑하고 싶으신 부분이 있다면?

Chris 각 개인의 개성을 존중하는 분위기를 꼽아볼 수 있을 것 같아요. 안타깝지만 제가 느꼈던 한국 사회에서는 틀에서 벗어난 사람들을 배제하고 차별하는 모습들을 많이 봤거든요. 센드버드는 그 사람이 반인륜적인 생각이나 행동을 하지 않는 이상 그 사람 그대로의 모습을 인정해 주는 느낌을 받았습니다. 아! 물론 예외도 있습니다. 예를 들어 민트 초코가 음식이냐 아니냐를 말할 때…?(일동 웃음). 농담이고요, 자기와 다른 생각도 있음을, 그리고 자기가 틀렸을 수도 있음을 받아들이는 문화야말로 센드버드의 가장 큰 장점 중 하나라고 생각합니다.

Leo 개인적으로 UIKit 팀의 Tech lead를 하고 있지만, 작년에 3개월간 유급 휴가를 다녀왔어요. 누구의 눈치도 보지 않고요!(웃음) 개인의 삶도 존중받을 수 있는 곳이라고 생각합니다. 그리고 코로나가 확산되기 전부터 어느 회사보다 빠르게 전사 재택근무를 채택하는 등 임직원들을 위한 합리적인 의사결정을 내리고 있습니다.

 
Q. 센드버드에 합류하신 지도 벌써 4년이 훌쩍 지났는데요. 두 분 같은 유능한 엔지니어라면 많은 러브콜을 받으셨을 텐데 센드버드에서의 성장을 선택하신 이유가 궁금해요.

Chris 하버드에서 "행복은 어디서 오는가?"에 대한 질문에 답을 하기 위한 연구를 했습니다. 이 질문에 대해 연구진은 75년의 생애주기 연구를 통해 바로 "관계"가 행복의 원천이라고 결론을 지었는데요, 은퇴하기 전까지 우리 삶의 약 20% 이상을 차지하는 일에서 관계를 통한 행복을 찾는 것이 삶의 질에 큰 영향을 준다고 봅니다. 

일반적으로 회사와 같은 조직에서는 공동체와 같은 끈끈한 신뢰 관계를 경험하기 어렵다고 생각하는 것이 상식인데, 저는 센드버드가 관계 기반의 공동체가 갖춰야 할 문화와 시스템을 잘 갖추고 있다고 생각합니다. 서로 선을 넘지 않는 관계, 잘못하더라도 알려주고 격려하고 고쳐나가면서 성장할 수 있는 분위기, 그리고 누구도 차별하지 않고 서로의 다양성을 존중하는 문화가 지금의 센드버드를 지탱해 온 힘이지 않나 싶습니다. 저도 여기 합류한 이후로 관계에 대해 더 배우고 성장할 수 있는 기회를 얻었고, 앞으로도 이러한 관계 기반, 신뢰 기반의 업무 환경을 만들어나가는데 일조하고자 합니다.

Leo 저는 이직 준비 시기에 앱을 만드는 것보다 새로운 것을 하고 싶은 마음이 있었는데요, SDK는 또다른 경험이 될 것 같았어요. 물론 당시에도 SDK는 재미없다는 말도 많았어요. 하지만 개발자로서 SDK를 만드는 경험을 통해 설계를 하는 능력을 많이 성장시킬 수 있을 것 같았어요. 또한, 경제적으로의 성장도 중요한 목표였는데 센드버드는 당시에 시리즈 B를 받으며 회사는 고속성장 중에 있었어요. 그간 경험으로 저는 연봉 인상보단 스톡을 좀 더 우선했기 때문에 조건이 잘 맞았던 것 같습니다.

 
Q. 센드버드에서의 4년 동안을 한 줄로 표현하신다면요?

Chris "존중이란 무엇인지 깊이 이해하며 성장할 수 있었던 시간"이라고 말할 수 있을 것 같습니다.

Leo “회사원으로서가 아닌 사람으로서 성장을 많이 하게 된 시간”이라고 표현하고 싶네요. 고속성장에 필연적으로 따라오는 성장통을 겪으며 정말 많은 고민을 한 시간이었어요. 함께하시는 팀원분들이 없었다면 성장통에 쓰러지지 않았을까 싶을 정도로요. 덕분에 좀더 단단해지는 시간들이었던 것 같습니다.

 
Q. 센드버드의 개발 문화에서 제일 자랑하고 싶은 부분이 있다면 무엇일까요?

Chris 질문에 대해 답하기 전에 제가 생각하는 "좋은 개발 문화란?"에 대한 답변을 정리해 보는게 좋을 것 같습니다. 이 답변에 공감이 되신다면 저희 팀이 함께 만들어가려는 결과에도 더 쉽게 공감하실 수 있을 것 같아요. 

제가 생각하는 좋은 개발 문화에 대해 3가지 키워드는 ‘신뢰, 책임감, 그리고 시스템’으로 정리해 볼 수 있을 것 같아요. 먼저 신뢰란, 같이 일하는 동료들이 좋은 결과를 낼 거라는 믿음이라기보다는 그들이 올바르게 생각하려고 노력할 거라는 믿음에 조금 더 가까운 것 같습니다. 그래서 직급 등을 불문하고 누군가 의견을 냈을 때 이 의견에 대해 무시하거나 무조건적인 찬성/반대를 하는 게 아니라 그 의견의 장점과 단점을 정리해 보고 이를 기반으로 결정을 내리려고 노력합니다. 

그다음으로 책임감이 있는데요. 각자 스스로가 동료들/고객들에게 부끄럽지 않도록 서비스의 품질에 책임감을 갖고 일을 해나가는 게 중요한 것 같습니다. 실제로 어떤 문제가 생겼을 때 저희 팀은 "누가 짠 거야?"가 아니라 "어떻게 해결하지?"에 초점을 두고 이를 함께 해결해 나가고 있고요. 

마지막으로 시스템이라 함은 그 자리에 누가 오더라도 큰 문제 없이 잘 돌아갈 수 있는 업무 체계를 의미합니다. 소수의 뛰어난 엔지니어가 중요한 일을 도맡아 처리하는 문화에서는 그 엔지니어들에 대한 의존도가 높아지고, 이로 인해 개발 속도의 저하, 다른 엔지니어들의 기회 박탈 및 성장 저해, 그리고 그 엔지니어에 문제가 생겼을 때 생기는 큰 공백 등과 같은 문제점들이 발생합니다. 저희는 이런 문제들에서 벗어나기 위해 다양한 운영/개발 정책들을 도입하면서 저희만의 시스템을 구축하고 있습니다. 

물론 제가 일하는 팀이 이 모든 걸 다 갖췄다고 말하기에는 아직 부족한 부분이 많이 있습니다. 하지만 모든 팀 구성원이 어떻게 하면 좋을지에 대해 함께 고민하고 계속 개선해나가면서 점진적으로 더 좋은 개발 문화를 만들어나가고 있습니다. 저희 팀과 함께 하신다면 이러한 과정에 참여하시면서 스스로가 성장할 수 있는 인생에 몇 안 되는 기회를 만나게 되실 거라 확신합니다.

Leo 단연 공유 문화라고 생각해요. 스쿼드가 여럿 있다 보니 다른 스쿼드에서 어떤 작업들을 하고 있는지 관심이 없을 수 있는데, 사실 저희 회사 특성상 프로덕트들이 챗과 모두 연관이 된 것이기에 다른 스쿼드에서 어떤 작업들을 하고 있는지, 어떤 문제들을 가지고 있는지 아는 것은 중요하거든요. 

아직 부족하지만 모든 멤버들이 공유에 대한 중요성에 대해서는 공감을 하고 있는 것은 확실해요. 회사 차원에서도 일주일에 한 번씩 one table이라는 문화를 가지고, 식사를 함께하며 이야기를 할 수 있는 자리를 권장하고 있는데요. 식사비도 청구할 수 있고 원하는 멤버들과의 자리도 자유롭게 만들 수도 있습니다. 이러한 공유 문화는 그 가치가 큰 만큼 저희 개발 팀내의 문화로 자랑할 수 있을 것 같아요.  



▶ <센드버디안이 궁금해> 시리즈 보러 가기


 
글ㅣ센드버드



발행일 2022.08.19