여러분의 소프트웨어 개발 환경은 어떠신가요?

간혹 소프트웨어 개발 회사를 창업하는 것이 컴퓨터 몇 대만 있으면 모두 해결되는 것으로 생각하는 분들이 있습니다. 물론 보기에는 그럴 수도 있지만 실제 핵심은 그러한 컴퓨터를 이용해서 소프트웨어를 생산하는 생산 라인을 꾸미는 것이 실제 핵심입니다. 개인적으로는 농담반 진담반으로 재미 삼아 회사를 공장으로 표현하곤 합니다. 이런 표현을 하는 데는 우리가 만드는 소프트웨어가 일반 제조업에서 생산하는 제품의 생산과정과 다르지 않기 때문입니다.
 
일반 제조업에서도 마케팅이나 영업 자료에 기반하여 신 제품을 기획하고 이 제품의 시제품을 만 듭니다. 만든 시제품을 시범 테스트하여 개량한 후 제품 생산라인을 통해 제품을 대량 생산해 냅니다. 그리고 생산해낸 제품은 시장을 통해 판매되며 고객의 요구 사항은 다시 수렴되어 제품을 개선해 나갑니다. 곰곰이 생각해 보면 소프트웨어 생산도 마찬가지 입니다. 제품 기획을 하고 프로토타이핑을 통해 시제품을 만듭니다. 해당 시제품을 알파 단계에서 테스트 한 후 다시 개선을 하고 이를 베타로 공개를 합니다. 공개 후 요청된 다양한 고객 요청 사항과 버그를 수정한 후 이를 반영하여 과정을 끊임없이 반복합니다.
 
기획-개발-품질관리로 이어지는 일련의 과정을 효과적으로 관리하기 위한 소프트웨어 생산 라인을 필수적인 사항입니다. 필자의 경험으로는 이러한 생산 라인의 중요성을 이해하는 개발 회사의 CEO가 극히 드물다는 사실입니다.
 
혹 소프트웨어 개발 회사에 종사하고 있는 분이라면 아래 질문 항목을 답을 해 보시길 바랍니다.
 
  1. 표준화된 개발 프로세스를 사용하고 있습니까?
  2. QA전담 팀이 있습니까?
  3. 외부 사용자를 대상으로 한 사용성 테스트하고 있습니까?
  4. 표준화된 개발 방법론을 사용하고 있습니까?
  5. 표준화된 개발 툴을 사용하고 있습니까?
  6. 표준화된 성능 분석 도구를 사용하고 있습니까?
  7. 소스 코드 관리 시스템을 사용하고 있습니까?
  8. 한번에 필요한 빌드를 만들어 낼 수 있습니까?
  9. 주기적인 빌드를 하고 있습니까? 일일 빌드의 경우 QA가 어렵기 때문에 주단위 정도의 빌드 버전을 생성해 내야 합니다.
  10. 버그 추적 시스템을 운영하고 있습니까?
  11. 이슈 추적 시스템을 운영하고 있습니까?
  12. 코드를 새로 작성하기 전에 버그를 수정합니까?
  13. 지속적으로 개발 일정을 관리하고 있습니까?
 
 
몇 개 정도 예라고 대답할 수 있는지요? 모두 예라고 무척 우수한 품질의 제품을 생산해내는 멋진 회사입니다. 이런 회사는 국내 현실을 볼 때 거의 드물지 않나 싶습니다. 필자가 속해 있는 회사에서도 이러한 사항들을 거의 지키고 있습니다. 그런데 문제는 모든 구성원들이 그 중요성을 알고 행하는 것이 아니라는 것이죠. 그래서 일반 공장에서 공장장이 있듯이 회사에서는 개발팀장과 제품관리팀, 그리고 CTO가 있습니다.
 
개인적인 욕심으로는 적어도 소프트웨어 개발 회사라면 위의 항목은 모두 구비하여 완벽한 생산라인을 갖추어야 할 것 입니다. 물론 위의 항목들이 하루 아침에 모두 될 수 있는 것은 아닙니다. 지속적으로 시행해나가면서 해당 회사에 맞는 것들이 장착화돼야 합니다.
 
현재 필자가 몸담고 있는 씽크프리에서는 자체 표준화된 개발 프로세스를 기반으로 이를 기획부터 전반적으로 관리하는 제품 관리 팀과 이슈 트렉커와 버그 트렉커 등을 운영하고 품질을 관리하는 QA팀, 그리고 이클립스와 UML, 그리고   jprobe 등을 표준 개발 환경으로 사용하고 있는 개발팀, 그리고 CVS와 ant 기반의 빌드 시스템 및 패키징 등을 관리하는 제품화 팀 , 그리고 고객 지원 팀 등을 운영하고 있습니다. 실제 다소 원하는 기능을 모두 만족시키지는 못하지만 공개 소프트웨어로 충분히 효과적인 소프트웨어 생산 기반 환경을 구축할 수 있었습니다.
 
개발자 여러분들도 스스로 이러한 환경을 이해하고 구축할 수 있어야 합니다. 특히, 팀장을 비롯하여 소프트웨어 개발의 책임자라면 개발에 앞서 이러한 환경 구축은 필수적인 사항입니다. 특히, 최근 들어 agile 방법론 등 extreme programming 이 확산되고 있는 상황에서 이러한 소프트웨어 생산 환경은 더더욱 중요해 집니다.
 
개인적으로는 국내 소프트웨어 개발자의 능력은 가히 세계 최고라고 확신합니다. 그러나 소프트웨어 개발 환경은 이에 못 미치는 상황입니다. 여러 가지 원인이 있겠지만 가장 큰 것은 국내 소프트웨어가 제품 개발보다는 SI로 진행되기 때문이라고 생각합니다. 국내 SI에서는 품질보다는 납기일을 이라는 현실적인 상황이 맞추기 위해서는 이러한 환경 구축은 요원하다 할 수 있습니다. 물론 제품 개발 회사에서도 이러한 것을 인지하는 회사가 많지 않은 것도 사실입니다.
 
"소프트웨어에도 명품이 있다" 에서 언급한 것처럼 명품을 만들기 위해서는 전략과 노력이 필요합니다. 소프트웨어 개발 환경 구축은 명품을 만들어 내기 위한 가장 기본적인 전력과 노력입니다.

  

Tag

jaehyunpark.kr@gmail.com