CMMI가 What이라면 Agile은 어느 정도 How 대한 해답을 줄수 있을 것 같습니다.
즉, CMMI의 높은 추상성에 대한 태생적 한계를 Agile의 구체성을 통해 상호 보완적이 될수 있습니다. 조직 레벨에서 CMMI의 프로세스 프레임워크를 기반으로 큰 틀을 잡고, 그 안에서 돌아가는 프로젝트는 얼마든지 Agile의 Practice를 도입할 수 있습니다.
Agile의 Scalability의 한계를 CMMI가 어느정도 보완할 수 있을것 같습니다.
Agile은 10명 미만의 팀에서 돌아가도록 최적화되었기 때문에 큰 프로젝트는 난 모른다고 할 수는 없겠죠? 사람이 많아지고 조직이 커지면 문서도 필요하고 형상관리도 필요합니다. 사실, Agile에서 커뮤니케이션이 중요하다고 했지 문서를 만들지 말라고 한적은 없죠. 많은 사람들이 착각하고 있는 부분이기는 하지만.. 암튼 CMMI에서 얘기하고 있는 Supporting 부분 품질보증, 형상관리, 측정 및 분석 등은 Agile Practice를 많은 사람들이 더 체계적으로 잘 돌리기 위해서는 반드시 필요합니다.
Agile 을 조직에 내제화하기 위해서는 CMMI의 조직적인 관점과 이에 상응하는 프로세스가 필요한것 같습니다.
Agile 자체는 프로젝트 개별 팀에서 훌륭하게 잘 돌아갈 수 있지만 이것을 Best Practice화하고 다른 프로젝트팀에게 전수하기 위해서 그리고 지속적인 프로세스 개선을 위해서는 Agile 프로세스 위의 또 하나의 프로세스 레이어가 필요합니다. 또한, 이 프로세스를 통해 내가 일한 좋은 방법에 대한 재사용되고 활성화가 가능합니다.
Agile이 조직에서 잘 돌아가기 위해서는 적당한 Management가 필요하고, Control이 필요하고, Risk도 식별해야하고, 측정도 해야 한다고 생각합니다.
지극히 개인적인 생각이지만.. Agile은 성선설에 가깝고 CMMI는 성악설에 가깝다고 생각합니다. Agile에서는 굳이 시키지 않아서 개인은 알아서 일을 열심히 합니다. 고객 역시 항상 옆에서 언제든지 커뮤니케이션할 수 있습니다. 하지만, 현실은 그리 녹녹하지 않죠. CMMI는 Top-Down 방식의 너무 작위적인 관리를 합니다. 마치 미래를 다 알고 있다는 듣이 초기에 모든 계획을 치밀하게 세우려고하고 그것에 맞게 개인을 끼워맞추려는 경향이 많습니다. 개인은 마치 프로세스 리모컨에 의해 컨트롤 받는다는 느낌을 지울수가 없죠. 하지만, 그럼에도 불구하고 “관리 행위”는 필요하기 때문에 “적당한 관리 행위”에 대해 개인적으로 늘 고민합니다. ”Agile Project Management”라는 분야가 있는데 이부분을 보면 아마도 체계적인 좋은 방법이 있을것 같네요.
마지막으로 Agile은 모든 것이 “인간” 중심적입니다. 물론, CMMI가 Process, People, Technology 중 Process에 Focus를 두고 있다고 하지만 인간을 배려하지 않는 프로세스는 절대로 돌아가지 않습니다. 사실, CMM에서 CMMI로 올때 CMMI가 많은 것을 통합했다고 하지만 People CMMI 와 같은 인간을 고려한 부분은 그렇게 많이 보이지는 않습니다.
개인적인 생각은 CMMI도 많은 부분을 Agile로 부터 받아들이고, Agile 역시 CMMI의 좋은 점을 받아들이지 않을까 생각이 듭니다. 실제로 컨퍼런스, 논문, 블로그 등에서 많은 시도들이 보이고 있습니다. 물론, 두 개가 완전히 합쳐질수는 없겠지만 서로의 좋은점을 공유하려는 교집합은 분명히 있으며 그것들을 조직의 특성에 따라 적절히 적용할 필요가 있다고 봅니다.