Media Log

대한민국에는 소프트웨어가 없다 - 8점
김익환 지음/미래의창

소프트웨어 개발의 모든 것글로벌 소프트웨어를 꿈꾸다를 읽으면서, 김익환 선생님의 책에 완전히 빠져버렸다.

이 책은 2003년 12월에 출간되었는데, 동네 도서관에도 없길래 알라딘에서 중고책으로 4000원에 사버렸다.

이 책 역시 다른 두 책들 만큼이나 재밌게 읽었다.
글을 읽기 쉽게 쓰는 재주가 있는건지, 언제나 그의 책은 달콤하게 술술 읽혀서 좋다.

지금보다 젊었을 때의 글이라서 그런지, 조금 과격하게 말하는 것들이 글에서 조금씩 드러난다. 지금은 상당히 온화한 인상을 가지고 계신데, 그 당시에는 꽤나 무서웠을 것 같다는 생각이 들었다.

'소프트웨어 개발의 모든 것'이나 '글로벌 소프트웨어를 꿈꾸다'에 비하면 이 책의 내용이 조금 더 가볍게 읽을 수 있다.
영어에 대한 조언들이나 실리콘 밸리의 문화같은 내용들도 있다.

나는 여지껏 회사를 한번도 옮겨본 적이 없는데, 이런 책에서나마 다른 회사의 개발 환경이나 문화를 엿볼수가 있어서 참 좋았다.

이 책에서 말하는 내용은 10년 가까이 지난 그의 새 책에서 말하는 내용과 똑같다.
아마도 그의 생각과 경험들이 바로 정답이고 바뀌지 않는 진리이기 때문일지도 모르겠다.

책 중간에, 프로그래머들에게는 빌 게이츠 다음으로 유명한 또 하나의 '빌'인 빌 조이의 이야기도 조금 나오는데, 너무 짧아서 아쉬웠다. 아마 Sun에 계셨을 때 한번쯤 마주쳐보지 않았을까. 빌 조이의 비하인드 스토리같은 내용을 블로그 같은 곳에 써준다면 너무나 재밌을 것 같다.

다른 두 책들과 다른 점 중의 하나는 이 책의 마지막에는 진짜 코드도 있다는 것이다. 책의 서두에서 그는 실전 비법이라고 언급하면서, 그 비법 중 한가지만이라도 알고 있으면 꽤 수준 높은 프로그래머라고 말을 하였다.
도대체 무슨 내용일까, 나는 모르면 어쩌지 하는 마음에 가슴이 쿵쾅 쿵쾅 거리면서 읽었는데, 너무나도 간단한 내용들이어서 조금 실망스럽기는 했다. 진지한 마음가짐으로 프로그래밍을 생각해왔던 사람들에게는 아마 시시할지도 모르겠다. 만약 그런 비법들을 모아놓은 책을 원한다면 내가 아는 책은 딱 하나, Code Complete 뿐이다.

나도 그의 바램처럼 대한민국에서 좋은 글로벌 소프트웨어 기업들이 많이 나오기를 바라고 있다.
앞으로도 재미있고 유익한 책을 많이 써주셨으면 좋겠다.
소프트웨어 개발의 모든 것 - 9점
김익환.전규현 지음/페가수스
소프트웨어 개발의 모든 것이라 제목이 붙긴 했다만 물론 제목은 뻥이다.
어떻게 이 얇은 책이 소프트웨어 개발의 모든 것을 다루겠는가.

사실은 소프트웨어 공학의 모든 것이 책 내용과 조금 더 어울리긴 하지만 그렇게 이름지었으면 난 죽을 때까지 이 책을 안 읽었을 것이다.

나는 컴퓨터 과학의 대부분의 분야가 아주 재밌고 흥미롭지만 소프트웨어 공학 만큼은 질색이다.
그럼에도 불구하고 이 책은 꽤나 재밌게 잘 쓰여졌다. 내가 읽은 -몇 권 안되긴 하지만- 소프트웨어 공학 책 중에서는 가장 재밌는 책이었다. 스티브 맥코넬의 책보다도 재밌다! -물론 Code Complete는 빼고.

이 책은 개발자뿐만이 아니라 프로젝트 매니저, 기획자, 테스터, 그리고 심지어 세일즈맨까지도 읽어보면 도움이 되는 책이다.

얼마 전에 저자의 블로그에서 재밌는 포스팅을 읽었다.

하수
소스코드관리시스템을 거의 제대로 쓰지 못하는 경우, 오늘 고치고 있는 소스코드를 수동으로 하나씩 지워서 원래 버전을 만들어냅니다. 이러한 경우는 믿기 힘들겠지만 제가 컨설팅을 하면서 많은 회사들이 이렇게 하고 있다는 것을 접했습니다. 이렇게 원래 버전을 만들어서 Hotfix를 만들어서 내보낸 후에 다시 재작업을 합니다.

중수
이보다 조금더 나은 경우, 원래 고치고 있던 소스코드의 디렉토리를 임시로 백업 받아 놓고 소스코드관리시스템에 있는 어제 버전의 소스코드를 다시 Check out합니다. 이렇게 Check out한 소스코드를 가지고 Hotfix를 만들어서 내보내고 오늘 작업하던 백업을 받아 놓은 소스코드와 Merge tool을 이용해서 Merge를 한 후에 정기 업데이트 버전을 만들어서 내보내는 방법입니다. 아까보다는 조금 나아 졌지만, 여전히 수작업에 많이 의존을 하고 귀찮은 작업들을 해줘야 합니다.

고수
Subversion등의 소스코드 관리시스템을 제대로 사용한다면 이보다 좀더 손쉽습니다.
우선 어제 릴리즈를 한 소스코드의 Baseline(Tag)에서 Hotfix용 브랜치를 만듭니다. 기존에 개발하고 있던 디렉터리는 그대로 놔두고 새로운 디렉터리에 Hotfix를 Check out 받습니다. 보고된 버그를 수정하여 자동화된 빌드스크립트를 이용해서 Hotfix를 만들어내고 업데이트에 올립니다. 정상적으로 Hotfix가 배포된 것을 확인하고 Hotfix 브랜치는 Trunk로 Merge를 합니다. 이때 3Way Merge 툴을 이용하면 됩니다.

나는 처음 회사에 들어갔을 때는 하수였고 지금은 중수이다.
저자는 하수가 하는 짓을 믿기 힘든 짓이라 말하지만, 형상관리툴 사용을 잘 모르는 입장에서 보면 사실 그리 믿기 힘든 일도 아니다. 똥줄이 바짝 타는 상황이 생기면 믿기 힘든 무식한 일도 하게 되는 법이다. -핫픽스를 만든다는 것이 바로 그 똥줄이 타들어가는 상황이기도 하다.

시간이 좀 흘러서 고수가 하는 저 방법을 알게 되었음에도 불구하고 계속 중수의 방법을 고수해 온 것은 전적으로 나의 게으름 때문이었다. 저렇게 핫픽스를 만들어내야 하는 상황은 자주 오지 않기 때문에 나중에 배워야지하고는 계속 미루고 있었는데, 위 글을 읽으면서 몹시 부끄러움을 느꼈다.

그래서 잠시 시간을 내서 이것 저것 실험해보며 테스트를 해봤는데, 그동안 왜 그토록 게으름을 부렸을까 싶을 정도로 쉽게 해낼 수 있었다. -Subversion과 KDiff3의 개발자들 그리고 전규현씨께 감사한다. :-)

처음에는 정말 재미있게 읽었다.
하지만 폭포수 모델하고 SRS(요구사항 명세)에 대해서 설명하기 시작할 때는 읽다가 읽다가 결국 포기해버렸다.
저자가 지금 이 글을 보면 아니 그 중요한 부분을 그냥 넘어가면 어떻하나 하고 안쓰러워 할 것이 눈에 훤할 정도로 SRS의 중요성에 대해 입에 침이 닳도록 설명하지만, 그래도 정말 어쩔 수 없었다.

이 책의 내용에서 아쉬운 점 하나는 내가 가장 궁금해하는 내용이 빠졌다는 것이다.

나는 마이크로소프트 같은 커다랗고 프로세스가 잘 정립된 회사의 형상 관리툴의 소스트리를 보고 싶다.
그들이 모듈을 어떤 식으로 분리하고 어떤 구조로 트리를 구성하는지, 중복되는 코드들을 어떤 식으로 제거하고 또 공유하는지, 체크인 되는 코드의 코멘팅은 어떤 규칙으로 하는지 등이 너무 너무 궁금하다. 1시간 만이라도 들어가서 차근차근 살펴볼 수 있다면 내 실력은 훨씬 나아질 것이다.

이 책의 저자 중 김익환 선생님께서는 마이크로소프트에 버금가는 훌륭한 회사들에서 일했었는데, 그런 내용도 함께 알려주었더라면 나는 이 책에 주저 없이 별 5개를 줬을 것이다!

...물론 그래도 SRS는 싫다.