사실, 질문이 잘못되었습니다. 코딩할 수 있으면 해야지요.
구태의연한 질문이기도 하지만, 많이들 궁금해하는 질문 중의 하나가 CTO라고 불리는 회사 내의 개발 총책임자의 개발 여부나 코딩 여부에 대한 캐캐 묵은 질문입니다.
정답은 '가능하다면 한다'입니다.
하지만, CTO(Chief Technical Office)라고 불리는 직함은 기업활동 중에 필요한 기술을 효과적으로 다루기 위한 책임자를 의미하는 직함을 의미하고 있으며, 실제 코딩이 가능할 정도로 비즈니스 속도가 느리고, 고객과의 접점, 개발의 형태 변화가 무난하며, 개발자 구인과 HR 등의 업무가 정말 분할 가능한 조직이라면, 이 직함을 가진 사람도 코딩을 하고, 개발을 할 것입니다. 정말 부러운 조직의 구성이라고 말하겠습니다.
개인적으로 CTO이지만 코딩을 할 수 있다면, 하는 것이 맞습니다. (하지만, 대부분 CTO는 코딩하기 어렵습니다. 특히, 비개발자 경영조직이나 C level 등의 관여나 개발회의에 그들이 참여한다면 말이죠. )
스타트업이나 기업의 현재 상황이나 진행 업무의 형태와 구성 방법에 따라 이 기준은 조금씩 다르다고 판단할 수 있습니다.
물론, CTO가 코딩이나 개발을 하려면 그의 업무시간이 보장되어야 합니다. 직접 소프트웨어 개발을 통해서 프로덕트에 영향을 주는 코드를 반영하려면 하루 4시간 이상 업무에 집중해서 작업을 할 시간적인 여유가 있어야 하는데... 과연, 그 시간적인 여유를 CTO에게 부여할 수 있을까요?
( 그 정도 여유를 주는 스타트업을 찾기가 어렵다는... )
CTO는 눈에 보이지 않지만 중요한 의사결정 과정과 기술적인 방향, 보편적인 내부 지식의 공유, 고객에게 맞추어지는 데이터 화의 상품 반영 여부, 직원 개개인의 창의성이나 기술적 보편성을 기술 조직에 반영해야 하고, 적절한 아웃소싱을 해결해야 하는 일을 처리하는 것이 CTO의 본질적인 업무에 해당됩니다. ( 개발자 구인도 해야죠. )
이런 업무를 수행하고서도, 개발을 할 수 있는 여유나 시간적인 배분이 가능한 조직이라면 당연하지만, CTO는 알아서 코딩을 할 것입니다. ( 품질 이슈나 코드 리뷰는 제외하도록 하겠습니다. )
다만,
이 이슈는 스타트업 초기의 경우에는 완전 다른 답변이 가능합니다.
개발자가 CTO혼자뿐이라면 그는 개발을 하겠지요. 사실, 이 시기는 그냥 다 동업자이고, CEO는 영업사원과 총무, 청소하는 직원까지 도 맡아서 하고 있기 때문에 이를 CTO가 개발하느냐 마느냐의 질문에 대한 답변이 될 수 없습니다.
필자가 아는 특정 게임업체의 경우에는 CTO가 서버의 핵심 코드를 직접 작업하는 경우가 있기는 했습니다만, 해당 업체는 결국... 4년 만에 사라졌습니다. CEO가 직접 코딩에 참여하면서 열변을 토했지만, 회사의 기술 수준은 낙후되고, 업무의 프로세스가 붕괴되는 경우도 많았습니다.
그리고, 기술이 굳이 변화하지 않는 마켓과 요구사항이 그다지 변화하고 있지 않은 설루션 기업의 대표가 본인이 CTO와 연구소장을 겸직하고 있다고 자부심 넘치게 이야기하는 모습도 간혹 보게 됩니다.
미안하지만, 변화가 없기 때문에 가능한 것이고, 굳이 CTO나 연구소장의 역할이 필요 없기 때문이라고 이야기하게 됩니다.
필자의 경험에 따르면,
CTO는 가능하다면 개발할 수 있지만, 서비스의 단계별 로드맵과, 기술의 복잡도, 관련 업체들의 연관성, 레거시와 새 서비스와의 기준점 설정, 데이터 마이그레이션 이슈와 가지고 가야 할 기술적 부채와 해소해야 할 기술적 부채를 결정하는 일, 개발팀이 커지면서 순서와 단계에 대한 기준을 잡고, 요구사항 정의를 제대로 하고 있는 기획자가 있다는 전제조건하에서 만들어지는 명세서의 리뷰 등의 업무와 고객 대응 시나리오를 기준으로 서비스의 운영계획을 수립하고, 테스트 계획 등의 업무에 참여해서 프로세스를 돌릴 수 없기 때문에 직접 개발에 참여하거나 코딩을 하는 것은 매우 불가능합니다.
그들이 코딩을 하는 결과물의 가치가 극대화되는 특수한 분야가 아니라면, 일반적인 환경에서는 CTO가 코딩을 한다는 것은 매우 비효율적인 선택입니다. 그 시간에 전체적인 효율이나 방향성, 향후 방향등에 대해서 고민을 해야 하는 것이 CTO의 역할일 것입니다.
CTO가 방향을 잘못 선택하고, 인력배치와 로드맵 수립이 틀어지면, 매우 괴로운 상황들이 벌어집니다. 물론, 대부분의 CTO들은 이 경우에 방향을 잘못 선택한다기보다는...
비즈니스의 상황, 비개발자 출신인 대표의 잘못된 의사결정, 엉터리와 같은 기획 등의 중첩된 상황들에서 만들어진 프로덕트가 뒤틀린 것을 해소하기 위해서 매달리게 됩니다.
현재 의사 결정된 내용이 6개월 후에 여파가 발생하고,
현재 잘못된 상황 설정과 부정확한 요구사항 때문에 프로덕트를 다시 구현해야 하며,
시간이 부족해서 버려지는 코드를 만들어야 하는 괴로운 상황들에 대해서...
개발팀 내부의 하소연을 들어주거나, 기술적 부채가 발생하는 격리구역을 최대한 줄이기 위해서 고전하게 됩니다. 이런 상황에서 CTO에게 코딩을 하라는 이야기는...
마치, 전쟁터의 전체를 주시해야 할 장군에게 '소총'들고 일선에 나가서 싸우라는 소리와 똑같습니다.
물론, 취미로 무언가를 만들거나, 프로토타입을 만드는 작업을 수행하기는 합니다만. 이 역시, 구체적인 개발을 하고 있거나 코딩을 하고 있다고 이야기하는 사람은 없습니다.
그래서, CTO는 코딩이나 개발이 하고 싶어서 못하는 것이 맞습니다. 그것은, 그들이 소속되어 있는 곳이 기업이기 때문입니다. CTO가 코딩하는 기업의 대부분은 무언가 빠진 상황이라고 생각합니다.
하고 싶지만,
CTO는 개발 관련 일 때문에 직접 개발에 참여하지 못합니다.
그것이 답변되겠습니다.
ps.
CTO도 개발을 해야 한다고 이야기하는 CEO( 스타트업 창업자 )를 가끔 만납니다. 그리고, 대부분 그들의 수준이나 이해도를 알게 됩니다. ( 그냥, 그런 사람들은 '더 많은 일'을 시키고자 할 뿐입니다. 코딩할 여유를 주는 것이 아니라요. 이 의도는 정말 앞뒤가 맞지 않는다는... ) 그들은 개발자를 이해하지 못하고, 버려지는 코드를 이해하지 못하며, 코드의 재활용성이나 서비스의 유지보수의 어려움에 대해서 잘 모르는 경우가 빈번합니다.
작은 코드 몇 개 작성해보고, 개발지식이나 경험을 이야기하는 무식한 스타트업 경영자들은 가능한 피하는 것이 속편 합니다. 그들에게 개발자란 이해할 수 없는 사람들이며 직군일 뿐이니까요.
ps2.
자꾸들 오해하시는데. 당연, CTO는 개발 능력을 갖추고 있어야 하며, 신규 언어나 프레임웍에 익숙해야 합니다. 제가 알고 있는 대부분의 CTO는 그러하니까요. 새로운 언어를 기반으로 프로토타이핑을 해보는 것은 너무도 익숙하고 당연한 개발자의 모습입니다.
하지만, 대부분 10명 이상의 개발 조직을 갖추고 있는 개발 조직에서 CTO가 코딩을 한다는 것은 매우 우스운 행동입니다. 그뿐이죠.
ps3.
코딩을 넘어선 조직의 프로세스와 남들이 싫어하는 일들, 하고 싶어 하는 일들, 비즈니스나 미래를 위한 일들, 개발자의 시선으로 봐야 하는 수많은 일들이 있습니다.
매번 난감한 것은 그러한 일들이 구체적이거나 비개발자가 보기에는 일하는 것처럼 보이지 않는 것이 많다는 것이죠.
이 숙제는 아마도... 영원히 풀리지 않을 숙제로 보입니다.