Page history of 이콜레모 2015년 회고



Title: 이콜레모 2015년 회고 | edited by Youngrok Pak at 8 years, 2 months ago.

2015년은 지금까지 이콜레모의 역사에서 한 가지 목표만을 끝까지 유지한 첫번째 해였다. 실제로 그 목표를 시작한 것은 작년 하반기라서 1년 5개월 정도 이어온 셈. 그만큼 이전까지의 이콜레모는 전략적으로 형편 없었다는 뜻이 되겠다. 이전에도 이콜레모가 외주를 많이 했고, 중간중간에 재미 있었던 순간도 많았지만, 총체적으로 외주 일을 유쾌한 경험이었다고는 할 수 없었다. 다음은 그런 고민들이 담겨 있는 글들이다.

/* 이 글은 2016년에 다 써서 포스팅을 하지만, 2015년 12월 31일에 쓰기 시작한 글이라, 글에서 지칭하는 올해는 2015년이고, 내년은 2016년임 */

이콜레모 외주 실패의 역사

뭐 구질구질 많지만, 요약하면 제대로 외주하는 것도 아니면서 돈에 휘둘리기는 했고, 좋은 고객을 필터링하기 위해 열심히 회고하고 분석했으나 다 소용 없었다는 이야기다. 그래서 재작년에 다시 외주를 시작할까 아니면 아예 새로운 길을 찾을까 고민을 많이 했었다. 그러다가 새로운 시스템으로 외주를 해보기로 마음을 먹었다. 그 시스템은 바로 시간제 보수 시스템이다.

시간제 보수 시스템의 배경

이 시스템을 선택하는데 영향을 주었던 것들은 이런 것들이다.

  • 변호사, 세무사 등은 시간당 상담료를 받는다.
  • XP에서 이야기하는 외주 프로젝트에서의 pay per use 개념
  • 자신이 원하는 수준에 따라 개발 비용이 차이가 난다는 것을 알게 되면 고객도 더 합리적으로 행동하려고 하지 않을까?
  • 소프트웨어 견적의 불합리성
  • 프로그래머도 노동자인데 노동 가치로 돈을 받는 것이 합리적이지 않을까?
  • 몇 번의 짧은 취업 경험에서 내 시장 가치가 꽤 괜찮다는 것을 알게 됨.
  • 어차피 내 마음에 드는 소프트웨어를 외주에서 만들 수 없다면 그에 상응하는 돈이라도 받자.
  • 지섭이에게서 배운 연봉 협상 전략 - 원하는 금액을 스스로 정하고 그 금액을 주는 회사를 만나기 전까지 타협하지 말라.
  • 공인 단가대로 제대로 받을 수만 있다면 먹고 사는데는 문제 없다.

고급 프로그래머의 수급 불균형

연봉 협상 전략은 지섭이가 자기가 원하는 연봉을 정해놓고 취업하는 과정을 보고 배운 것이다. 옆에서 지켜보니 연봉은 자기가 원하는 금액에 다소 못 미치지만 그 외의 조건들을 생각해보면 괜찮아보이는 건들이 여럿 있었는데 지섭이는 계속 거절했다. 솔직히 지섭이가 저러는 걸 보기 전까지의 나라면 저러다 영영 취직 못할까봐 겁나서 못했을 거다. 근데 이 녀석은 꿋꿋이 밀고 나가더니 결국 원하는 조건의 일자리를 찾았다. 뭐 그 뒤로 오래 일한 것 같진 않지만;;

그래서, 나도 이콜레모를 잠정 중단하고 취업을 해볼까 하던 시기에 이 전략을 채용했다. 근데 조금 더 나아갔다. 협상이 한 번 실패할 때마다 희망 연봉을 1천만원 올리기. 이렇게까지 할 수 있었던 것은 지섭이를 지켜보면서 용기를 얻게 된 것도 있고, 또 그 사이 고급 프로그래머 수요가 더 늘어나서 공급을 크게 초과하고 있다는 사실도 눈치 챘기 때문이다. 항상 시장 원리에 당하기만 해왔던 노동자 입장이지만 시장 상황이 변하면 역으로 이용할 수 있는 것도 당연하다.

그래서 네 번 협상을 실패하고 다섯 번째에 내가 원하는 조건으로 취직을 성공했다. 나 역시 지섭이처럼 거기에 오래 머무르진 못했지만, 여튼 이 경험은 고급 프로그래머의 수급 상황에 대한 확신을 가질 수 있었다. 그래서 내가 지금도 다른 프로그래머들에게 이런 조언을 한다. 

네가 원하는 조건을 양보하지 말고 끝까지 버텨라. 네가 정말 실력이 있다면 너를 찾는 곳은 반드시 있다. 

정말로 찾는 곳이 없으면 나에게 오라. 내가 일거리를 주겠다.

소프트웨어 견적의 불합리성

위에서 이야기한 것이 내가 용기를 낼 수 있었던 이유라고 한다면, pay per use의 개념은 이 시스템이 더 합리적이라고 생각하는 이유다. 아니, 반대로 소프트웨어 견적의 불합리성이라고 해도 좋겠다. 소프트웨어 프로젝트를 미리 견적을 낸다는 것 자체가 말이 안되는 개념이다. 아직 소프트웨어 개발이 얼마나 걸릴지 예측할 수 있는 프로그래머는 태어난 적이 없다.

소프트웨어 개발을 시작하기도 전에 미리 견적을 내서 비용을 고정하고 프로젝트를 하면 갑과 을은 어떻게 행동하게 될까? 갑은 최대한 작은 견적을 받아서 계약하려고 할 것이고, 을은 최대한 부풀리려고 할 것이다. 여기까지는 좋다. 시장이니까. 근데 문제는 계약한 후에 일어난다. 계약한 후에 갑의 행동은 어떻게 될까? 갑은 이미 비용이 고정되어 있으니 최대한 많은 기능을 집어넣으려고 한다. 그게 이익이라고 생각하니까. 그러면서도 이미 약속했던 기능이 안되는 사실은 참을 수 없다. 손해니까.

을은 당연히 정반대로 행동한다. 이미 받을 비용은 정해져 있으니까 최대한 적은 노동을 해주는 게 이익이므로 고객과의 협상은 늘 일의 양을 줄이는데 초점이 맞춰진다. 물론 가끔은 을의 담당자가 자기 회사의 프로그래머보다 갑을 만족시키는 것을 중요하게 생각하는 경우가 있는데, 이 경우는 을의 담당자가 갑 역할이 되고 프로그래머들이 을 역할이 되기 때문에 문제가 쉬프트되긴 해도 그대로 존재한다. 어쩌면 이게 많은 프로그래머들의 현실일 것이다. 팀장은 갑님 앞에서 예스맨이 되어 굽실거리다 회의 끝내고 와서는 프로그래머들을 몰아세우는 상황. 

이런 것 뿐만이 아니다. 예를 들어 내가 고객의 요구를 아주 멋지게 만족시켜줄 수 있는 방안이 생각났는데 이미 계약한 금액이 턱없이 모자란다. 그럼 내가 그 아이디어를 말할까? 반대로 고객이 자기도 처음에 원했던 기능 중에 하나가 이제 필요 없다는 것을 알았는데, 이거 안해도 된다고 할까? 하든 안하든 비용 지불하는 건 똑같은데? 다행히 지혜로운 고객들도 종종 있고, 그들은 그게 결과적으로 자신들에게도 이득이라는 것을 알기 때문에 필요 없는 것은 처음에 하기로 했더라도 빼자고 하는 경우가 있다. 하지만, 대부분은 이게 손해보는 느낌이 드는지, "그래도 하기로 했잖아요"하면서 끝까지 요구하는 경우가 많다. 아니면 그 대가로 다른 걸 넣어달라고 하거나.

얼핏 생각하면 이번 일에 좀 손해를 보더라도 고객에게 잘해줘서 고객을 감동시키면 다음 번 프로젝트에서 이익을 볼 수 있지 않을까 싶을 수도 있다. 이것이 많은 갑들이 단가를 후려칠 때 사용하는 핵심적인 멘트다. 하지만, 그런 일은 일어나지 않는다. 다음 번에 또 손해보는 프로젝트를 할 뿐이다. 

이처럼 고정 비용 하에서는 갑과 을의 이해 관계가 상충되기 때문에 이 소프트웨어를 어떻게 하면 잘 만들어야 할까 둘이 머리를 맞대고 고민을 해야 할 중요한 회의 시간에 이 일을 뺄까 더할까로 싸우게 된다. 프로젝트가 잘 되려면 둘이 협력을 잘 해야 할 텐데 말이다. 근데, 애자일 선언의 세번째 가치가 뭐더라?

Customer collaboration over contract negotiation

나는 이걸 하고 싶은 거다. 그렇다고 해서 손해를 보면서 일할 생각은 눈꼽만큼도 없다. 그럼 답은 간단하다. 일한 만큼 돈을 받으면 된다.

일한 만큼 돈을 받으면 고객이 아무리 무리한 요구를 하더라도 그만큼 돈을 받으니까 나는 손해를 보지 않는다. 그러면 나도 열린 마음으로 고객의 문제 해결에 집중할 수 있게 된다. 근데 여기까지 해주면 내가 손해고, 저기까지 해주면 내가 이익이고 이런 생각을 해야 하는 상황이 오면 집중이 될 리 만무하다. 예전의 이콜레모는 다소 손해를 보더라도 고객에게 좋은 기능을 탑재해주는 것을 우선하기도 했는데, 그 결과로 따라오는 적자는 도저히 유쾌하게 받아들일 수가 없었다.

노동가치가 부가가치보다 중요하다

프로그래머의 성과는 유독 노동가치보다 부가가치로 평가하려는 경향이 있다. 소프트웨어는 들어간 노력보다 훨씬 큰 부가가치를 창출하는 경우가 많으니 그 부가가치를 나누어 받아야 하는 것 아니냐는 논리다. 주로 노임 단가제도를 비판하는 논거로 많이 등장한다. 하지만, 이건 자본가의 논리다. 그럼 만일 개발한 소프트웨어가 아무 가치를 창출하지 못하면 프로그래머는 돈을 받지 않아도 되는가?

내가 투자 받는 스타트업을 안하려는 이유도 비슷한 맥락이다. 스타트업이 투자를 받고 성공을 이루게 되면 자본가의 권력이 더 강화된다. 투자한 자본가들이 돈을 더 많이 벌기 때문이 아니다. 성공으로 얻는 부는 창업가들 본인이 더 클 수도 있다. 문제는 스타트업이 점점 더 투자에 의존하게 된다는 것이다. 이건 두 가지 현상으로 나타나는데, 하나는 창업자와 투자자의 힘의 균형이 점점 더 투자자에게로 이동한다는 것이다. 이건 국내 상황에서도 흔하게 보이는 모습이다. 그리고 사실 더 중요한 것은 두번째인데, 자본이 부족한 창업자들이 투자 받은 스타트업과 경쟁에서 이기는 것이 어렵기 때문에 실질적으로 자본의 중요성이 점점 더 커진다는 것이다. 물론 두번째 현상은 다시 첫번째 현상을 강화하게 된다.

말하자면 머니볼과 같은 효과다. 초기의 머니볼은 자금이 넉넉하지 않은 구단이 데이터 분석을 통해 부자구단과 경쟁할 수 있는 힘을 키우는 수단이 되었지만, 결국 그 방법이 알려지면서 부자 구단이 오히려 그 수단을 더 잘 활용해서 결국은 다시 자본 게임이 되고 말았다. 스타트업에도 유사한 일이 일어나고 있는데, 예전에는 뛰어난 역량의 개인 창업자가 기민하게 움직여서 혼자 뚝딱뚝딱 제품 만들어 내고 성공시키는 일이 적지 않았다. 물론 그런 애들도 차고 정도는 있었겠지만 말이다. 근데 이제는 그게 어려운 세상이 되었다. 자본의 힘을 등에 엎은 속도전에서 경쟁하기 어렵기 때문이다. 그래서 스타트업에서도 초기에 좋은 창업자를 모으는 것보다 투자를 확보하는 것이 더 중요한 일이 되고 만다. 물론 VC들은 입만 열면 좋은 팀이 갖춰져야 투자한다고 말하지만, 실제 VC들은 좋은 팀인지 아닌지 여부를 판단할 눈도 없거니와, 더 중요한 문제는 첫번째 투자를 유치한 이후에 발생한다. 첫번째 투자를 유치한 이후에 창업자들은 돈이 있는 상황이 되기 때문에 직원과의 관계에서 스스로가 갑의 위치에 올라선다고 생각하기 쉽다. 투자 받은 후에 핵심 프로그래머가 경영진과의 불화로 나가는 모습을 우리는 얼마나 많이 보아왔는가? 돈이 있으면 다시 더 좋은 사람 고용할 수 있다고 생각하게 된다. VC들도 아마 창업자와 초기 개발자가 갈등을 겪으면 그냥 내보내고 새로 구하라는 조언을 많이 하는 듯 하다. 물론 실제로 더 나은 사람을 구하는 경우는 거의 없고 제대로 된 후임을 구하지 못해 뒤쳐지거나 망하는 경우가 훨씬 많긴 하나, 어쨋든 이 시점부터 자본 권력이 노동 권력을 추월하게 되는 사실은 변함이 없다.

스타트업에서 대박이 났을 때 CEO는 수천 억씩 벌어가는데 전화상담원은 여전히 180만원 월급 받는 세상이 합리적인 세상인가? 그 CEO가 없었다면 성공할 수 없었겠지만, 전화상담원이 없었어도 성공할 수 없었다. 전화상담원은 대체 가능하기 때문에 노동시장의 가격이 적용되어 가격이 실제 가치보다 더 떨어진다. 난 그게 싫다. 노동은 좀더 신성한 것이어야 한다.

나도 이런 현상을 뒤집을 해법을 갖고 있는 것은 아니다. 나 스스로도 돈만 있으면 뭐든지 성공시킬 수 있다고 자신하는 종자인데, 자본의 위력을 부정하기는 쉽지 않다. 다만, 내가 그런 현상을 가속화하고 싶지는 않은 것이다. 

내가 바라는 좀더 바람직한 세상은 프로그래머들이 그냥 자신의 능력에 맞는 고정 급여를 받으면서 일할 수 있는 세상이다. "능력에 맞는"이라는 것도 비례한다는 뜻은 아니다. 이를테면 프로그래머의 생산성 차이는 40배까지 날 수 있다고 하고, 이콜레모에서 고용하는 프리랜서들의 기준으로는 최대 5배 정도의 차이가 나는 것으로 추정되지만 이콜레모에서 고용하는 프리랜서간 급여의 최대 차이는 2.5배에 불과하다. (황지섭 같은 고수를 고용할 때는 예외) 

그래서, 시간제 보수 시스템은 내가 만들어낸 가치에 비례해서 돈을 받는 것이 아니라, 내가 노동한 시간에 비례해서 돈을 받는 시스템이다. 물론 그렇게 받았는데 내가 만들어낸 가치가 평균적으로 시장의 가치보다 작다면 나는 시장에서 퇴출되거나, 혹은 살아남기 위해 단가를 낮추어야 할 것이다. 단가를 내가 정하는 것이니만큼 이것은 내가 받아들여야 할 현실이다. 다만 그렇게 단가가 변하더라도 여전히 부가가치보다는 노동시간에 비례하는 시스템을 할 것이다. 

이콜레모의 외주 원칙과 그에 따른 변화

이전과 달라진 것은 시간제 보수만이 아니다. 여러 가지로 외주를 하는 원칙이 달라졌는데, 모두 정리하면 이렇다.

  • 비용은 투입한 시간에 비례해서 받되, 단위는 하루와 반나절 두 가지만 사용한다.
  • 비용을 받는 시간당 단가는 투입한 엔지니어의 역량에 따라 다르게 정하되, 내가 정한다.
  • 일정을 다짐하지 않는다.
  • 계약하기 전에는 고객을 만나러 가지 않고, 오는 고객만 만난다. (친구, 예전 동료, 동문 등은 찾아가기도 한다.)
  • 비용은 매달 정산 받는다.
  • 조건만 맞으면 고객을 선별하지 않는다.
  • 컨설팅 등의 단기 프로젝트가 아닌, 내가 주도적으로 코딩해야 하는 프로젝트는 동시에 2개 이상 진행하지 않는다.
  • 동시에 일을 의뢰하는 고객이 많을 때는 계약까지 먼저 진행하는 고객과 일한다.
  • 속도를 높여야 할 때는 프리랜서를 고용한다

찾아오는 사람만 만난다

리스트는 길지만, 간단히 요약하면 시간제 보수에 합의하고 날 찾아와서 일을 의뢰하는 사람하고만 일한다는 것이다. 찾아가지 않기로 한 것은 딱히 내가 거만해서가 아니라 시간제와 연관이 있다. 일하는 시간만큼 돈을 받는 시스템이다보니 공치는 날을 줄여야 한다. 서울에 미팅하러 가면 보통 반나절을 날리게 되는데, 그러면 월 수입의 40분의 1이 줄어드는 것이다. 우리 회사가 크다면 영업 비용으로 그 정도는 감수할 수 있지만, 현재 이콜레모는 내가 전력의 대부분이니 내가 하루 놀면 회사 매출이 하루 분 줄어드는 거라 타격이 크다.

미팅 비용을 따로 받을까 하는 생각도 안해본 건 아닌데, 그건 오라고 하는 것보다 더 받아들일 가능성이 적을 것 같다. 그래서 날 찾아 오는 고객만 만나고, 내가 가야하는 경우는 그냥 거절한다. 찾아오는 것도 되도록 찾아오기 전에 내 조건을 먼저 이야기하고 그걸 받아들일 생각이 있을 때만 찾아오라고 한다. 처음에는 무작정 만나자고 하는 사람들을 다 만났는데, 그러다보니 미팅에서 이야기하다가 내가 조건 이야기하면 바로 거기서 미팅 종료가 되는 경우를 몇 번 겪었다. 그래서 그 뒤로는 서로 시간 낭비를 줄이고자 조건을 먼저 이야기한다.

이 정책을 시행한 이후로 미팅 회수는 엄청나게 줄었다. 평균적으로 일주일에 한두 번 미팅하던 것에서 한 달에 한 번 이하로 줄어든 것. 타격이 있을 법도 한데, 생각보다 타격이 없었던 것은 미팅에서 계약으로 이어지는 확률이 매우 높아졌다. 그래서 나는 나보고 오라고 하는 고객들은 대부분 내가 아니어도 되는 상황이었거나, 그냥 후보를 수집하는 단계였던 게 아니었나 하고 추정한다. 내가 가서 미팅하더라도 계약이 성사될 건이 아니었던 기회들이 사라진 셈이다. 덕분에 나도 일에 좀더 집중할 수 있었고, 올해는 대부분의 시간을 코딩하면서 보낼 수 있었다.

고객을 선별하지 않는다

앞서 이콜레모 외주 실패의 역사에서 보듯, 이전에는 이콜레모가 좋은 고객을 선별해 내기 위해 많은 노력을 기울였었다. 근데 지금에 와서 돌이켜보면 그 많은 회고로 얻어낸 통찰들은 아무런 쓸모가 없었다. 나쁜 고객이 나쁜 이유는 수백 가지였고, 그 중 몇 개를 피해봤자 별 소용이 없었던 것이다.

내가 고객의 아이디어를 좋다고 생각하는지 아닌지도 선별 기준으로 넣지 않는다. 내 생각이 틀릴 수도 있거니와, 설령 나쁜 아이디어라는 높은 확신이 있더라도 나쁜 제품을 만들 권리도 있는 거니까, 고객의 아이디어를 존중한다. 그래서 고객이 아이디어에 대한 의견을 물을 때는 아주 잘될 것 같다거나, 정말정말 될 리가 없다거나 하면 내 의견을 이야기해주지만, 그 외에는 답하지 않는다. 

재미있는 것은 이렇게 고객을 필터링해왔던 조건들을 다 제거하고 그냥 돈만 맞으면 일한다는 식으로 하니까 오히려 좋은 고객들만 걸린 것 같다. 일단 돈을 제 때 주지 않는 고객이 사라졌다. 매달 지급을 하다보니 가끔 밀리는 경우는 있었지만, 그런 경우에는 상당히 미안해했고, 예전처럼 배째라는 식으로 나오는 고객은 하나도 없었다. 욕설이나 막말을 하는 사람도 이 시스템을 정착시킨 이후로 1년 5개월 간 한 명도 만나지 않았다.(나는 가끔 막말을 했지만...;;) 갑질하려는 사람도 없었고, 내가 미팅하러 가는 시간도 다 돈이라는 걸 알기 때문인지 대부분의 고객은 미팅하러 오라고 요구하기보다 자신들이 찾아왔다. 같은 돈이면 내가 서울 왕복하느라 두세 시간 길바닥에 쏟을 바에야 그 시간에 코딩하는 게 낫겠지.

그렇다고 내가 항상 오라고 한다거나 하는 역 갑질(?)을 하진 않는다. 그냥 오라고 하면 두 말 없이 간다. 어차피 투입한 시간으로 돈 받는 건데 뭐. 

그리고 시간제 보수라는 시스템 때문인지 회의 시간에 일의 분량으로 줄다리기를 하는 일이 거의 없었다. 좀 무리한 듯한 기능을 요구 받을 때는 그게 얼마 걸릴지에 대한 예상을 말해주면 그냥 접는 경우도 많았고, 접지 않고 그래도 해달라고 하면 그냥 해주면 되니까 그걸로 싸울 필요는 없었다. 그래서 좀더 같은 목적을 보고 아이디어를 같이 짜낼 수 있었던 것 같다.

그렇다고 프로젝트가 항상 효율적으로 굴러간 것은 아니다. 당연히 불필요한 기능을 넣거나 중도 변경을 반복한다거나 하는 일은 계속 발생했다. 아마 스토리 포인트를 추정하면서 플래닝 게임에서 협상을 해본 팀들도 알 것이다. 기획자들이 요구한 기능에 스토리 포인트가 크게 매겨진다거나 하면 스스로 철회하는 일이 많아서 효율이 올라갈 것으로 기대하지만, 그런 일은 대개 스토리 포인트가 없었어도 협상이 가능했을 법한 뻔한 일에 대해서나 일어나고, 본질적인 차이는 별로 없다는 것을. 당연한 일이다. 스토리 포인트는 또 하나의 정량적인 척도에 불과하다. 그게 없어도 얼마든지 ROI를 예상할 수 있도록 정보를 줄 수 있다. 돈 역시 스토리 포인트와 비슷하게 좀더 구체적인 기능을 하긴 하지만, 대충 말로 전달하는 정보와 근본적인 차이가 있는 것은 아니다.

일정을 다짐하지 않되, 예측은 한다.

드라마 허준의 원작이었던 소설 동의보감을 보면 허준이 이런 말을 한다. "의원은 병을 두고 다짐을 하지 않습니다." 사람들의 예상을 벗어나는 의료 행위를 할 때마다 갑으로부터 확실히 낫게 할 수 있는 방법이냐고 다그침을 받는데, 그 때 허준이 한결 같이 하는 대답이 이것이다. 의원은 최선을 다해 의료 행위를 하나, 결과는 보장할 수 없다는 현실을 말해주는 것이다. 딱 한 번, 자신이 내건 조건을 모두 지킨다면 다짐을 두겠다고 하지만, 거의 강압에 의한 것이다.

프로그래머의 현실도 비슷하다. 구현해야할 내용에 대해 예측을 할 수도 있고, 최선을 다해 일하지만, 일정을 보장할 수는 없다. 그 현실을 받아들이도록 하는 것 뿐이다. 심지어 이것은 거의 시간제 보수에 딸려오는 조건인데도 간혹 시간제 보수는 납득하지만 그래도 확정 일정을 달라고 하는 경우가 있는데, 그 경우도 대체로 거부한다. 

예측을 말해줄 때도 불확실성 자체가 전달될 수 있도록 범위로 이야기한다. 그냥 작업 예상 시간의 평균값이나 중간값을 이야기하면 불확실성이 전달되지 않기 때문에 0.5 ~ 1일이라든가, 1 ~ 7일 같은 식으로 범위를 제시한다. 또, 범위가 넓으면 불확실성이 높은 것인데, 이걸 종종 난이도가 높은 것으로 이해하는 경우가 있어서 난이도도 따로 설명을 덧붙인다. 결제 모듈 연동은 쉬운 작업이고, 잘 될 때는 아주 금방 연동할 수 있지만, 국내 PG사의 문서가 개판이라서 파라미터 맞추면서 테스트하는 시간이 오래 걸릴 수 있어서 빠르면 1일이지만 길면 2주도 걸릴 수 있어요.라든지, 채팅 기능을 붙이는 건 어려운 일이긴 하지만 저는 여러 번 구현한 경험이 있기 때문에 3~4일이면 그럴 듯하게 동작하게 만들 수 있어요, 또는 여기 디자인대로 100% 맞추는 게 어려운 일은 아닌데 잔손이 많이 가기 때문에 5일 정도는 더 걸려요 등등. 이렇게 예측을 범위로 말함으로써 숫자와 불확실성 정보를 담고, 추가로 난이도 정보를 알려준다.

굳이 난이도를 알려주는 것은 고객이 다른 개발자를 통해서 크로스 체크를 하는 경우에 대비하는 것이다. 단순히 불확실성이 높다거나, 오래 걸린다고만 말하면 이걸 어렵다고 받아들이는 경우가 많기 때문에, "어, 이거 어려운 거 아니라던데요." 같은 사태가 생길 수 있기 때문이다. 아직 내가 이런 걸 경험한 것은 아니지만, 그 반대의 경우, 다른 개발사의 고객이 나에게 크로스 체크를 요청하는 경우가 많았기 때문에 내 고객도 그럴 수 있다고 추정하는 것이다. 

어쨋든, 예측 자체를 이런 식으로 하면 굳이 일정을 못 박으려는 시도 자체가 많이 줄어든다. 실제로 정확한 일정이 중요한 경우는 거의 없기도 하고. 일정을 정하는 것은 비용 문제 외에도 그 자체로 소프트웨어를 개발하기에 적합한 방식이 아니다.

간혹 나도 허준이 겪었던 강압과 비슷한 상황을 겪기는 한다. 이 때 나도 허준과 비슷하게 내 조건을 완벽하게 지킬 경우에 한해서 일정을 다짐해주겠다고 하는 경우는 있다. 작년에는 하나 일정이 미리 예정되어 있는 프로젝트를 하나 했는데, 다행히 시작 시점은 꽤 여유가 있는 시점이었다. 근데, 중간에 디자인을 하는 과정에서 고객의 취향이 지나치게 개입되면서 늘어지는 바람에 일정 맞추기 어려워졌었다. 딱히 일정을 쪼지는 않았지만 이대로 가면 일정이 어떻게 될지 몰라서 중간에 디자인에 고객이 개입하는 걸 중단하는 조건이 되어야 일정을 맞춰줄 수 있다고 한 적이 있었다. 다행히 고객은 내 조건을 수용했고 정확한 일정에 오픈할 수 있었다. 이 정도가 일정에 대해서 내가 양보하는 한계점이다.

요즘은 실제 사례가 좀 쌓여서, 계약 협상 단계에 예측이 필요할 때 사례들을 인용해준다. 내가 만든 앱이나 웹사이트를 보여주면서 이건 기간 얼마에 비용 얼마가 들었고, 이 프로젝트는 결과물에 비해 비용이 많이 들었는데 그 이유는 어떤 것이었으며, 이건 굉장히 빨리 적은 비용으로 마무리가 되었는데 그 이유는 어떤 것이었다는 식으로 이야기를 해주면 좀더 와닿는 것 같다.

그리고, 여전히 스타트업의 의뢰가 가장 많은데, 스타트업은 특별한 기술이 필요한 경우가 아니면 기능에 기간을 맞추지 말고 기간을 2개월로 딱 고정하고, 2개월 안에 오픈할 수 있는 만큼만 개발하자는 조언을 많이 한다. 2개월이면 대체로 서너 가지의 핵심 기능을 안정적으로 구현하고, 서버 안정화 작업도 어느 정도 갖추고, 디자인은 기본에 가까운 템플릿으로 대충 때워서 오픈할 수 있다. 물론 공급자로서의 욕심을 통제하는 것이 쉬운 일이 아니기 때문에 정말로 2개월로 충분할 정도로 다이어트된 컨셉으로 오픈하는 경우는 흔하지 않지만, 적어도 그 방향성에 공감하는 고객은 많은 것 같다.

속도를 높여야 할 때는 프리랜서를 고용한다

이콜레모에 직원이 나와 영주 둘 뿐인데다가 나는 항상 한 프로젝트에 주 2일 이상 쓰지 않다보니 때때로 프로젝트 진행 속도가 느릴 때가 있다. 이럴 때는 추가로 프리랜서를 고용해서 속도를 높인다. 규모 자체가 혼자 하기에 벅찰 정도로 큰 프로젝트는 아직 없었고, 프리랜서를 고용하는 건 대부분 time to market을 당기기 위해서다. 물론 프리랜서를 고용할 때도 고객과의 협의 하에 고용한다. 이 정도 수준의 프리랜서를 고용하면 비용이 이 정도 들고, 시간을 얼마 단축할 수 있다, 어떻게 하겠느냐 하고 묻는다. 프로젝트 초기부터 고용하는 경우는 드물다. 초기에는 사람이 많아도 효율을 내기 어렵기 때문에 내가 초기 세팅을 안정화시켜놓고 디테일이 많이 나올 때쯤부터 프리랜서 고용 제안을 고객에게 한다. 보통 내가 제안하는 시점이 효율을 내기 적절하다고 판단하는 시점이기 때문에 고객도 대부분 받아들였다.

프리랜서에게 주는 비용 역시 시간제 보수 시스템을 따르며, 고객에게 받는 금액을 그대로 토스한다. 중간에 내가 먹는 마진은 없다. 프리랜서를 관리하는 비용이 추가로 들어가지 않느냐고 할 수 있겠지만, 그것 역시 내가 쓰는 시간에 포함되기 때문에 굳이 따로 받지 않아도 된다. 시간제 보수 시스템 덕분에 내가 고용하는 프리랜서의 단가도 지켜줄 수 있는 셈이다. 

프리랜서는 보통 파이썬 개발자 구인 - 세무처리 소프트웨어 개발와 같은 식으로 채용 공고를 내서 구인한다. 내 소셜 미디어에서 포스팅을 하면 대체로 2주 이내에 적합한 사람을 구할 수 있고, 예상 외의 실력자도 가끔 만난다.

정직원을 뽑지 않고 프리랜서 형태로 고용하는 이유는 물론 고용의 유연성 때문이다. 지금 나랑 영주 두 사람 월급을 고정적으로 주는 것만으로도 제법 힘겨운데, 정직원을 한 명 더 뽑으려면 일거리를 더 안정적으로 확보할 능력이 있어야 하는데, 아직은 자신이 없다. 단가를 높게 책정하더라도 필요한 만큼 고용할 수 있다는 것이 재무적으로는 확실히 더 유리하다. 

물론 나도 여건만 된다면 정직원을 고용했을 것이다. 같이 실력도 성장하고 기술력도 쌓아가려면 아무래도 함께 지속적으로 일하는 게 유리하다. 그래서 요즘은 두 가지의 장점을 다 살릴 수 있는 조금 새로운 시도를 하고 있다. 일종의 프리랜서 동맹인데, 서로 일감도 공유하고 프로젝트 단위보다 조금 더 광범위하게 협업하지만, 각자 독립성은 유지한다. 이걸 키워나가면 일반적인 회사 형태보다 더 강력한 공동체가 될 수도 있지 않을까 하는 망상을 하는 중이다.

성과

이와 같은 외주 시스템을 정착시킨 이후로 이전까지 이콜레모가 겪던 많은 문제가 사라졌고, 매출에서도 이콜레모의 역대 매출 기록을 갱신했다. 세금계산서 기준으로 2억 2천을 넘겼다. 물론 프리랜서도 많이 쓰고 비용 나가는 게 많고 세금까지 떼니 딱히 살림살이가 많이 나아지진 않았지만, 1년 동안 안정적으로 집에 월급을 가져온 것 자체가 나한테는 매우 의미 있는 성과다. 덕분에 하우스 푸어 상황에서도 벗어났다.

예전에 지섭이랑 창업했던 초기에 그 해의 목표에 대해 이야기하다 지섭이가 매출로 목표를 세워보는 건 어떻겠냐고 했다. 보통은 매출 목표는 나쁜 목표라고 하는 경우가 많은데, 지섭이가 제시한 것은 그 이상의 의미가 있었다. 둘이서 매출 4억 달성. 이건 외주로 어떻게 해볼 수 있는 금액이 아니니 우리가 뭔가 혁신적인 성취를 이루어 내야 달성할 수 있다는 의미가 있었다. 이래저래 그 목표가 흐지부지 되긴 했지만 그 발상이 참 괜찮다고 생각했다. 근데, 만약 그 목표를 올해 세웠고 지섭이랑 같이 외주를 했다면 지섭이는 나보다 영업력도 좋고 단가도 높으니 아마 외주만으로 4억을 달성할 수 있었을 것이다. 이렇게 되고 보니 이콜레모의 여정이 무척 허무하게 느껴졌다. 막강한 팀이 갖춰져 있던 시기에 이 시스템을 발견해내고 외주 중심으로 운영했으면 지금 쯤 돈도 제법 벌고 회사도 더 커졌을 텐데. 사실 창업 초기부터 외주 전문으로 돌아설까 하는 고민을 여러 번 했는데, 그런 기분으로 외주를 했다가 끝내고 나면 빡친 기분이 되서 잘 이어가지 못했던 것 같다.

고객 만족이라는 점에서는 표면적인 지표는 괜찮지만, 이면을 들여다보면 그리 충분한 수준은 아니다. 작년부터 2천만원 이상 들어간 프로젝트의 모든 고객이 연장계약이나 합류를 제안했고, 고맙다는 말도 많이 들었다. 하지만, 난 그게 진실의 전부가 아님을 알고 있다. 뛰어난 개발자를 구하기 어렵다는 사실, 그리고 개발자가 바뀔 때 발생하는 낭비, 다른 개발자에게 실패해온 경험 등의 현실을 반영한 것이지 딱히 나를 최선의 선택이라고 생각해서는 아니라는 것을. 실제로 내 생각에도 내가 최선은 아니다 싶은 상황도 있었고, 고객 당사자가 아니라 옆에서 지켜보는 관전자들의 피드백 중에는 비싸다는 피드백도 있었다. 2천만원 이하의 프로젝트에서는 완전히 드랍한 케이스도 있었다. 나는 프로젝트할 때 고객의 노동력(?)을 많이 쓰려고 하는 편이고, 그게 또 내가 가격 경쟁력을 맞출 수 있는 방법 중에 하나이기도 한데, 그냥 맡겨놓고 "알아서 완벽하게 해주세요" 스타일인 경우는 가격 경쟁력을 맞출 수 없는 경우가 많다. 내 쪽에서 먼저 계약 해제를 요구한 건 이콜레모 역사상 처음 있는 일이니 이 시스템이 잘 안 먹힌 사례도 있는 셈.

그리고, 외주만 한다는 것은 계속 현금 매출이 발생하는 low risk low return 운영이라는 뜻이다. 근데, 나는 여기에 약간의 high return을 넣고 싶었다. 그래서 내가 생각한 전략은 스타트업 외주를 완료한 다음, 잘 될 것 같은 스타트업에는 파트타임으로 합류를 해서 약간의 high risk high return으로 포트폴리오를 만드는 것이다. 이 바닥(?)에서 농사라고 부르는 것이다. 작년에 이 전략을 수립하고 나서 바로 그런 기회가 찾아왔다. 내 생각에는 틀림 없이 성공할 수 있는 모델이었고, 첫 오픈도 그럭저럭 나쁘지 않은 수준으로 완료되었다. 하지만 이 스타트업의 CEO는 풀 타임 합류만을 원했고, 거절하자 바로 협상은 결렬되었다.

그 뒤로는 그런 일이 잘 없다가 이번에 모바일택스 건이 농사 짓기에 적합해보였고, 우여곡절 끝에 40% 시간 투자로 합류를 하면서 농사가 하나 시작되었다. 농사지만 월급을 반띵이나마 해서 받고 있고, 나머지 60%는 여전히 현금 매출 중심의 일을 하니까 risk 지수가 0에서 20 정도로 올라간 셈이다. 계속 risk 지수를 올리긴 하겠지만 50 이상으로 올리지는 않을 듯.

정리하면, 집에 월급을 가져올 수 있게 된 것, 표면적으로나마 그럭저럭 만족한 고객, 농사 시작 세 가지가 성과라고 할 수 있겠다.

극복하지 못한 문제

여러 모로 발전하긴 했으나 극복하지 못한 문제도 많았다. 중요한 문제는 대부분 시간제 보수 시스템에서 오는 문제다. 첫번째가 공치는 날의 문제. 공사판 노가다와 같은 문제다. 일감을 따지 못해서 공치는 날도 문제지만, 진행 중인 프로젝트가 있는데도 공치는 날이 있다. 올해에는 개발 프로젝트 두 개와 요청 받을 때만 작업하는 프로젝트까지 셋을 동시에 진행 중인 상황인데도 공치는 날이 생기기도 했다. 프로젝트 하나는 컨셉 재점검을 하겠노라고 고객이 잠시 개발을 중단해달라고 요청했고, 또 하나는 합류 논의 때문에 스톱된 상황, 그리고 또 하나는 작업 요청이 없었다. 그렇게 일주일 정도 비니까 나도 초조해져서 다른 프로젝트를 추가로 받고 말았는데, 때마침 새 프로젝트를 계약하고 나자 세 프로젝트가 동시에 일이 돌아오면서 숨돌릴 수 없는 상황이 되었다. 근데 일이 몰린다고 해도 내가 일할 수 있는 시간이 정해져 있으니 공치는 날을 보상 받을 만큼 돈을 더 벌 수 있는 것도 아니다. 이 정도로 심각했던 상황이 흔하진 않지만, 앞으로도 계속 발생할 수 있다.

일거리를 계속 구할 수 있을지에 대한 확신도 그렇게 강하진 않다. 앞서 프로그래머의 수급 문제를 이야기하긴 했지만, 언제까지나 이런 불균형이 유지되리란 보장이 있는 것도 아니다. 또, 일감을 내 이야기를 어디서 듣고 알아서 찾아오는 고객에만 의지하고 있는 상황인데, 최근 1~2년 간 내 평판이 좋아졌는지 나빠졌는지도 객관적으로 알 수 있는 방법이 없으니, 일이 언제 끊길지도 모르는 일이다. 다행히 아직도 일거리 의뢰는 간간이 오지만, 일거리 의뢰보다 합류 제의가 더 많이 오는 것은 프로그래머의 수급 불균형이 외주 사업에 도움이 되는 것은 아닐 수도 있다는 이야기다. 그래서 불안감이 들기도 하고, 이 때문에 고용을 늘리는 판단을 하기가 쉽지 않다. 여튼, 프로젝트 간의 타이밍 문제로 공치든, 일감이 없어서 공치든, 일이 없는 날이 생길 수 있다는 것이 가장 큰 문제다.

농사를 짓기 시작하면서 현금 매출이 줄어든 것도 문제 중 하나다. 현금이라도 좀 쌓여가면 자신 있게 확장을 할 수 있을 텐데, 매출이 줄면서 현상 유지도 빠듯한 수준이 되었다. 예상했던 것보다 좀더 압박이 된다. 그러면서도 가용 시간이 줄었기 때문에 신규 프로젝트 수주에는 더 보수적이 될 수 밖에 없다는 것도 딜레마.

이콜레모가 아니라 나 개인 입장에서 문제가 되는 것도 있는데, 쉴 시간을 내기가 어렵다는 것이다. 전술한 것처럼 공치는 날은 일당을 못 받는 날이다보니 쉰다는 판달을 쉽게 하지 못한다. 내가 하루 쉬면 돈이 얼만데... 이런 생각이 드는 것이다. 그러다보니 몸이 안 좋아도 계속 일을 하려고 하고, 놀고 싶은 거 참고 일하기도 하고, 이래저래 삶이 좀 피폐해져 가는 느낌이 들곤 한다.

주로 혼자 일하거나, 협업자들과는 리모트로만 일하기 때문에 외로움도 제법 크다. 개발자들끼리 기술적인 농담 따먹기 하는 것도 재미 중 하나인데, 거의 1년 반을 그런 거 없이 일만 하고 업무 대화만 하다보니 따분함이 밀려올 때도 있다. 

2016년

이런 저런 문제들이 있지만, 그래도 긍정적인 변화가 훨씬 컸기 때문에 2016년에도 큰 틀은 올해와 같이 유지할 것이다. 일이 끊기게 되면 좀더 파격적인 시도를 할 수도 있겠지만, 일단은 이미 확보한 고객의 일과 농사에 집중하는 것이 현명한 선택일 것이다. 그래서 2016년에 필요한 목표는 BHAG가 아니라 작은 목표들일 것이다. 그리고 아마도 회사의 목표보다 나 개인의 목표가 더 중요할 것이다.

이를테면 더 건강해지는 것. 올해에는 공치는 날 문제와 성과에 대한 압박감으로 무리해서 일하는 경우가 종종 있었는데 집에 오면 하영이랑 놀아주다보니 체력도 고갈되고 생활 리듬도 전보다 더 불규칙해졌다. 선화도 장모님도 나보다 더 힘든 상황이기 때문에 내가 발을 빼고 내 시간을 갖겠다고 하기가 어려웠다. 집안 상황은 내년에도 변하지 않겠지만, 일은 내가 좀더 컨트롤할 수 있으니 일하는 시간을 좀 줄이고 나를 위한 시간을 더 많이 확보할 생각이다. 정신적, 육체적 건강을 회복하는데 도움이 되지 않을까 싶다.

농구를 더 잘하고 싶은 것도 중요한 목표 중 하나다. 왜 이게 나에게 중요해야 하는지는 잘 모르겠지만, 그냥 더 잘하고 싶다. 매주 금요일 저녁의 농구동호회는 물론이고 매주 화, 목 낮 시간에 농구하러 가는 것도 되도록 빼먹지 않을 생각이다. 아마 건강에도 도움이 되겠지.

기술적인 목표도 있다. 그동안 만들고 싶었던 오픈소스가 여럿 있었는데, 두 가지 이상 완성하고 흥행도 시켜보고 싶다. 그동안 잡다한 boilerplate code를 줄여주는 정도의 라이브러리는 PyPI에 여럿 올려왔는데, 이제는 그것보다 좀더 중요한 문제를 다루는 오픈소스를 해보고 싶다.

고객에 대한 고민도 조금 더 진도를 나가야 할 것 같다. 지금 이콜레모의 고객이 보여주는 표면적인 만족도를 넘어서 그 이면의 NPS를 측정할 수 있는 방법이 있을지, 또 그걸 높일 수 있는 방법이 있을지 고민할 것이다.

헬조선의 여러 가지 문제에도 관심을 더 많이 기울일 것이다. 아직 아마존으로 가는 헬조선 탈출 티켓에 명확한 의사를 표하지 않았지만, 아마도 최종적으로 거절하게 될 가능성이 높다. 어차피 한국에서 살아야 한다면 이놈의 세상 좀 바꿔보고 싶다.

2015년이 내가 외형적인 성과를 내기 시작한 해라면 2016년은 좀더 나의 내면 깊은 곳에서 즐거움을 느낄 수 있는 그런 해가 되었으면 좋겠다. 

Wiki at WikiNamu