당근마켓 그리고 David (벌써일년 회고록)

Intro

Goliath_이 David을 향해 정면으로 걸어 나오자 David은 그를 향해 달려가며 주머니에서 돌 하나를 끄집어내어 물매로 그에게 던졌다. 그러자 그 돌은_ Goliath_의 이마에 정통으로 맞아 꽂히고 그는 땅바닥에 쓰러졌다._

아무것도 없는 자그만한 촌동네에서 시작해서, 대학교 구석에 창고같은 동아리 MIRO를 거쳐 남들가는 대기업 마다하고 자그만한 스타트업에 들어가서 많은 것을 경험함과 동시에 성장해가면서 살아왔다.

그리고,

작년 6월 10일,

수 많은 유저분들에게 사랑받는 당근마켓에 합류하게 되었다.

정말 운이 좋게도 커뮤니티에서 말많은 Marty를 만나 당근마켓을 알게 되었고, 입사와 동시에 Marty와 함께 수 많은 시행착오를 거쳐 당근마켓 iOS만의 견고하고 튼튼한 아키텍쳐를 갖추고 정말 효율적인 테스트 코드 작성을 통해 2500개 이상의 테스트 코드와 사랑스러운 당근마켓 유저들에게 안정적인 배포를 하고 있는 현재를 보면 굉장히 뿌듯하다.

4~5년간 입고있던 껍데기를 탈피하고, 글로벌도 진출하고, 유저에게 사랑받는 당근마켓 iOS앱이 될 수 있었던 이유는 수 많은 당근마켓 동료들의 신뢰 &함께 동고동락한 Marty 덕분이라 생각한다.

이번 회고록엔 뭘 쓸까 고민하다가 지난 일년동안 iOS개발하면서 가장? 기억나는 것들만 정리해봤다.

Texture, The king is dead, long live the king

이전 Vingle있을 때도 그렇고 당근마켓에서도 Texture를 쓰는 이유는 성능이슈나 Storyboard 및 xib를 쓰지않고 UI를 개발하는 그런 이유는 아니다.

“iOS개발하는 리소스를 조금 더 줄이고 DX(developer experience)를 보장하면서, 유저에게 집중할 수 있는 시간을 벌기 위할 뿐이다."

스타트업 특성상 MVP를 기반으로 빠른 설계와 점진적으로 제품을 성장시키며 동시에 유저에게 더욱 집중할 수 있어야하는데, 기존 iOS 개발방식은 Storyboard나 xib에 constraints 선을 긋고 IBOutlet 연결하면서 설계를 하는데 이게 프로덕트의 성숙도 증가할 때마다 constraints가 UI가 아닌 오히려 동료와 내 손목을 붙잡는 경험을 하는 경우가 종종 있었다.

그리고 디자인 팀이 성숙하기 시작하면 디자인 컴포넌트 시스템을 갖추게 되는데 이 때 개발자가 디자인 컴포넌트 시스템을 따라가는데 있어서 기술적 부채는 기하급수적으로 증가하는 걸 경험한 적이 있었다.

Texture를 쓰게 되면 UI의 컴포넌트 설계 시작부터 분리해서 레고 조립하듯이 개발이 가능해짐과 동시에 디자이너들의 욕구?충족도 덤으로 할 수 있으니 좋을 수 밖에 없었다.

앞으로도 SwiftUI가 성숙하기 전까진 매우 만족하면서 컨트리뷰트 할만한 거 시간 날 때마다 pull-request를작성하지 않을까 싶다.

어쨌든 당근마켓 Texture 도입 첫단추를 잘 꼬맨 Marty에게 박수를 짝짝짝

요약

  • UI개발 및 유지보수에 리소스를 줄일 수가 있음
  • UI 컴포넌트화 (디자인 컴포넌트 시스템에 친화적)
  • MVP에 친화적인 설계가능
  • 쾌적한 DX(developer experience)
  • 애플은 일?해라

쉬운코드,

비즈니스 로직에 시간과 이벤트스트림형태로 작성되면 반응형으로 동작하는 화면을 얻을 수 있겠지만, 반드시 그럴 필요는 없었다.

비즈니스 로직은 우리회사 서비스의 핵심영역에 해당되기 있기 때문에 많은 테스트가 가능하고 선형적으로 쉬운코드를 쓰는 방식으로 채택했다.

오히려 시간과 이벤트가 스트림 형태로 동작하는 비즈니스 로직은 사람이 이해하기엔 선형적인 코드에 비해 노력이 많이들 뿐만 아니라, 테스트작성과 더불어 트러블 슈팅이 쉽지 않다는 사실.

그렇다고 ReactiveX 기술을 사용 안 하진 않는다. 단지, 고수준(예: Business Logic)이 아닌 저수준(예: UI)에서만 사용하도록 포지션을 옮겼을 뿐.

요약

  • 핵심기능은 스트림형태가 필요하지 않는 이상 선형적으로 쉬운 코드 작성
  • 지나치게 시간과 이벤트에 집착하지 않기
  • 고수준과 저수준 분리
  • 자세한건 https://magi82.github.io/ 에 포스팅될 예정이다.

나에게 영감을 준 개발자,

개발자로 살아오면서 여러 롤 모델이 있었다. Vert.x의 아버지인 Tim fox부터 시작해서 이전회사 동료였던 준모님과 영민님 그리고 Texture 메인테이너 분들 등등. 그 분들의 개발자로서의 가치관과 행동들은 관찰하면서 동시에 학습하고 그랬었다.

지난 한해는 Marty에겐 약간 서운하겠지만 당근마켓 슈퍼 안드로이드 개발자 Lonnie가 많은 영향을 주었다.

평소와 같이 Lonnie가 일하는 방식이나 행동패턴들을 따라해보기도 했다.

요약

  • 동에 번쩍 서에 번쩍 슬렉 체널 오고가는 능력을 얻게 되었음.
  • 이 글 보는 Lonnie의 손발이 오글오글?

떠나간 동료의 빈자리

신뢰와 충돌이 중요한데, 솔직하지 못했던 동료도 있었다.

코드리뷰와 협업과정에서 충돌과 동시에 이러한 팀이 빌딩되는 과정속의 성장통을 함께 하면서 성장해나가면서 신뢰를 쌓아가길 바랬을 뿐인데…

결론적으로 솔직한 소통이 부족했던거 같다.

이미 떠난 거 어쩔 수 없지만, 잘 지낸다고 하니 다행이다.

지금 남은 빈자리는 솔직하면서 Marty와 내가 구축해온 성을 수용하면서 동시에 강화 해줄 수 있는 동료였으면 좋겠다.

요약

  • 사람과 사람사이엔 솔직한게 최고
  • 이 글을 보고계시는 iOS개발자 분께서는 말많은 Marty와 함께하시고 싶으면 이메일로 이력서를 보내주시면 감사하겠습니다.

앞으로 하고싶은 일들,

앞으로 iOS동료도 늘어날테고 우리팀 리더인 Marty가 팀을 잘 이끌어 나갈꺼라 믿고, 앞으로 나는 기획적인 측면이나 서비스 분석하는 능력, 그리고 직관력을 키우는데 에너지를 쏟아 붓고 싶다.