필자가 지금 글을 못적고 있는 상황에 처해있다.
그래서 뭐라도 할려고 틈날 때마다 천원마트를 작성하고 있는 실정이다. 아직 해야될 내용이 많은데 말이다.
그 시작은 개발외주(Outsourcing)문제가 불거졌기 때문이다. 대부분의 중소업체들이 인원의 부족 또는 기술력의 부족등을 이유로 아웃소싱을 진행하게 된다. 여러형태의 아웃소싱이 있지만 지금까지 회사를 다녀본 결과로는 다음과 같다.
1. 아웃소싱을 진행하는 계기
① 회사의 인원이 해당 업무를 할 수 있는 경험이 있는 사람이 없는 경우
② 사내 개발자에게 처음부터 개발을 시키는것 보다 외주 개발시 비용이 더 싼 경우.
③ 할 수는 있지만 개발기간에 맞출 수 있는 역량이 부족한 경우
④ 할 수있는 사람은 있지만, 다른 업무 진행으로 시간을 뺄 수 없는 경우
우선 ③과 ④의 경우라면, 외주 개발을 주더라도 큰 문제가 발생되지 않는다. 어느정도 경험이 있고, 시간이 없어서 못하는 경우여서 외주 개발자 또는 업체가 농간을 부리더라도 충분히 캐치해낼 수 있기 때문이다. 그런데 반대로 ①또는 ②의 상황이고, 시간이 부족한 상황이라면 외주개발업체의 양심에 모든것을 맡겨야 되는 상황이 발생된다. 개발자의 입장으로 처음에는 버닝하다가 시간이 지연될수록 능률이 떨어지는 현상을 보이는데, 이는 당연한 것이며 외주 개발자(프리랜서 또는 알바)도 사람이므로 동일하다. 그러면 이후 부족한 부분이 발생될 때, 당연히 원활한 처리가 만무하고 해당 업무는 사내 개발자에게 던져지게된다. 이 경우 가장 좋은 결과는 사내개발자가 외주처리한 데이터를 잘 분석해서 사용할 수 있는 경우이지만, 항상 녹녹지 않아서 문의를하거나 추가적인 요청을 하게 된다. 그렇게라도 처리가 되면 좋은데 이미 끝난일이므로 지원받기가 힘들고 그 상태에서 외주 개발업체(자)의 만행을 확인하게 되면 결국 최종 산출물을 사용하지 못하고, 결국 처음부터 다시 만들어 사용하는 경우가 대부분이다. 그럴때마다 매번 드는 생각은 그 돈으로 장비를 사주고 수고했다고 수당좀 더 주면 오히려 더 빨리 그리고 더 좋은 결과가 나올텐데.. 하는 생각이다.
2. 아웃소싱을 잘 시키는 방법
앞서 ①과 ②의 경우에 해당될 때 아웃소싱을 잘 하고, 최대의 결과를 얻어내는 방법은 다음과 같다.
2.1. 업체선정
① 지인이 소개해주는 업체
유사업무를 하는 지인이 소개시켜준 업체를 이용할 때 대부분, 무장해제되는 경우가 많다. 외냐면 신뢰하니까. 아는 사람이 소개시켜줬는데 설마 대충하겠어? 보통 대충하는 경우가 많았다. 그리고 최종 결과물도 예상보다 낮게 나와도 그냥 그걸로 끝난 경우를 많이 봐왔다. 아는사람이 소개한 터라 싫은 소리 하기도 그렇고... 그래서 많은 비용을 들이고도 그냥 버리는 경우가 많다.
=> 지인이 소개한 경우라면, 해야되는 업무에 대해서 확실히 설명하고, 기존에 진행 이력이 있는지는 확인하고 계약해야 한다. 만약, 계약 대상에게서 "이렇게 하면 될겁니다." 라는 말을 회의시 듣게 된다면, 그 부분은 해보지 않았다는 것을 의미하고, 해당 부분에 대해서 어떻게 지원해줄 것인지 정한 후 확실하게 계약서에 개발내역에 포함시켜야 한다.왜냐면, 될겁니다라는 의미는 될수도 있지만 안될수도 있다는 의미이고, 자신이 있거나 경험이 있다면 "됩니다"라는 대답이 나와야 한다. 그러지 아니하면 지금의 필자처럼 되는 경우를 맞이하게 된다.
② 외주 개발자 이용
외주개발자의 경우 개발하다 중간에 안된다 며 손털고 나가는 경우도 있다. 본인이 알고 있는것과 실제 필드의 상황이 다르거나, 잘모르는데 경험상 도전한 사람들이 그러하다. 따라서 외주 개발자(프리랜서, 알바)를 이용할 때 반드시 그 사람의 포트폴리오를 확인해야된다. 이건 필자가 이전에 당한건데, 중간 문서도 준댔는데 못받았고, 제대로된 결과문서 없이 엑셀시트 한장으로 끝내려고 한 경우이다. 실제 동작도 제대로 안되어서 사용하지도 못했다. 그럼에도 불구하고, 개발비와 현장 출장비는 다 받아가는 케이스였다. 실제로 중간에 필자가 개발장비를 구매하고 직접하는게 좋을것 같다고 했는데 대표가 계속 진행시켰다. 앞으로도 같이가야된다며... 확인해본바 전에 시켰던 결과물도 사용하지도 못했고, 이번에도 사용하지 못하고 폐기 되었다.
구글이나 네이버에서 프리랜서 구할때, 뭐든지 다 할수 있다고 적어놓은 사람은 피하는게 답이다. 생각해보면, 방문해서 컨설팅 받는것부터 출장비 명목의 비용을 요구하므로, 못하는 경우라 하더라도 그 사람 입장에서는 피해볼 것이 하나도 없다. 필자도 그렇게 해서 용돈이나 벌어볼까 하는 생각이 들 정도니까 말이다.
③ 전문업체 이용
가능하면 규모가 있는 전문업체에 문의하고 자문 받는것이 좋다. 그리고 정확하게 해야될 사항에 대해서 정확하게 전달해야 된다. 전문용어로는 Required Operational Capability(ROC)나 Request For Proposal(RFP) 또는 Requirements Specification(요구사항명세)서 라고하는 문서를 반드시 작성한다. 외냐하면, 해당 문서를 통해서 비용 또는 가부 결정이 되기 때문이다. 그리고 완료하지 못하였을 경우에 대한 대비를 할 수 가 있다.
2.2. 외주 시작전 준비
사실 중소기업에서 쉽지 않지만 외주 시작전에 담당자를 정해서 외주에 관련된 모든 사항에 대해서 사전 점검을 진행해야 한다. 이는 단순히 진행해야되는 기술의 분석을 이야기 하는 것이 아니라 어떻게 구현하고, 어떻게 동작하는지에 대한 전반적인 내용에 대한 분석이다. 이유인즉, 기능동작에 문제가 있을 때 해당 문제에대해서 클레임을 할 수 있어야 하는데 반해, 보통 전적으로 일임하는 사내 개발자를 투입하지 않으므로 외주 업체의 말을 단지 대표에게 전달하는 행위 이외에는 하지 못하기 때문이다. 따라서 기술적인 부분이면 어떤 구성으로 이루어져 있는지, 개발되는지 해당 내용에 대해서 파악하여야하고, 외주 범위 내에서 어떤식으로 구성되고 관리 및 동작되는지 까지는 분석이 되어야 한다. 앞서 언급했던 기존에 경험자가 있는 경우가 아니라면 반드시 해당 절차를 거쳐야 한다. 그러다 보면 오히려 내부에서 개발이 완료되는 상황까지 경험할 수도 있다. 이 경우에는 담당자를 칭찬해주면 되고, 그렇지 않더라도 외주 업체의 만행을 사전에 파악하고 계약 관계에 따라 분쟁을 사전에 막을 수 있는 조치를 할 수 있다. 납품 되면 그 다음은 오로시 내부 개발자의 몫이 되기 때문이다.
① 담당자 선정 후 관련 외주범위에 대한 사전 학습
보통 외주개발 시점보다 2~3개월 전부터 시작하는 것이 좋다. 지정된 개발자는 해당 부분의 전문가는 아니니까 말이다.
충분히 학습할수 있는 시간을 보장해주어야 한다.
② 실험용 장비
실험용장비는 미리미리 확인하고 구매 후 제공해야 한다. 담당자는 기술 구현을 위한 하드웨어 및 관련 소프트웨어 기술에 대해서 사전에 확인하고 관련 디바이스 또는 소프트웨어를 미리 구매요청하여 받아야 한다. 손귑게 구할 수 있는 경우도 있지만, 한번 구매하면 4~8주 걸리는 장비들도 있기 때문이다. 해당 장비를 구매해서 지정된 기간에 할 수 있는 범위까지 모두 진행한다.
다만 단점이 있다. 연관성이 없는 개발자에게 하라고한다면 일반적으로 개발자는 절대 대응하지 않는다는 점이다. 예를들어 시스템 개발자 한테 프론트엔드 개발 외주와 관련된 업무를 시키려 한다면, 해당 개발자는 본인 업무의 확장으로 받아들일 수 있고 이는, 보수없는 특근 및 야근을 예상하기 때문에 절대로 맡지 않으려 할 수 밖에 없다. 따라서 해당 담당자에게 분명 해야 되는 약속과 베네핏이 있어야 설득할수 있다. 그래도 안된다면 관련 인원을 새로 뽑아서 시켜야 한다. 주력으로 하는 과제라면 그렇게라도 해야하고, 그렇지 않다면 적정선에서 리워드를 약속하면서 특별임무 형태로 일이 주어져야 납득할 가능성이 많기 때문이다. 왜냐면, "내가 할 일이 아닌데 왜 나한테 시키지?"에 대한 약속 말이다. "시키는데로 할것이지 왜 반항이냐"라고 생각한다면, PM 스스로가 지정한 사람 이외의 사람에게도 동일한 잦대로 시킬수 있어야 한다. 그렇지 않다면 본인에게 떳떳하지 못한 사람이고 이런사람이 많아지면 결국 언젠가 회사는 힘들어지는 상황에 놓이게 된다. 필자의 전 회사가 현재 그러한 상황이다.
2.3. 외주개발 시작
외주개발 시작직전 회의 시 해당 담당자는 반드시 참여해야한다. 만약, 지인에 의한 소개로 인해서 하는 경우 껄끄러워질 수 있더라도, 지인보다 본인, 본인의 회사, 개발자가 소속한 회사, 원청에 손실이 발생하면 안되기 때문이다. 그리고 적당히 알고 있는 오퍼레이터의 의견은 참고로만하고, 담당 개발자가 해당 업체와 의견조율을 할 수 있도록 환경을 만들어야 한다. 필자의 회사에는 그러한 적이 없었다. 그리고 회의때 잘 모르면 괜히 아는철 하려고 "예..., 그렇죠." 하면서 모르는데 아는척 하지 말고, 미리 준비된 담당자를 통해서 이야기해야 한다. 나중에 외주 업체에게 항의하면 "회의때 이미 결정난 사항이라며, 담당 개발자의 말을 무시해 버린다. 그래서 매번 당하고 있다.
3. 외주의 마무리
외주가 마무리되었다면 산출물에 대한 확인이 필요하다. 제공된 산출물은 공히 확인되어 증명되어야 한다. 그렇지 않다면 추가적인 처리를 요청해야된다. 따라서 최초 계약 진행시 요구서에는 반드시 산출물에 대한 내용을 기록해야 한다. 해당 사항이 없다면 당연히 외주 종료가 아닌 추가 요구를 해야된다. "어째서 우리 회사는 상급업체에서 그렇게 당하면서 외주 업체에는 끌려다닐 수 없는 것인가?"라고 생각된다면 앞서 언급된 기본준비를 하나도 하지 않았기 때문이다. 그러니 내부 개발자들은 본인의 개발 업무 이외에도 추가적인 업무들을 해야되고, 이는 야근으로, 특근으로 이어짐에도 보상이 없으니 누가 하겠냐는 말이다. 따라서 외주업체든 프리렌서(알바)를 쓰더라도 최종 결과는 반드시 다음과 같은 형태로 받아야 한다.
① 중간 결과물 확인
"개발하는데 방해되니 개발된 다음 이야기 하시죠." 이런 말하는 업체는 거래해서는 안되는 업체이다. 대부분 이런 업체는 대충 만들고 문제가 생기면 알아서 하라고 한다. 또는 비용이 더 든다던지 해서 결국 회사가 포기하게 만든다. 처음부터 잭임지는 자세를 가지고 있다면 중간 결과물에 대해서 반드시 피드백 해주어야 하며, 문제 사항이 있다면 미리 알려야된다. 아니면 조용히 묻고 간다.
② 최종 결과 문서
필자가 엑셀 하나만 받고 상당히 놀랐다. 프로토콜 몇개 적혀있는 문서 말이다. 어떤식으로 통신되고 어떻게 피드백 하는지에 대한 플로우나 블록 그림 하나 없었다. 앞서서 적었지만 이 결과물은 폐기 되었다. 이후 이를 활용할 개발자는 어떤 형태로 어떤 순서로 제어되어야 되는지 알아야 응용해서 사용할 수 있기 때문에 반드시 동작과 흐름에 관련된 플로우와 관련 데이터가 필요하다. 그게 안되었다면, 해당 외주개발의 결과는 폐기될 확율이 아주 높다. 필자가 회사에서 일을하면 RoC가 아니라도 개발과 관련된 전반 플로우와 API 동작에 따른 처리, 주의사항, 환경구성등의 기분 문서는 제공하지 않은적이 없는데, 여기와서는 그런걸 받아본 적이 없다.
③ 동작할 때 까지 끝난게 아니다.
우리가 한 간에 이야기 하 듯, 개발 일이라는 것은 결국 "끝날 때 까지 끝난게 아니다". 최종 확인시에는 모든 동작까지 확인이 완료되어야 한다. 그런데 말이다. 외주 업체에서 다 되었다고 비용처리 해달라고하면 덜컥 처리해줘 버린다. 최종 확인은 실제 시제에서 정상동작할 때가 종료시점이 되어야 한다. 그런데 아는 사람이라고, 잘 몰라서 그리고 시간이 되었으니 결재를 해버린다.
필자가 초반에 2~3개월전에 담당정해서 먼저 선행 개발을 시켜야 하는 이유가 여기에 있다. 해당 담당자는 최종 자료에 대해서 검토하고, 자료에 문제가 없다면 동작까지 확인할 수 있는 기본 지식을 이미 얻은 상태이기에 최종 종료를 결정할 수 있는 유일한 사람이 된다. 그럴사람이 없다면? 더 뽑으셔야지요.
그냥 열받아서 적어봤다.
필자는 회사에서 당연히 외주일을 받아서 개발해왔다. 대기업도 있었고, 중견기업도 있었고, 대학도 있었고, 개인 사업자의 일도 당연히 회사일이니 해왔지만, 최종 산출물(개발가이드, 소스코드 분석 및 설명, 개발환경 구성가이드, 소스)을 정히 만들어서 제공해왔다. 범위가 큰 경우라면 부분적으로라도 설명하고 흐름 및 동작까지 모두 그려서 외주업체의 담당자가 개발하는데 어려워하지 않도록 제공했는데 말이다. 문의 했더니 공식 홈페이지 링크만 날리는 이러한 기본 안된 업체들은 도대체 어떻게 선정되고, 어떻게 계약되었는지 필자는 하나도 모른다. 이야기 해주지 않았고, 회의에 불러주지 않았으니 말이다. 처음 들은것과 실무에서 해야되는 업무가 광범위하게 불어나고 있는 상황이 이해가 되지 않기 때문이다. 얼마나 외주개발을 제대로 못시키면 하는 것마다 이러니...
에효..
최근댓글