By 한빛 리포터 1기 이아스
제가 일본에서 XP(eXtreme Programming)세미나를, 그것도 XP의 창시자인 켄트 벡(Kent Beck)이 와서 하루 종일 강연한다는 것을 들었을 때, 정말 흥분했습니다. 이렇게 좋은 기회를 놓쳐서는 안 된다... 그래서 회사에서는 결국 세미나 참가비 3만엔을 지원해주는 대신 개발 테스트용 핸드폰 구입을 저에게 종용하게 되었습니다. 지금은 NEC의 N503i가 제 옆에 있지만요.
지루하게 한달여를 기다려서 4월 19일. 벌써 몇 번은 가본 도쿄 빅 사이트, 혹은 국제 전시장이라고 불리는 곳을 가는 길은 참으로 흥겹습니다. 저는 신주쿠 근처에서 사는데, 이번에는 도쿄역까지 츄오센(中央線) 쾌속으로 가서 신바시역까지 야마노테센(山手線)으로 가고 마지막으로 국제전시장 정문까지는 유리카모메(이건 일본말로 갈매기입니다)를 탑니다. 이 유리카모메는 무인 조정 레일선인데, 전기로 가긴 가지만 묘하게도 철로가 아니고 그냥 바퀴로 갑니다. 도쿄의 유명 유흥지라고 할 수 있는 다이바, 후지 티비, 아쿠아 시티 등을 갑니다, 다리도 건너서 도쿄만을 가는데 그 경관이 아주 뛰어나죠. 물론 가는 거리에 비하면 차비는 엄청납니다. 370엔? 왕복하면 으...
아무튼 일본에서는 그런 돈을 아까워하면 아무 것도 할 수 없으니까, 무척 대범해지니 기분은 좋군요. 세미나장을 들어가기 전에 사전 등록을 확인 하고, 동시통역 청취를 위한 수신기를 받습니다. 조금 늦게 11시부터 시작했는데, 마침 그냥 의자가 아니라 책상도 있어서 노트북을 들고 간 저로서는 무척 편하더군요.
"최고의 인기 개발자"라는 말대로 정말 많은 사람이 모인 세미나였습니다. 아무튼 4명이 앉을 수 있는 책상이 적어도 3개씩 10줄은 있었으니까, 120명은 넘게 참가했지요. (나중에 다같이 실습도 했습니다...) 신기한 건 머리가 희끗하신 노년의 참가자도 꽤 많이 있었다는 사실입니다. 정말 새롭다면 새롭고, 혁명적이라면 혁명적인 개념인데도, 많은 사람이 열심히 듣는 모습에 저절로 더 열심히 노력해야겠다는 생각이 들더군요.
여기서 제가 처음 XP를 접한 기억을 더듬어보죠.
저는 작년 가을쯤 로코즌 아카데미라는 곳에서 실시하는 주말 공개강좌를 들었습니다. 마침 자바 개발자의 4대 성서들을 하나씩 파헤치고 있었는데, Design patterns, Refactoring, Antipatterns에 이어 마지막으로 다룬 것이 바로 XP였습니다. 사실 XP의 주제는 "Is design dead"라는 마틴 파울러의 화두에 대한 응답이었습니다(실제로 연사는 술자리에서 아는 사람이 "디자인은 죽었다"라고 하는 말에 격분하여 그 강연을 마련했다고 공언할 정도였지요). 제 후배 한명도 RUP(Rational Unified Process)의 신봉자인데 초기 설계를 멋지게 하면 프로젝트는 성공이며, 개발자는 그 설계에 따라 만들기만 하면 된다는 자못 진지하고 용감한 생각을 하고 있었습니다. 그런데 현실은 어떻습니까? 고객의 요구를 반영한 설계는 요지부동입니까? 개발자들은 과연 그 설계를 따를 준비가 되어있습니까? 과연 그 설계는 완벽합니까?
삼천포로 빠지는 수 많은 프로젝트가 생기는 이유는 RUP를 몰라서도 아니고, 기초 설계가 제대로 안 되었기 때문도 아닙니다. 누군가 인식 못하는 무엇인가가 있는 겁니다. 바로 패러다임의 변화입니다.
이제 켄트 벡이 소개를 받고 강연을 시작합니다.
세미나의 자세한 내용은 프레젠테이션의 주석과 동영상으로 확인하시고, 제가 강하게 느낀 것을 읊어보죠. 우선 그는 소프트웨어 개발이 "제조업"이 아님을 분명히 합니다. 이제 "서비스업"임이 점점 확연해지고 있는 가운데, 그는 소프트웨어 개발을 "대화(Conversation)"라고 칭합니다. 고객과 개발자간의 대화. 서로가 자신의 이야기(Story)를 말하고, 들어줍니다. 고객은 소프트웨어를 원하고 개발자는 그것을 만듭니다. 고객은 그것을 사용하고, 개발자는 고객의 소감에 귀를 기울입니다. 어쩌면 SK처럼 고객이 "행복"할 때까지 이어지는 대화, 그것이 소프트웨어 개발인 것입니다.
다소 힘없이 느껴졌던 그의 목소리가 점점 생기를 찾아가고, 어느덧 시간이 조금 지났다고 느껴졌을 무렵 첫 번째 세션이 끝났습니다.
저는 혼자 갔기 때문에 딱히 점심을 어디 가서 먹기는 그렇고, 마침 바이오(저의 노트북입니다.)도 충전할 겸 편의점에서 이것저것 사와서 조용한 곳에 앉아 먹으며 이런저런 생각을 했습니다. 지난 2년간의 개발동안 겪었던 일들... 결코 좋지만 하지 않은 경험이었지만, 어쩐지 너무도 빠르게 지나가버린 것 같아 스스로도 믿어지지 않을 정도였습니다.
약간 졸린 상태에서 두 번째 세션을 듣나 했는데, 결국 제가 우려했던(?) 일이 벌어지고 말았습니다. 바로 XP실습 시간이었습니다. 고객 4명, 개발자 4명 구성된 8명이 한 팀이 되어 한 시간 동안 XP 실습을 해보는 시간이었습니다. 물론 재미있는 실습이었겠지요. 일본어가 어느 정도 가능하다면요. 그나마 저는 고객편에 속했는데, 한마디도 안하고 있자 한 개발자가 묻더군요. 요구사항이 없냐고. 그래서 이렇게 대답했죠. 일본어를 잘 모른다고요. (어쨌건 동문서답이 되었군요.)
프로젝트 수행론격인 XP를 어떻게 실습할지 궁금하시죠? 학습의 효과와 흥미를 이끌어내는 재미있는 실습이었습니다. 또한 그 만큼 참가자들의 적극성도 요구되지만요. 그 순서를 잠깐 소개하겠습니다.
우선 전제는, 이 실습에서는 프로그램을 실제로 만드는 것이 아닙니다. 우스울지도 모르지만 그림을 그리는 실습입니다. ^^ . 여기서 고객은 원하는 기능을 말하고 개발자는 그에 맞게 그리는(?) 작업을 하게 됩니다. 우리 팀이 개발하고자 한 건 바로 “찻주전자(Teapot)"이었습니다.
켄트 벡은 아시는 분은 아시겠지만 굉장한 효율우선주의자입니다. 모든 것을 컴퓨터로 다 하려는 요즘 세태를 비웃기라도 하는 듯, 백지 카드를 주며 그 카드에 고객은 요구사항을 한 장에 하나씩 적으라고 합니다. (여담이지만 벡씨(?)는 팀원이 개발 일을 하는 동안에는 메일확인을 금지시킨다는군요. 당연히 메신저도 안 되지요.. 화이트보드에 요구사항 분석과 설계도에 플로우차트까지 전부 그리고 난 후 그 보드위에서 의사소통한다니, 무척 고전적인 향취까지 느껴집니다 그려. 그가 잠깐 이렇게 말하더군요. “모든 일을 컴퓨터로만 하려 하는 것은 어리석은 짓이다.” 아마 각성 좀 할 사람들 있을 겁니다, 특히 윗분들.)
자, 그 카드들이 완성되면 다음의 작업들은 개발자에게 넘어갑니다. 개발자들은 카드들을 검토하고 각 카드에 적혀 있는 기능을 그리는데 걸리는 시간(분 단위)을 적습니다. 그리고는 다시 고객들한테 물어보지요. “이렇게 분석이 되었습니다. 저희는 고객님으로부터 10분의 개발기간을 부여받았는데, (거의 대부분) 이 기능들을 이번 개발시에 모두 구현하기는 힘들 것 같으므로 우선순위를 정해 주십시오.” 물론 그리다가 시간이 남으면 다 구현하겠지요.
순서가 잡히면 개발자들은 하나씩 주전자를 그려내기 시작합니다. 우리팀 고객들의 경우 차의 종류를 선택할 수 있게 해달라는 요구가 있었는데, 사람만한 크기의 버튼(그림입니다.)을 그려 고객들을 화들짝 놀라게 했습니다. 아무튼 그리는 것을 보는 것만으로 불안했는지 앉아서 지켜보는 고객은 수시로 확인하고, 개발자는 그림 작성 경과 시간을 알리고, 예정된 스케줄을 벗어났을 경우 고객의 이해를 구하게 됩니다.
이리해서 10분의 개발기간이 끝나면 고객은 평가에 들어가고, 개발자들은 그 의견을 수렴하여 업그레이드에 들어갑니다. 그리고 이 동안에 고객은 노는 것이 아니라 미쳐 생각하지 못했던 새로운 기능도 제시하고, 또 순간순간 개발자의 질문에 답하며 전에 요구한 것 중 별로였던 것을 취소하는 등의 만행도 서슴없이 저지릅니다(물론 그래도 됩니다).
약 1시간여로 진행된 실습을 마치자 모두들 흥분된 모습이었습니다. 참가자 대부분이 개발자였겠지만, 과연 자신은 고객과 그토록 가깝게 대화를 했었나...라는 생각이 들었나봅니다.
다소 들뜬 분위기는 쉬는 시간으로 정리가 되었고, 마침 벡씨가 단상을 내려온 통에 일순 사인회장으로 변해버렸습니다. 저도 긴 줄을 서서 그가 쓴 책은 아니지만 XP installed를 현장에서 사서 멋진 사인을 받았습니다.
아! 그런데 여기서 서양인들의 사인 매너(?)를 엿볼 수 있더군요. 우선 사인을 받는 사람은 사인 해주는 사람의 이름이 적혀있는 페이지를 펼칩니다(표지는 아닙니다). 그리고 사인을 하는 사람은 그 페이지에 나온 자신의 이름을 실선으로 그은 후 그 위에 직접 손으로 사인을 하게 됩니다.
저는 잘 몰라서 대강 첫 페이지를 펼쳤는데, ‘이 책은 자신이 쓴 것이 아니라 잘못 펼쳤다"면서 그 다음 페이지의 자신의 이름이 나온 서문에 사인을 하더군요. 문화의 차이이기는 하지만 조금 무안했습니다. 후후...
마지막 세션은 그가 가장 강조하는 test에 대한 시연(JUnit라는 것이 있답니다. 그 자신도 대단히 자바 소스를 빨리 치더군요. 후루룩~ 툴은 비주얼 에이지 포 자바)을 잠깐 하고, 참가자들의 질문에 정성스럽게 답변하며 하루 일정을 마쳤습니다.
일본 개발자들이 가장 궁금해 하는 것은 무엇이었을까요? 묘하게도 페어 프로그래밍이었습니다. 우리나라나 일본이나 숙성된(?) 개발인력이 많이 부족한 관계로 막 대학이나 IT전문학교, 학원(요새 부쩍 일본에서도 많이 생기고 있습니다. 그런데 우리나라와 다른 건 국가의 재정적 지원은 없다는 것, 그리고 수강비가 끔찍하게 비싸다는 것입니다. 하루 아이애플리 개발 배우는 데 3만엔이나 됩니다. 내가 가르칠 수 있으면 1만엔에 해 주겠당...)을 마친 신입초보들을 쓰게 되는데, 일본은 기업문화상 회사에서 많은 일을 가르칩니다. 그런데 이 개발이라는 건 단순 복잡한 사무와는 달라서, 나름대로는 창조성과 개성이 넘쳐나지요. 그러다보니 팀으로 일하며 이끌고 따라오는 일들이 쉽지 않은가 봅니다. 더욱이 Open-mind와는 근본적으로 거리가 있는 이곳 정서도 그렇고, (요새 젊은이들은 많이 달라졌다고는 하지만, 근본은 어디 가지 않음) 여기저기서 들리는 질문들은 상당히 구체적인데, 벡씨의 대답은 한결같습니다. "책임감을 가져라! 프로젝트의 성공을 위해 어떻게 결정할지를 생각하라!" 아무래도 속 시원한 대답은 아니었겠지만, 무책임하며 감정적으로 움직였던 어두운 과거에 대한 많은 반성을 할 수 있는 계기가 되었지요.
저도 무척 기대하고 참관했던 세미나였는데, 살아있는 전설 아닌 전설(?)을 보게 된 감흥도 남달랐고, 뭔가 눈에 보이는 우월함을 통해 우물 안의 개구리였던 자신을 되짚어보는 좋은 시간이 되었다고 여겨집니다.
그 세미나 후에 친구와의 대화에서 저는 친구의 고객혐오증을 감지했는데, 이렇게 타일렀습니다.
"고객도 우리도 다 사람이다. 자기 잘 난 맛에 살고, 잘 아는 것도 있고, 잘 모르는 것도 있다. 그리고 무엇보다도 고객과 함께 산다."
왜 이토록 힘든 길을 선택했는지 모르겠습니다.
http://www.iasandcb.pe.kr/starbucks에 오시면 프리젠테이션 자료, 강연 동영상등의 관련자료를 얻으실 수 있습니다.
이아스님은 한빛 리포터 1기로 활동 중이며, 본인의 요청으로 필명을 사용하여 기사를 등록하였습니다. 이아스님은 현재 일본에서 자바 개발자로 활동 중이십니다.