애드인텔리전스의 개발문화에 대해 말하다, CTO Leo

더팀스 편집팀 / 2020-01-20

애드인텔리전스 - 애드인텔리전스의 개발문화에 대해 말하다, CTO Leo 팀터뷰 사진 1 (더팀스 제공)

안녕하세요, CTO님 어떤 일을 맡고 계신가요?

 

회사 내에서 개발에 관련된 일들은 전부 다 맡아서 하고 있습니다. 

 

 

 

애드인텔리전스에는 언제부터 합류하셨나요?

 

창업 후 1년쯤 되던 시점인 2016년부터 합류해서 함께 일하고 있습니다. 

 

 

 

합류를 결정하신 계기가 있으셨나요?

 

일단 애드인텔리전스의 비즈니스 모델이 좋았습니다. 확장 가능성이 명확하고 시장 진입 가능성이 좋았습니다. 거기에다가 대표님이 꾸밈없이 정직하게 회사의 비전에 대해서 설명하고, 진솔하게 이야기하는 면에 끌렸습니다. 

 

 

 

창업자들이 전문 개발자가 아닌 상황에서 합류하시기가 부담스러운 부분이 있었을 것 같습니다. 합류 당시의 개발 상태는 어땠나요?

 

제가 합류하기 전에 초기 멤버로 다른 개발자가 있었지만 그분이 입사 3개월만에 퇴사한 상황이었습니다. 그래서 제가 합류하기 전까지는 문과 출신의 대표님이 개발 관련 문서들을 보면서 직접 개발을 배우면서 운영을 하고 있는 상태였습니다. 서비스가 돌아가고 있기는 했는데, function 하나에 몇 만 줄의 코드가 있더라구요. 그걸 보는 순간 앞이 깜깜했습니다. (웃음)

 

 

 

어떻게 해결하셨나요?

 

저는 SI작업도 많이 해봤었는데, 원래 코드 분석이 가장 힘들고 비용도 가장 많이 듭니다. 남이 만들어 놓은 의도를 파악해서 수정을 해야 하는 작업이기 때문에 많은 시간과 노력을 필요로 하는 것이죠. 기존의 코드 한 줄을 분석해서 파악하기 보다는 새로 만드는 것이 훨씬 더 쉽고 빠른 경우가 많습니다. 그래서 제가 새로 만드는 게 빠르겠다 싶어서 처음부터 다시 만들었습니다. (웃음) 기존의 솔루션을 개선하면서 시장에 서비스를 출시하는데 1년 정도의 시간이 걸렸습니다. 기존의 PC버전을 앱 버전으로 바꾸고, 이전에 없던 여러가지 기능들을 추가하느라 많은 시간이 필요했습니다. 

 

 

 

현재 애드인텔리전스의 개발인력 상황은 어떤 가요?

 

한국에서는 3명의 개발인력과 함께 하고 있습니다. 그중 2명은 주니어 개발자이고, 1명은 팀장 급 개발자입니다. 한국뿐만 아니라 해외에도 개발센터가 있습니다.

 

 

 

개발자들을 채용하실 때 주로 어떤 기준으로 선택하시나요?

 

회사에 대한 진취적인 자세와 인터뷰의 성실도를 보는 편입니다. 또한 개발에 대해서 기존에 얼마나 많은 관심을 가졌는지도 매우 중요합니다. 개발 분야의 경우, 학교에서 전공으로 배웠다 해도 진입장벽이 특히나 높은 편입니다. 학교에서 배운 것을 실무에 쉽게 적용할 수 있는 분야도 있지만, 개발은 그런 분야가 아닙니다. 개발 관련 전공자일지라도 학교에서는 정말 일부분 밖에 배우지 못한 상태입니다. 학교에서 배운 것만으로 개발 실무에 뛰어들기에는 많이 부족한 편입니다. 그래서 본인이 관심을 가지고 학업 시간 외적으로도 얼마나 개발을 익혔는지가 더 중요합니다. 관심을 가지고 개발을 배운 친구들이 주입식 교육으로 배운 친구들보다 확실히 더 의욕적이고 보는 시야도 더 넓은 경우가 많다고 생각합니다. 

애드인텔리전스 - 애드인텔리전스의 개발문화에 대해 말하다, CTO Leo 팀터뷰 사진 2 (더팀스 제공)

현재의 개발 환경과 추구하는 개발 환경에 대해 듣고 싶습니다. 

 

현재의 개발 환경은 전체적으로 조용한 분위기입니다. (웃음) 요즘은 온라인으로 일할 수 있는 환경이 잘 구축되어 있어서 많은 개발자들이 장소에 구애되지 않고 일할 수 있는 원격 오피스를 선호하는 것을 알고 있습니다만, 주니어 개발자들의 경우는 알려줄 것이 많기 때문에 주로 직접 대화를 통해서 해결하고 있습니다. 현재는 저희가 솔루션의 고도화를 점차 높여가는 단계이기 때문에 직접적인 커뮤니케이션이 많이 필요하지만 추후에 솔루션의 고도화가 어느 정도의 단계에 이르면 재택 근무도 가능할 것이라고 생각합니다. 

기본적으로 원격 오피스가 가능한 환경은 누가 들어도 알 만한 작업들을 하기 때문이지만, 현재 저희는 비즈니스 모델과 워크 플로우 자체가 복잡하고 전례가 없던 모델이라서 커뮤니케이션 비용이 많이 발생하고 있습니다. 제가 알기로는 원격 오피스 체계로 유명한 페이스북의 경우도 저희와 같은 파트는 한군데 모여서 일하고 있는 것으로 알고 있습니다. (웃음)

 

 

애드인텔리전스에서 신입개발자들이 지속적으로 관심을 가지고 즐겁게 개발 업무를 할 수 있도록 해주는 방법이 있다면 알고 싶습니다.  

 

신입개발자들에게는 아직 이른 단계이지만 향후에는 새로운 개발 트렌드를 계속해서 주지시키고 그것을 적용해 나가는 문화를 경험하도록 하고 싶습니다. 저 또한 그런 방식으로 성장해왔고, 그렇게 하지 못한다면 도태되는 경우를 많이 보아왔기 때문입니다. 솔직히 저는 고등학교, 대학교를 가는 시간이 아깝다고 느꼈습니다. 그래서 중학교때부터 개발을 배웠고, 그 이후로 남들과는 다른 길을 걸으면서 지금은 벌써 20년차의 경력을 가진 개발자가 되었습니다.

개발이라는 플랫폼은 경험 기반이어서 트렌드가 바뀌더라도 이전의 트렌드를 경험해본 것이 엄청난 경험 수치가 됩니다. 예를 들자면, 개발 분야에 있던 하나의 문제점이 해결이 되고 나면 원래 문제는 무엇이었는지 어떠한 해결과정을 거쳤는지 나중에 배운 사람들은 절대 알 수 없습니다. 해결된 결과만 알 뿐, 그 과정에서 생기는 경험치를 절대 얻을 수 없습니다. 그런 의미에서 저는 개발 스택의 역사나 흐름이 중요하다고 생각합니다. 현재의 개발 언어가 어떤 변화를 겪어 왔는지 이해하지 못하고 있다면 Core에 손대야 하는 업무는 전혀 할 수 없습니다. 현재의 시스템적 관점으로 접근하면 전혀 감이 오지 않는 문제들도 과거의 변천과정을 아는 개발자가 있으면 해결이 쉬운 것도 이러한 이유 때문입니다. 그렇기 때문에 저는 주니어 개발자들에게 이러한 히스토리들을 종종 설명하면서 일하고 있습니다. 가끔 시스템을 잘 모르고 개발하는 경우도 발생하기 때문에 시스템이 어떤 과정을 거쳐서 발전해왔고 흘러왔는지를 우선 이해시키려고 합니다. 결과만을 주입식으로 배우는 것과 달리 과정과 흐름을 알면 훨씬 즐겁고 창의적으로 개발을 할 수 있으니까요. 

 

 

 

애드인텔리전스 개발자가 갖추어야 할 핵심 역량은 무엇이라고 생각하시나요?

 

무엇보다도 역시 개발에 대한 관심입니다. 저는 개발자를 채용할 때 자소서를 꼼꼼하게 살펴보면서 본인이 학교에서 배운 것 이외에 개발적으로 자신이 관심있는 부분에 대해서 무엇을 다양하게 시도했는지를 중요하게 보고자 합니다. 지금 함께 일하고 있는 주니어 개발자들은 채용까지 인터뷰 이외에도 8개월 이상의 시간이 걸렸습니다. 면접 과정이 길었다는 뜻은 아니고, IPP(기업연계형 장기현장실습) 프로그램을 거쳐 채용된 경우라서 그렇습니다. 채용 전 사전 기간이 충분히 있었기 때문에 학교를 다니는 동안에 무엇을 배우고 무엇에 관심을 가져야 할 지 커리큘럼을 짜주는 등 개발자가 되기 위해 필요한 과정에 대한 가이드를 해주었습니다. 

 

 

 

코딩테스트도 보시나요?

 

네, 보고 있습니다. 저희는 답이 확실하게 있는 코딩테스트를 보는 편인데요, 대신 답의 종류가 다양해서 코딩테스트를 어떻게 풀어내는지 과정을 중요하게 봅니다. 최종 답까지 풀어가는 과정은 사람마다 다르기 마련인데, 이 과정을 통해서 지원자가 개발자다운 논리적 사고구조를 가지고 있는지 평가합니다. 

 

 

 

코딩테스트에 대한 합격 기준이 있으신가요?

 

코드를 어떻게 구현하는가에 따라서 내부적으로 정해진 명확한 합격 기준이 있습니다. 계산식에 따른 코딩테스트 결과를 시험할 때, 결과가 0.3초 안에 나오면 무조건 합격되는 기준이 있습니다. 하지만 0.3초가 넘는다 하더라도 문제 해결 과정에서 사용한 로직을 통해서 지원자의 사고와 기술을 모두 판단할 수 있기 때문에 충분히 합격할 수 있습니다. 

애드인텔리전스 - 애드인텔리전스의 개발문화에 대해 말하다, CTO Leo 팀터뷰 사진 3 (더팀스 제공)

개발을 할 때 가장 중요하게 생각하는 요소는 무엇인가요? 혹시 우선순위가 있으신가요?

 

개발자마다 코드의 길이, 주석 처리, 연산속도 최적화 등 중요하게 여기는 우선순위는 저마다 다를 수 있습니다. 하지만 회사에 들어오면 협업을 기준으로 일하기 때문에 그러한 우선순위는 어느 정도 정리가 됩니다. 얼마나 세밀하게 모델을 구축하고, 어느 부분까지 지원할 것인가, 어떤 로직을 쓰는지 등은 대부분 회의를 통해 정해지게 됩니다. 따라서 컨트롤 코드의 논리적 전개도가 우선 정확하게 짜여 있어야 한다는 것과 이를 토대로 코드가 얼마나 간단하고 명료하게 짜여 있는지가 중요합니다. 타인이 후속작업을 할 것이라는 전제하에 말이죠. 성능의 경우는 보통 초도 완성된 결과물을 기반으로 최적화(Optimizing)를 하거나 리팩터링(Refactoring)을 하면서 진행하게 됩니다. 이때 구조의 논리적인 틀이 변경되지 않을 정도로 코드가 구현되는 것이 바람직하다고 보고 있습니다.  

 

 

 

신입개발자의 경우 협업의 경험이 적은 편인데요, 애드인텔리전스에서 협업을 할 때 갖추어야 할 자세와 버려야 할 자세는 무엇이라고 생각하시나요?

 

협업 쪽은 팀마다 policy가 달라서 쉽게 이야기할 수 있는 부분은 아닌 것 같습니다. 버려야 할 자세는 개발자 본인의 개인적인 성향으로 인해서 업무가 지연되는 상황을 만드는 일은 없어야 한다고 생각합니다. 

 

 

 

소스 제어 방식이 궁금합니다. 

 

Git를 활용합니다. 

 

 

 

진행했던 프로젝트 중에서 가장 정이 가는 프로젝트라든지 기억에 남는 프로젝트와 그 이유를 듣고 싶습니다. 

 

오래전에 개인적으로 진행했던 프로젝트가 하나 있었는데, 2007년경, 국내에서는 처음으로 개인정보 보안솔루션을 만들었던 것입니다. 이것이 가장 기억에 남는 프로젝트인 것 같습니다. 서버가 해킹을 당하거나 물리적으로 탈취되는 상황이 왔을 때 고객의 정보를 빼내 갈 수 없도록 암호화하는 솔루션이었습니다. 다른 프로젝트를 진행하면서 8개월 정도가 걸려서 완성했는데, 정말 힘들었던 기억이 있습니다. 현재도 필드에서 사용 중이고 유사 프로그램은 없는 것으로 알고 있습니다. 하지만 역시 가장 정이 가는 프로젝트는 탄생부터 고도화까지 지금도 계속 작업하고 있는 애드바이저(AdVisor: 애드인텔리전스의 온라인광고분석/자동운영 솔루션)가 가장 애정이 가는 프로젝트라고 말씀드릴 수 있겠네요. (웃음)

 

 

애드인텔리전스는 온라인광고분야 AD-Tech 회사로 알고 있는데요, 개발자로서 광고 시스템에 대한 이해나 용어에 대한 사전 지식이 필요한가요?

 

개발자들이 광고산업을 모두 이해할 필요는 없지만, 온라인 광고를 보고 어떻게 돌아가는지 구조에 대해서 생각해봤던 사람이라면 충분하다고 생각합니다. 저희는 입사 후 꽤 오랜 기간 내부 교육을 진행합니다. 이 때 진행되는 광고 시스템에 대한 교육과 설명을 듣는 것 만으로도 개발자라면 어떤 flow와 structure로 온라인 광고가 작동하는지 충분히 추측할 수 있을 것이라고 생각합니다. 

 

 

 

광고 게시 후 트래킹에 대한 지식은 없어서 질문합니다. 광고에 대한 클릭 수나, 광고 결과에 대한 정보는 API로 접근하는 건가요? 아니면 트래킹을 하는 방법이 따로 있나요?

 

저희는 트래킹은 따로 하고 있습니다. 트래킹을 따로 하는 구조는 저희 애드인텔리전스가 만들기 전에 이미 페이스북도 해왔던 것입니다. 이전부터 페이스북이 전세계를 대상으로 픽셀을 심고 트래킹을 해오고 있었습니다만, 광고기능 자체에 적극적으로 데이터를 활용하기 시작한 시기는 페이스북이나 저희나 비슷한 시기였습니다. 다른 업체들은 구글 애널리틱스 같이 매체에서 제공해주는 데이터를 통해서 트래킹을 하고 있었구요. 저희는 별도로 자체적인 시스템을 구축하여 고객사의 웹사이트에 픽셀과 같은 애드바이저 스크립트를 설치하여 트래킹을 하고 있습니다. 간단히 말씀드리자면 저희도 페이스북의 픽셀과 같은 자체적인 분석 플랫폼을 만들어서 보유하고 있습니다.

 

 

 

다양한 언어를 사용하시던데, 가장 주로 사용하는 언어는 어떤 것인가요? 기술 스택에 대한 설명을 듣고 싶습니다. 

 

메인으로는 현재 PHP를 쓰고 있습니다. Front-end는 React를 쓰고 있고, Node.js도 쓰고 있습니다. 언어 자체는 큰 상관이 없지만 End Customer에게 delivery되는 부분을 감안한다면 성능이 가장 빠른 언어여야 한다고 생각합니다. 

 

 

 

개발을 시작하신 이후로 원래 PHP가 메인이셨나요?

 

저는 원래 C를 메인으로 하는 개발자였습니다. Java와 PHP는 이전 회사에서 많이 사용했습니다. PHP5까지만 해도 객체지향도 잘 안되는 등 문제가 많다고 생각되지만, 7이 올라오고 나서 많이 문제가 많이 정리가 된 상태이고, performance가 압도적으로 좋아졌기 때문에 현재 PHP를 사용하고 있습니다. 또한 PHP는 일부 특정 문제 상황시에 C언어로 구현하면 문제 해결뿐만 아니라 performance까지 확보할 수 있는 확장이 가능하다는 것도 저희에게 적합한 부분이라 생각합니다. Performance가 제일 좋은 것은 어셈블리인데 지금은 아는 사람이 별로 없죠. (웃음) 저는 performance만 잘 난다면 언어 자체는 구애를 받지 않는 편입니다. 

 

 

 

애드인텔리전스는 실패를 장려하는 기업 문화를 가지고 있는 것으로 알고 있는데요, 개발자로서 장려되는 실패는 어떤 것들이 있나요?

 

서비스를 고려하면, 개발자의 실패는 최대한 피해야 한다고 생각합니다. 개발팀의 실패는 서비스에 직접적인 영향을 미치니까요. 그러기 위해서는 역설적이지만 수많은 실패를 필요로 한다고 생각합니다. 직접적인 서비스와 관계없는 개발 레벨에서의 많은 시도와 다양한 각도에서의 테스트 등이 뒷받침되어야 합니다. 결과물을 만들어 내는 과정에서는 실패를 두려워하지 말고 다양한 시도와 테스트를 해야 합니다. 새로운 언어나 솔루션 또한 마찬가지입니다. 과정에 있어서 탐구적인 시도의 실패는 얼마든지 장려하고 있습니다. (웃음)  

 

 

 

주니어 개발자들은 업무적으로 어떻게 커뮤니케이션하는지 궁금합니다. 

 

메인 작업 같은 경우는 주로 저와 커뮤니케이션을 하고, 그 이외의 여러 팀과 수행하는 개별 프로젝트는 각 팀의 담당자들과 주니어 개발자들이 직접 커뮤니케이션하면서 일하고 있습니다.


(주)애드인텔리전스는 온라인 광고 분석 솔루션인 AdVisor를 운영합니다.

함께 보면 좋은 글

광고시장의 혁신을 꿈꾼다면, 애드인텔리전스 오세민 CMO

함께 보면 좋은 글

구성원들이 말하는 애드인텔리전스의 기업문화

© THE TEAMS - All rights reserved.

기업문화 엿볼 때, 더팀스

로그인

/