'자바 컨퍼런스'에 해당되는 글 1건

  1. 2008/02/29 [자바컨퍼런스] 내가 진정 중요하게 생각하는 것들

[자바컨퍼런스] 내가 진정 중요하게 생각하는 것들

- 출처 : http://www.ibm.com/developerworks/kr/library/dwclm/20080226/

올해 자바 컨퍼런스에서 김창준선배님이 하신 세션. "애자일에 대한 7가지 교훈" 내용 요약이다.

켄트 벡이 눈물을 글썽인 까닭

XP의 아버지, 켄트 벡이 얼마 전 인터뷰를 했습니다. 인터넷에 그 동영상이 공개되어 있습니다. 동영상 마지막 부분을 보면 켄트 벡이 말을 하다가 감정적이 되어 눈물을 글썽이는 부분이 나옵니다. 그 때 그가 울먹이며 하는 말은 다음과 같습니다.

Patterns will make a difference when people write about stuff they care about.
사람들이 자신이 진정으로 중요하게 생각하는 것에 대해 쓸 때, 패턴은 변화를 만들어 낼 겁니다.

이번 글은 제가 제9회 한국 자바 개발자 컨퍼런스에서 발표한 내용을 정리한 것입니다. 발표 제목은 ‘애자일에 대한 일곱 가지 교훈’입니다. 제가 수 년에 걸쳐 애자일 방법론을 개인, 팀, 조직 차원에서 도입하고 적용해 보면서 얻었던 가장 귀중한 교훈 일곱 가지입니다. 비록 패턴의 형태는 아니지만 구체적 경험을 통해 얻은 교훈들로, 제가 정말로 중요하게 여기는 것들입니다. 이 이야기들을 하다 보면 저도 모르게 감정이 고조되어 가슴이 찡하고 눈물을 글썽이는 경우가 종종 있습니다.

지면 제약 때문에 일곱 가지 모두를 설명하지는 못하겠고, 그 중 두 가지만 말씀드리겠습니다. 나머지 다섯 가지(왜 이걸 하는가, 품질, 우선순위, 생명의 느낌, 끝없는 길)는 제 블로그를 통해 소개 드릴 것을 약속합니다.

삼위일체

성과, 배움, 즐거움은 결국 하나이고 모두 똑같이 중요하다.

   소셜 북마크

   mar.gar.in mar.gar.in
    digg Digg
    del.icio.us del.icio.us
    Slashdot Slashdot

첫 번째 교훈입니다. 아마 제 개인적으로 애자일이나 삶의 문제에 있어 가장 중요한 교훈 중 하나가 아닐까 싶습니다. 그래서 설명도 제일 길게 하겠습니다.

삼위일체, 영어로는 트리니티(Trinity)라고 하지요. 예. 매트릭스 영화에 나오는 여주인공 이름입니다. 삼위일체는 세 인격이 결국 한 몸이라는 말이지요. 물론 종교나 영화 이야기를 하려는 것은 아닙니다. 여기에서 이야기하려는 세 가지는 성과, 배움, 즐거움입니다.

사람들은 흔히 이런 질문을 묻습니다. 성과, 배움, 즐거움 중 무엇이 더 중요할까? 어떤 사람은 즐거움을 꼽을 것이고, 또 어떤 사람은 성과를 말할 것이고, 다른 어떤 이는 배움을 우선할 것입니다. 그리고 이런 사람들이 모이면 서로 네가 옳니 내가 옳니 다투기도 하겠지요.

저는 사실 일을 하던 초기에는 성과, 배움, 즐거움이라는 세 축이 있다는 것조차도 깨닫지 못했습니다. 성과나 배움, 즐거움에 대한 개별적 인식이 없었습니다. 그냥 일을 하는 거지요. 다만 즐거움을 막연히 좇았던 것 같습니다. 그러다가 조금씩 철이 들면서 배움에 눈길이 가기 시작했습니다. 내가 모르는 것이 많음을 점차 알게 되었기 때문이고, 또 뭔가 배울 수만 있다면 그것은 절대로 실패가 될 수 없다고 생각했기 때문이며, 또 즐겁지 않은 상황을 어찌할 수 없을 때 배움에 집중해 대리 만족을 하려고 했기 때문입니다.

그래서 학습에 몰입했습니다. 모른 프로젝트가 마치 학습 프로젝트인 것처럼 되도록 했습니다. 그러다가 윗 사람들로부터 성과에 대한 이야기를 듣기 시작했습니다. 성과가 뭐냐? 성과가 없는데 무슨 의미가 있냐? 배움을 중시하는 것은 좋은데 문제는 설득력이었습니다. 우리가 이번에 많이 배웠다는 것으로 "그래, 잘했다"라고 해줄 수 있는 상사가 별로 없다는 점이었죠.

그때부터는 성과와 배움, 즐거움 이 세 가지의 우선순위를 두고 고민하게 되었습니다. 일렬로 등수를 세워야 하는데 무엇이 일등이냐 이거죠. 고객이 말합니다. "당연히 성과가 우선이 되어야죠. 우리는 학교가 아니잖아요?" 그러면 저는 맞장구를 쳤습니다. 그런데 제 마음을 들여다 보면 배움이나 즐거움에 대한 욕구가 한구석에 분명 있었습니다. 대놓고 말은 못했지만 희망과 믿음을 버리지 않고 있었습니다.

그런데 언제부터인가 이런 고민이 서서히 사라지게 되었습니다. 제가 미투데이라는 서비스에서 썼던 글 중에서 가장 많은 미투(공감)를 받은 글이 있습니다. 2007년 4월 19일에 쓴 글입니다.

"학습과 실행은 하나다. 진정한 학습은 실행 속에서 이뤄지고, 진정한 실행은 학습을 수반한다."

일반적으로 우리는 다 배우고 나서야 만들 수 있다(learn and then build)고 생각합니다. 하지만 구성주의(constructivism) 교육철학에서는 배우기 위해 만든다(build to learn)고 합니다. 만들면서 배우는 것이죠. 실행이나 성과, 배움이 서로 유기적인 관계에 있다고 생각하게 되었습니다. 또 인지심리학과 뇌과학의 최근 연구 결과를 보면서 즐거움이 배움과 성과에 얼마나 중요한지도 알게 되었습니다. 이것은 나중에 "마음의 중요성"을 이야기할 때 다시 언급하겠습니다.

그리고 경험을 쌓아 나가면서 장기적 관점에서 성과를 내는 데 배움과 즐거움이 없으면 어렵다는 것을 거듭 느끼게 되었습니다. 또 반대로 배움과 즐거움이 지속되려면 성과가 같이 있어야 한다는 것을 느낀 경험도 많았습니다.

즐거움과 성과가 좋은 적이 있었습니다. 하지만 배움에는 신경을 쓰지 못했습니다. 그랬더니 그 즐거움과 성과가 오래 가지 못하더군요. 약발이 떨어진다고 할까요.

그러다가 언제인가 배움•즐거움•성과가 결국은 동일한 하나를 일컫는 서로 다른 이름이고, 한 물체를 다른 각도에서 본 모습들이 아닐까, 하나의 의자에 달린 세 다리가 아닐까 하는 생각이 들었습니다. 그러면서 이제까지 했던 고민들이 일거에 해소되었습니다. 진정한 배움, 진정한 즐거움, 진정한 성과는 모두 같습니다. 적어도 장기적인 관점에서는 그렇습니다.

이 생각이 들면서부터는 마음이 정말 편해졌습니다. 내 마음 속에 있었던 욕구를 감추고 억누를 필요가 없어졌고 서로 일등을 하려고 다투던 욕구들이 서로 화해하고 협력하는 상태가 되었기 때문입니다. 누가 이기냐는 사라지고 어떻게 협력할까가 되었습니다.

이런 이유로 배움과 즐거움, 성과의 상대적 중요도를 묻는 질문은 질문 자체에 오류가 있다고 봅니다. "당신은 아내를 때리는 일을 관두셨나요"라는 질문에 이미 잘못된 가정이 있는 것처럼 말이지요. 그래서 그런 질문은 부정해야 합니다. 아니 질문을 전환해야 합니다. '우리는 배움과 즐거움, 성과를 모두 중요하게 여기고 있는가. 어떻게 해야 그 세 가지를 모두 개선할 수 있을까.'

어떻게 하면 우리가 성과를 더 높힐 수 있을까라는 질문이 중요하다면, 어떻게 하면 우리가 더 즐겁게 일할 수 있을까라는 질문도 중요합니다. 또 그만큼 똑같이 어떻게 하면 우리가 더 배울 수 있을까 하는 질문도 중요합니다.

성과가 잘 나지 않는다면 스스로에게, 팀에게 자문해 보십시오. '어떻게 하면 더 즐겁게 일할 수 있을까, 어떻게 하면 더 배우면서 일할 수 있을까.' 이런 질문을 하는 것이 성과와 아무 관련이 없는 게 아닙니다. 또 이런 질문을 하면 자신이 나약하게 보일 거라 생각하면 안 됩니다. 이런 질문은 매우 중요하며 또 가치있는 질문입니다. 또 이런 질문을 하면서 떳떳할 수 있고 떳떳해야 합니다.

배움과 성과, 즐거움이 모두 중요하고 결국 하나라는데 실무에서는 아무래도 다른 두 가지의 희생 하에 성과를 중시할 수밖에 없다는 하소연을 하는 사람이 많을 겁니다. 일시적으로 다른 것을 희생해 잠깐 동안 성과를 어느 정도 빛나게 할 수는 있을지도 모르겠습니다만, 그렇게 해서는 탁월한 성과는 기대할 수 없을 뿐더러 어느 정도 성과가 있더라도 그 성과의 지속력이 떨어집니다. 반짝 스타, 한철 장사 같은 거지요. 하지만 애자일은 장기전입니다. 진화론이 장기전인 것과 마찬가지입니다.

또 반대로 배움과 즐거움은 있었는데 성과가 좋지 못했던 적이 있었다면 정말 제대로 배우지 못해서라고 생각해 볼 수도 있는 것입니다. 정말 진정으로 배움이 있다면 성과가 안 나올 수가 없습니다. 장기적으로 보면 말이죠.

일이 잘 풀려나가는 시기에는 성과, 배움, 즐거움의 균형이 쉽다고 생각할 수 있습니다. 하지만 사실 그렇지 않습니다. 일이 잘 풀려나가고 있으면 배움을 슬그머니 내려놓기 쉽습니다. 다음 글 역시 제가 미투데이에 썼던 글입니다.

"최근 하루하루 사는 데에 별도의 학습이 필요없다면 가장 위험한 때일 수 있다. 지금은 과거의 학습 덕분에 일이 잘 풀리지만 대략 반 년 후면 저장고가 바닥 날 것이기 때문에. 나의 현재 모습은 대략 반 년 전에 정해진다."

그러면 일이 잘 안 풀리는 시기에는 성과, 배움, 즐거움의 균형은 훨씬 어렵겠지요. 맞습니다. 균형은 고사하고 어느 하나도 제대로 되지 않습니다. 그럴 때에는 우리가 맹목적으로 추구하는 것 이외의 것들에 눈을 돌릴 필요가 있습니다. 성과를 추구하고 있는데 진전이 별로 없다면 배움과 즐거움을 쳐다보세요. 실패하고 있다고요? 그러면 즐겁게 실패하도록 하세요. 아, 아닙니다.

"팀장님, 어쩌죠? 제가 데이터베이스 자료를 모두 날려먹었습니다."
"오, 그래? 안 그래도 맘에 안들던 컬럼 이름이 하나 있었는데.... 세 달 고생한 게 한방에 날아갔네. 덕분에 속이 다 후련해. 우리 초심에서 다시 시작해 보자고."
"고맙습니다. 팀장님 덕분에 회사 생활이 늘 즐겁습니다."

이런 만화적인 상황이 안 생기려면 무엇이 필요할까요? 맞습니다. 즐겁게 ‘배우면서’ 실패해야죠.

정말 이 세 가지를 대놓고 추구하는 일은 쉽지 않습니다. 특히나 남들과 함께 하는 것은 정말 어렵습니다. 하지만 결국 우리가 바꿀 수 있는 것은 우리 자신뿐입니다. 그라운드 호그 데이(Groundhog Day)라는 영화가 있습니다. ‘사랑의 블랙홀’이라는 묘한 이름으로 국내에 소개되었죠. 빌 머레이 주연인데 그가 시간 함정에 빠져서 자고 일어나면 같은 날짜가 계속 반복됩니다. 그러면서 세상은 바뀌지 않지만 즉 다음날이 되면 다시 원상복귀지만 자신은 변합니다. 결국 우리가 바꿀 수 있는 것은 자신이며, 또 자신을 바꾸는 것으로 세상을 바꿀 수 있습니다. 우선은 자기 자신에서 시작하세요. 예컨대, 내가 즐겁게 일하고 있지 못하다면 궁극의 책임은 자신에게 있습니다. 스스로 즐거워지려는 고민과 노력을 해야 합니다.

이런 질문은 개인, 팀, 조직 차원에서 모두 해야 합니다. 개인, 팀, 조직 차원 각각에 적합한 책임이 있습니다. 어떻게 좀 더 즐겁게, 좀 더 성과를 내면서, 좀 더 배우면서 일할지 늘 물으세요. 이것이 인간적인 소프트웨어 개발방법이고 그것이 애자일입니다.



위로



마음의 중요성

마음 상태가 업무와 삶에 큰 영향을 미친다.

이 교훈에 대해 제가 하려는 이야기는 두 가지입니다. 마음 상태가 우리의 업무 효율에 큰 영향을 미친다는 것과 사람들이 서로의 마음을 공감하는 것이 삶과 업무 만족도를 무척 높혀줄 수 있다는 것.

애자일은 인간적입니다. 사람을 위한 방법론입니다. 그래서 어떻게 하면 좀 더 즐겁게 일할까 또는 조직, 팀이라는 사회를 어떻게 건강하게 만드는가 등의 인간적인 문제들을 많이 다룹니다. 그런데 생각했던 것보다 이런 ‘마음’의 문제가 훨씬 더 중요하다는 것을 깨닫게 되었습니다. 정말 훨씬 더 말이죠.

최근 뇌과학, 인지심리학 등의 연구를 통해 빙산의 일각이긴 하지만 우리 정신, 마음의 기전이 많이 밝혀지고 있습니다. 예를 들어, 행복하고 즐거운 마음 상태일 때 사람이 더 창의적이 된다는 것은 여러 연구를 통해 확인되고 있습니다. 세계적인 디자인/UI 연구자 도널드 노먼(Donald Norman)은 이모셔널 디자인(Emotional Design)이라는 책에서 고백합니다. '사실 자신은 기능 중심의 디자인 철학을 갖고 있었다. 제품에 있어 미학이라는 것은 고기 먹으면 공짜로 나오는 요쿠르트 같은 거라고 봤다. 하지만 생각을 바꾸게 되었다. 내가 제품을 사용할 때 감정적으로 어떻게 느끼는지가 그 제품을 어떻게 쓰고 어떤 만족도를 느끼는지에 무시할 수 없는 영향을 끼친다.'

금자씨가 뭐든지 예뻐야 된다고 했는데, 개발자들도 그 말을 해야 합니다. 우리만큼 우리 뇌의 효율에 의존하는 사람도 별로 없지 않습니까? 아름다운 환경에서는 더 편안하고 그만큼 생각이 넓어지고 실수할 확률도 줄어들고 더 창의적인 해결안을 발견할 수 있습니다. 구미가 당기지 않습니까?

그리고 아름다움 이상으로 개발자에게 중요한 것은 차분함이라고 생각합니다. 사람들은 프로그래밍을 할 때 실제 게임은 컴퓨터 화면 위에서 벌어지고 있다고 생각하기 쉽습니다. 하지만 정말 중요한 게임은 내 마음 속에서 벌어집니다. ‘어, 이게 왜 안 되지?’ ‘난 바보인가 봐’ ‘아, 쪽팔려’ 이런 마음을 편안하고 차분하며 명징하게 유지할 수 있다면 우리는 잠재된 능력을 방해 받지 않고 끌어낼 수 있습니다.
코딩을 하다가 뭔가 예상하지 못한 에러를 만났습니다. 그럴 때 우리는 즉각적으로 ‘어? 이상하다’하고 생각하면서 그냥 다시 코드를 돌려봅니다. 같은 결과이면 심증적으로 범인을 하나 지목하고는 약간 고친 다음 다시 돌려봅니다. 이런 작업을 반복하면서 머리는 더욱 열이 나고 마음은 점점 복잡해집니다.

이럴 때 다음 방법을 한 번 실험해 볼 것을 권합니다. 예상 못한 에러가 나면 즉시 키보드에서 손을 뗍니다. 그리고 '지금 도대체 무슨 일이 벌어지고 있는 거지?'라고 스스로 질문을 합니다. 눈을 크게 뜨고 현재 상황을 최대한 명료하게 파악하려고 합니다. 정보를 수집하는 데에 우선 집중합니다. 에러 메시지를 차분하게 읽습니다. 몇 번째 줄, 어떤 코드에서 에러가 난 것인지, 어떤 종류의 에러인지 차분히 글자 하나 빼놓지 않고 봅니다. 싯구를 암송하듯이 소리내어 읽어도 좋습니다. 그리고는 눈을 감습니다. 마음 속에서 코드를 탐색합니다. 어느 부분에서 잘못되었지? 거기는 무슨 일을 하는 코드지? 문제의 원인은 어디에 있을까? 그 다음 눈을 뜨고 실제 코드를 찾아봅니다. 자신의 생각과 같은지 확인합니다. 이 방법을 좀 더 확장해 적용할 수 있는데, 자세한 설명은 『테스트 주도 개발』 재출간판 역자서문에 써두었으니 참고하세요.

효과는 어떨까요? 정말 놀랍습니다. 저도 많이 놀랐습니다. 제가 이렇게 명료하게 사고할 수 있는 능력이 있다는 사실에, 마음가짐에 따라 이렇게 다른 결과가 나올 수 있구나 하는 생각에 놀랐습니다.

저는 탐험적 테스팅(exploratory testing)에 많은 관심을 갖고 있습니다. 탐험적 테스팅은 애자일 방법론과 철학적으로 상통하며 실제로도 함께 쓰이는 경우가 많습니다(특히 자동화된 테스트와 상보적 관계로 보면 상당한 시너지를 낼 수 있습니다). 미리 테스트 계획을 다 짜놓고 테스트하는 것이 아니고, 상황과 맥락에 맞게 어떻게 보면 즉흥적으로 보일 정도로 테스트하기와 테스트 설계하기, 계획하기를 동시에 해나가는 방법입니다. 특별한 테크닉이 있는 것은 아닌데, 재미있는 것은 사람의 마음 상태에 따라 나오는 큰 차이입니다. 탐험적 테스팅을 하겠다고 마음을 잡고 테스트를 하면 의외로 생각도 못했던 결함들을 쉽게 찾을 수 있습니다. 그냥 생각도 못한 결함을 찾자는 마음가짐과 간략한 가이드라인뿐이었는데, 제 경험으로 보면 신기할 정도로 그 효율이 좋았습니다.

개인 단위에서 마음이 끼치는 영향을 이야기했습니다. 이제는 사람 간의 마음 문제에 대해 이야기해 보겠습니다.

누구나 팀 내에서 마음에 들지 않는 사람이 하나쯤은 있으리라 생각합니다. 그리고 대다수는 그 이야기를 하지 않겠지요. 하지만 저는 이것이 개인이나 팀 차원에서 모두 건강하지 않다고 봅니다. 서로의 마음에 대해 공감을 하는 것이 훨씬 더 좋다고 보고 그것은 노력할 가치가 있다고 생각합니다.

애자일 컨설팅에는 원칙이 있습니다. 그날 쌓인 것은 그날 공유한다. 아무래도 우리가 사람이다 보니 서로 불만이 생기게 마련입니다. 꿍하고 덮어두지 말고 그 날 바로 공감을 하자는 원칙입니다. 하나둘 계속 참고 덮어두다 보면 변비가 생기고 숙변이 되며 나중에는 그게 얼굴로도 보이게 됩니다. 일을 하면서 자기의 마음 상태를 부정하고 마비시키며 내 몸의 일부를 꺼놓고 일을 하는 것은 정신적으로도 해롭고, 업무가 즐거워지기도 어렵습니다. 아무래도 그 사람과 협력하기보다 나 혼자 일을 처리하고 싶어져 업무 효율도 떨어지겠지요. 이렇게 마음을 인정하지 않고 무시하면 자신이 덜 인간적으로 느껴집니다.

그래서 마음 공감이 참으로 중요합니다. 하지만 마음 공감하기에도 기술이 필요한 것 같습니다. 그래서 저희는 비폭력 대화라는 대화법을 배웠습니다. 폭력을 쓰지 않으면서 서로 공감을 하는 대화법입니다. 오늘 기분이 언짢은 일이 있었다면 오늘이 가기 전에 얼굴을 보고, 혹은 이메일로 자신은 오늘 어떤 일이 있었을 때 이런 감정을 느꼈고 나는 이것을 원했는데 그것이 충족되지 못해 그런 감정을 느꼈다, 너는 어떻게 생각하냐는 이야기를 합니다. 또 반대로 상대방의 입장이 되어 그 때 너는 이런 감정을 느꼈을 것 같은데, 그것은 네가 무엇을 원했기 때문이 아니었냐는 이야기를 합니다. 어렵습니다. 하지만 우리는 노력하고 있고 그것이 매우 자랑스럽습니다.

여러분에게도 서로 마음을 열고 소통해 볼 것을 권합니다. 그리고 그걸 잘 할 수 있는 기술을 단련할 것을 권합니다. 뇌와 마음의 일부분을 꺼버리지 말고, 온전한 인간으로, 더 인간적으로 일하고 살기 위해 노력해 볼 것을 권합니다.

애자일은 사람의 역량이 중요합니다. 그래서 자신의 마음을 잘 다스리고 머리를 효과적으로 쓰는 것이 중요합니다. 애자일은 사람 간의 협력이 중요합니다. 그래서 서로의 마음을 헤아리고 서로 공감하는 것이 중요합니다.