태그 : 책이야기

겸손한 개발자가 만든 거만한 소프트웨어

겸손한 개발자가 만든 거만한 소프트웨어
신승환 지음 / 인사이트
나의 점수 : ★★

어쩌다보니 최근에 지난 5월에 주문한 책이 또 개발론에 대한 책이 되었습니다.
뭐랄까 개발론에 꽂혀서...라기보다는, 이 책 역시 서평들이 의외로 괜찮았고, 저자 분이 개인 블로그에 올리고 계시는 글들을 꾸준히 애독해왔기 때문에, 눈팅하는 팬으로서(片思い같은거려나요), 어쨌거나 저술하신 모든 책은 아니더라도 가끔은 하나 사드리는 것이 그간의 감사함에 대한 말 없는 독자의 보답이라고 생각했기 때문이었습니다.

뭐 그건 그렇고요. 저자 분에 대한 제 개인적인 짝사랑과는 별도로, 책은 책이기 때문에 책에 대해서는 그다지 좋은 이야기를 적지 않으려 합니다. 이 점 미리 양해를.

이전 직장에선 대형 서점이 5분 거리였었는데, 이제는 지하철 한 정거장 정도의 거리를 걸어가야만 서점에서 책을 살펴볼 수 있게 된 것도 이 책을 구입하는데 한 몫을 했습니다. 즉 내용을 안 보고 목차만 훑어보고, 저자 이름 한번 보고, 웹 상에서 그냥 우왕 하고 구입한. 이른바 포샵처리된 사진만 보고 몇통의 전화 통화만으로 신부와 결혼하기로 해버린 신랑과도 같은?! (비유가 이상하다)
... 뭐 서점에서 책 내용을 좀 훑어볼 수 있었다면 조용히 다시 책장에 책을 꽂아놨을텐데 하는 생각도 들었다는 이야기입니다. 네.

책 두께가 꽤 되어서 처음 받았을 때는 꽤 많은 내용을 기대했습니다만, 책을 펴보니 글씨도 진짜 크고 줄간격도 널찍널찍하더군요. (어쩐지 대놓고 비교해보지는 않았지만 저번 개떡 책보다 비슷하거나 더 넓은 느낌? -_-;;;) 책 읽으면서 자신의 생각을 책 중간중간에 적어보라는 친절한 배려 내지는 컴퓨터 오래하는 독자들의 시력을 보호하려는 출판사의 배려라고 생각하겠습니다. 게다가 책 내내 적혀 있는 친절하고도 한결 같은 존댓말도 인상적이네요. 페이지 수 늘리려고 고생한 편집자의 수고가 눈에 아른가려 하품의 눈물이 눈 앞을 가릴 지경입니다.

물론 얇고 비싼 책은 사람들이 당연하다는 듯이 기피하고는 있다지만...;;; 그래도 이건 좀 너무 좀;;; 음;;;
설마 이런 식의 초딩소설책 스러운 호쾌한 편집이 요즘 IT출판업계 트렌드인걸까; 내가 그 대세를 못 따라가고 있는걸까...;;

다시 이야기를 돌려서,

그런데 뭐랄까 하필이면 얼마전에 읽은 책이 '드리밍 인 코드'. 라는 것이 마음이 아프다고 해야할지.
뭐랄까 하필이면 작년 이맘 때 즈음에 읽었던 책이 '소프트웨어, 누가 이렇게 개떡같이 만든거야' 라는 것이 마음이 아프다고 해야할지.

언급한 두 책들을 읽지 않은 상태에서 이 책을 접했다면 좀더 좋은 평가를 내릴 수 있었을지도 모르지만, 일단 전 비슷한 성격의 다른 책을 이미 최근에 읽어버렸다는 것이 좀 문제인 것이겠지요...
이 책을 '드리밍 인 코드'와 비교하면 '드리밍 인 코드'가 서운해 할 겁니다.
그렇다고 '소프트웨어, 누가 이렇게 개떡같이 만든거야'와 이 책을 비교하자니, 같은 출판사에서 나온 책 아니랄까봐, '개떡' 책을 '거만'책이 좀 자주 인용하고 있어요.
뭐랄까 어떤 면으로는 '개떡' 책을 한국 개발자 실정에 맞게 적당히 고쳐 쓴 느낌이었다고 해야 할까요.
책 내용을 보면 '거만'라는 표현보다는 '개떡'이라는 표현이 더 눈에 띄고 자주 나오는 것 같기도 하구요.

책 내용을 훑어보면, 책 타이틀에서 눈에 확 들어오는 '거만한 소프트웨어' 자체에 대한 내용은 전반부에 집중되어 있고,
후반부에는 팀을 어떻게 짜고 팀원을 어떻게 구성하고 하는 종류의 '겸손한 개발자'를 어떻게 부려먹으면 좋은가, 하는 부분이 주를 이루고 있습니다.

내용 전개 역시 '개떡' 책보다는 짜임새가 있는 편이긴 하지만(내용이 그렇게 겹치는게 많지는 않은데 자꾸 개떡 책과 비교하게 되는 감이 있어서 좀 죄송하네요-_-;;) , 이 책 역시 한번에 너무 많은 내용을 두리뭉실하게 풀어나가다가 두리뭉실하게 꼬인 상태로 제공하는 느낌이 있습니다.

장 끝에 잊지 말자? 였던가 아무튼 그런 타이틀로 어떤 형태의 요점 정리를 하고는 있지만, 그 정리된 내용을 보고나면, 아 그렇구나, 하는 산뜻한 생각이 들면 좋은데, 어째서? 그랬었어? 웬 급결론? 같은 느낌이 드는 항목들도 좀 있다는건 제가 독해력이 떨어져서겠지요.

뭐 그런건 아무래도 좋다고 치고, 무엇보다도 개인적으로 아쉬웠던 것은 뭔가 전에 생각지 못하던 관점을 기대하고 책을 집어 들었는데, 이쪽 분야에 관심 가진 사람이라면 한번 이상은 들어본 적은 있을 다른 책/다른 사람들이 하던 이야기의 적당한 각색 리바이벌이 대부분인 것이었다는 점이겠지요. (이런 면에서의 개발론 요점정리집[..] 같은 느낌이 들기까지 합니다-_-)

저자 분의 경험도 조금씩은 소개가 되고는 있지만, 모종의 갑 측과의 계약이라든가 때문에...이신건지 구체적인 사례 언급은 잘 안되고 있구요(독자 재밌으라고 적으셨겠지만 프로그램 배경 시원해서 조아따 같은건 아무래도 좋은데...; 그런 내용을 읽자고 책을 산게 아닌데...;).

어쩌면 이 책을 읽으신 분들 중, SI 쪽에서 근무하신 경험이 없으신 분 중에선 덜컥 겁부터 내실 분도 계실 수도 있겠다는 생각도 들었습니다. 실제 개발때 저런식으로 한단 말이야? 하고. ..
고맙습니다 경쟁자가 제거되었....

농담이구요, 사실 프로젝트 규모나 스타일이나 접근 방식에 따라 SI 업무 스타일도 모두 천차만별이기 때문에 이 책에 언급되어 있는픽션(..)은 어디선가 있을법~도한 픽션 정도로만 여기시고 겁부터 내실 필요는 없을 것 같습니다. 프리랜서 시절부터 지금에이르기까지 왜인지 모르겠지만 아직은 저는 저런 식의 설계나 기획 방식으로 프로젝트를 진행해본  적이 없는 것 같거든요. 물론짧게 치고 빠지는 소규모 프로젝트 위주로만 뛰어봤었기 때문인지 모르겠지만요.

개발 분야에만 머무르지 않고 영업이나 초기 설계 같은 부분도 적잖은 지면에 다루고 있기 때문에, 주 예상독자층인 디지탈유목민(...)들 뿐만 아니라 프로젝트를 이끌어가는 관리자 분이라면 한번쯤 읽어보실 만한 책일지도 모르겠습니다.
그렇지만 적혀 있는 대부분의 내용들이 이미 어느정도 몸으로 체득하셨을 내용일 것 같기도 합니다.; 대부분 발생하는 문제들의 원인을 모르는 것이 아닌데, 어떠어떠한 식으로 하면 개선될 것 같다는 느낌이 드는데도 쉽사리 어느날 갑자기 체제를 전환한다는 것은 사실 쉽지 않은 문제거든요.

전체적인 소프트웨어 개발 프로세스를 조망하고 해결책을 제시한다는 느낌으로 볼 때는 국내에서 보기 드문 상당히 잘 쓰여진 책일 수도 있습니다만, 제 개인적으로 읽길 원했던 내용의 비중은 상당히 낮았던 탓에(+다른 책에서 봤었던 내용들의 비중이 의외로 적지 않았기 때문에-_-) 별점은 좀 소극적으로 남겨놓겠습니다.


PS: 이 글을 두드리기 시작만 했던게 서두 언급대로 5월초 경이었습니다. 적어놓은게 아까워서 일단 올리기는 하는데; 지금 다시 책 내용을 떠올리려니 어떤 내용이었는지도 가물가물해서 내용 보충하기가 상당히 애매하네요. 이 점 고려하시고 가려 읽어주시면 감사하겠습니다.
PS 2: 저 인사이트 까 아닙니다 살려주세요.

by nvu | 2009/09/26 00:05 | 트랙백 | 덧글(0)

드리밍 인 코드

드리밍 인 코드

스콧 로젠버그 지음, 황대산 옮김 / 에이콘출판
나의 점수 : ★★★★

알파 버전을 공개합니다. 공개하겠습니다.
안되잖아. 어... 공개가 안돼. 공개시킬 수가 없어. 안돼.

요리사들도 훌륭하고, 모든 재료가 완벽한데도 절대 식사 시간까지 완성되지 않는 신기한 요리.
시간만 질질 끌다가 하루가 다 가고 야식 시간 즈음에 완성되어 나오면 맛이 없더라도 오오오 하고 찬사를 발할 수 밖에 없는 바로 그 요리. (물론 요리가 걸작이어서...가 아니라 어쨌거나 밥이 나왔다는 것이 너무 기뻐서-_-)

어째서 소프트웨어 개발팀이라는 주방에서는 언제나 그런 요리가 나오게 되는건지 궁금해 했던 날이 있었습니다.
우리는 그에 대한 대답으로 언제나 말하곤 했죠.

"아니 한참 소고기를 썰고 있는데,
지배인이 와서는 손님이 치킨 매니아라서 닭고기를 넣어야 한다는거야!
지배인이 저러는데 어쩔 수 없잖아?
그래서 지금 병아리 기르는 중이얌~
시장에선 닭을 안 팔더라궁. ㅠㅠ"

드리밍 인 코드는 챈들러라는 아웃룩 킬러(...를 노리는) 프로젝트가 진행되면서 발생한 여러가지 이슈들을 나름 시간 순으로 나열한, 연대기 같은 느낌의 책입니다.
연대기 '같은' 이라고 한 것은 연대기...이긴 한데 중간중간에 다른 업계 이야기도 나오고 소프트웨어 공학 전반에 걸친 이야기도 나오고, 하는 등의 두서 없는 전개가 이어지기 때문이죠.

지난 번의 '개떡'... 책도 그랬지만 이런 프로그래머의 에세이? 느낌의 개발론 류 책들은 어쩐지 챕터 서두는 간결한데 후반에는 주절대는 경향이 많은 것 같습니다. 그리고 이 책도 그 법칙에서 벗어나지 못하고 있다는 것은 좀 아쉬운 부분입니다. 공돌이 답게 요점만 간단히 적기 시작했는데 쓰고보니 원고량이 안되는거야, 그래서 유혹을 견디지 못하고 그만...!

내용 중간중간에 미주가 자주 붙어 있는데, 미주 가운데는 단순한 출처 만이 아닌 내용 자체를 부연 설명하는 경우도 꽤 있어서 미주 대신 각주로 달아주었더라면 더 읽기 좋았을텐데 하는(미주 표시 나올 때마다 책을 확 넘겼다 와야 한다-_-) 편집과 관련한 개인적인 유감(?)도 있었구요.

책 자체는 개발자들이 너무나도 공감할 만한, 그리고 위트 넘치는 내용과 문구로 가득하기 때문에, 그리고 번역도 깔끔하게 적당히 잘 된 덕분에 술술 넘어갑니다.

또 이 책의 저술 스타일도 마음에 드는데, 챈들러 프로젝트의 연대기가 철저한 3인칭 관찰자 시점에서 작성되었다는 부분입니다.
저자는 개인적으로 어떤 개발론을 지지한다는 것을 분명하게 표명하지 않고
그저 '이런 식으로 했더니 이렇게 망하고 저런 식으로 했더니 저렇게 망하더라. A는 이런 식이 좋다는 의견을, B는 이런 식이 좋다는 의견을 내놓았다.'라는 정도의 정리만 할 뿐이지,
'이렇게 해서 막장이 됐지만, 내 생각엔 이렇게 했더라면 잘 되지 않았을까 하는 아쉬움이...!?'
같은 종류의 의견까지는 제시하지는 않는 것이죠.

...그럴 의도는 아니었지만 아무리 생각해봐도 답이 안나와서 어쩔 수 없이 그랬을 수도 있지만. (-_-)

'난 이게 좋은거 같다,'하고 저자의 견해를 피력하는 여타의 개발서와는 달리, 그저 관찰자로서 개인적인 의견은 거의 밝히지 않는 형태로 내용을 평이하게 서술하는 효과로 인해, 독자가 독자 자신이 진행하고 있는 프로젝트를 투영시키면서 직접 생각해 볼 영역을 만들어줬다는 것이 너무나 마음에 듭니다.

그렇게 결코 성공했다, 고는 표현하기 힘든 챈들러 프로젝트의 삽질기를 쿠쿡 대면서 읽어가면서, 챈들러 프로젝트에 내가 진행하고 있는 프로젝트가 오버랩되면서 뜨끔 하는 느낌이 든다면 뭔가 일정이라든가 진행 방향 같은 것을 재정비해볼 수 있는 계기가 될 수도 있을테구요.

따라서 이미 아는 내용이겠지만 일반 개발자나 프로젝트 매니저들도 독파해 볼 만한 가치가 있다고 생각합니다, 아는 내용이 더 재밌으니까요.

왜 내가 만들라고 한 것이 이리도 지지부진한건지 궁금한 사장님들도 꼭 읽어보셔야 할 것 같아요.
사용된 용어도 대부분 잘 해설해주고 있는 편이고, 글의 난이도 또한 프로그래밍에 대해서 잘 모르더라도 이쪽 분야에 관심 있다면 그럭저럭 이해할 수 있는 수준이기 때문에, 불쌍한 개발자들을 이해하는데 약간이나마 도움이 되지 않을까나... 까나...


이 책에서 가르쳐주는 가장 중요한 사실은,
이 프로젝트를 진행하던 개발자들 대부분이 MS나 넷스케이프, 같은 곳에서 일한 경험이 있는 쟁쟁한 실력자들이었는데도
수시로 밥상이 뒤집어졌고 그에 따라 모두 일정을 못 맞추면서 허공에 삽질을 해대곤 했다는 것이죠.

따라서 그런 '쟁쟁한 실력자도 아닌 내가 일정을 못 맞추는 것 역시
당연한 일'이라는 것입니다.
아시겠죠 사장님? (쭃겨난다)


그래서... 쟁쟁한 실력자들이 뭉쳐 만든, 엄청난 개발기간이 소요된, 챈들러 프로젝트는 얼마나 잘 되었을까?
책을 읽고서 궁금해졌어요. 이 책 쓴 저자 아저씨도 잘 됐는지 모르겠으니 궁금하면 깔아 써보라고 했거든요.
어쩐지 깔아서 써봤어요.
뭐야 닭고기 요리라고 적어놓고 달걀 후라이를 내놨쟌!
(까지는 아니었지만서도 역시나~ 라는 느낌 -.-)

by nvu | 2009/04/16 02:38 | 트랙백 | 덧글(0)

Short Coding - 알고리즘 트레이닝으로 배우는 코드 단축기법

Short Coding - 알고리즘 트레이닝으로 배우는 코드 단축기법
Ozy 지음, 서수환 옮김/한빛미디어

전혀 관심 밖에 있었던 책인데, 무심코 감수자로서 고명하신 변태 프로그래머 '야/네/우/라/오' 선생님의 이름이 박혀 있는 것에 급뿜고서 보자마자 집어든 책. (야네우라오 선생님의 변태로서의 고명하심은 Windows プロフェッショナル ゲームプログラミング 책에 대해 이야기할 때 적었으니 패스)

아무튼! 변태 프로그래머 야네우라오 선생님이 감수한 책이라면, 감수했을 이유가 있다!
책의 내용이 분명 충분히 변태적일 것이다!!

그런 쪽의 변태적인 책은 아니었지만, 변태적이리라 기대한 책의 내용은 나름 기대에 부응했는데,
한빛미디어 측에서 설명하듯이, 이 책은 흡사 '코드 골프'로 대변되는, 어떻게 해서든 바이트수를 최대한 줄인 코드를 만드는 것이 목적이었기 때문이죠.

그렇기에 부제와 귀여운 표지에 낚여서, '이 책으로 알고리즘을 잘 익혀서 버벅대던 코드 좀 개선시키고 간결하고 깔끔한 코딩해야지~' 하는 마음으로 책을 산 사람은 좀 당혹해할런지도 모르겠습니다.

그런데 실제로도 책의 제목 때문에 그렇게 오해해서 읽는 사람들이 적지 않을 것 같다는게 좀 걱정인데,
이를테면 한빛미디어 쪽 책을 PR 하기 위한 연재물인 '전문가 Zoom In 2008년 7월자'로 적혀 있는 이 책에 대한 이야기를 봐도 그런 걱정이 기우는 아니...라는 느낌이 듭니다. 인용해볼게요.

커스터마이징을 제공하는 제품을 출시하는 경우 필요 이상의 기능도 고객의 요구에 따라서 추가되는 경우가 발생한다. 그에 따라 증가하는 코드의 양과 프로그램의 무게가 주는 해로움은 기능을 추가한 시점에서는 발견되지 않는 경우가 있다. 마치 몸안에서 자라나는 암세포 만큼 쌓이고쌓여서 결국엔 심각한 장애를 발생시키곤 했다. Short Coding은 건강한 코드를 생산하는 작업이다. 코드량을 줄여 건강하고 날씬한 코드를 만드는 일이다. 생성된 코드를 다듬고 다듬어 효율적이면서 직관적인 알고리즘을 만들어 내는 작업이니 어찌보면 리팩토링의 범주에도 들지 않겠는가? 저자는 실무와 동떨어져 있다고 얘기하지만 가독성을 심하게 해치지 않는 경우에 한해서는 제한적으로 적용함에 있어서 별 문제가 없을 듯 하다. 잊지 말아야 할 것은 코드의 가독성과 효율의 중심을 잘 잡는 것과 사용되는 언어의 특성을 이해해야 한다는 점이다. 세상에서 제일 짧고 멋진 프로그램을 만들어 보고 싶은가? 지금 도전하라. Short Coding과 함께!
하아아?

아니 책은 읽어 보셨는지요?

아저씨는 이 책에 박혀 있는 코드들을 보면서 건강하고 날씬한 코드라고 느끼셨나요?
저 딴 코드야 말로 구석에 박아놓으면 정말 해로움이 눈에 띄지 않는다구!
이게 뭔 코드야 라고 심각하게 고민하던 다른 사람이 코드 고치다가 결국엔 훨씬 더 심각한 장애를 발생시킨다구!

아니면 설마 처음엔 '아니 이런 괴이한 내용의 책을 한국에 수입해 출판하는 목적이 뭔가요 접접, 독도는 우리땅 대한민국만세 ...-_-;;', 하고 적으셨었는데 '그렇게 하면 책이 안팔리자나요 책 좀 팔리는 멘트를 적어주세요'하고 징징거리는 담당자의 성화에 못 이겨 나름 소설을 적으신... 것일지도 모르겠다(-_-);;; 농담입니다, 화내지 마세요. ^ㅅ^;;

그나마 누군가의 표현처럼 파블로프의 개들처럼 프로그래머들은 심플하면서도 효율 좋은 것에 침을 흘리며 달려드는 경향이 있다...는 얘기대로, 가장 끝 문장의 세상에서 제일 짧고 멋진 프로그램을 만들어보고 싶은가?
라는 프로그래머들을 도발하는 끝맺음은 확실히 '어머 이건 꼭 사야 해'하는 느낌을 가져다 주긴 하지만, 이 책을 표현하는데에 있어서는 저런 서평은 맞지 않다고 봐요... ... 아, 아닌가, 하긴 어쩐지 읽기 힘들면서도 짧은 코드 보면 뭔가 괜히 멋져보이고 반할 것 같고... 나도 한번 쯤 저런 코드로 열심히 달려서 나 없으면 프로젝트 디버깅 못하게 만들고 싶기도 하고 할 때가 ...

잘못했습니다.


어쨌든 단도직입적으로 제가 이 책을 평해드리겠습니다.

이 책은

변태책입니다.

소스 코드양을 변태적으로 1바이트라도 더 압축하는데 목숨을 건

변태책입니다.

컴파일러들의 특성들을 교묘히 해킹하는

변태책입니다.

얼마나 변태적이냐면 감수자조차

변태입니다.

감수자랑 친한, 쓴 사람도

변태입니다.


혹시 주변에 이걸로 알고리즘 트레이닝을 해봐야지, 하는 사람이 있다면 뒷통수를 강하게 후려쳐주세요.
혹시 주변에 이걸로 알고리즘 트레이닝에 성공했어, 하는 사람이 있다면 주변에 이력서 돌리세요. 이 사람 뽑지 말라고... -_-;;
혹시 직장에서 이 책을 읽고서, '나 오늘부터 건강하고 날씬한 코드 짜기로 했어 데헷~ ^-^*' 이라고 말하는 직장 동료가 있다면 바로 키보드를 빼앗고 해운대 앞바다로 피서를 보내주세요. -_- (더 심한 표현을 쓰고 싶었지만 참는다)

이렇게나 적었음에도 불구하고 이 책으로 '알고리즘 트레이닝'을 하겠다고 하신다면 당신은 변태변태 변태, 라고 얘기할 수 밖에 없어요 ㅜㅜ

그렇다면! 이 책이 코드 짧게 쓰기 변태가 아니고서야 일독의 가치조차 없는 책이냐!
책을 본 순간 '어휴 변태 냄새 나요 저리 치우세요', 라고 단정적으로 이야기할 수 있는 책이냐!
하면 꼭 그런 것만은 아닙니다.

일단 컴파일러들이나 환경에 따른 편법들 같은 잡스러운 자료들로부터, 평소의 흔히 보던 프로그래밍 스타일과 전혀 다른 느낌의 코드(이것도 변태 코드)들을 책 전반에 걸쳐서 두루 볼 수 있다는 것, 그리고 평범한 코드가 어떻게 그런 변태 코드로 바뀌어나갈 수 있는지 함께 추리할 수 있다는 면이 참신합니다. 설명도 C 계열 언어를 어느 정도 알고 있다면 쉽게 이해할 수 있도록 쓰여져 있구요.
평소에 그렇게나 아름답던 나비가 어떻게 이렇게나 징그러운 애벌레로 변태하는지 궁금해하셨던 적 없으신지요? 이 책을 보세요!

초반에 너무 변태책이라는 것을 강조했지만, 한빛미디어 쪽의 책을 PR하는 수단이 너무 마음에 안들어서(...) 그냥 그랬던 것이고, (아니 코드 변태들을 위한 책이라고 하면 어디가 덧나나요... 덧나긴 하겠다-_-;;;) 그저 프로그래밍의 재미를 만끽하게 해줄 수 있다는 면에서, 프로그래밍에 어느정도 익숙한 사람이라면 지적 유희용, 발상을 전환시키는 비타민 같은 느낌으로 훑어볼 수 있는 책입니다.

처음엔 이게 뭥미 하는 느낌으로 다가오는 코드들을 보고서 '어휴 변태 냄새 ㅉㅉㅉ'하다가도, 개중에 나오는 여러가지 기법들과 해설에 감탄하며 '이런 편법을 쓰다니 역시 변태'라고 하다가, 마침내 '우왕ㅋ 이거 쓴 사람 변태지만 진짜 천잰데?! 이딴 천재 변태를 봤나...!!'
라고 외치게 만드는 멋진 변태 책, Short Coding이었습니다.


어휴 쓰고보니 또 한빛미디어 책이야ㅜㅜ


PS: 내용은 적당히 가려 읽어주세요.

by nvu | 2008/08/05 13:40 | 트랙백 | 덧글(9)

◀ 이전 페이지          다음 페이지 ▶