프로그래머 32 :: 2010/08/09 11:37
|
|
3.4. 에리만토스의 멧돼지
팀에서 말이 많은 사람 1, 2위를 가리자면 허동수, 박팀장 순서였습니다. 박팀장이야 워낙 사람 챙기기를 좋아하고 업무상 지시할 것도 많으니 말이 많은거야 어쩔 수 없다고 해도, 허동수는 워낙에 입담이 좋은 사람이었습니다. 첫인상은 차분하고 조용했는데 술자리를 몇 번 가지면서 본색을 드러내더니, 나중에는 두 사람 이상이 모인 자리의 대화는 무조건 독점하다시피 할 정도였죠.
하지만 그날 허동수는 어쩐지 조용했습니다. 유식이 대신 떠들고 있었죠. 늦게 점심을 먹으러 온 탓인지 식당은 한산했고, 에어컨 바람에 뒤섞인 볕은 적당히 따스했습니다. 나와 선화, 박팀장과 허동수, 그리고 남기수는 그의 말에 조용히 귀를 기울이고 있었습니다. 적당히 고개를 끄덕거려 주면서요.
“솔직히 산드라 블록을 ‘데몰리션 맨’에서 처음 봤을 때 만 해도 저렇게 뜰 줄은 몰랐어요. 나중에 사만사 매티스, 리버 피닉스와 ‘콜잇 러브’에서 연기한 걸 보고 ‘저런 연기도 할 줄 아는구나’, 하고 생각했었죠. ’스피드‘를 본 건 그보다 훨씬 전인데, 그 영화의 주인공은 산드라 블록도 아니었고 키아누 리브스도 아니었어요. 스피드 그 자체였죠.”
유식은 영화를 좋아했습니다. 언제 영화 볼 시간이 났는지 궁금할 정도로, 그는 많은 영화를 봤고 배우들의 계보를 꿰고 있었죠. 이달 팀웍 행사일에 영화를 보자는 이야기가 나왔는데, 하필 그 영화의 주연이 산드라 블록이었습니다.
“다들 스피드 보셨죠? 텔레비전에서도 재방송 많이 했었잖아요.”
“저는 못 봤어요.”
유식이 묻자 선화가 대답했습니다. 유식은 다소 의외라는 표정이었습니다.
“꽤 유명한 영화였는데 못 봤군요? 나한테 DVD가 있는데, 빌려줄까요?”
“DVD 플레이어가 없어요.”
선화가 또 샐쭉한 표정으로 대답했습니다. 그러자 유식이 씩 웃었습니다.
“에이……. 컴퓨터에서도 DVD 재생되잖아요. 컴퓨터로 보면 되죠.”
“컴퓨터로 보긴 싫어요.”
웬일인지 선화는 토라진 표정이었습니다. 뜻대로 안 풀리는 퍼즐을 앞에 놓고 짜증을 부리고 있는 어린아이의 얼굴이 아마 그랬을까요?
“에이... 왜 자꾸 승질인교? 정 그라믄 이따 유식이 집에 가서 에어컨 틀어놓고 시원하게 같이 보이소 고마.”
허동수가 듣기 싫다는 듯 툭, 내뱉자 선화의 볼은 붉어졌고 유식은 갑자기 허둥대며 ‘오늘 점심은 내가 사기로 했던가?’ 하고 중얼거리며 카운터로 가 버렸습니다. 내가 허동수의 옆구리를 쿡 찌르며 ‘에이, 왜 그래요? 짓궂게.’ 하고 귓속말을 하자 박팀장은 도대체 무슨 일이 있는 건지 다 알겠다는 표정으로 미소를 지으며 자리에서 일어났습니다. 그리고 말했습니다.
“날이, 꼭 다시 여름이 오려는 것 같네요.”
꼭 그렇게 느껴지는 날씨는 아니었습니다만, 그녀의 눈빛에서 느껴지는 계절은 분명 여름의 그것이었습니다. 나는 고개를 끄덕이는 것으로 대답을 대신하고, 묵묵히 그녀의 옆을 걸어 개발실로 돌아왔습니다.
일주일 전부터, 개발실로 돌아오면 맨 먼저 하는 일이 믹스 커피를 타 들고 옥상으로 오르는 것이 되어 버렸습니다. 담배를 피우게 된 것이죠. 맨 처음 피운 담배가 달면 골초가 될 가능성이 높다 하더니, 제가 꼭 그 꼴이었습니다. 남들에게 찌든 냄새를 풍기기 싫어 목캔디를 자주 먹곤 했습니다만, 그래도 모두들 짐작은 하는 눈치였습니다.
옥상은 바람이 불어 시원했습니다. 나는 장초의 첫 모금을 깊이 들이 마시며, 뇌까렸습니다. 아, 이 무서운 니코틴의 마력이여! 그런데 그 첫 모금이 혈관 속으로 퍼지기도 전에, 옥상 한편에서 두런거리는 소리가 들려왔습니다. 어쩌자고 신께서는 나에게 담배를 주신 것도 모자라 남의 이야기를 엿듣는 운명까지 주신 것인지. 내 귀는 어느새 육백만불 사나이의 그것처럼 소리의 발원지를 찾아 쫑긋거리고 있었습니다. 말소리가 새어나오는 곳은, 원형 환기구 옆의 모퉁이였습니다. 신경 쓰고 보지 않으면 누가 있는지 알 수 없을 정도로 구석진 곳이었죠.
“선화씨 오늘따라 왜 그래요?”
“몰라서 물어요?”
“네 진짜 모르겠어요.”
태초에 신께서 남자와 여자를 창조하셨을 때 서로 다른 본성을 갖도록 빚어놓으신 탓에, 남자는 여자를 이해하지 못하였고 여자는 남자를 이해하지 못하였습니다. 그 운명적인 족쇄 탓에 남자와 여자는 서로를 이해하기 위해 평생 노력해야만 했죠. 선화와 유식도 똑같은 길을 걷고 있었습니다. 페르세우스와 안드로메다의 만남처럼 처음에는 고달팠으나 나중에는 평생토록 잘 먹고 잘 살았다, 는 식의 결말은 인간 세상에는 드문 법입니다.
“나 유식씨 아버님 만나고 싶어요.”
선화의 표정에서 유식에 대한 진지한 감정을 가끔 느낄 때가 있긴 했습니다만, 벌써 진도가 그 정도로 나가 있을 줄은 몰랐습니다. 놀란 내 귀는 더욱 더 예민해졌습니다.
“우리 아버지 만나기 전에, 한 번 잘 생각해봐요. 선화씨 부모님이 나를 탐탁해 하실지.”
“탐탁지 않아 하실 건 또 뭐에요?”
“홀아버지 밑에서 험하게 자랐다고 싫어하실지 누가 압니까. 그리고 요즘처럼 경제적 능력이 중요한 시대에, 나처럼 가진 것 없는 사람을 어떤 분이 좋아하시겠어요?”
유식은 이름값 하느라 아주 합리적으로 놀고 있었습니다. 영화를 좋아하고 감독들 이름을 줄줄 외우는 낭만 청년의 입에서 저런 말이 나올 거라고 누가 생각이나 했겠어요.
“선화씨, 현실은 영화하고는 달라요.”
“그렇다고 젊은 사람이 한 번 덤벼보지도 않고 그런 소리부터 할 거예요?”
뒤이어 퍽, 하는 소리가 들렸고, ‘아야’하면서 누가 쓰러지는 소리가 들렸습니다. 소리의 강도로 미루어 볼 때 선화가 유식의 정강이를 걷어 찬 것이 틀림없었습니다.
“다음 주에 무조건 뵈러 갈 테니까, 알아서 해요. 우리 집에는 내가 알아서 이야기할게요.”
선화의 하이힐 소리가 또각또각 들리기 시작했고, 나는 또 숨어야 했습니다. 이번에는 담배를 끄는 수고까지 해야 했죠. 연기가 흘러나오는 걸 들키면 곤란했으니까요. 내 팔자도 참 기구하다는 생각이 들었습니다. 나는 유식이 자리를 털고 일어나 옥상을 내려갈 때 까지 출입구 뒤편에 숨어있어야 했습니다. 그리고 한 대의 담배를 더 피우고서야, 개발실로 돌아올 수 있었죠.
“이것도 운명이라면 받아들여야 하겠지…….”
내가 중얼거리자, 옆자리에 있던 유식이 “네?” 하면서 나를 쳐다봤습니다. 하지만 별다른 반응을 보이지 않으니 다시 모니터로 고개를 돌리더군요. 하긴, 나도 남의 사생활에 간섭할만한 여유는 없었습니다. 내 발등 위로 떨어진 버그들이 모니터 여기저기에서 불타오르고 있었으니까요.
“오늘 밤도 새하얗게 불태워야 하는 건가…….”
다시 중얼거리자, 유식이 또 “네?” 하면서 나를 바라보았습니다. 이번에도 나는 아무 대꾸를 하지 않았습니다. 유식은 잠시 ‘저 사람이 왜 저러나’하는 표정이더니 화장실에라도 가려는지 밖으로 나가 버렸습니다.
‘알콜 코딩’이라는 말이 있습니다. 술 먹고 프로그램 짜는 행위를 이르는 말이죠. 야근 하다 보면 동료들 끼리 저녁 먹으면서 반주를 기울이게 되는 일이 가끔 있는데, 그냥 반주 정도로 그치면 좋은데 지나치게 마시는 일도 생깁니다. 그렇다고 일을 안 할 수는 없으니 자리에 돌아와서는 코딩을 하게 되는데, 음주를 하면 판단력이 흐려지는 것은 불문가지라 그렇게 만든 코드는 처음에는 그럴싸해 보여도 나중에는 이상한 문제들을 많이 일으키죠. 꼭 만취한 사람들이 이상한 행동을 하듯 말이에요.
지금 말썽인 곳도 그러했습니다. 반주로 소주 한 병을 마시고 짠 코드들이 괴상하고 망측스러운 버그들을 뿌려대고 있었죠. 문제를 해결하는 방법은 하나뿐이었습니다. 유식이 그랬던 것처럼, 모든 부분을 차근차근 테스트하는 것이었죠. 어떤 문제도 일으킬 리 없는 가짜 객체(mock object)를 하나 만들고, 술 취해 짠 클래스를 연결했습니다. 그런 다음에 메소드 하나하나를 테스트 해 나가기 시작했습니다. 그리고는 버그가 잡힐 때 마다, 무엇이 문제였고 어떻게 해결했는지를 기록해 나갔죠.
그러다보니 첨에 생각했던 가짜 객체로는 도저히 에뮬레이션 할 수 없는 로직에 입력을 내 주어야 하는 루틴에 도달하게 되었습니다. 저는 고민에 빠졌습니다. 좀 더 그럴듯한 가짜 객체를 만들어 테스트를 진행할 것인지, 아니면 실제로 구현된 라이브러리에 붙여서 연동 테스트를 할 것인지.
하지만 저는 게으른 프로그래머였습니다. 좀 더 그럴듯한 가짜 객체를 만들기 위해서는 더 많은 노력을 해야 했고, 에뮬레이션 로직도 쌈박하게 설계한 다음에 구현해야 했습니다. 귀찮았던 거죠. 결국 저는 남기수가 구현해 배포한 라이브러리 클래스 중 하나에 직접 연동 테스트를 하기로 결정했습니다.
‘뭐 설마 별 일이야 있으려고.’
하지만 술에 젖은 코드가 의례 그렇듯 문제가 터졌고, 저는 결국 남기수를 불러야 했습니다.
“무슨 일이세요?”
“인자를 올바르게 전달한 것 같은데, 기수씨 코드를 호출하고 나면 꼭 제 쪽 함수가 실행 도중에 죽어버리네요.”
“그럼 인자를 잘 못 전달한 것 아닐까요? 주석에 인자를 어떻게 전달해야 하는 지 적어 두었는데요.”
“주석대로 한 것 같은데 이상하네요.”
결국 우리는 다시 한 모니터에 키보드 두 개와 마우스 두 개를 무선으로 연결하고는 나란히 앉았습니다.
“이러다 정들겠어요.”
“웩.”
내가 토하는 표정을 짓자 그는 키들키들 웃으며 내 어깨를 팔꿈치로 치더니 코드를 훑어보기 시작했습니다. 그러더니 묻더군요.
“그런데, 요즘 담배 많이 피우시는 것 같아요.”
“글쎄요, 디오니소스의 저주에라도 걸린 건지...”
“네?”
속죄의 노역을 하고 있던 헤라클레스에게 떨어진 네 번째 과제는 에리만토스 산에 사는 멧돼지를 생포하는 것이었습니다. 이 멧돼지는 아주 흉포해서 주변에 사는 많은 사람들에게 피해를 입히고 있었습니다. 헤라클래스는 에리만토스 산으로 가는 도중에 켄타우로스들이 모여 사는 숲에 들러, 숲의 족장 폴로스와 식사를 함께 하게 되죠. 그러다 디오니소스가 켄타우로스들에게 선물로 준 술병을 따게 되는데, 그 포도주를 마시고 취한 헤라클래스는 본분을 잊고 흥분하여 히드라의 독이 묻은 화살로 그들을 쏘아 죽이게 됩니다. 이 일 덕분에 헤라클레스와 켄타우로스들 사이에는 앙금이 생기고, 헤라클래스는 후에 그 일로 죽음을 맞이하게 되죠. 결국 디오니소스가 선물한 술이, 헤라클레스에게는 저주로 작용한 셈입니다. 정신을 미혹한다는 점에서는 담배나 술이나 같고 알콜 코딩의 결과로 생고생 하고 있던 때였으니, 남기수의 질문에 디오니소스의 저주가 떠오른 것이 그저 우연만은 아니었겠지요.
“아닙니다. 신경 쓰지 마세요. 그런데 유식씨는 나가더니 안 들어오네?”
“코드에 집중해야 버그가 잡히지 않을까요?”
“알겠습니다, 싸부님.”
실없는 소리를 주고받으며 키들거리고 있는데 유식군 자리에서 전화가 울렸습니다. 남기수가 투덜거리며 일어났습니다.
“핸드폰으로 하면 될 텐데 대체 왜 회사로 전화를 하는 건지. 여보세요? 네, 잠깐 자리 비우셨는데요? 네? 아 네네 안녕하세요? 네 아버님. 네네. 네네. 아 여기 오셨다고요? 아 그럼 제가 1층으로 모시러 가겠습니다.”
갑자기 90도로 허리를 꺾어 급 공손해진 어조로 전화를 받던 그는 슬리퍼를 끌며 순식간에 엘리베이터 쪽으로 사라져버렸습니다. 유식씨 아버님이 회사에 찾아오신 모양이었습니다. 잠시 후, 기수씨가 손에 뭔가를 들고 개발실로 돌아왔습니다. 뒤에는 양복을 깔끔하게 차려입으신 반백의 어르신이 서 계셨습니다. 꼿꼿한 허리에 청년처럼 형형한 눈빛이 인상적인 분이었습니다. 기수씨는 아버님을 회의실로 안내하고는, 팀원 모두에게 빵을 두 개씩 돌렸습니다. 아버님이 마련하신 간식거리였습니다. 허동수는 그 빵을 냅다 한 입 베어 물더니, 우물거리며 말했습니다.
“유식씨 아버님 오셨습니꺼? 그라믄 우리 다 인사드리러 가야 되는 거 아이가?”
“오는 길에 팀장님께 말씀드렸고요, 지금 팀장님하고 유식씨가 회의실로 오는 길이니 뭐 모두 다 갈 필요는 없을 것 같은데요.”
기수의 말에 허동수는 다시 자리에 앉더니 두 번째 빵 봉지를 뜯었습니다. 회의실에서 말소리가 새어나오는 걸 들으니 팀장님이 오신 모양이었습니다. 순간 선화씨가 자리에서 일어났습니다. 흠칫 놀라 그녀를 보니, 아랫입술을 앙다물고는 뭔가를 고민하는 듯한 표정이었습니다.
남의 일에 참견하는 것이 옳은 일은 아니었지만, 제 오지랖도 그다지 좁은 편은 아니었나 봅니다. 저는 그녀를 옥상으로 불렀습니다. 그녀는 안 그래도 큰 눈을 동그랗게 치뜨며 나를 빤히 쳐다보더니, 아무 말도 않고 내 뒤를 따랐습니다.
“거두절미하고 이야기할게요. 아까 옥상에서 선화씨랑 유식씨랑 이야기하는 거 다 들었습니다.”
“왜 남의 이야기는 엿듣고 그래요?”
예상대로, 그녀의 반응은 앙칼졌습니다. 하지만 당황하면 곤란했습니다.
“미안해요. 일부러 엿들은 건 아니었어요. 아무튼 그게 중요한 건 아니고요. 선화씨 지금 유식씨 아버님께 인사드리러 가고 싶죠?”
그 말에 그녀는 고개를 푹 숙이더니 낯을 붉혔습니다.
“그런데 그 사람이 항상 그러지 말라고 해요. 왜 그런지 모르겠어요.”
“그런 게 남자니까요.”
남자란 동물의 책임감에는 이상한 구석이 있습니다. 젊었을 때 남자는 여자의 현재보다 여자의 미래를 더 생각하죠. 이기적으로 생각을 못한다는 뜻입니다. 하지만 나이 먹은 남자는 다릅니다. 여자의 미래보다 자신의 미래를 더 생각하는 동물로 바뀐다는 뜻이죠. 순수함을 잃은 남자의 책임감은 그저 이기심일 뿐입니다. 유식은 아직 젊었고, 자신만 챙기기에는 따져야 할 것들이 너무 많았습니다. 나는 그녀에게 그런 이야기들을 앞뒤 없이 주절주절 떠들었습니다.
“저는 그 사람이, 저만 생각했으면 좋겠어요.”
그게 모든 여자의 바람일 터지요. 에우리스테우스가 헤라클레스가 잡아온 멧돼지가 너무 두려운 나머지 항아리에 숨었듯, 남자들은 자신이 책임지기 너무 큰 문제가 앞에 닥치면 자신만의 항아리를 만들고는 그 안에 숨어버리고는 합니다. 그리고는 문제가 사라지고 나면 항아리 밖으로 나와, 그제야 그 문제를 자기 손으로 푸는 것이 옳았는지, 아니면 그대로 내버려 두는 것이 옳았는지 골똘히 생각하고는 하죠.
한참을 떠들자 마음이 안정되었는지, 그녀는 다시 조용히 자기 자리로 돌아가 앉았습니다. 저는 다시 남기수 옆 자리로 가 앉았고요. 어딜 다녀오느냐고 그가 물었지만, 저는 대답하지 않았습니다. 대신 두 손을 깍지끼고, 그 동안 잊고 살았던 하느님께 기도를 드렸습니다. 내가 아는 모든 사람이 항아리 대신 고난을 선택하게 해 달라고요. 실패를 두려워해서는 아무것도 얻을 수 없는 법이니, 모두가 그 실패를 기꺼운 마음으로 받아들이게 해 달라고요.
“졸려요?”
그가 물었습니다. 할 말이 없어 고개를 끄덕거렸습니다. 우리는 아무 말 없이 다시 모니터를 바라보기 시작했습니다. 안광(眼光)이 지배(紙背)를 철(徹)한다는 말이 있습니다. 그렇게 하루 종일 모니터를 바라보고 있으면 우리의 눈빛도 모니터 등짝을 뚫을는지 모를 지경이었습니다. 이번에는 우리가 항아리에 빠져 있었습니다. 다만 무엇을 피하기 위해서가 아니라, 생각하기 위해서였죠. 한시간 정도 그렇게 앉아 있었을까? 그가 뭔가 깨달았다는 표정으로 말했습니다.
“꼭 누구 잘못이라고 하긴 그러네요. 오대리님도 저도, 비슷한 실수를 한 것 같습니다.”
“어떤?”
“제가 객체를 인자로 받도록 해 뒀는데, 그 뒤에 & 기호를 붙이질 않았어요.”
“아하.”
“그러면 인자를 전달할 때 복사 생성자가 불리죠. 그런데 공교롭게도 오대리님이 전달하는 객체의 클래스에 복사 생성자가 없어요.”
“그 말은...”
“복사 생성자가 없으면 포인터 멤버가 있을 경우 같은 메모리를 두 객체가 동일하게 참조하게 되는 일이 생기죠. 그런데 제 메소드 실행이 끝나면 복사된 객체가 사라지면서 그 포인터가 사라지는 메모리를 지워버리게 될 거거든요.”
“아하.”
“그러니까 제 메소드를 실행한 이후에는 오대리님 코드가 정상 동작할 턱이 없는 거죠.”
그래서 그는 자기 메소드가 인자를 참조형(reference)으로 받도록 수정했고, 나는 복사 생성자를 추가한 뒤 혹시 몰라 대입 연산자까지 오버로딩 해 버렸습니다. 원래는 습관적으로 그래야 했던 것이었는데 - 그게 싫으면 적어도 복사 생성자를 private으로 선언하는 수고는 했어야 했죠 - 그러질 못했으니, 제 게으름을 탓할 수밖에 없었습니다.
누구에게나 자신만의 항아리가 있습니다. 기수씨도 그랬고, 유식군도 그러했습니다. 게으름이나 편견도 항아리라 부를 수 있다면, 제가 숨어 있던 항아리는 제법 견고했던 셈입니다. 알리바바와 40인의 도둑 이야기에서 기름 단지 안에 숨어 있던 도둑들이 결국 손 한번 놀리지 못하고 죽음을 맞이했던 것처럼, 나도 유식도 단지 안에 숨어서는 어떤 결실도 얻을 수 없을 것임이 분명했습니다.
결국 우리는 매 순간 선택을 하는 셈입니다. 항아리 안에서 죽음을 맞이할 것인지, 아니면 항아리 밖으로 나와 세상과 조우할 것인지.
[다음 글에 계속...]
-
공중곡예사의 생각
Tracked from bjlee72's me2DAY | 2010/08/09 11:41 | DEL프로그래머 32