http://blog.kivol.net/post/51143318331
마세라티 문제라는 땡기는 제목의 글을 읽고 나서 이런 저런 생각이 들어서 글로 정리해본다. 해당 문제를 스타트업과 연관해서만 생각해 보았다.
결론부터 말하자면 마세라티 문제는 피하는 것이 옳다. 다만 스타트업과 관련된 원 글의 비유는 마세라티 문제 정의를 오해하게 만들 여지가 있다. 내가 이 글을 쓰는 이유도 그 오해를 해서 그런 것 같다만, 쓰기 시작했으니 끝을 봐보자.
린스타트업의 관점에서 본다면 맞는 말이다. 생산(product) 전에 판매 가능성부터 체크하는 접근으로 본다면 마세라티 문제는 빠지지 않도록 조심해야 할 대상이다. 다만 나는 이것이 과연 엔지니어들이 주의해야 하는 사항인가에 대해서 조심스럽다.
왜냐하면 창업을 준비하는 많은 엔지니어들이 그렇지 않은 환경에서 훈련을 받아온다는 것이다. 스타트업보다 큰 기업의 개발부서에 속한채 일을 할 때, 엔지니어들은 완벽함을 추구하도록 요구받는다. 큰기업에서 엔지니어로 일한다는 것은 해당 분야의 전문가가 되는 것이고, 그러기 위해서는 완성도 측면에 집착해야 하기 때문이다.
그런 사람들이 창업을 하거나 스타트업으로 오게 되면 혼란을 겪게 된다. 린스타트업이니 Market first approach 니 하는 이야기들을 듣고 나면, 기존에 가지고 있던 가치관의 혼란이 온다. 코드의 품질을 떨어뜨려 배포 속도를 높이는 것이 과연 선택할 만한 일일까?
나는 엔지니어는 스타트업이든 대기업이든 엔지니어로 남아야 된다고 본다. 개발의 디테일까지 신경써야 하는 개발자들이 한편으로 제품의 마케팅 측면을 고려해서 힘조절을 하는 건 불가능한 일이다. 개발자 자신이 회사의 대표가 아닌 이상 말이다.
그러니까 린방법론에 대한 건 스타트업의 경영자가 숙지해야하는 내용이지, 개발자들까지 알아야 할 내용은 아니다. 그냥 이런 접근이 있구나 정도로만 알고 있으면 충분하고, 만약 애자일 방법론에 관심이 있었던 개발자라면 그리 새로울 내용도 없을 것이다. 경영자와 개발자의 이 간격을 메우기 위해 존재하는 직함이 CTO 다. CTO 는 그 회사에서 가장 해커 같은 사람이 아니라, 가장 마케팅을 잘 이해하는 기술자여야 한다고 생각한다.
다만 한가지 짚고 넘어가야 하는 것은 마세라티 문제가 오버엔지니어링의 위험성에 대한 것이냐? 아니면 린방법론에 대한 것이냐이다. 그리고 오버엔지니어링을 경계해야 하는 건 두 말할 필요 없다. 애자일 관련 책들만 숙지해도 충분하다. 쥬니어 레벨에서 자주 빠지게 되는 오버엔지니어링의 문제는 개발자 개인의 문제가 아니라, 쥬니어를 키워줄 선배가 조직내에 없다는 게 더 큰 문제이니 이 글의 범주를 벗어난다.