cleanUrl: /retrospect/lets-swift-2019-content

Let’s Swift에서 새롭게 알게 된 내용들 중 인상 깊었던 내용들을 정리해 보았습니다. 세션에서 발표된 내용들은 이미 http://letswift.kr/2019/ 에 올라와 있거나 올라올 예정이므로, 저는 주로 티타임에서 들었던 내용들 중 인상깊었던 내용들을 위주로 적어보겠습니다.

iOS 프리랜서 생활

사실 저는 프리랜서 생활은 감히 엄두를 내지 못했습니다. 위시캣등의 사이트에 올라와 있는 프리랜서 분들의 포트폴리오가 너무 멋지고 쟁쟁해, 나같이 보잘 것 없는 사람에게 일을 맡길 사람이 있을리가 없다고 생각해버린거죠.

하지만 장왕수님은 다른 이야기를 해주셨습니다. 현재 iOS개발자에 대한 수요는 그야말로 빗발치는 수준이라고 말이죠. 자연스럽게 일거리를 어디에서 구하느냐는 질문이 나왔습니다. 저는 당연히 프리랜서 일은 크몽이나 위시캣 같은 곳에서 일을 구해야 하는 줄 알았어요. 하지만 왕수님의 대답은, “잡코리아 등에 이력서, 포트폴리오 등을 올려 놓으면 전화가 아주 많이 온다”는 것이었습니다.

크몽 같은 곳에서는 어떤 완제품을 기간 안에 납품하는 조건의 계약이 많은데, 잡코리아를 통해 전화 오는 계약들은 대부분 단기 계약직이라는 얘기도 해주셨습니다. 특정 기간 동안 특정 회사에 출근하여 그 회사에서 지시하는 업무를 수행하고, 계약 기간이 끝나면 깔금하게 헤어지는 방식의 계약이 훨씬 부담없고 또 많다더군요.

이런 계약의 장점은, 보수가 일반적으로 (상당히!) 더 많고, 인간관계에서 오는 스트레스가 상대적으로 적다는 것이랍니다. 다만 관리되지 않은 코드베이스에서 일해야 하는 경우가 많고, 개발자로서 성장하기에는 좋지 않은 환경이라고도 하셨죠. 또 대기업들 중에는, 프리랜서 기간을 연차로 계산하지 않는 곳들도 많다는 것도 알게 되었습니다.

SendBird의 sdk개발기

SendBird의 황규영님께서 진행해 주셨습니다. sdk개발은 평소에 접해볼 일일 적어서 굉장히 흥미로웠어요.

sdk개발자가 가장 신경쓰는 지점 중 하나는 backward compatibility라고 합니다. 고객의 앱은 낮은iOS 버전을 지원하고 있는데, 내가 만든 SDK가 minimum version을 올려버려서 고객의 앱이 덩달아 minimum version을 올려야만 하는 상황이 오면 안 되니까요.

그래서 Backward Compatibility를 지키기 위하여, 이를 방해하는 어떤 디펜던시도 들이지 않기 위해 굉장히 노력한다고 하셨습니다. 실제로 지금도 WebSocket통신을 하는 부분만 외부 라이브러리로 해결하고, 그 외에는 어떤 의존성도 없다고 하시더라고요.

물론 이제는 binary framework이 지원되기 때문에, 이런 제약에서 앞으로는 좀 더 자유롭겠지만, 이런 제약 아래서 개발을 하는 것도 굉장히 재미있을 것 같았습니다. 어디에도 의존하지 않으려 하다보면, 그만큼 언어와 하드웨어, 프레임워크에 대해 좀 더 깊은 식견을 가지게 될 테니까요.

가장 안타까웠던 이야기는, 크래시 리포팅에 대한 이야기였습니다. 저는 제가 만든 앱에서 크래시가 발생하면, 바로 크래시리포트를 보고 제가 짠 코드의 정확히 어디서 크래시가 나왔는지를 알 수 있지만, sdk개발자는 본인들의 코드가 다른 회사의 앱에 실려서 나가는 것이기 때문에 크래시 리포트를 직접 볼 수 없는 경우가 많다고 하더군요. 고객사에서 크래시 지점을 스크린샷으로 찍어서 보내주는 경우도 있고, 고객사의 담당자가 개발자가 아닌 경우도 있어서 원인을 파악하기 위해 아주 긴 전화통화를 하는 경우도 있었다고 합니다.

이런 상황을 막기 위해 매우 방어적으로 코딩하고 또 방대한 테스트케이스를 작성했다고 해요. 사실 앱개발에서는 테스트를 작성하기 어려운 분야가 많은데, 그래도 sdk에서는 테스트를 작성하기 용이한 분야가 더 많을 것 같네요. 테스트를 많이 작성해야 한다는 것은 부담일 수도 있겠지만, TDD의 경쾌한 리듬으로 개발을 할 수 도 있을 것 같다는 생각을 했습니다.

쏘카의 개발 문화

VCNC가 쏘카에 합류 했을 때, 쏘카앱의 상태는 굉장히 좋지 않았나 봅니다. 사실 당시의 신문기사들이나 여러 매체에 올라온 글들을 읽어봐도, 단지 쏘카 앱의 품질이 나쁜 수준이 아니라, 조직문화 전반에서 어떤 문제가 있었던 것은 사실이었던 것 같습니다.

VCNC에서 쏘카로 넘어오신 우경재님은, 그 상황을 꽤 극적으로 바꾸신 듯 합니다. 팀원들은 좋은 품질의 제품을 만들고, 또 자발적으로 여러 기술을 공부하는 모임도 만들어지는 좋은 문화가 자리잡게 된 것 같습니다. 당연히 어떤 분께서 “그런 좋은 문화를 어떻게 퍼뜨릴 수 있었는가?“라는 질문을 하셨죠.

이에 대한 경재님의 대답은 단순했습니다. 회사의 결정권자가 경재님에서 충분한 권한을 위임해 주었기에 무리없이 나쁜 문화들을 없애고 좋은 문화들이 자리 잡히도록 유도 할 수 있었다는 거지요. 어찌보면 힘빠지는 이야기 일 수도 있겠지만, 굉장히 중요한 이야기라고 생각합니다. 결국 유능한 사람에게 충분한 권한을 주는 것이 회사 운영의 처음이자 끝인 것 같아요.

또 쏘카가 SignInWithApple을 상당히 초반에 도입한, 또는 도입 할 수 있었던 배경을 여쭤보았습니다. 경재님께서는, “애플의 여러 기능들을 우리가 적극 활용하고 있다”는 점을 애플에 어필하고, 그로 인해 앱스토어에서 Featured 되기 위해, 짧은 기간안에 조금은 무리를 해서 기능을 완성시켰다고 하시더군요.

사실 저도 WWDC에서 돌아오자마자, “9월에 앱스토어에 피쳐 되는 것”을 목표로 개발을 시작했습니다. 처음에는 시리 단축어를 노렸어요. “시리야, 플리토로 ‘사랑해 번역해줘'”를 말하면, 시리가 플리토로 번역해주는 기능을 만들려 했지요. 하지만 놀랍게도 iOS13에서는 시리가 그냥 한국어를 번역해 주고 있었습니다.