소프트웨어 개발에서 선행 개발 조직의 의미

소프트웨어 기술 기반의 스타트업을 하면서 필연적으로 국내 제조 기반의 대기업과 오랜 기간 일을 했습니다. 제조 회사 내의 소프트웨어 개발 조직의 문제점을 열거하기 시작하면 끝이 없겠지만, 오늘 이야기할 문제점은 선행 개발에 대한 이야기입니다.

제조사에서 일을 한 경험이 없는 개발자는 선행 개발의 의미를 잘 모를 수 있습니다. 선행 개발이란 당장 출시 제품에 탑재될 소프트웨어가 아닌 작게는 1-2년 멀리는 3-4년을 내다보고 새로운 기술을 프로토타이핑해보는 것을 말합니다. (제가 경험한 과제는 대부분 1년 이하였습니다.)

물론 사전적인 의미의 선행 개발은 나쁠 것이 없습니다. 소프트웨어를 한 번 만들어보는 것만큼 요구사항을 확실히 이해하고, 제대로 된 설계를 도출해 내는 방법이 없기 때문입니다. 제품 출시라는 제약이 없기 때문에 좀 더 실험적인 아이디어를 적용해 볼 수도 있습니다. 선행 개발은 가장 값비싼 소프트웨어 개발 방법이기 때문에 대기업이 아니면 사실 시도해보기도 어렵습니다.

여기까진 좋습니다. 하지만 국내 제조 대기업들은 이런 선행 개발의 장점을 전혀 못 살리고 있는데 이유는 크게 두 가지입니다.

1) 선행 개발의 목표는 경험이 아닌 산출물이다.

선행 개발의 목표가 개발자들이 지식과 경험을 쌓는데 있지 않고 양산에 사용할 수 있는 유형의 산출물을 만드는데 있습니다. 프로젝트 자체가 실패하더라도 거기서 얻은 경험을 통해 다음 제품에서 시행 착오를 줄이는 것이 아니라, 선행 과제도 어쨌든 과제 책임자가 있고 실적을 평가해야 하고 결과에 대해 책임을 져야하기 때문에 실험적인 시도를 하기가 어렵습니다.

2) 선행 개발 조직과 양산 조직이 완전히 분리되어 있다.

선행 개발 조직과 양산 조직이 철저하게 나뉘어 있습니다. 때문에 선행 개발을 통해 얻은 경험은 선행 개발팀만 가지게 되고, 선행 개발을 통해 나온 결과물만 공유 받은 양산팀은 사실상 기술 부채만 떠안는 꼴이 됩니다. 당연히 양산팀은 선행 팀이 만든 산출물을 제품에 활용하기가 어렵습니다. 덕분에 양산팀은 선행팀이 제품을 모르는 아마추어로 생각하는 경우가 많습니다.

선행 조직의 예산에 대한 문제도 시행착오를 거듭하고 있습니다. 회사가 여유 있을 땐 자율성이란 명목으로 선행 조직에 독립적인 예산을 줍니다. 회사가 어려워지면 가장 만만한 것이 선행 조직이라 과제를 축소하고, 예산권을 뺏어서 양산 조직으로 넘깁니다. 이렇게 되면 선행 조직은 회사 내의 을이 되어 양산 조직이 시키는 일만 수동적으로 하게 됩니다.

제조 기업이 소프트웨어 역량을 제대로 갖추려면 제조 기반의 선행 개발 방식을 과감히 버리고 소프트웨어 개발 조직을 하나로 통합해야 한다고 생각합니다. 정말 10년 이상을 내다보고 논문과 특허를 준비하는 연구 조직은 따로 유지하고, 선행 개발 조직과 양산 조직을 하나로 통합하여 제대로 된 제품 개발을 해야 합니다.

그리고 조직 통합만 하면 사람 내보낼 생각을 할 게 아니라 개발자를 더 뽑아야 합니다. 하루 12시간 이상 일을 해도 매일 리포팅되는 버그조차 제대로 해결하지 못하는 양산 조직에서 좋은 소프트웨어 개발을 기대하는 것 자체가 어불성설입니다.

One thought on “소프트웨어 개발에서 선행 개발 조직의 의미

  1. Pingback: 소프트웨어 개발에서 선행 개발 조직의 의미 | 서광열의 코딩 스쿨

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s