[애자일] 내가 이해한 애자일

분류없음 2009.01.16 13:20
애자일을 나는 사랑한다. 왜냐하면 나를 "자유롭게" 해주기 때문에...
 
탑다운 방식의 소프트웨어 개발론은 모든 것이 통제 가능하다는 전제하에 시작한다. 하지만, 실제로 모든 것은 통제 가능하지 않다. 또한 위에서 열심히 전체의 모든 디자인을 구상하고 만들는 긴 시간동안 밑에서는 코드 한줄 안 쓰고, 펑펑 놀아야 된다. 그러다가 프로젝트가 반쯤 진행 될 무렵 전체적인 그림과 설계서가 나오면 이제 납기일을 맞추기 위해서 밤을 새고, 코피를 흘리며 코딩을 해야 하는 지옥과도 같은 시간이 오는 것이다.
 
그 부분에 애자일의 강점이 있다.
탑다운으로 모든 것을 설계를 끝내고 코딩에 들어 가는 것이 아니라 스프린트라는 작은 단위로 프로젝트 기간을 쪼개고 감당 가능할 정도의 태스크를 만들어서 전체 프로젝트를 작게 구현해 보는 것이다. 물론 스프린트 하나에 모든 것을 이루려는 것은 아니다. 다만 시험 가동해 보는 것이다. 그렇게 한 스프린트가 지나고 나면 이제 개발 조직의 효율성이나 능력이 나오게 된다. 이제 그렇게 산출된 숫자들을 가지고 다음 스프린트를 계획한다. 그 다음 스프린트는 이제 조금 더 정확하게 예상을 맞출 수 있을 것이다. 그런 식으로 iteration을 계속하면 이제 언제 쯤에 원하는 정확한 산출물이 나올지 "산술"적으로 계산이 가능하게 되고, 또한 정해진 납기일까지 나올 수 있는 산출물이 어느 정도인지 측정하는 것이 가능하게 된다.
 
따라서 납기일 일주일 전에 "못할 것 같습니다"라는 폭탄 선언은 하지 않아도 되는 것이다. 만약 납기일을 못 맞춘다면, 납기일 아주 오래 전에 그러한 "선언"을 하는 것이 가능하고, 협상의 여지를 가질 수도 있겠다. 그리고, 납기일까지 가능한 기능을 구체적인 수치를 가지고 신뢰성 있게 제시할 수 있다.
또한 코딩 인력들이 디자인 끝나는 것 기다리느라 펑펑 노는 일을 방지하고, 나중의 밤샘 코딩도 방지할 수 있는 방법이라고 할 수 있겠다.
 
여기까지 이론적인 내용이고, 실제 적용은 이론과는 정말 다르고 다르다. 왜냐하면 인간이라는 존재가 하도 복잡한 존재라서....
그리고, 왜 서두에 말한대로 애자일이 나를 자유롭게 해주는지에 대해서도...
 
그것은 다음 번에 다시...

Posted via email from bugtruck's posterous