#review 디자인은 죽었는가? - 마틴 파울러(Is Design Dead? - Martin Fowler)
종종 어떤 XPers들은 많은 디자인 활동과 디자인 패턴을 쓸모없다고 한다. 또 어떤 XP 비방자들은 XP를 디자인도 없는 짜보고 고치는(code and fix) 개발방식으로 회귀라고 말한다. 마틴 파울러(Martin Fowler)가 “어휴 둘 다 오해하고 자빠졌네.”라며 교통정리를 한 글이다. 자신을 소심한 XPer라고 말하며 약간 조심스러운 접근도 있지만 하나하나 항목들을 집으면서 XP에 대한 오해를 풀어주고 있다.
일단 XP가 어떤 건지 간략하게 정리하는 게 필요하다. XP가 계획된 디자인이 아니라 진화적 디자인을 지지하는 게 가장 핵심이다. 이렇게 되기 위해서는 뒤로 갈수록 소프트웨어를 변경하는 데 드는 비용이 급격하게 올라가는 걸 완만하게 만드는 게 꼭 필요해진다. 완만하게 만들지 못했다면 계속 진화적으로 디자인해야 하는데 비용이 급격히 증가하니 완전 쫑나는거. 이렇게 완만하게 만드는 게 XP이고 이 완만함을 XP가 사용하는 거다.
XP는 개발 프로세스의 하나지만, 패턴은 당신의 프로세스가 무엇이든 간에 변함없이 가치있는, 디자인에 관한 지식의 뼈대(중심)이다. 다른 프로세스에서는 패턴을 다르게 사용할 것이다. XP는 ’필요하기 전까지는 패턴을 사용하지 말라’는 것과 ’단순한 구현을 거쳐 패턴으로 진화해 가라’는 것을 강조하고 있다. 패턴은 여전히 습득해야할 지식의 중요한 한 부분이다.
진화적 디자인이 뜻하는 걸 잘 알아먹고 핵심을 파악하기가 참 어렵다. 디자인 패턴 얘기가 안 나올 수가 없지. 어떤 Xper는 디자인 패턴을 사용하지 말라고 하는데, 이건 아니라고 마틴 파울러는 얘기한다. 오히려 더 패턴을 익혀야 한다고 강조한다. 켄트 벡이 XP 실천에 패턴을 잘 맞추는 방법을 알아낼 것이라고 하는데, 2004년에 쓰인 글이니 벌써 나왔는지도 모르겠다.
XP에서는 코치(Coach)라는 역할이 있다. 기술적인 리딩을 하고 가능한 많은 기술을 경험이 부족한 개발자에게 전달하는 역할을 하는 것이다. 중요한 결정을 내리는 아키텍트 대신에 개발자들이 중요한 결정을 내릴 수 있도록 가르치는데, 이렇게 하다 보니 노련한 아키텍트가 설 자리가 애매하게 보인다. 진화적인 디자인이 제대로 되기 위해서는 그래도 누군가는 높은 디자인 품질을 위해서 결단과 노력을 계속해야 한다고 하는데, 코치 역할과 디자인 결단이 XP가 아닌 개발프로세스에서 말하는 아키텍트 역할이 아닐까 생각한다.
전혀 그렇지 않다. 다만 디자인의 성향이 바뀐것이다. XP 디자인은 다음과 같은 기술을 요구한다.
- 코드를 최대한 명확하고 단순하게 유지하려면 부단한 의지
- 필요할때 자신있게 개선시킬수 있는 리팩토링 기술
- 패턴에 관한 훌륭한 지식: 그냥 해결책으로 보는것 뿐만 아니라 언제 그것을 사용하고, 어떻게 차츰 발전시킬지를 날카롭게 판단하여야 한다.
- 현재 내려진 결정이 나중에는 변하게 될수 있다는 것을 알고, 미래의 변화에 항상 눈을 뜨고 디자인을 하는 기술.
- 디자인을 꼭 이해해야 하는 사람에게 코드나 다이어그램 특히 ’대화’를 통해서 전달하는 방법을 아는 것.
XP에 대해 잘 몰라서 오해한 게 많았는데, 이 글을 통해서 많은 오해를 풀 수 있었다. 역시 대충 알면 오해하는 법이라니깐. XP 개발 프로세스에 관심이 없어도 배울만한 게 꽤 있다.