프로그래밍은 레고 조립이 아니다

프로그래밍은 물론 어렵다. 알고리즘을 익히는 것도, 알고리즘을 구현하는 것도, 컴퓨터 공학의 추상적인 개념들을 이해하는 것도, 프로그래밍 언어 사용에 능숙해지는 것도, 각종 문서를 섭렵하고 다양한 프레임워크와 툴들을 익히는 것도 이미 충분히 어렵다.

그런데 명확한 스펙으로 명시될 수 있는 문제를 기존 툴들의 조합으로 해결하는 일의 부가가치란 생각보다 크지 않다. 레고 조립은 누구나 할 수 있는 일이기에, 이런 방식으로 상상할 수 있는 작업이란 1) 상업적인 가치가 작거나 2) 세상에서 이미 누군가가 해버린 일이기 쉽다. 98% 의 경우가 그렇다.

물론 나머지 2% 의 경우가 아주 없지는 않다. 세상이 갑자기 바뀌어서 일시적인 기회의 문이 열리는 경우, 예를 들어 모바일 인터넷 시대가 열리면서 메신저 앱같은 어떻게 보면 빤히 보이는 기회가 있었다. 근데 이 시장을 선점한 곳들은 아마추어 스타트업들이 아니었다. 야후 출신 베테랑들이 만든 왓츠앱, 네이버 출신 베테랑들이 만든 카카오톡, 네이버가 만든 라인, 페이스북이 만든 페이스북 메신저 등은 개발사들이 이미 시장에서 가장 뛰어난 기성 플레이어들이었다.

이유는 간단하다. 같은 기회를 보고 비슷한 시기에 뛰어들었다면, 같은 툴들을 더 오랫동안 다뤄온 베테랑들의 실력이 한참 더 앞서고 그들에게 훨씬 더 많은 자원이 준비돼 있기 때문이다.

결국 스타트업은 산업의 맹점 영역에서 태동할 수 밖에 없다. 미래를 보는 것만으로는 충분하지 않다. 남들이 보지 못하는 미래를 봐야 한다. 그래서 피터 틸은 “당신과 동의하는 사람들이 거의 없는 중요한 진실을 알고 있는게 있느냐?” 고 질문하는 것이다.

기술적인 관점에서, 엔지니어들은 기존의 것들을 조합하는 경우의 수를 생각하는 종류의 사고에 귀재들이다. 근데 이런 엔지니어적 접근방법은 (내 개인적인 경험상) “해결할만한 가치가 있는 문제” 를 발견하는 방법으로는 그다지 효과적이지 못하다.

해결할만한 가치가 있는 문제란 과연 무엇일가? 내가 사용하는 정의는 “그것을 해결하면 세상이 실제로 바뀌는 문제” 이다. 세상에는 다양한 가치있는 문제들이 많이 있지만, 이 관점에서 해결할만한 가치가 있는 문제는 생각보다 많지 않다.

좀더 구체적으로 이야기하자면, 해결할만한 가치가 있는 문제란 적지 않은 숫자의 사람들이 실제로 가지고 있는 꽤 커다란 개인적인 문제이다. 중요한 것은 1) 문제의 보편성(=문제를 가진 사람들의 숫자) 2) 문제의 시급성(=새로운 제품이나 서비스를 찾는 사람들의 적극성) 3) 문제의 개인성(=사람들이 자신의 문제로 받아들이는가) 등이다.

이 세가지 요건이 모두 충족됐다면, 이제 비로소 해결 방법을 고민하기 시작할 준비가 된 것이다. 이런 문제가 실제로 포착됐을때 개발자(또는 기술자)에게 요구되는 자질은 무엇일까? 그 문제를 해결할 수 있는 기술적 해법을 “어떻게든” 만들어내는 것이다. 문제는 이것이 기존에 나와있는 레고블록(=오픈소스 소프트웨어 등)의 조합만으로 온전히 해결되는 경우란 매우 드물다는 것이다.

모든 가치있는 문제의 해결에는 기존에 없던 새로운 (그것이 꼭 기술적인 요소가 아니더라도) 레고블록이 요구된다. 그리고 그 새로운 블록들을 만드는 데에는 많은 경우 개발자에게 전혀 생소한 전문성이 요구될 것이다.

적어도 스타트업에 참여하고 있는 개발자라면 이삼일 혹은 일주일간의 리서치로 해당 분야의 준전문가가 돼서 한달 혹은 두어달의 기간 내로 해당 블록을 만들어낼 수 있어야 한다.

예를 들어, 우리 회사가 현재 직면한 두가지 기술적 문제가 있는데, 하나는 리액트 네이티브라는 앱 개발 프레임워크의 안정성/성능 문제 때문에 이 문제를 확실히 해결할 수 있는 대체 프레임워크를 만들어야 한다는 것이고, 다른 하나는 구글 지도 sdk 의 API 가 너무 제한적이라 역시 대체 sdk 를 만들어야 한다는 것이다. 두가지 문제 다 우리가 운영하고 있는 서비스가 기성 레고블록을 outgrow 한 경우이다.

스타트업에서 문제해결 능력이 중요하다고 말할 때, 개발자에게 요구되는 문제해결 능력이란 이런 것들이다.

이런 문제들에 대한 해법을 같이 고민해주실 분들은 언제든 제게 메일(daesan@gmail.com)을 주시기 바랍니다. 다른 개발자 분들이나 스타트업들이 가진 기술적인 문제들도 함께 고민하고 싶습니다. :)

Copyright @ 2018 Dae San Hwang (Theme: Doo by ThemeVS)