애자일 컨설팅의 김창준님의 글로 추정 되는 글을 얻었습니다.
진정 깊이 있는 S/W 개발자가 되고 싶습니다.
종종 능력 미달의 아픔을 가끔씩 느낄 때 마다 전진을 못 하기 주저 앉기 도 합니다.
게으른 인간의 표상이 그렇듯 앉다 보니 눕고 눕다 보니 쉬었다가 가게 됩니다. 그러다 보니
뛰는 남들 뒤태만 보고 가게 됩니다. 저마다 명백히 보이지 않는 앞길을 달리고 있기에, 가끔은
보이지 않는 길을 전력으로 달리다 누워있는 몸을 밟고 가는 경우도 있기도 합니다.
안개속을 뛰어도 가까이 오면 보이기 마련이고, 살짝 뛰어 넘을 수 도로 있는 것을 여지 없이
밟고 넘어 가는 경우가 많기도 합니다. 아프기도 하도 서운 하기도 합니다.
너무나 늦게 깨우치기 시작해 게을러 지지 않으려 합니다. 만학도의 심정으로…
=====================================================================================
소프트웨어(SW) 개발방법론 분야에서 SW엔지니어링 진영과 애자일(Agile) 진영의 논쟁은 끊이지 않고 있다. SW엔지니어링의 대표적인 방법론은 RUP(Rational Unified Process)이며, 애자일 진영은 SCURUM, XP를 들 수 있다.
이 두 접근방식이 상이한 방법으로 이뤄져 있다보니 이런 논쟁을 부추기는 측면이 있다. 하지만 두 방법론을 뒷받침하는 핵심적인 아이디어는 상호보완적이다. 따라서 중요한 것은 어떻게 두 방법론의 장점을 잘 조화시켜 나가는가 하는 점이다.
SW 업계 종사자들은 변화를 좋아한다. 이런 방법론을 썼다가 다른 방법론에 심취하는 등 극과 극을 달리기도 한다. 어떤 이들은 항상 새로운 시도를 하지만 끊임없이 쏟아지는 새로운 방법론에 회의를 갖기도 한다. 우리 주변에서는 통합모델링언어(UML)로 모델링했다가 애자일 방법론이라는 또다른 극단으로 몰려가는 것을 쉽게 볼 수 있다. 요즘 신세대 개발자들은 애자일 방법론에 심취해 있고, 고참 개발자들은 RUP에서 애자일 방법론으로 선회하기도 한다.
과연 이런 극단적인 변화는 옳은 것인가. 애자일 방법론만이 민첩성을 보장해주는가. 필자는 애자일 방법론에 대한 잘못된 이해가 이같은 불필요한 논쟁을 불러일으킨다고 생각한다. 오늘날 민첩하지 않은 방법론을 좋아할 사람은 없다. 필자 역시 애자일 방법론의 열렬한 팬이다.
지난해 3월 영국에서 애자일 분야의 전문가들과 함께 패널 토론에 참여한 적이 있었다. 이 패널을 기획했던 사람은 내가 애자일 방법론에 대해 반대 의견을 내기를 바랬던 모양이다. 하지만 그들의 예상은 빗나갔다. 청중들은 패널 참석자들에게 애자일 방법론이 무엇인지에 대해 정의해달라고 했다. 자칭 애자일리스트(agilest)들은 가장 중요한 특징으로 반복 개발을 제시했다. 하지만 이는 잘못이다. 반복개발은 RUP의 핵심 프랙티스 중 하나이자 기본사상이다. 그런데 RUP를 비판하는 애자일 진영에서 반복개발을 자신만의 중요 특징이라고 주장하는 것은 문제가 있다.
애자일 방법론은 세 가지 특징을 지니고 있다. 우선 애자일 방법론은 어떻게 하나의 팀으로 일할 것인가, 어떻게 사람들을 고무시킬 것인가, 어떻게 협동할 것인가에 대한 사회공학이라는 점이다. 이는 가장 중요한 특징이자 다른 방법론과 차별화하는 요소이기도 하다.
또 애자일 방법론은 가벼운 프로세스이다. 명시적 지식에 기반한 RUP와 달리 암묵적 지식에 기초하고 있다. RUP가 좋은 프랙티스를 서술하고 있는 데 비해 애자일 방법론은 사람들이 좋은 SW를 개발하는 데 필요한 지식을 머릿속에 가지고 있다고 가정한다.
세 번째 애자일 방법론은 새로운 기술 프랙티스를 거의 제시하지 못하고 있다는 점이다. 이 점이 애자일 방법론의 가장 약한 부분이다. 반복적 및 점진적 개발(iterative and incremental development)은 새로운 아이디어가 아니다. 사용자 스토리는 단순화된 유즈케이스의 일종이다. 굳이 예를 들자면, `테스트 주도 개발’ 정도가 흥미로운 새 아이디어라고 할 수 있다. 애자일 방법론의 기술 프렉티스가 시시하다는 것을 말하려는 것이 아니다. 만약 애자일 방법론이 단지 이런 아이디어로만 구성돼 있다면 우리가 이 방법론에 관심을 가질 이유가 없었을 것이라는 점이다.
SW엔지니어링과 애자일 방법론은 SW개발의 다른 측면들을 다루고 있다. 전자가 기술 프랙티스에 관한 것이라는 것이면, 후자의 장점은 사회공학이라는 점이다. 따라서 상호보완적이다. 문제는 이 둘의 장점만을 취할 수 있느냐는 점이다. 물론 가능하다. 두 방법론의 기술 프랙티스도 공존할 수 있다.
이를 위해서는 프랙티스에 대한 새로운 개념을 정립할 필요가 있다. 프로세스는 프랙티스의 조합일 뿐이다. 따라서 기존의 수동적이고 획일화된 거대한 2세대 프로세스를 논하기보다 능동적이면서도 프랙티스 중심적인 3세대 프로세스에 주목해야 한다.
===================================================================
정정 합니다.
//위 글은 RUP를 만든 세 명 중 한 명인 이바 야콥슨의 글을 번역한 것입니다.//
라고 어떤 분이 제보를 해 주셨습니다.
감사합니다. ^^ 다음엔 그냥 공개로 남겨 주세요..^^
=================================================================