외주 개발 프로젝트의 실패율은 생각보다 높습니다. 하지만 실패하는 이유는 대부분 비슷합니다. 수십 건의 프로젝트를 수행하고 상담하면서 반복적으로 본 패턴 5가지를 정리합니다.
패턴 1: 기획 없이 개발부터 시작
"대충 이런 느낌인데, 만들면서 구체화하면 되지 않나요?"
가장 흔하고 가장 치명적인 패턴입니다. 기획서 없이 시작하면 이런 일이 벌어집니다.
- 개발 중간에 "아, 이 기능도 필요하네요" → 범위 확장
- "이거 제가 생각한 거랑 다른데요" → 재작업
- "이 부분은 당연히 포함인 줄 알았어요" → 분쟁
기획이란 거창한 것이 아닙니다. 최소한 화면별로 무엇이 보이고, 무엇을 할 수 있는지, 사용자가 어떤 순서로 흘러가는지만 정리되면 됩니다.
기획서가 없으면 견적도 의미 없습니다. "쇼핑몰 만들어주세요"는 "집 지어주세요"와 같습니다. 몇 층인지, 방이 몇 개인지, 주차장이 필요한지도 모르는데 견적을 낼 수 없습니다.
패턴 2: 가장 싼 견적을 선택
3곳에서 견적을 받았습니다. 3,000만 원, 5,000만 원, 8,000만 원. "같은 기능인데 왜 이렇게 차이나지? 3,000만 원이면 되겠지." 이 선택이 나중에 총 비용 1억 원이 되는 경우를 여러 번 봤습니다.
싼 견적의 이면:
- 주니어 개발자 투입 (시니어 대비 생산성과 품질 차이)
- 재하청 구조 (중간 마진 제외 후 실제 개발에 쓰이는 비용은 절반)
- 해외 개발자 활용 (인건비가 낮은 국가에 외주를 다시 넘김)
- 사후 지원 미포함 (납품 후 버그 수정에 추가 비용)
- 요구사항 범위 축소 (나중에 "그건 별도입니다")
해외 개발자 또는 재하청 활용의 경우, 프로젝트 기간 내내 실제 코드를 작성하는 개발자와 한 번도 직접 대화를 못 해본 케이스도 비일비재합니다. 소통은 중간 PM을 통해서만 이루어지고, 내 의도가 정확히 전달되었는지 확인할 방법이 없습니다. 버그 수정을 요청하면 시차 때문에 꽤 긴 시간이 지나서야 수정이 오는데, 막상 확인해보면 그 버그는 고쳐졌지만 또 다른 버그가 기다리고 있습니다.
이런 구조가 소규모 업체에서만 있는 것도 아닙니다. 국내에서 꽤 이름이 알려진 업체들도 실제 개발 인력의 80~90%를 해외에서 운영하는 경우가 많습니다. 미팅에 나오는 PM과 일부 시니어만 국내 인력이고, 실제 코드를 작성하는 대부분의 개발자는 해외에 있는 구조입니다. 100% 해외 인력이 아니기 때문에 클라이언트가 이 사실을 인지하기 어려운 경우도 많습니다.
냉정하게 생각해보면, 끊임없이 소통하고 함께 개선해도 성공할까 말까 하는 게 서비스입니다. 그런데 실제로 코드를 작성하는 개발자 얼굴을 딱 한 번 보고, 이후로는 연락도 어렵고, 내 요청이 건너 건너 전달되는 구조에서 — 그 서비스가 성공할 수 있을까요?
가격이 아니라 누가, 어떻게, 어디까지 만드는지를 비교해야 합니다.
패턴 3: 중간 확인 없이 최종 납품만 기다림
"전문가한테 맡겼으니 알아서 잘 해주겠지."
3개월 후 결과물을 받아보면 기대와 전혀 다른 것이 나옵니다. 이 시점에서 수정하면 사실상 처음부터 다시 만드는 것과 같습니다.
월 1회 보고서는 중간 확인이 아닙니다. "80% 완료"라는 텍스트와 스크린샷 몇 장은 실제 진행 상태를 보여주지 않습니다.
최소 월 1회 이상, 실제로 동작하는 결과물을 직접 만져보고 확인해야 합니다. 주기가 짧을수록 좋습니다. 방향을 자주 확인하면 큰 이탈이 발생하지 않습니다. 3개월 뒤에 전체를 뒤엎는 것보다, 중간중간 작은 수정을 하는 것이 양쪽 모두에게 효율적입니다. (프로덕트 메이커에서는 격주마다 동작하는 결과물을 공유합니다.)
패턴 4: 기술 스택을 클라이언트가 지정
"Flutter로 해주세요." "Node.js로 해주세요." "MongoDB 쓰세요."
기술에 대한 이해가 있어서 요청하는 경우도 있지만, 블로그 글 하나 읽고 결정하는 경우가 더 많습니다. 문제는 서비스의 특성에 맞지 않는 기술을 강제하면 나중에 대가를 치른다는 것입니다.
- 실시간 처리가 핵심인 서비스에 배치 처리에 적합한 아키텍처를 선택
- 소규모 MVP에 대규모 마이크로서비스 아키텍처를 적용
- 팀에 경험이 없는 기술을 트렌드라는 이유로 도입
흔한 실수 — 쇼핑몰을 네이티브 앱으로 개발하는 경우:
쇼핑몰을 Flutter나 React Native 같은 앱 기술로 개발하는 경우가 있습니다. 앱이 더 빠르고 좋을 거라는 생각에서입니다. 하지만 쇼핑몰의 핵심 트래픽은 검색엔진에서 옵니다.
네이티브 앱은 검색엔진에 노출되지 않습니다. Google, Naver에서 "여성 원피스"를 검색했을 때 앱 안의 상품이 검색 결과에 나오지 않습니다. 이 트래픽을 포기하면 광고비로 메워야 합니다. 마케팅 비용이 기하급수적으로 늘어납니다.
이런 경우 웹 서비스를 기반으로 하고, 웹뷰를 통한 하이브리드 앱으로 만드는 것이 훨씬 합리적입니다. 웹은 검색엔진에 노출되어 자연 유입(오가닉 트래픽)을 받고, 앱은 웹뷰로 감싸서 푸시 알림, 앱스토어 존재감 같은 앱의 장점만 가져가는 전략입니다. 개발 비용도 절감되고, 마케팅 비용이 획기적으로 줄어듭니다.
반대로, 개발사 쪽이 특정 기술을 고집하는 경우도 주의해야 합니다. 그 개발사가 해당 기술의 개발자만 보유하고 있어서, 고객에게 정말 적합한 기술보다 자기네가 할 수 있는 기술을 제안하는 것일 수 있습니다. "저희는 모든 프로젝트를 OO으로 합니다"라는 말은, 다양한 선택지를 검토할 역량이 없다는 의미일 수도 있습니다.
"요즘 뜨는 기술"이 아니라 "이 서비스에 맞는 기술"을 선택해야 합니다. 기술 선택은 개발사에 맡기되, 왜 그 기술을 선택했는지 설명을 요구하세요. 합리적인 근거를 설명할 수 있는 개발사가 좋은 개발사입니다.
패턴 5: 유지보수를 고려하지 않음
개발이 끝나면 프로젝트가 끝났다고 생각합니다. 하지만 실제로는 출시 후가 시작입니다.
- 운영 중 발견되는 버그
- 사용자 피드백에 따른 기능 수정
- OS 업데이트에 따른 호환성 대응
- 서버 비용, SSL 인증서 갱신 등 인프라 관리
납품 후 유지보수 계약이 없으면:
- 개발사에 연락이 안 됨 (이미 다른 프로젝트 진행 중)
- 수정 요청 시 "새로운 프로젝트로 계약해야 합니다"
- 다른 개발사에 맡기려 해도 코드 인수인계가 안 되어 있어 불가능
- 결국 처음부터 다시 만드는 상황
계약 시점에 납품 후 최소 3~6개월의 무상 버그 수정 기간, 유지보수 비용 구조, 소스코드 인수인계 방법을 명확히 해야 합니다.
실패를 예방하는 체크리스트
개발사에 의뢰하기 전에 이것만 확인하세요.
- 화면별 기능 정의서가 있는가? (없으면 기획부터)
- 견적서에 투입 인력, 범위, 사후 지원이 명시되어 있는가?
- 중간 결과물을 격주로 확인할 수 있는가?
- 기술 선택에 대한 합리적 설명을 받았는가?
- 납품 후 유지보수 조건이 계약에 포함되어 있는가?
- 소스코드 인수인계 범위가 명확한가?
하나라도 '아니오'가 있으면, 그 부분을 먼저 해결하고 시작하는 것이 결과적으로 빠릅니다.
*프로젝트 시작 전 기술 방향이나 기획 검토가 필요하시다면, 프로젝트 상담을 통해 편하게 문의해 주세요.*
외주개발,실패사례,프로젝트관리,주의사항,개발사선택