본문 바로가기

iOS/취업준비

🥕당근마켓 티타임 (feat. Let's Swift 2022)

작년 11월 30일 처음으로 렛츠 스위프트 행사를 직접 참가했는데 그중 가장 기억에 남았던 당근마켓 티타임을 요약해 보았다.

 

당근마켓 코드리뷰 문화에 대해서 설명하고 질문 응답시간을 가졌었다.

 

사전리뷰 (슬랙에 올린 사진이 있던 것 같은데 찍지 못해서 없습니다 ㅜ)

코드리뷰 pr을 하기 전에 사전에 모여서 이야기를 하게 됩니다. 그래서 올렸을 때 문서 같은 것들은 이런 식으로 올려주셔서 어떤 목표를 하고 있고, 어떤 배경을 가지고 있는데 접근 방식으로 1, 2, 3 이렇게 제안을 해 주시면 챕터분들이 모여서 같이 이제 사전에 리뷰를 하고 이것을 진행하는 형태로 운영됩니다.

코드리뷰

중요하게 생각하는 것은 하나의 맥락을 가진 최소 단위의 pr을 올리는 것, 그 맥락을 알 수 있는 논문을 작성하는 것 , 리뷰어를 생각하는 커밋 로그를 작성한다. 이것들을 중요하게 봅니다.

pr 작성 예시) 디자인 컴포넌트를 만들고 있는데 어떤 형태로 제안하려고 하고, 현재의 문서들을 이렇게 pr만 보고도 알 수 있도록 작성하고 있습니다. 이렇게 상세하게 작성하는 이유는 10개의 팀으로 나눠서 작업을 하다 보니 서로 어떤 일을 하는지 정확히는 잘 모를 수도 있기 떄문에 pr만으로 이 내용을 이해할 수 있도록 하기 위함입니다.

질문타임

1. 화면에서 스크롤 할 때 딜레이가 오는데 어떤 방식으로 구현하는지 궁금합니다.

  • 스크롤할 때 가장 중요한 부분이 복잡한 UI 나 UI 업데이트 갱신 과 같은 부분에서 굉장히 많은 비용이 드는데, 이를 개선하기 위해서 당근마켓은 오토레이아웃 보다는 이제 플렉스 레이아웃이나, 핀 레이아웃 처럼 좀 더 ui업데이트가 빠를 수 있는 그런 기술 셋을 가지고 구현하고 있습니다. 그래서 다른 앱들보다 조금 빠른? 경험을 줄 수 있는 것 같습니다.

2. 새로 들어온 직원이 이것만큼 해줬으면 좋겠다.

  • 당근 마켓이라는 회사가 굉장히 이제 주체적으로 본인이 좀 스스로 알아서 하는 것들이 있기 때문에 들어와서 좀 더 내가 직접 하고 싶은 기술이나 기술 스택이 있다면, 챕터나 목적 조직에 자유롭게 이야기를 할 수 있는 적극적인 마인드가 있으면 좀 더 적응을 하는 데 좋지 않을까 하는 생각이 듭니다. 또한 챕터에서 가장 중요시 여기는 것이 심리적 안정감을 바탕으로 뭔가 제안을 하거나 말하는 것을 두려워 하지 않고 자신 있게 얘기하고 서로 공유하는 문화를 매우 지향하고 있습니다. 그래서 이런 부분에 있어서 자신이 많이 열려 있고 내가 많은 것을 한번 이야기 해보고 같이 개선해 나가고 싶은 마인드 셋이 있으면 좋겠다 라고 생각해 봤습니다.  

3. SwiftUI를 사용하지 않는 이유?

  • 당근마켓은 리얼 타겟이 14인데 SwiftUI를 사용하지 않는 이유는 안정성을 중요하게 생각하는데 14에서도 사실 스테이블 하다고 생각하지 않습니다. 당근마켓 내부에서는 SwiftUI랑 비슷하게 작성하는 것을 시도를 하고 있고 이 과도기적으로 플렉스 레이아웃으로 선언형으로 작성을 하고 있기 때문에 플렉스 레이아웃을 사용해서 중도를 거친 다음에 15, 16쯤 됐을 때 SwiftUI로 넘어가지 않을까? 생각하고 있습니다. 앞서 보여드린 pr (위 사진) 또한 SwiftUI의 과도기적인 모습이라고 봐주시면 될 것 같습니다.

4. iOS 채용계획?

  • 계속 채용을 하려고 생각을 하고 있습니다. 저희가 목적 조직 대상으로 채용을 하지만 지금 많이 필요로 하는 부분은 당근마켓이 슈퍼앱을 지향하고 있기 때문에 이 앱을 지탱할 수 있는 플랫폼 개발자들을 굉장히 많이 원하고 있습니다. 그래서 앱의 전체를 관장하는 인증 체계 라든지 데이터 로깅이라든지 이런 부분을 할 수 있는 분들을 찾고 있고 그다음에 저희가 서비스도 계속 확장을 하고 있기 때문에 서비스 개발자 분들도 같이 모시고 있습니다. 따라서 당분간은 계속 채용은 열려있지 않을까

5. 새로운 기술 도입을 하고싶을 때 팀원을 설득(?)하는 방식

  • 일단 새로운 기술 도입을 위한 특정 방식이 있는 건 아닌 것 같아요. iOS개발자끼리 얘기하는 시간이 굉장히 많은데 그때 이제 이런 기술이 있다, 우리 이런 거 한번 디벨롭 해보자 이런 식으로 가볍게 나오는 경우도 좀 있는것 같고, 그리고 어떤 기술을 저희가 제품에 디벨롭을 좀 하고 pr로 리뷰를 받는 경우도 좀 있는 것 같습니다. 그래서 시작은 개개인마다 약간 조금 다를 수도 있지만, 그것을 제안을 했을 때 팀원분들이 적극적으로 검토를 해 주시고, 그것이 우리가 지금 나아가고자 하는 로드맵과 일치하는지, 그리고 미래에도 이 기술이 계속 서비스를 운영하는데 도움이 정말 되는 건지 많은 검토를 하고 검토가 나온 다음에 이제 기술을 도입을 한다던지 아니면 다른 방법을 탐색한다던지 하는 것 같아요. 그래서 팀원들을 설득 한다기보단 같이 검토해서 이 기술이 정말 지금 저희한테 필요한 건지 알아가는 시간을 많이 가지는 것 같습니다.

6. 지난주에 야근을 얼마나 했는지? ㅋㅋㅋ

  • 사실 지난주에 일을 좀 안 한 것 같아서 제가 야근을 안 한 것 같고요 (ㅋㅋㅋ) 이것 관련해서 말씀을 드리자면 저희가 이것도 목적 조직마다 좀 팀바이 팀이 있겠지만 저희 같은 경우에는 스프린트 플레닝 단계에서 테크 스펙을 작성하고 개발작가 일정 산정을 하게 돼요. 그래서 그것에 따라서 돌아가는데 팀에서도 좀 빠르게 실험을 하거나 이러한 니즈가 있는 경우에는 조금 일정을 타이트하게 잡기도 하지만 일단 개발자가 (엔지니어가) 주체적으로 일정을 잡기 때문에 야근을 떠밀려서 한다, 사실 이런 경험은 좀 없는 것 같아요.

7. 스프린트 기간이랑 단위? 코드 리뷰 과정에서의 룰이나 컨벤션?

  • 스프린트 기간이랑 단위는 저희 아까 앞서 말씀드렸다 시피 당근 마켓이 목적 조직으로 일하고 있어서 팀마다 달라요. 어떤 조직은 1주 가져가는 팀들도 있고 2주인 팀도 있고 4주인 팀도 있어서 iOS 개발이랑은 연관이 없는 것 같아요. 코드 리뷰 과정에서 룰은 저희가 룰을 좀 많이 정하지 않는 것을 되게 좋아해요. 기본적인 룰, 예를 들어 아까 전에 코드 리뷰할 때 pr을 본문을 잘 작성하기 라던지 커밋을 잘 나누기 이런 개념은 강조를 많이 하는데 컨벤션이나 아니면 작성하는 것들에 대해서는 크게 관여하고 있지는 않습니다.

8. 질문이 정확히 기억나지 않습니다 ㅜ (대답과 제 기억을 더듬어 유추해 보자면 iOS 개발자들이 열 몇 분이 계신다고 하셨는데 그러면 다 같이 일하는지? 아니면 목적 조직별로 분리되어 개개인으로 각 목적 조직에 맞춰 일을 하는지?)

  • 일단 저희 조직 구조가 아까 말씀 드린 것 처럼 이제 목적 조직으로 분리가 되어 있어요. 그래서 결국에는 여기 계신 분들 모두 실제 목적 조직 팀에서는 디자이너분들, 피엠 분들도 계세요. 그래서 실제 팀은 그렇게 운영되기 때문에 사실 메인 적인 소통은 목적 조직에 소속된 팀에서 이루어 지게 돼요. 그래서 업무는 그분들 (pm, 디자이너, 서버개발자, 모바일 개발자) 과 함께 업무를 한다고 생각하시면 될 것 같아요.

9. 테스트를 적극적으로 활용하는지? 한다면 사용되는 도구는?

  • 저희는 일단 유닛테스트는 매우 적극적으로 활용을 하고 있고요, 커버리지는 한 60% 정도 되는 것 같아요. 주로 일단은 뷰 레이어에서의 테스트 보다는 저희가 사용하고 있는 클린 아키텍처 에서는 interactor, presenter, router, logger 이런 식으로 구성이 되는데 각각 컴포넌트에 대한 유닛테스트를 진행을 하고 있어요. 그리고 사용하는 도구 같은 경우에는 지금 nimble 을 사용하고 있습니다.

10. 신입에게 제일 제일 필요한 역량이 무엇이라고 생각하시나요.

  • 그냥 성장 가능성, 열정 이런 것들이 있고요, 고리타분한 이야기일 것 같지만 그런 것들을 많이 보고 있습니다

11. 당근마켓에서 가장 마음에 드는 복지들

  • 제가 제일 좋아하는 복지는 식사비 지원이 아닐까 싶은데요. 저희가 사실 식사비 지원이 금액이 리미트가 딱 정해져 있는 게 없어요. 그래서 점심에 가끔 이제 챕터 사람들 만나서 스테이크 시켜 먹을 때도 있고 진짜 맛있는 거 많이 먹거든요. 그게 일단 첫 번째 제일 좋아하는 복지이고, 두 번째는 조금 자유로운 그냥 문화 인 것 같아요. 약간 회사 자체가 룰을 그렇게 만드는 걸 좋아하지 않아요. 좀 더 개인한테 다 그런 것들을 부여해 주고 하기 때문에 내가 스스로 내 일정이나 아니면 근무 시간이라든지 이런 것들을 조금 자유롭게 설정할 수 있는 게 또 좋은 복지라고 생각하고, 세 번째는 저희 장비, 저희 개발 장비를 2대를 지원을 해주는 데요 두 대를 다 마음대로 정할 수 있습니다. 저 같은 경우에는 이제 m1 프로 맥스를 2대를 받았는데, 개인적으로 살짝 후회가 되더라고요 그냥 한 대만 받고 기다렸다가 m2 를 받을 걸 막 이런 생각도 들 정도로 자유롭습니다. ㅋㅋㅋ

12. 당근마켓 남은 T.O.?

  • 공식적으로 알려진 건 한 세 자리 정도 있는 것 같은데 마감되거나 이러지는 않을 것 같아서 당장 많이 있다 정도로 봐주시면 좋을 것 같아요.

13. 코드 리뷰 과정에서의 룰? 사전 코드리뷰에 대해서? 리뷰어는 어떻게 지정하나요?

  • 코드 리뷰 과정에서의 룰은 이제 노 룰로 가져가자 라고 합의 하에 이야기를 했어요. 그 이유는 일단 노 룰로 가져가면 굉장히 많은 피드백이 나올 수 있거든요. 그 피드백이 맞다 틀리다 이런 게 애매할 수 있고 설령 틀리더라도 가장 중요한 것은 내가 리뷰를 편하게 달 수 있고, 내 의견을 자유롭게 달 수 있는 이런 문화가 더 중요한 것 같아서 최대한 노 룰로 가져가고 대신에 이제 가장 코드리뷰에서 많이 나오는 것들이 개인 스타일에 대한 문제 이런 부분인데요, 이런 것들은 저희 내부적으로 컨벤션을 만들고 Swift format 이라는 포메터라는 툴을 사용해 이러한 부분들은 최소한으로 최소한으로 리뷰에서 커뮤니케이션 과정을 아끼고 대신에 좀 더 구조에 대한 문제라든지 아니면 발견될 수 있는 사이드 이펙에 대해 좀 더 초점을 맞춰서 리뷰를 하고 있습니다.
  • 사전 코드리뷰를 도입한 이유는 pr에서 굉장히 예상치 못한 작업들이 올라 왔을 때 그 문맥을 알지 못하면 동료 개발자들이 리뷰하기 어려운 상황들이 생겨요. 그래서 예를 들면 단순 피처 개발이 아닌, 뭔가 구조에 대한 변경이라든지, 이런 것들이 있을 때는 사전 코드리뷰라는 툴을 사용해서 그것에 대한 ADR문서라든지 테크 스펙을 작성해서 동료 개발자들에게 공유를 하게 돼요. 그 과정에서 리뷰어는 이제 그 맥락의 과거 히스토리가 있는 사람이나 아니면 예를 들면 저 같은 경우는 영상피처 개발을 하고 있다면 기존에 영상 경험이 있었던 개발자들을 리뷰어에 신청을 할 수도 있고 하지만 그 리뷰에 꼭 포함되지 않더라도 굉장히 많은 동료 개발자들이 다 관심 있게 같이 고민해주고 계십니다.

14. 경력자 채용에서 중점적으로 보는 부분?

  • 경력자분들은 문제 해결력 위주로 많이 보고 있어요. 이전 회사에서 어떤 문제를 어떻게 해결하셨는지 그거를 본인이 어떻게 고민을 해서 해결했는지 이런 것들을 많이 보고 있습니다.

15. 당근마켓에서는 어떤 사람이 영웅인가요?

  • 따뜻한 사람, 커뮤니케이션 스킬을 되게 중요하게 보기 때문에 그런 분들이 흔히 인기가 많거나 동료들이 좋아하는 분인 것 같아요

16. 성장 가능성과 열정을 어디서 보는지?

  • 결과물을 되게 중요하게 봐서 github 이 있다던지 공부하신 자료들이 있으시다면, 그게 성장 가능성과 열정으로 이어져 보이지 않을까 라는 생각을 가지고 있습니다.

17. 인턴십 계획?

  • 인턴십은 아쉽게도 아직 계획이 없습니다.

18. QA팀과 사이가 좋나요? (ㅋㅋㅋㅋ)

  • QA가 저희는 없습니다. 저희는 저희가 qa를 하고 그래서 저희가 테스트 코드를 많이 적어요. 그래서 QA와 사이가 좋냐고 하면 저희 팀끼리 사이가 좋습니다.

느낀점

렛츠 스위프트 섹션중 개인적으론 가장 흥미로웠던 섹션이었다. 현재 취업 준비중인 상황에서 현실적으로 가장 와닿고 현실적인 내용들이 많아서 그랬던 것 같다. 흔히 말하는 ‘네 카 라 쿠 배 당 토’ 라고도 하는 거대한 스타트업의 개발 문화를 간접적으로 체험할 수 있는 값진 기회였다.

당근마켓은 예상보다 더 자유롭고 새로운 것들을 서로 제안하고 공유하는 문화에 거리낌이 없고 더욱 지향한다는 방향성에서 매력적이라는 생각이 들었다. 개인적으로 tuist를 새 프로젝트에 적용시키는 과정에서 여러 블로그를 참고하던 중 당근마켓 팀 블로그 에서 강훈님의 글을 접하게 됐었는데 거기서 많은 도움을 받았다. 취업전에는 많은 신기술을 접하고 사용하기 위해 노력하지만 취업후 현실은 기술 부채와 현실적인 문제에 부딛혀 신기술을 적용하기 어렵다고들 많이 하는데 당근마켓은 상호간 소통을 장려하고 이를 위한 컨벤션인 사전 리뷰 문화를 만들어 실제로 적용한 사례를 보니 기술부채를 쌓지 않기 위한 현실적인 개발 문화를 확인할 수 있었다.