켄트 벡의 이름을 처음 알게 된 것은 <켄트 벡의 Tidy First> 제목을 통해서이다. 사실 책보다도 정처기 공부를 하면서 'XP'에 대해서 먼저 알았다. XP는 알았지만 XP라는 소프트웨어 개발 방법론을 만든 사람이 켄트 벡인 줄도 잘 몰랐다. 그 와중에 <켄트 벡의 Tidy First>를 읽게 되었는데, XP에 관련된 내용도 있어서 그때 알게 되었다.(아직 Tidy First를 아직 끝까지 읽은 건 아니다.) 정처기 때문에 XP라는 용어에 대해서도 알게 되었고, 어쩌면 Tidy First 책보다도 이전에 켄트 벡이 쓴 책을 먼저 읽는 게 좋지 않을까 싶어서, 읽던 책을 멈추고 이 책을 먼저 읽게 되었다.
내가 읽은 <익스트림 프로그래밍> 책은 2판으로 무려 2006년에 나온 책이다. 그 이후 개정이 된 것 같지는 않다. 오래된 책이지만, 아직까지도 사람들이 많이 읽는 책인 것 같아 보인다. 정처기 책에 XP에 대한 내용이 나오고, 실제 시험에서도 XP 대한 내용도 나오는 것을 보니 여전히 중요한 게 맞는 것 같기도 하다. 일단 내가 본 정처기 책에서는 XP에 대한 부분의 용어에 대해 자세하게 풀어 설명을 안 하다 보니, XP에 대해 중요한 핵심 가치를 '의사소통, 단순성, 존중, 피드백, 용기'에 용어 정도로 나열되어 있다. 그래서 단순 암기식으로 알고만 있었지, 이게 뭐에 대한 것인지는 잘 몰랐다. 어쨌든 이 책은 XP에 대해 자세하게 설명을 하는 책이라, 위 나열된 용어들에 대해서도 정처기 책보다는 자세하게 나오기는 한다.
개인적으로 이해가 안 되는 것도 많았고, 잘 읽히지 않았던 책이다. 어쩌면 내가 아는 게 별로 없어서 더 그렇게 느꼈는지도 모르겠다. 나의 느낌과는 별개로 어떠한 용어가 이 맥락에서 무엇을 말하려는지 이해할 수 없는 것도 너무 많았다. 아무래도 번역된 책이다 보니, 번역이 매끄럽지 않은 부분들이 있어서 그렇게 느꼈던 것 같다. 그래서 사실 중도하차를 할까 생각도 했지만, 그래도 반이나 읽었던 터라 끝까지 읽기로 하고 드디어 다 읽었다. 다 읽었지만, 읽었다고 해서 다 이해가 된 건 아닌 것 같다. 그저 다음을 다시 기약하기로 한다. 지금은 읽히지 않던 게, 내가 조금 더 여러 경험을 한 후에 읽었을 때는 지금과는 다르게 읽힐 수도 있으니 말이다.
익스트림 프로그래밍(Extreme Programming, XP)의 목표는 뛰어난 소프트웨어 개발이라고 한다. 그리고 이 책은 좋은 소프트웨어 팀들이 공통으로 지닌 것이 무엇인가에 대한 켄트 벡의 개인적인 연구에 대한 결과물이다. 저자가 해봤는데 효과가 좋았던 일들과 남들이 하는 것을 보았는데 효과가 좋았던 일들을 모은 다음, 저자가 생각하기에 가장 순수하고, 가장 '극단적인' 형태로 추출해 냈다고 한다. 서문에서는 켄트 벡이 읽는 이들의 비결 목록에 넣을 만한 검증된 실천 방법도 제시한다. (이 '비결'이란 무엇인가... 에 대한 물음표도 생기는 것은 안 비밀이다. 오히려 비결보다는 성장이라고 하는 게 더 매끄러워 보인다... 뇌피셜...)
실천방법
- 지금 상황과 상관없이 여러분은 언제나 더 나아질 수 있다.
- 더 나아지는 일은 언제나 스스로부터 시작할 수 있다.
- 더 나아지는 일은 언제나 오늘부터 시작할 수 있다.
사실 이건 개발을 하는 데에만 관련된 것이 아니라, 인생을 살아가며 필요한 게 아닌가 싶다. 어떤 일을 하든 나는 더 나아질 수 있고, 더 나아지는 일은 언제나 나로부터 시작할 수 있다. 그리고 그 일은 오늘부터 시작할 수 있다는 것이다. 어떤 부분에서는 개발과 관련된 책이라기보다는 그냥 일을 하는 데에 있어서 필요한 내용들이 담겨 있는 것 같다는 생각도 많이 들었다.
익스트림 프로그래밍은 사회적 변화에 대한 것이라고 한다. 방해가 되는 습관과 양식들을 버리고, 생산성을 떨어뜨리는 방어수단들을 포기해야 한다. 그리고 우리가 할 수 있는 게 무엇인지 공개한 다음 그걸 해내는 것에 대한 이야기라고 한다. 그리하여 XP는 이전에는 우리가 상상도 못 했던 일을 성취할 수 있게 해주고, 프로그래밍 기법과 명확한 의사소통, 팀워크를 탁월하게 적용하는 것에 집중하는 소프트웨어 개발의 한 양식이라고 한다.
- 오래되고 효과가 없는 사회적 습관들을 버리고 효과 있는 새로운 습관들을 채택하는 것
- 오늘 내가 기울인 모든 노력에 대해 자신을 인정해 주는 것
- 내일은 좀더 잘해보려고 애쓰는 것
- 팀 전체가 공유하는 목표에 내가 얼마나 기여했는지를 잣대로 자신을 평가하는 것
- 소프트웨어 개발을 하는 중에도 여러분의 인간적 욕구 가운데 일부를 채우겠다고 요구하는 것
XP의 핵심 가치나 주요 실천 방법에 대해서 다시 확인은 할 수 있었지만, 그렇다고 하여 그 실천 방법들의 원리를 설명하지는 않다. 경험을 위주로 설명하여, "아 이렇게 했구나." 정도를 알 수 있었다. 결국에는 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발한다는 애자일의 의미와 크게 다르지 않았던 것 같다. 조금 더 세부적으로 나누어져 있을 뿐. 애자일 안에도 스크럼, XP, 칸반 등등이 있다고 봤는데, 이렇게 여러 개가 생겼다는 것은 그만큼 상황이 다이나믹하기 때문인 것 같다. 거시적으로 봤을 때는 의미가 같지만, 미시적으로 봤을 때는 그 개별의 상황에 적용할 수 있는 것이 다를 수밖에 없다는 것. 그렇기 때문에 이 방법이 맞다고 하기보다는, 각자의 상황에 맞게 선택을 잘해야 하는 것이 아닌가 싶다. 개인적으로 읽기 힘든 책이었다. 나중을 기약하도록 해야겠다.
'ETC > BOOK' 카테고리의 다른 글
[개발 자기계발서] 개발자 기술 면접 노트 (이남희) (0) | 2024.08.11 |
---|---|
[개발 자기계발서] 육각형 개발자 (최범균) (0) | 2024.08.05 |