SW 외주 개발을 의뢰하는 분께 드리는 조언

프로그래밍, 다지인 따위의 소프트웨어 개발 작업을 외주 업체에 의뢰하는 경우가 있습니다. 정부나 대기업의 대규모 프로젝트로부터 스타트업이나 개인의 소규모 프로젝트에 이르기까지 아웃소싱 프로젝트 종류는 다양합니다. 하지만 외주 용역으로 성공적인 결과를 얻기란 생각처럼 쉽지 않습니다.

저는 스타트업을 운영하면서 외주 프로젝트의 의뢰인과 개발사 양쪽 모두의 역할을 수행해 보았습니다. 초기에 개발자 구하느라 어려움을 겪는 과정에서 외주 발주를 고려해 보았고, 지금은 외주 개발 의뢰를 받고 있습니다. 이러한 경험을 바탕으로 외주 개발 용역을 의뢰하려는 분들께 몇 가지 조언을 드리고자 합니다.


첫째, 아웃소싱 대상 프로젝트는 기술 중심 사업이 아니어야 한다! 핵심 기술 개발을 외주 업체에 맡기는 것은 어불성설입니다. 사업 자체가 주요 사업이 아니거나, 주요 사업이라도 IT가 필요는 하지만 사업에 필요한 핵심 역량은 IT 기술이 아닌 영업, 유통 등의 다른 것인 경우에만 외주 개발을 맡기는 것이 좋습니다.

둘째, 싼게 비지떡이다! 소프트웨어에는 정해진 값이 없습니다. 그래서 싸고 좋은 업체를 찾으려고 합니다. 하지만 단언컨데 싸고 좋은 소프트웨어 개발 업체는 없습니다! 저렴한 업체 찾으려다 불량 업체 만나서 낭패를 볼 가능성이 훨씬 큽니다. 저렴한 업체가 아닌 확실한 업체를 만나는 것이 진정 예산을 아끼는 길입니다.

하드웨어나 일반 내구성 소비재의 경우 품질은 좀 아쉽지만 그럭저럭 쓸만은 하면서 값은 싼 제품이 있습니다. 하지만 소프트웨어의 경우에는 제품이 완성되거나 망하거나 딱 두 경우만 있다고 보시면 됩니다. 적당히 싸고 적당히 좋은 소프트웨어 같은건 없습니다. 예산 좀 아껴보려고 저렴한 업체를 골랐다가 시간은 시간대로 돈은 돈대로 버리고 원하는 결과를 얻지 못하는 경우를 자주 봅니다.


예산이 부족하다면 먼저 개발 범위를 가장 작게 줄이셔야 합니다. 개인적인 욕심을 배제한 비즈니스 우선 순위를 바탕으로 기능을 정말 꼭 필요한 핵심 가치 위주로 가장 작게 줄여보세요. 군더더기를 빼고 핵심 가치에 집중하면 예산과 시간을 아끼고 개발될 소프트웨어의 품질도 높일 수 있습니다. 핵심 가치에만 집중하고 나머지를 모두 덜어내면 자연스럽게 요구 사항이 명확해지기 때문입니다. 요구 사항이 명확할 수록 소프트웨어 개발 프로젝트의 성공 가능성은 높아지고 프로젝트 단가 또한 낮아집니다.

설사 저렴한 업체가 어찌 어찌 제품을 만들어 냈다 한들 코드 품질은 보장하기 어렵습니다. 코드 품질은 일반 사용자는 느낄 수 없지만 개발 용역이 끝난 이후에도 사업을 계속 진행해야 하는 클라이언트 입장에서는 매우 중요합니다. 코드 품질과 가독성이 조악한 경우 용역이 끝난 이후 다른 엔지니어가 이어서 개발을 할 수 없습니다. 최초로 개발한 업체만이 코드를 유지/보수 할 수 있으므로, 클라이언트는 업체에게 계속 끌려다닐 수 밖에 없죠. 심지어 유지 보수를 포기하고 처음부터 다시 개발하는 경우도 비일비재하고요.

그런데 비싼 업체가 반드시 좋다는 보장도 없습니다. 돈만 많이 받고 뒤통수 치는 악덕 업체 만나지 말란 법도 없죠. 따라서 외주 용역을 의뢰하는 클라이언트가 확실한 업체를 고를만한 안목을 가진 경우가 사실 가장 이상적입니다. 아니면 믿을만한 업계 지인의 추천을 받는 것도 좋습니다. 하지만 아는 업체라고 싸게 하려 했다가는 관계도 잃고 프로젝트도 망칠 수 있습니다. 오히려 아는 업체니까 안심하고 제 값 주고 맡길 수 있다는 마인드로 접근해야 합니다. 확실한 업체와의 좋은 관계 형성은 이후 사업을 지속하는데 큰 힘이 됩니다.


셋째, 거듭되는 하청을 조심하라! 하청에 하청이 거듭되는 경우는 특히 프로젝트 금액이 큰 대규모 프로젝트에서 종종 발생합니다. 대규모 프로젝트 영업과 수주 역량이 있는 업체가 프로젝트 수주 이후 실제 개발은 다른 업체에게 하청을 주곤 합니다. 물론 하청을 주게 되면 최초 프로젝트를 수주한 업체가 마진을 챙기기 때문에 실제 개발사에게 돌아가는 대가는 그만큼 줄어들게 됩니다. 하지만 기술 개발에 대해 잘 알지 못하는 정부나 대기업 실무자 입장에서는 평소 관계를 쌓은 기업에 일을 맡기는 것이 아무래도 편합니다.

물론 하도급을 꼭 나쁘다고만 볼 수는 없습니다. 특히 대규모 프로젝트의 경우 제안서 작성, 영업 등 프로젝트 수주에 많은 절차나 인맥이 필요하기 때문에 일반 개발사가 이를 처리하기 어려운 경우도 많습니다. 각기 다른 기술과 역량을 가진 업체가 협업해야 하는 경우도 있고요. 하지만 하청에 하청이 거듭되면 그 프로젝트는 결국 재앙이 되고 맙니다. 흔히 말하는 한국 IT 갑을병정의 현실이 바로 이것이죠.

하청에 재하청이 거듭되면 각 단계마다 업체가 마진을 챙기기 때문에 실제 개발사는 그 만큼 착취를 당합니다. (최악의 경우 처음부터 발주처가 리베이트를 챙기는 경우도 있습니다.) 하청에 하청에 하청이 거듭되면서 실제 개발사가 받는 대가는 최초 프로젝트 발주 가격의 30% 이하로 떨어질 수도 있습니다. 따라서 프로젝트의 전체적인 퀄러티나 성공 가능성 또한 현저히 떨어지게 됩니다.


소프트웨어 개발 프로젝트가 실패하는 가장 근본적인 이유는 바로 고객의 요구 사항이 과도하거나 불명확하기 때문입니다. 자기가 원하고 필요한 것을 스스로 정확히 파악하고 설명할 수 있는 사람은 없습니다. 써보기 전에는 모릅니다. 하지만 스스로 충분히 고민해서 원하는 바를 비교적 정확히 안다고 착각하는 사람은 많습니다. 또한 SW 개발에는 항상 많은 변수가 따릅니다. 능력 있는 개발팀은 이러한 상황을 반드시 염두에 둡니다. 그래서 언뜻 보기에 좋은 개발팀은 지나치게 비싸고 까다로워 보이는 것입니다.

소프트웨어 개발 프로젝트가 실패하는 또 다른 원인은 바로 개발자의 경험 미숙과 책임감 부족입니다. 고객이 SW 프로젝트의 현실을 모른 채 모호한 요구사항을 바탕으로 저렴한 업체를 찾다보면 미숙한 개발자를 만나게 됩니다. 이들은 그들의 기술력을 과신하고 SW 개발 프로젝트의 어려움은 간과합니다. 프로젝트를 수주할 때는 뭐든 다 될 것 처럼 듣기 좋은 약속을 남발하다가 결국에는 책임을 회피합니다.

성공적인 소프트웨어 개발을 원하신다면, 먼저 개인적인 욕심을 배제한 비즈니스 우선 순위에 입각하여 개발 범위를 꼭 필요한 핵심 가치 위주로 줄여보세요. 작품이 아닌 제품을 만드셔야 한다는 점을 꼭 기억하세요. 그리고 저렴한 업체가 아닌 확실한 업체를 찾으세요. 업체 선정 과정에서 IT 업계 지인의 조언을 구하는 것도 좋은 방법입니다. 소프트웨어 개발에는 항상 많은 변수가 따른다는 사실을 염두에 두시고, 확실한 업체를 만나 서로 존중하며 일을 차근차근 진행한다면, 실패 위험을 줄이고 성공에 한 걸음 더 다가설 수 있을 것입니다.

댓글 없음: