Sunday, April 11, 2010

화물 숭배 소프트웨어공학


소위 탁상 공론이라고 불리는(?) 소프트웨어 공학에서 말하는 두가지 개발 방식에 대해 이야기하고 이것에 대한 잘못된 이해로 인해 빚어지는 만행에 대해서 알아보려 한다.

소프트웨어 공학에 대표적인 두가지 개발 방법론이 있다. 하나는 Process Oriented, 다른 하나는 Commitment Oriented 개발 방식이다. 딱 들어보면 대충 감이 온다.
Process Oriented는 정형화된 업무 프로세스에 따라서 모든 소프트웨어 공정을 처리하겠다는 것이고, Commitment Oriented는 능력이 뛰어난 개인에서 Project 전반에 대한 무제한적인 권한을 부여하고 소프트웨어 공정을 일임한다는 의미가 아닐까?

뭐 대충 내 머릿속에서 나오는 내용은 집어치우고 Steve Macconnel이 말하는 PO, CO에 대한 정의를 들어보자.

  • Process Oriented Development: 오랫동안 사용되어 오면서 그것이 효율적이다고 판명된 소프트웨어 공학 기법을 소프트웨어 공정에 도입시키는 것을 말한다. 이 Process를 적용한 대부분의 소프트웨어는 성공하게 되며, 성공을 거듭할수록 해당 Process에 대한 역량이 증가하면서 성공율은 계속적으로 높아진다. 그러나 도입 초기에는 많은 비용과 혼란을 야기하게 된다.
  • Commitment Oriented Development: Hero Oriented Development라고 하기도 한다. 해당 분야의 최고의 전문가를 책임자로 영입한 뒤에 전권을 위임한다. 개개인에 동기를 부여할 수 있게 되므로 해서 생산성 향상을 도모할 수 있다. 그러나 프로젝트의 성패가 개개인의 역량에 따라 많이 좌우되어 일관성있는 소프트웨어 품질 관리에 어려움이 있다.
뭐 항상 그렇지만 말은 좋다. 하지만 말로만 전해지다보니 오해가 생기는 것은 인류사에 항상 있어왔던 일이다. 제대로 이해하지도 않고, 왜 그런지 생각해보지도 않고 무작정 이것이 좋은 것이라는, 유명 소프트웨어 회사에서 성공적으로 도입한 것이라는, 막연한 생각에서 시작하는 조직은 항상 아래와 같은 뻔한 한계에 직면한다. (그런 조직을 사칭 조직이라 부른다)

Process 사칭 조직은 지나치게 허례허식에 집착하게 된다. 이런 조직은 필요이상으로 어떤 행동에 대한 결과를 요구하게 되며 쓸데없는 보고서나 문서들이 판을 치게 된다. Process Imposter(Process 사칭)는 이런 행위들이 성공을 위한 지름길이라 믿는다. 유감스럽게도, 결국 이런 문서들은 서랍장 속으로 들어간 뒤에 다시는 나오지 않는다. 혹시 모르겠다. 나중에 이면지로 쓰일지...
실은 인류는 이미 이런 비효율을 많이 격어왔다. 그것은 "관료 주의"라고 하는 것이다. 이런 조직은 비효율이 효율을 잡아먹고 마치 효율적인 듯 행동한다. 그리고 모든 구성원들은 그것이 비효율적인 줄은 알지만 어느 누구도 고치려 하지 않는다. Process 기반 개발에서 가장 문제가 되는 요소가 바로 이것이다. 구성원의 어느 누구도 동기를 부여받지 못한다는 사실이다. 구성원 하나 하나는 이미 Process의 톱니바퀴일 뿐이다. 그들은 결국 자신에게 할당된 Process의 한 부분만을 끝내고 나면 더이상 업무에 대해서 거들떠도 보지 않을 것이다.

Commitment 사칭 조직은 구성원에게 동기를 부여한만큼 초과 근무를 기대한다. 동기 부여를 통해서 인간의 잠재 능력을 끌어낸다는 것이 이 기법의 주 포인트이지만 종종 (사칭)추종자들은 잠재 능력이 야근인줄만 착각하는 경우가 생각보다 많다. Steve Macconnel은 이런 조직을 "Commitment를 가장한 착취 조직"이라고 정의한다. 착취 조직은 구성원에게 "어떻게 해서든 결과만 맞으면 된다"는 생각을 가지게 만든다. 결국 구성원은 착취로부터 벗어나기 위해 아무도 알아볼 수 없는 안드로메다 코드를 작성할 것이 뻔하다. 대가는 유지보수 때 돌아 올것이다. 진정한 Commitment 조직에서 강한 동기를 부여받은 구성원은 최고의 효율을 위해서 자신이 무엇을 해야 하는지 스스로 생각하게 만들 것이다.

....
Steve Macconnel이 쓴 책 "Professional 소프트웨어 개발 방법론, Chapter 3"을 보고 대충 정리해보았다. 이러면 나중에 기억하기에 좀 더 편하겠지...

No comments:

Post a Comment

주사위 놀이

Busan city, South Korea
All about programming knowledge such as Java, Flex and Oracle DB Management.

Followers