토요일 새벽 무렵에 프로젝트 결과물을 메일로 보내고, 한숨 돌렸습니다. 그리고나서, 일주일간 멀리하고 있었던 Counter-strike: Source를 다시 잡았습니다.
며칠 전 릴리즈된 de_port 맵을 오늘 처음으로 플레이해보았는데, 꽤 재미있더군요. 그동안 Source 버전에는 넓고 확 트인 맵이 별로 없어서 좀 답답한 느낌이 있긴 했죠. 상당히 넓은 맵이라 스나이퍼들이 필수적으로 필요하고 (의도적으로 스나이퍼들을 위한 장소들을 제공해주고 있습니다.), 더군다나 지하 통로나 건물을 통해서 생기는 경로가 많아서, 돌아다니다 보면 화력이 분산되는 면이 있습니다. 양측 실력이 비슷하면, 후반에서 난전이 되는 경향이 있죠.(전 난전을 좋아합니다. 순발력이 좋다기보다는 경험많은 노련한 플레이어거든요.) 반대로 한쪽 실력이 더 좋으면, 상대편 스나이퍼들을 학살해주는 재미가. ;;;
더불어, de_inferno도 처음 해봤는데요. 맵이 상당히 예뻐졌습니다. A bomb site에서는 통로에 엄폐물이 많아져서, CT에게 상당히 유리해졌고, B bomb site에서는 앉아서 지나야 했던 구멍이, 오르막으로 바뀌어서 TR이 진입하기에 좀 더 쉬워진 느낌입니다.
하핫, 28 킬의 [=FoxHound=] Raiden이 접니다.
다음은, 이른바 “비키니 모델”을 적용한 화면입니다. 덕분에 인질맵을 플레이하는 게 좀 즐겁죠. 호홋. (저는 인질맵에서 TR을 선택하는 경향이 있어서 더욱 좋죠)
The first release of Galaxy: Web-based RSS Feed Aggregator! This release includes basic functionalities of Galaxy. If you’re very serious about subscribing RSS in web, just try it. WARNING: I’m aware that it has crude look and quite messy installation steps. But, I promise next release will address these problems.
릴리즈를 계획한 것은 꽤 오래전인데, 학업이 바쁘다보니 차일피일 미루다, 드디어 Galaxy 0.1.0을 릴리즈 했습니다. 곧 Rubyforge 탑에 올라오겠죠.
결함도 많고 마음에 안드는 것도 많이 있지만(코드는… 물론 엉망입니다.), 일단은 릴리즈하고 피드백 받으면서 개선해나가는 것이 좋을 것 같습니다. Eric Raymond의 The Cathedral and the Bazaar를 읽어보신 분이라면 이해하시리라고 생각합니다.
그러한 결함 중 한가지 예를 들면, 설치 방법이 너무 복잡한 문제가 있는데요. crontab 사용을 포기한다든가, RubyOnRails로 간다든가 해서, 설치 방법을 단순화할 수 있는 방법을 찾아보아야할 것 같습니다.
내가 영어 단어를 사용하는 것은, 언어 사대주의와는 완전히 거리가 멀다. 완전히 실용적인 이유 – 가볍게 적는 글에 번역의 비용을 들이기는 부담스러운 이유라든가, 원문의 글을 오해 없이 옮기거나 쉽게 찾아볼 수 있도록 하기 위한 이유라든가, 하루에 접하는 언어의 양이 한국어보다도 영어가 더 많다든가 하는 이유 때문이다.
하지만, 요즘 들어, likejazz에서 뿐만 아니라, 이오덕 선생의 언어사대주의에 관한 글을 많이 링크하는 것을 보게되었다. 내 주변의 엔지니어들 중에는 말을 할 때도 영어를 사용하는 사람이 많은데, 언어사대주의 때문에 그렇다는 생각은 전혀 하지 않는다. 위에 적은 것과 유사한 순전히 실리적인 목적이다. 실제로 사대주의와 거리가 먼 사람에게 저러한 글을 링크해주는 것은 거의 인신공격적이라고 생각한다. 물론, 언어사대주의나 순전히 과시욕에서 영어를 사용하는 사람들도 있다. 하지만, 그렇지 않은 사람들에게는 언어 사대주의를 내세우는 방식보다는 우리말 사용의 실리나, 한국 문화의 발전 또는 정체성 확립과 같은 이유를 통해 합리적으로 설득을 하는 것이, 그들이 원하는 올바른(?) 우리말 사용의 확산을 앞당기는 길이라고 생각된다. 그 같은 이유로 나를 설득하는 것은 힘들겠지만 말이다.
한가지, 영어 단어를 사용하는 것이 (글을 쓴 사람을 포함하여) 독자가 글을 읽게 힘들게 만드는 것은 인정한다. 이러한 면에서, 한영 병기를 사용하는 것이 좋은 해결책이 된다고 생각한다. 문화적 정체성 운운은 내게는 통하지 않는다. 문화의 다양성에는 동의하지만, 특정한 문화를 무조건 수용하라는 태도는 마음에 들지 않는다. 무엇보다도, 영어공용론을 반대하는 사람들의 논지처럼, 내게 언어는 “한낱 연장에 지나지 않”기 때문이다.
한편, 어떤 사물이나 사건의 본질을 파악하기 전에, 그에 대한 유행하고 있는 생각을 비판없이 무조건적으로 받아들이고, 아무 경우에나 사용하는 경향을 너무나도 자주 본다. 블로그가 유행하면서 다른 사람들의 생각을 더욱 세세하게 볼 수 있게 되면서 이러한 현상을 더욱 자주 볼 수 있는 것 같다. 요즘 유행하는 “언어 사대주의”의 비판도 이러한 경향 중의 하나가 아닐까?
다음은 likejazz.COM에 올라온 War Room에 관한 글에 대해 적은 comment. “DeMarco는 Peopleware에서 독립된 개발환경을 주장하지만, XP 또한 옹호하고 있는데, XP의 War Room과 배치되지 않느냐라는 생각”에 대한 반론이다. 여기서 김창준님의 comment도 참고.
이 comment를 적을 당시에는 마침 Peopleware의 그 부분을 읽는 중이었는데, comment를 쓰고 나서 읽은 그 다음 단락에서, comment에서 내가 얘기한 것과 똑같은 논지의 얘기가 나왔다. 즉, 팀은 대체로 같은 일을 하기 때문에, noise나 interruption에 의한 문제가 별로 없다는 것이다.
“칼의 노래”는 임진왜란, 정유재란을 배경으로 한, 이순신의 삶을 그린 일종의 전기 소설이자 역사 소설이다. 줄곧 1인칭 시점으로 그려져있고, 이순신 자신이 한 일들을 나열해 놓은 식이 많아서, 읽는 동안 딱딱하다는 느낌도 들었고, 마치 이순신 자신이 쓴 일기 – “난중일기”의 현대어 번역판을 읽는 느낌이었다. 리얼리즘? 글쎄. 김훈의 작품을 별로 읽어보지 않은 나로서는 당대최고의 산문가라는 평에 약간은 반발심을 느끼지 않을 수 없었다.
대한민국의 정규 교육과정을 거친 사람이라면, 이순신은 어린 시절, “존경하는 인물”의 후보들 가운데 한명이었을 것이다. 그가 원균의 모함을 받고, 백의 종군을 하고, 몇몇 대첩에서 크게 승리했다는 역사적 사실이나, 그가 지었다는 유명한 시조, 그가 삶을 거두면서 한 얘기 정도의 조각들은 이른바 상식일 것이다. 억울한 누명을 쓰고도, 백의 종군을 해서, 종묘사직을 지켜내는 그 충의! 거북선이라는 인류최초의 철갑선을 발명한 희대의 지장! 죽음에 이르러서도 혹여 자신의 죽음이 전쟁에 영향을 미칠까 자신의 죽음을 감추는, 대의를 위한 그 희생 정신! 사직을 위태롭게 하는 왜를 물리치고 나라를 구한 무인! 그는 바로 영웅의 전형이었다. 어느 나라에나 위대한 정복자라든가 숭고한 방어자와 같은 국가적 민족적 영웅은 있게 마련이다. 그러한 영웅들이 “만들어진 영웅”이라는 사실은 더이상 비밀이 아니다. 영웅은 비극적으로 스러져가고 없어도, 그의 영웅담은 계속 재생산되면서 국가적 민족적 정체성을 확립하는 도구가 되었던 것이다. 영웅의 일대기를 역사로 본다면, 영웅이 일대기가 그 도구적 역할에 의해 창조되었다는 사실은 도리어, 역사가 그 도구적 역할에 의해 창조되었다는 사실로부터 연역될 수 있다는 것을 깨달을 수 있을 것이다. 역사에 대한 상대주의적 관점이 확립된 이래로, 역사는 상아탑의 학문이 아니라, 역사가 개인의 감정이나 정치적인 도구의 산물로서 해석되기 시작했다. 이처럼, 오랜 군사 독재가 지배하던 시절의 영웅 이순신에는, 어떤 불순한 의도가 섞여있으리란 생각을 떨칠 수 없다. 충의정신, 얼마나 전근대적인가. 그의 희생정신은 파쇼에의 의심마저 들게한다. 거북선이 실제로는 이순신이 창제한 것이 아니라는 사실은 언급할 필요조차도 없다. 하지만, 신기한 것은, 이러한 낡은 정신들이나 인식은 철이 들면서 기꺼이 버렸지만, 이순신이라는 인물은 영웅이라는 생각이 머리 속에 각인되어있다는 것이다. 게다가, 그 영웅을 둘러싸고 있는 정신들은 완전히 지워진 것이 아니라, 내 무의식 중에서 그 본연의 목적을 충실히 수행하고 있을지도 모르는 일이다. “내 귀의 도청장치”랄까.
정치가나 독재자가 역사 속의 영웅을 적절하게 해석하고 변용하여 모종의 목적을 이루어 내려는 것처럼, 작가도 글을 쓰는 목적이 있고, 문학작품 속의 허구적 인물을 통해 이루고자 하는 목적이 있다. 그렇다면, 역사가 아닌 문학이, 역사가가 아닌 김훈이라는 작가가 얘기하는 영웅 이순신은 어떤가를 살펴보아야할 것이다. 김훈의 이순신은 임금이나 다른 장수들의 무능함, 세상이 돌아가는 방식을 제대로 인식하고 있다. 그러면서도, 필요할 때는 맞서고, 필요할 때는 타협하는, 현실적이고 합리적인 인간이다. 그는 군기를 어긴 자는 엄하게 다스려 곤장을 치고 목을 베나, 아들의 마지막 순간을 얘기해달라고 청하며 슬퍼하는, 엄격한 아버지이자, 동시에 자상한 아버지이기도 하다. 여진이라는 한 여자에 대한 욕과 정을 동시에 지닌, 그는 한 인간이기도 하다. 한마디로, 김훈의 이순신은 전근대에 살고 있는 현대적 인물이다. 그는 잘 나가는 기업의 중역 정도의 캐릭터를 맡아도 아무런 문제가 없을 정도다. 김훈의 이순신은 자신의 무능력함에 고뇌하면서도, 때로는 투쟁하면서, 때로는 타협하면서 세상을 헤쳐가는 인간형을 나타낸다. 임금이나 원균, 명의 수군 총병관 진린과의 거듭되는 정치적인 게임에서도 이순신의 그러한 면을 잘볼 수 있다. 세상은 그가 원하는 것을 도와주지 않지만, 그는 적절하게 투쟁하거나 타협함으로써 그가 원하는 것을 얻어낸다. 이러한 정치 게임도 재미있게 볼 수 있지만, 이순신의 인간형을 가장 극적으로 보여주는 부분은, 이순신이 그와 정분이 있던 여진의 시체를 발견하지만, “내다 버려라.”라고 명령하는 장면과 이 때 그의 심정이 아닐까. 그는 여진의 죽음앞에서 성욕을 느끼는 자신을 발견하며, “세상은 칼로써 막아낼 수 없고 칼로써 헤쳐나갈 수 없는 곳”이라는 것을 확인한다. 한편, 어린 시절 알고 있던 이순신의 영웅성에 비해, “칼의 노래”의 이순신은 너무나 인간적이다. “칼의 노래”를 읽는 것은 마치 그리스 로마 신들의 찬란함에 가려진 인간적인 모습이 드러나는 장면 같달까. 이순신의 인간적임은, 그의 주변에 있는 인물들의 인간적임과 어우러져 묘한 여운을 준다. 예를 들어, 자신이 사랑하는 여자와 탈영하다가 붙잡힌 군관의 자기 여자를 살려달라는 애원 앞에 선 이순신의 모습을 보자. 이순신은 그 군관의 생사여탈을 결정할 수 있는 신 또는 영웅의 위치에 있다. 하지만, 곧바로 형 집행을 명령하는 장면과 애원대로 그 여자를 놓아주는 장면 사이에 있는 여운은, 노골적인 찬사보다도, 이순신의 인간성을 훨씬 돋보이게 만들어준다. 영웅에는 필수적인 조건이 있다. 보통 사람보다 싸움을 잘한다거나, 불사의 몸을 가졌다거나, 지혜로운 것이 아니다. 바로 영웅을 영웅으로 기억해주는 사람들의 가치나 생각을 반영해야한다는 것이다. 이러한 의미에서, 김훈의 이순신은 김훈의 영웅이자, 김훈이 현대를 살아가는 우리 모두에게 영웅으로서 제시해주고 싶었던 이순신의 모습이 아닐까? 우리가 삶의 고통이라는 질곡에서 빠져나올 수 있다는 실날같은 희망을 주는 인간적인, 너무나 인간적인 본보기를 보여주고 싶었던 게 아닐까?
세상의 끝이……이처럼……가볍고……또…….고요할 수 있다는 것이……, 칼로 베어지지 않는 적들을…… 이 세상에 남겨놓고…… 내가 먼저……, 관음포의 노을이…… 적들 쪽으로……
“칼의 노래”는 이 마지막 독백을 통해 죽음을 앞둔 영웅이, 아니 한 인간이, 어떤 진리를 깨닫는 것으로 끝난다. 그것은 “칼로 베어지지 않는 적”이라는 인간의 힘으로 어찌할 수 없는 문제에 고뇌하며, 진중한 영웅의 삶을 살았으나, 결국 죽음의 앞 – 세상의 끝에서는 모든 것은 아무런 가치를 지니지 않게 되어버린다는, 너무나 진부하지만 역시 참일 수 밖에 없는 삶의 진리가 아닐까.
덧붙임: 위의 글은 “문학의 이해” 강의 숙제로서, 가능한 한 “무난하게” 쓰려고 노력한 것이지만, 사실 그다지 새로울 것도 없는 문제의식이라고 생각한다. 평범한 주제를, 이순신이라는 대중적인 소재와 결합한, 베스트셀러용 작품이었다고 생각한다. (김훈 씨 자신도, 자신은 밥벌이를 위해 글을 쓴다고 했으니, 대단히 예의에 어긋나는 말은 아닐 것이다.) 그 결합 자체가 도발적이었는가 하면, 우리가 살고 있는 시대에 있어, 결코 아니다라고 생각한다. 추천하기는 힘들 것 같다.
대부분의 블로그 서비스가 트랙백 표준을 지키지 않고, EUC-KR 트랙백에 의존하고 있어서 MT로 트랙백을 보내는 데에 애로사항이 있다. 물론, Gratia님의 트랙백 패치도 있지만, 패치 자체가 복잡해서 귀찮은 나머지, 그냥 euc-kr로 보내도록 수정해버렸다. charset을 적절히 설정해주는 한 트랙백 표준 1.2에 위배되는 것은 아니니까… 그리고, UTF-8을 지원하는 블로그 구현이라면, 트랙백 표준도 제대로 구현하고 있을거야, 라는 약간은 안일한 가정. 다음 코드는 MT/lib/MT.pm의 수정사항.
의도한 것은 아닌데, 어쩌다보니 마루타가 되어버린, 젊은 거장님과 윗치님, 그리고 묵형에게 심심한 사과의 말씀을 드려야겠다. (사실 묵형쪽은 의도적으로 테스트한 것이다!)
## Build query string to be sent on each ping.
my @qs;
# BEGIN trackback patch by Joseph Jang
#push @qs, 'title=' . MT::Util::encode_url($entry->title);
#push @qs, 'url=' . MT::Util::encode_url($entry->permalink);
#push @qs, 'excerpt=' . MT::Util::encode_url($entry->get_excerpt);
#push @qs, 'blog_name=' . MT::Util::encode_url($blog->name);
use Encode;
push @qs, 'title=' . MT::Util::encode_url(Encode::encode("euc-kr", Encode::decode("utf-8", $entry->title)));
push @qs, 'url=' . MT::Util::encode_url(Encode::encode("euc-kr", Encode::decode("utf-8", $entry->permalink)));
push @qs, 'excerpt=' . MT::Util::encode_url(Encode::encode("euc-kr", Encode::decode("utf-8", $entry->get_excerpt)));
push @qs, 'blog_name=' . MT::Util::encode_url(Encode::encode("euc-kr", Encode::decode("utf-8", $blog->name)));
#END
my $qs = join '&', @qs;
#$qs = Encode::encode("euc-kr", Encode::decode("utf-8", $qs));
## Character encoding--best guess. Default to iso-8859-1, just as we
## do in MT::Template::Context::_hdlr_publish_charset.
# BEGIN trackback patch by Joseph Jang
#my $enc = $mt->{cfg}->PublishCharset || 'iso-8859-1';
my $enc = "euc-kr";
#END
소프트웨어 엔지니어링 과목을 수강한 적이 있다면, 소프트웨어 엔지니어링에 어느 정도 관심이 있다면, 한번쯤은 이 책 제목 정도는 들어보았을 것이다. M-MM은 소프트웨어 엔지니어링의 고전이다.
Brooks는 IBM에서 OS/360 개발 프로젝트의 관리자였다. 나중에 Brooks는 이 경험을 분석하고, 그것에 관하여 여러 동료들과 논의했다. 그래서 그 결과로 나온 책이 바로 M-MM이다. 이 책은 각각 하나의 주제를 가지고 있는 에세이 모음의 형식으로 되어있다.
그 중에서도 가장 유명한 내용은 아무래도 Brooks’ Law가 나오는 책과 동명의 에세이인 ‘The Mythical Man-Month’일 것이다. Brooks’ Law는 간단히 말하면,
늦어진 소프트웨어 프로젝트에, 인력을 더 투입하면, 그 프로젝트는 더욱 늦어진다.
는 것이다. Brooks의 논지를 따라가다보면 당연한 얘기다. 하지만, M-MM이 쓰여진 지, 30여년이 지난 지금도, 소프트웨어의 생산을 부품 생산 공장에 빗대어 생각하려는 경향 – 미신은 여전히 존재하는 것을 보면, Brooks’ Law는 아직도 강력한 의미를 지니고 있는 것 같다.
이 책이 워낙 오래 전에 쓰여진 책이라, 현재의 기술에는 약간 맞지 않는 얘기도 나오지만, 대부분은 여전히 유효한 얘기들이다. 뿐만 아니라, 요즘에 나오는 소프트웨어 개발에 관한 수많은 철학의 근간은 M-MM에 빚지고 있는 것으로 보인다.
내가 산 책은 1995년에 나온 Anniversary Edition으로, 그 시점에서 원래의 M-MM에 대한 스스로의 평가를 내리고 있다. 특히, 인상적이었던 것은 , 원래 Parnas가 주창한 Information Hiding을 격하게 비판하던 Brooks가, “Parnas Was Right, and I Was Wrong about Information Hiding”이라고 적으면서, 자신이 틀렸음을 솔직하게 인정하고 있다는 것이었다.
Anniversary Edition에는 역시 엄청나게 유명한 에세이인 “No Silver Bullet”을 함께 싣고 있는데, 이 에세이는 소프트웨어 개발자라면 반드시 읽어봐야할 에세이라고 생각한다. (인터넷에서도 쉽게 구할 수 있고, 번역도 되어있는 걸로 알고 있다.) 이 에세이는 소프트웨어 개발에 있어서의 어려움은 본질적인(essential) 어려움과 비본질적인(accidental) 어려움으로 나눌 수 있다고 얘기한다. 비본질적인 어려움은 기술의 발전과 함께 개선되고 점차 사라져왔지만, 본질적인 어려움에 있어서의 기술 발전은 10년 내의 범위에서 크게 이루어지지 않을 것이다라는 그의 예측은, 이 책이 쓰여진 1975년에도, Anniversary Edition이 쓰여진 1995년에도 맞았고, 지금도 맞지않을까 하는 생각이다. 그가 생각하는 본질적인 어려움의 궁극적인 해결책은 소프트웨어 컴포넌트의 시장화를 통한 재사용이다. 현대에는 어느 정도 컴포넌트의 시장화가 진행되었지만, 본질적인 어려움을 해결할만큼의 재사용에 있어서는 벽에 부딪히고 있는 것이 실정이다. 하지만, “Software Factory”같은 개념을 발전시켜 나가고 있고 그와 같은 개념은 바로 Brooks의 이상을 정확하게 표현한 것이 아닐까 싶다.
흔히, 고전을 “오래된 것”, 그래서 낙후된 것으로 생각하는 사람들이 많다. 하지만, 고전의 참뜻은 “전범”이다. 그리스/로마 신화를 이해하지 못하고서, 서양의 미술을 이해하기 힘든 것처럼, 소프트웨어에 관해 이해하기 위해서 반드시 읽어야할 책들 중의 하나가 바로 M-MM이다.