임백준의 소프트웨어 산책
임백준 지음 / 한빛미디어 / 2005년 5월
평점 :
절판


미국에서 현업 프로그래머로 활동하고 있는 임백준이 쓴 <임백준의 소프트웨어 산책>을 읽었습니다. 저자 임백준에게 이 책은 벌써 세 번째입니다. 전에 낸 두 권의 책이 제법 인기를 끌었던 것 같습니다. 저는 읽어보지 못했습니다만, 이 책을 다 읽고난 지금, 그 두 권의 책도 마저 읽고 싶습니다.

저자는 삼성SDS와 루슨트 테크놀로지를 거쳐, 지금은 뉴욕의 한 금융회사에서 프로그래머로 일하고 있습니다. 미국에서 석사공부를 마치고 잠깐 한국에 들어왔다가 아르바이트 삼아 구직광고를 낸 적이 있는데, 미국으로 다시 간 이후에도 그 내용이 남아있어 한국의 모 출판사로부터 번역 제의를 받았다고 합니다. 그것이 프로그래밍 서적 번역과 직접 집필까지 하게 된 계기였다고 합니다.
대개 프로그래머라고 하면 글쓰기와는 전혀 무관한 직종의 사람처럼 보입니다. 혹시 기술서를 쓰더라도 기술적인 내용만 다룰 뿐입니다. 제 경험으로는 우리나라에서 아직 글 잘 쓰는 프로그래머를 본 적이 없는 것 같습니다. 그런 면에서 이 저자는 예외입니다. 10년 이상의 프로그래밍 경력을 가진 현업 프로그래머로서, 그의 지식과 경험을 쉽게 풀어내는 능력이 돋보입니다.

전문가들도 이제는 글쓰기를 잘해야 자기 분야에서도 인정을 받고 대중과도 소통할 수 있는 스타가 될 수 있습니다. <나의 문화유산 답사기>의 유홍준, <과학콘서트>의 정재승, <영혼이 있는 승부>의 안철수 등이 그러합니다. 그 외에도 화가 김병종, 한젬마, 김점선 씨와 건축가 김진애, 서울법대 안경환 교수나 생명과학부의 최재천 교수도 필력을 갖춘 전문가들입니다. 최재천 교수는 지난달 한겨레21에 "글 못 쓰는 이공계, 보따리 싸라"라는 글을 실은 적이 있습니다. 과학분야일수록 실제 글쓰기가 더 필요하다는 그의 주장에 충분히 공감이 갔습니다.

<임백준의 소프트웨어 산책>은 프로그래머라면 지겹도록 들었을법한 객체지향과 디자인 패턴, 리팩토링, 소프트웨어 공학, XML에 대한 이야기입니다.
소설도 한 편 실려있습니다. 문학적 완성도에 대해서는 제가 평가할 수 없는 영역이지만, 실력 있는 프로그래머를 채용하기 위한 구글(goole)의 광고를 모티프로 한 그의 글에는 프로그래머만이 느낄 수 있는 경험들을 잘 녹아 있습니다.

저는 현업 프로그래머도 아니고 전직 프로그래머도 아닙니다. 다만 몇 년 전부터 프로그래머와 함께 일할 기회가 많았던, 굳이 분류하자면 기획자에 가깝습니다. 그런 제 입장에서 봤을 때, (전체가 모두 재미있었지만) <소프트웨어 공학>을 다룬 4장을 특히 관심 있게 읽었습니다.
이 장에서는 소프트웨어 프로젝트 관리 방법론 중의 하나인 '애자일(agile)' 방법론과 애자일 철학을 가장 충실히 구현한 XP(eXtreme Programming)에 관한 이야기를 주로 다루고 있습니다.
'개발자와 사용자의 직접적이고 지속적인 의사소통'을 강조하는 이 방법론은, 짧은 제 경험으로 볼 때도 가장 명쾌하고 '현실적'인 방법론이라는 생각이 들었습니다. 기계 설비 제조업에서 사용하는 프로젝트 관리 방법론을 본뜬, 일명 '폭포 모형'에서는 '요구사항 분석', '디자인', '구현', '테스트'라는 일련의 단계가 있습니다. 이 과정은 순차적이며 '부득이한 경우'에 한해 앞 단계로의 피드백이 진행됩니다. 이런 과정에서는 소프트웨어가 최종적으로 완성되었을 때, 만약 사용자(클라이언트)가 기능상의 결함이나 빠진 부분을 발견한다 하더라도 그것이 제품에 반영할 기회가 원천 봉쇄됩니다.
위와 같은 경험을 한 번이라도 해 보신 분들은, 저자의 다음 말에 뼛속까지 공감합니다.

"사용자의 요구사항이 수시로 '변경'되는 것은 그들의 남다른 변덕이나 악의적인 의도를 가지고 있기 때문이 아니다. 자본주의 경제 시스템에서 시장의 요구와 비즈니스의 방향이 수시로 변화하는 것은 너무나 자연스러운 일이기 때문에 한 번 합의된 사용자의 요구사항이 영원히 고정되어 있을 것이라고 믿는 것은 터무니없는 착각이다. 만인의 합의하에 확정된 요구사항이라도 시장의 변화로 인해서 달라져야 한다면, 그것은 달라져야 한다. 어제의 요구사항에 기초해서 이미 소프트웨어를 설계하고 구현까지 마쳤기 때문에 요구사항이 고정되어 있어야 한다고 주장하는 것은 비현실적인 독선이다."(p.128)

이와 같은 철학이 바탕된 소프트웨어 관리 방법론 중 대표적인 것이 XP입니다(Windows XP가 아닙니다^^).
"XP는 소프트웨어 프로젝트를 네 가지 근본적인 방식으로 개선한다. 그 네 가지란 의사소통, 단순성, 피드백, 그리고 용기를 의미한다. XP 프로그래머는 사용자 그리고 동료 프로그래머들과 의사소통을 한다. 그들은 설계를 매우 단순하고 깔끔하게 유지한다. 그들은 그들이 작성한 소프트웨어를 첫날부터 테스트하고 피드백을 구한다. 그들은 사용자에게 시스템을 최대한 일찍 전달하고 사용자들이 제안하는 방식에 따라서 수정한다. XP 프로그래머들은 이러한 내용에 기초해서 요구사항의 변경과 새로운 테크놀로지에 용감하게 대처할 수 있다." (www.extremeprogramming.org)

이 책에서 저는 처음으로 XP 방법론과 페어 프로그래밍(pair programming), 테스트 중심 개발 기법(TDD;Test Driven Development)을 알았습니다. 두 사람이 하나의 컴퓨터 앞에서 일한다는 페어 프로그래밍은 상식을 깨뜨립니다.
뿐만 아니라 리팩토링과 디자인 패턴에 대해서도, 단순의 그 말의 표면적인 뜻이 아니라, 그 속에 담긴 철학을 알 수 있었습니다.

현업 프로그래머로서 프로그래밍의 역사와 최신 기술 지식을 쉽게 풀어낼 뿐만 아니라, 그 이면에 담긴 '철학'을 끄집어 내어 널리 이해시킬 수 있다는 점에서 저자의 능력은 탁월합니다.
소프트웨어(개발)라는 전문 지식과 글쓰기가 조화를 이룬 에세이는 처음 읽었습니다. 기분 좋은 경험이었습니다. 저자의 전작 두 편도 꼭 읽어봐야겠습니다.

댓글(0) 먼댓글(0) 좋아요(2)
좋아요
북마크하기찜하기 thankstoThanksTo