스타트업이 많아진 요즘 CTO(Chief Technology Officer)라 불리는 채용 공고를 자주 접하곤 한다. 같은 CTO 포지션이라도 누군가는 동업자로서의 역할을 누군가는 기술 실무자로서의 역할을 생각할 것이다. 그럼 스타트업에서의 CTO의 역할은 무엇일까?

전통적인 조직에서는 CTO의 역할은 큰 조직의 연구,개발(R&D) 리더로써 전사 차원의 조정자 역할이었지만 스타트업에서도 이와 같은 CTO의 역할을 기대해도 되는 것일까? 그렇지 않다면 스타트업에서 좋은 CTO는 어떤 모습이어야 할까? 정답을 찾기 위해 오로지 나의 경험에 비추어 생각해보고 정리해봤다.

기술의 리더

내가 생각하는 스타트업에서 CTO의 역할 중 가장 중요한 부분은 기술을 리드할 수 있어야 한다는 것이다. 이것은 기술을 다루는 CTO로서 반드시 갖추어야 하는 첫 번째 조건이라고 생각한다. 이 조건을 만족해야만 이후 얘기할 다른 조건도 이룰 수 있다. 기술적 리더는 어렵게 생각할 수도 있는데 오로지 본인의 능력과 노력만으로 가능한 부분이기도 하여 앞으로 얘기할 다른 조건들에 비하면 오히려 달성하기 가장 쉬운 조건이다.

그럼 나의 기술적 위치를 어떻게 파악해 볼 수 있을까? 만약 현재 회사에 재직 중이라면 다른 개발자들과 얘기하는 과정에서 파악해 볼 수도 있다. 다른 방법으로는 이직 생각이 없더라도 다른 회사의 채용 프로세스를 거치는 과정에서도 자신의 실력을 가늠해 볼 수도 있을 것이다. 나는 이 방법이 꽤 효과적이라고 생각한다. 이 과정에서 해왔던 일과 현재 자신의 기술적 깊이를 보다 객관적으로 파악해 볼 수 있을 것이다. 하지만 무엇보다 가장 정확한 것은 퇴사 후 비로소 자신의 명함에서 회사와 직책을 모두 지울 때 더 정확하게 가능할 것이다.

기술의 리더가 되려면 어떻게 해야 될까? 무엇을 잘 알고 잘 모르는지 알 수 있는 메타인지(metacognition)를 키우는 것이 중요하다. Github과 같은 사이트에서 다른 사람이 만들어 놓은 코드를 읽어보거나 오픈소스 프로젝트에 기여하고 자신의 코드를 리뷰 받아보는 것도 좋은 방법이다. 또는 Stack Overflow에서 자신이 잘 알고 있는 것에 관해 토론해보고 부족한 것에 대해 도움을 받는 것도 도움이 될 것이다. 그리고 어떠한 상황에서도 기술의 발전에 뒤처지지 않도록 계속 공부해야 한다.

그렇다고 조직에서 가장 코딩을 잘하는 사람이 될 필요는 없다고 생각한다. CTO는 신기술을 모니터링하고 평가하면서 사업의 시드를 발굴하고 이를 구체적인 사업으로 연결하는 역할을 해야 한다. CTO는 여러 기술을 폭넓게 알고 상황에 맞게 제시할 수 있는 능력이 더 중요하다. 특정 언어나 분야에서 CTO보다 코딩을 더 잘하는 팀원이 있더라도 그것이 CTO 역할의 전부는 아니므로 코딩 능력이 떨어진다고 좌절하지는 않아도 된다.

사업적 판단

사업 전략과 연계되어 기술 전략을 수립, 실행하는 것은 CTO에게 매우 중요한 역할 중 하나이다. 사업 부문과 밀접한 관련성 없이 기술개발 또는 제품 개발만 하는 것이 아니라 사업전략 수립에 기술적 지식을 활용하는 역할도 해내야 한다.

CTO는 보통의 개발자가 자신의 역할에서는 생각하지 않을 회사와 사업이 나아가는 방향을 생각할 수 있어야 하고 직접 사업적 판단을 하지는 않더라도 올바른 판단을 할 수 있도록 경영권자에게 더 나은 선택지를 제공하는 역할을 해야 한다. 그리고 현재 기술에서 머무는 것이 아니라 그 기술을 기반으로 본인 또는 조직이 새로운 아이디어를 끊임없이 생산하고 사업적으로 더 좋은 판단 인지를 고민하고 결정할 수 있어야 한다.

그 판단의 근거를 기술뿐만 아니라 사업의 방향을 고려해 종합적으로 분석하여 제시할 수 있어야 한다. 그리고 결정한 자신의 판단에 책임을 질 수 있어야 하며, 잘못된 판단임을 알았을 경우 인정하고 바로 잡기 위한 겸손한 자세도 가져야 한다고 생각한다.

좋은 팀을 구성

어느 조직이든지 인재를 채용하는 것은 아주 중요한 문제이다. 올바른 인재 채용으로 더 높은 성과를 달성할 수 있지만 잘못된 채용으로 프로젝트 또는 조직 전체가 망가지기도 한다. 지원자를 기술적으로 검증하고 좋은 인재를 찾아내는 것은 CTO로서 해야 할 중요한 일 중 하나이다.

능력은 뛰어나지만 나쁜 태도 vs 능력은 보통이지만 좋은 태도

이 질문에 답을 하기 전에 내 이야기를 먼저 해보고자 한다. 나는 스타트업에서 일하기 전 어느 정도 규모가 있는 회사에서 일했었다. 그때는 태도가 별로여도 능력이 뛰어나다면 그 사람도 채용했었다. 회사가 가지고 있는 시스템으로 그 사람의 태도를 대부분 커버할 수 있는 경우가 많았기 때문이다.

하지만 스타트업에서는 다르다고 생각하다. 작은 능력도 중요하지만, 그 사람의 태도는 능력만큼 중요한 요소이다. 채용하고자 하는 포지션에 적합한 인재이고 보통 이상의 실력만 갖추고 있다면 스타트업에서는 그 후 검증해야 하는 것은 무조건 태도라고 생각한다. 첫째도 태도 둘째도 태도 셋째도 태도이다. 내가 처음 스타트업에 들어왔을 때 이렇게 생각하지 못해서 여러 시행착오를 거쳤었는데 지금은 생각이 많이 바뀌었다.

인재를 검증하는 방법은 인터뷰를 통해 그 사람이 어느 정도 열정을 가졌는지 가늠해보고 Github이가 Stack Overflow와 같은 커뮤니티에 활용했던 내역도 살펴보자. 만약 디자이너라면 DribbleBehance를 확인해보는 것도 좋겠다. 그리고 가끔은 지원자의 Facebook이나 Twitter에 업로드한 공개 피드도 확인해보는 것이 도움이 되는 경우도 있다.

다른 부분은 마음에 들지만 기술적으로 완전히 적합한 인재가 아닐 경우는 어떻게 해야 할까? 해당 직무가 Typescript 기반의 Backend 업무라면 열정이 있는 사람이 Backend 경험은 있지만, Javascript만 알고 Typescript는 모르는 상태라면 충분히 채용할 만한 가치가 있다. 하지만 JavaPHP만 다룰 수 있는 등 완전히 기술 스택이 벗어난 경우는 조금 곤란하다.

더 자세히 지원자의 실력을 확인할 필요가 있다면 코딩 테스트를 해보는 것도 좋겠다. 하지만 당장 많은 보상이 없는 스타트업 채용에서 과한 코딩테스트는 오히려 지원자들에게 역효과를 볼 수도 있다고 생각한다. 경쟁자가 많은 경우 코딩 테스트를 통해서 검증하는 방법을 사용하고 그렇지 않으면 대면 인터뷰 또는 전화 인터뷰를 통해서 최대한 실력을 검증해 보는 것이 좋다.

사람 관리

스타트업에서 CTO가 가장 많은 시간을 할애하는 것이 바로 사람을 관리하는 일이라고 생각한다. 좋은 팀을 구성하는 것만큼 중요한 것이 좋은 인재를 모셔다가 계속 일할 수 있게 하는 것이다. 최고의 복지는 최고의 동료라는 말처럼 동료는 회사 생활에 직접적으로 많은 영향을 끼친다. CTO는 인재들을 주기적으로 면담하여 문제가 있는지 파악하고 해결하고자 하는 노력을 해야 한다. 인재들이 즐겁게 일할 수 있는 환경을 만드는 노력이 필요하다.

개발팀 문화

좋은 기업문화로 많이 예로 드는 것 중에 하나로 구글의 20% 규칙이 있다. 업무시간의 20%를 자신이 원하는 일을 할 수 있도록 하는 것인데 결과적으로 20%의 시간으로 만들어진 프로젝트들이 현재의 구글을 이끌고 있다.

아무리 좋은 기업문화가 있더라도 경영자의 노력과 의지 없이는 잘 정착되기 힘들다. 개발팀의 문화도 마찬가지이다. 좋은 조직문화를 만들고자 하는 CTO의 노력이 필요하다.

예를 들어 자유로운 의견을 개진할 수 있는 문화를 원한다면 누군가에게 의견이 나왔을 때 존중과 경청을 하는 것은 필수이며 CTO는 의견에 대해 반드시 피드백을 줘야 한다. 그런 과정을 통해 신뢰가 쌓이고 반복되면 문화가 된다.

수평적인 문화를 원한다면 회사 또는 팀이 이루고자 하는 목적을 충분히 공유하고 각자 맡은 역할에서 결정할 수 있는 부분은 조직의 목적에 맞게 스스로 판단할 수 있도록 하는 것이 중요하다. 모든 구성원이 한 방향으로 같은 결정을 하도록 하기 위해서는 사업과 기술 비전을 항상 공유해야 하는데 그러기 위해서는 생각을 맞춰가는 과정이 필요하다. 그 때문에 CTO를 포함한 경영진들은 누구하고도 자유롭게 커뮤니케이션할수 있는 문화가 필요하다.

아웃소싱 관리

내부 리소스가 부족할 때 리소스를 아웃소싱(outsourcing)을 통해 부족한 부분을 채울 수도 있다. 사업 자금이 넉넉하지 않은 경우 아웃소싱을 통해서 단기에 성과를 이루고 다음 단계로 빠르게 넘어갈 수 있다. 아웃소싱을 결정하기 전에 해당 업무가 일회성이고 고유한 프로세스의 업무인지 아니면 내부적으로 지속해서 통합되어야 하는지 생각해봐야 한다. 전자의 경우 아웃소싱이 적합하지만 후자의 경우는 인하우스(in-house)로의 채용이 적합하다.

아웃소싱의 방법에는 3가지가 있다. 첫째, 턴키(turnkey)로 모든 부분을 에이전시를 통해서 개발하는 방법이 있다. 이 경우 모든 부분이 완료되어 전달받을 수 있음으로 개발 시간은 단축할 수 있지만, 비용 측면에서 가장 비싸고 개발 이후 자체적으로 유지보수에 어려움이 있을 수 있다.

두 번째, 관련 솔루션을 가지고 있는 외부 사업체와 협업 관계로 서비스를 만들어 가는 방법이 있다. 이 경우 발생하는 수익을 공유해야 할 수도 있고 첫 번째 경우만큼 큰 비용은 아니지만, 일정한 비용을 계속 지불해야 할 수도 있다. 이 방법은 추후 사업 확장 판단에 있어서 의견이 다를 경우 독립적으로 판단하지 못하는 제약이 있을 수 있다.

세 번째, SaaS 서비스를 사용하는 방법이다. 초기에 빠른 시간과 적은 비용으로 구축이 가능한 장점이 있다. 하지만 직접 개발한 부분이 아니기에 출시 후 원하는 방향으로의 수정이 어려울 수 있다.

CTO는 아웃소싱이 필요하다고 판단될 때 어떤 방식으로 진행할지 결정을 내릴 수 있어야 하고 상황에 따라 올바르게 결정할 수 있어야 한다. 그리고 그 아웃소싱의 결과가 원하는 방향이 되도록 지속적으로 관리해야 할 책임이 있다.

마치면서

CTO가 된다는 것은 기술적인 부분부터 사람의 관리 그리고 아웃소싱까지 많은 부분을 알아야 하고 관리해야 한다. 과연 스타트업의 CTO는 개발할 시간이 있기는 할까? CTO의 역할을 제대로 하려면 개발을 할 시간은 거의 없을 것이다. 하지만 규모가 작은 초기 스타트업 환경에서는 CTO의 역할을 해내면서 개발도 동시에 해야 하는 경우가 많다. 따라서 조직원들 보다 부족한 시간에서 더 힘든 많은 일들을 해내야 한다. 이 모든 걸 견뎌야 하는 스타트업의 CTO는 CEO만큼의 사업 성공에 대한 확신을 가질 수 있을 때 가능한 직책이다.

아프리카 속담에 빨리 가려면 혼자 가고 멀리 가려면 함께 가라는 말이 있다. 남들이 하지 않은 도전을 하는 스타트업들은 성공하기 까지 힘든 과정을 견뎌내야 하는 경우가 많다. 이 과정은 결코 혼자서만 이룰 수 있는 것이 아닌 모든 조직원이 열정을 다해 한 목표를 향해 뛰어갈 때만 비로소 도달할 수 있다.

이러한 과정에서 CTO의 역할은 더 중요해진다. 모든 것을 혼자 해야 하는 독선적인 모습과 권위적인 모습보다는 자신의 소리를 줄이고 조직원 각자의 역량을 최대한 끌어낼 수 있는 오케스트라와 지휘자 같은 모습이 필요하다. 하지만 때로는 자신을 낮춰야 하기도 하고 때로는 냉정하게 판단해야 할 경우도 있다. 스타트업에서 많이 보았던 가장 흔한 실수로 당장 눈앞의 작은 이익과 작은 다툼으로 시작된 불화로 지금까지 힘들게 쌓아놓은 모든 것을 망쳐버리는 과오는 범하지 않기를 바란다.