안녕하세요, 마케팅 테크놀로지 컨설턴시 에이비일팔공입니다.
Inside AB180은 재직자 인터뷰, 사무실 소개, 복지 자랑 등 다양한 콘텐츠를 통해 AB180의 문화를 알리는 코너입니다 :)

Inside AB180 재직자 인터뷰의 두 번째 주인공은 Product Division SDK 팀 리드 최수범님입니다.

조금은 생소할 수 있는 SDK 엔지니어라는 직무 소개, 자랑하고 싶은 에이비일팔공의 복리후생과 문화, 그리고 우리 팀에 필요한 사람 등에 대해 진솔한 답변을 전해주셨습니다.
재직자가 전하는 에이비일팔공의 생생한 이야기, 지금 바로 만나보시죠!

해맑은 수범님

Q1. 안녕하세요 수범님, 자기소개 부탁드립니다.

A1. 안녕하세요, 아름다운 코드에서 즐거움을 얻고, 최적화를 사랑하는 최수범 입니다. 에이비일팔공에 입사한지 8개월 정도 되었고요, SDK 팀 리드와 에어브릿지(Airbridge)의 iOS SDK 개발을 담당하고 있습니다.

Q2. 수범님이 몸 담고 계시는 SDK팀에 대한 소개도 함께 부탁드려요.

A2. Android SDK 개발자 1명, iOS  SDK 개발자 1명, QA 엔지니어 1명으로 구성되어 있습니다. 아직 작은 팀이기 때문에 콩 한쪽도 나누어 먹는다고 표현할만큼 서로 믿고 협력을 중시하며 일 하고 있습니다. 저희 팀은 최대한 많은 것을 자동화하는데 관심이 많습니다. 서로 부족한 부분을 채워가며 즐겁게 일 하고 있습니다.

Q3. 즐겁게 일 하기 위해서는 복지도 중요한 것 같아요. 수범님이 생각하시는 에이비일팔공의 가장 유용한 복리후생은 어떤 것인가요?

A3. 에이비일팔공은 개인 역량 개발을 위한 지원이나 업무 효율을 위한 복리후생 제도가 잘 갖춰져있어 좋습니다. 예를 들면 금액 제한 없는 도서 구매 지원, 강의・세미나・컨퍼런스 참가 지원, 업무용 디바이스 또는 툴 구입 등 업무에 필요한 비용을 아끼지 않고 지원하는 문화가 있습니다.
만약 구매를 요청했을 때, 이게 왜 필요한지에 대해 꼬치꼬치 캐묻는다면 설득에 오히려 비용이 더 들 수 있다고 생각합니다. 하지만 에이비일팔공은 팀원 한 명 한 명의 의사결정을 믿고, 간결한 프로세스로 의사결정이 내려지기 때문에 (혹은 미리 앞서 지원을 준비해주시기 때문에) 업무에 더욱 집중할 수 있어 좋습니다.

Q4. 비슷한 질문이기도 하지만, 그렇다면 에이비일팔공의 매력은 무엇인가요?

A4. 에이비일팔공에서는 다양한 포지션의 사람들과 자유롭게 의견을 나눌 수 있습니다. 사내 분위기가 수평적인 덕분에 많은 사람들이 자율적이고 적극적으로 의견을 개진하고, 함께 회사 문화를 개선해나가며 생활할 수 있습니다.
또한 개발 과정에서는 직급과 팀에 상관 없이 더 나은 제품과 해결방안을 위해 논의할 수 있습니다. 이 과정을 통해 문제가 발생했을 때 해결방안을 찾고, SDK를 더 발전 시키는데 도움을 받기도 합니다.

Career

Q1. 입사 전에는 어떤 경험들을 쌓아오셨나요? 그리고 에이비일팔공을 선택한 이유는 무엇인가요?

A1. 에이비일팔공에 입사 하기 전 주로 외주 개발을 진행했습니다. 임베디드 기기를 조작하는 앱 등을 만들고, 취미로 여러 오픈소스 라이브러리들의 소스코드나 구조를 찾아보는 등 기계와 직접 이야기하는 것을 좋아했습니다.
SDK 개발이라는 흔하지 않은 경험이 눈에 보이는 동작 보다는 코드 깊숙한 곳에 숨겨진 원리나 구조를 탐구하는것을 좋아하는 제 성격과 잘 맞을 것이라 생각하여 회사를 선택하게 되었습니다.

Q2. SDK 엔지니어라는 직무가 많은 분들께 생소할 수 있을 것 같아요. 맡고 계신 업무인 'SDK 개발'에 대해 자세한 설명 부탁드립니다.

A2. 저의 주업무는 iOS SDK 개발이며 React Native SDK, Cordova SDK 개발 업무를 서브로 맡아서 진행하고 있습니다. 수 많은 경우의 수들이 SDK를 공격하고 저는 이를 방어하기 위해 코드 한 줄 한 줄 따져가며 견고한 SDK 를 개발하고 있습니다.
SDK는 안정적이고, 가벼우며, 데이터 유실이 없도록 만들어야 합니다. 왜냐하면 SDK가 설치된 앱이 예기치 못하게 작동하거나 느려져서는 안되고, 무엇보다 데이터를 서버에 전달해야만 하기 때문입니다. (무슨 일이 있더라도 말입니다.)
그런데 이 모든 조건을 달성하기는 매우 어렵습니다. 저희 SDK 는 수 많은 앱에 설치 되고, 그 앱은 수 많은 기기에서 동작합니다. 그래서 정말 많은 문제들을 만나게 됩니다.
예를 들면, 한 사용자가 핑이 100ms 이상에 인터넷 연결이 간헐적으로 끊기는 지하철에서 앱을 사용합니다. 데이터가 서버에 전송되는 과정에서 서버는 받았지만 서버 응답을 받기전에 앱이 종료되어 버린다면 다음번 앱 실행시, 중복 데이터가 전송되는 경우가 발생합니다.
이렇게 문제가 발생할 수 있는 수많은 상황을 가정하고 그 속에서도 안정적이고 가볍고 데이터 유실 없는 SDK 를 개발하는 것이 저의 업무입니다.

Q3. SDK 엔지니어라는 직무가 나의 어떤 점과 잘 맞는다고 생각하시나요?

A3. 우선 제 성격이 업무와 잘 맞습니다. 이전 질문에서 말씀 드렸듯이 원리나 구조를 탐구하는 것을 좋아하는 성격입니다. 어느 하나를 깊게 파고들어 집중하는 습관이 일을 할 때에도 자연스레 적용되어 개발자로서 장점으로 적용되는 것 같습니다.
더불어 마음에 걸리는게 있을 때 그냥 두고 지나쳐가지 못하는 성격도 한 몫 하고 있다고 보고 있습니다. 다른 사람보다 두 번 세 번 더 체크를 하고, 내 마음이 100프로 만족할 때까지 체크하는데 이 기준에 남들보다 까다롭습니다 하하. 이 부분이 일상에서는 불편할 수도 있지만 업무적으로는 꼼꼼하다 못해 지겹게 파고들어 여러 예외상황에 대응해야 하고 높은 완성도를 요구하는 부분 SDK개발 업무에 적합하고 많은 도움이 되고 있다고 생각합니다.

업무에 집중하고 계신 수범님

Q4. 수범님은 '에이비일팔공 SDK 엔지니어'만의 직무 특징은 무엇이라고 생각 하시나요?

A4. 일단 SDK 개발이라는 직무 자체가 굉장히 희귀하기 때문에 이 직무를 경험할 수 있는 자체로 굉장히 차별화된 특징이라고 생각합니다.
조금 심화해서 에이비일팔공 SDK 개발이라는 직무의 특징을 이야기해보자면, 수 많은 예외상황을 직면 할 수 있다는 점입니다. 앞서 말씀드렸다시피, SDK는 여러 종류의 앱과 기기에서 동작하기 때문에 같은 코드더라도 그 코드가 동작하는 환경은 경우의 수가 정말 천차만별 입니다. 그 속에서 상상치도 못한 여러 상황들을 만날 수 있습니다. 오류가 발생할만한 상황을 미리 예측하고, 혹은 예상치 못한 상황이 발생했을 때 더 견고한 코드를 작성하며 해결하는 등 다양한 경험을 통해 개발 역량을 성장시킬 수 있었습니다.

Q5. SDK 개발 업무를 잘 수행하기 위해서 필요한 능력 혹은 자질이 있다면 어떤 점일까요?

A1. 첫 번째는 문제 해결 능력입니다. 반복해서 이야기하고 있지만, 많은 경우의 수를 고려해 개발 하더라도 생각하지도 못했던 상황들을 많이 만나게 됩니다. 그럴 때 당황하지 않고 문제를 파악해서 어떻게 해결할지 빠르게 길을 찾아나갈 수 있어야합니다. 혹은 이렇게 하는 것에 익숙해야합니다.
두 번째는 코드를 깊게 읽을 수 있는 능력입니다. 코드 자체를 내것으로 만들기 위해서는 한 줄 한 줄을 뜯어보고 언제 어떻게 다르게 작동할지 자주, 오랫동안 고민해야하기 때문입니다.

Q6. 그동안 수범님이 진행 하셨던 업무 중, 가장 기억에 남는 업무는 무엇이었는지 궁금합니다.

앱이 강제 종료되는 상황에 대응하는 업무였습니다. Airbridge SDK 는 앱이 강제종료 되는 경우에 대비해서 데이터를 저장해두었다가 전송할 수 있을 때 전송하는 기능이 있습니다. 그런데 강제종료 될 때 데이터를 전송하지 않고, 다음 실행 때에 전송하게 되면, 그 만큼 서버에서 데이터의 반영이 느려지는 문제가 있었습니다.
그래서 iOS 에서는 강제종료 시 동작에 대해 찾아보았고, 애플이 백그라운드 전환시에는 180초, 강제종료시에는 5초의 코드 실행시간을 준다는 것을 알아냈습니다. 저는 이 5초를 활용하여 데이터를 전송하는 기능을 개발하였습니다.
그런데 곰곰이 생각해 보니 이런 구현의 경우, 5초의 후반부에 전송을 시작한 데이터는 “데이터를 전송하고, 서버가 받고, 서버의 응답을 받기전에, 앱이 종료” 라는 문제로 재전송되는 문제가 발생할 수 있었습니다. 그래서 5초 중 3.5초 이후 부터는 전송을 중단하고 응답만 받는 방법으로 재전송 확률을 최소화 하였습니다.

Q7. 업무에 대한 소신을 가지고 있으신가요?

A7. "이해하기 어려운 코드를 가만두지 않는다." 입니다. 이해하기 어려운 코드는 버그와 이슈를 만들고, 그 버그와 이슈를 해결하는 것 또한 어렵게 만듭니다. 게다가 새로운 기능을 만들때 가장 큰 장애물이 되기도 합니다.
그래서 매번 기능을 구현 할 때 마다 Code Smell 을 체크하고 Dependency Graph를 비교해서 이해하기 쉬우면서도 재사용하기 좋은 코드를 짜기 위해 노력하고 있습니다. 또한 기존의 코드에서 난해한 부분을 지속적으로 추려내어 리펙토링 하고 있습니다.

스마일 수범님:)b

Recruiting Tip

Q1. 면접에도 직접 들어가시는데, 면접에서 중요하게 보는 점을 알려주세요.

A1. 위에서 말씀드렸던 '업무에 필요한 능력'을 가지고 계신 분인지를 중점적으로 보고 있습니다.
자신이 모르는 새로운 문제를 직면 했을 때, 그 문제를 빠르게 파악하고 해결방법을 찾아내는 문제 해결 능력을 갖추신 분인지, 그리고 코드를 한 줄 한 줄 천천히 읽고 호출한 함수가 어떻게 구현 되는지, 사용한 라이브러리가 어떤 구조 가졌는지 살펴보면서 코드의 작동구조를 전체적으로 그릴 수 있을 정도로 코드를 깊게 읽을 줄 아는 분인지 등을 중요하게 여깁니다.

Q2. 우리팀에는 이런 사람이 어울립니다. 함께하고 싶은 동료는 이런 사람이다를 알려주시면 도움이 될 것 같습니다.

A2. 성장욕구를 갖고 계신 분입니다. 에이비일팔공은 SDK팀 뿐만 아니라 성장에 대한 욕구가 높은 팀원들로 이루어져있습니다. 그렇기 때문에 새롭게 합류 하시게 될 분도 나 자신의 성장, 제품의 성장을 위한 욕구를 가지고 있고 이를 위해 열과 성을 다해 노력해주실 수 있는 분이셨으면 좋겠습니다.
SDK팀의 경우에는 팀원들끼리 서로 개발하면서 알게된 부분을 나누고 도와주며, 함께 성장을 이루고 그 속에서 즐거움을 찾고 있습니다. 지식을 나누고 배우는데에 거리낌이 없고 서로 더욱 함께 성장할 수 있는 분과 함께하고 싶습니다.

-

SDK 엔지니어 채용 또는 AB180의 더 많은 채용정보에 대해 궁금하시다면

▼▼▼▼▼
https://teamab180.applytojob.com/apply

blog banner pc
blog banner pc