천년의 금서
김진명 저 | 새움 | 2009년 05월






여름휴가와 어제새벽까지 읽은 책은 천년의 금서이다.
( 사실 어제 밤에 거의 다 읽었다고 볼 정도다. )
천년의 금서는 "무궁화 꽃이 피었습니다"를 쓴 김진명씨 작품이다.

김진명씨의 작품이 그렇듯이,
사실에 근거하지만 거기에 허구를 덧붙여서 이야기를 이끌어 간다.

주요내용은 대한민국에서 "한(韓)"이라는 글자는 도대체 어디서 왔나? 를
추적하는 내용이다. 물론 누군가가 죽고, 그 죽음을 따라서 추적하는 스토리다.
( 이런 소설에서 한명쯤 죽어주는건 당연하지 않은가? )



무궁화.. 는 잊고 "천년의 금서"를 보는게 좋을것 같다.

천년의 금서는
책이 달랑 한권이기도 하고,
조판 역시 작은거고.
글자 또한 크다.

그러니 이야기가 술술 흘러간다.
주인공은 매우 똑똑한 사람이고,
그리고 참으로 매우 쉽게 모든 문제를 해결해 나간다.
( 우연도 이런 우연이 있을 수 있나!! )

물론, 역사적인 사실과 우리나라의 긍지를 살리는것은 좋다.
하지만 소설이. 너무 술술 읽히는것은 문제가 있다고 생각한다.
( 긴장감이 느껴지는 곳은 마지막 부분 뿐 이랄까? )


아무튼 좀.. 실망했다.
그러므로 "무궁화..."는 잊고 책을 보는게 좋을것이다.
그 책에서 느껴졌던 긴장감은 전혀 찾아 볼 수 없다.
그러므로 기대하고 보지말라.

각종 온라인 서점사이트에서 서평을 보면
한국의 긍지가 느껴진다고 하지만,
물론 사실에 근거한 내용에 허구를 붙인거지만..

소설책이라면 당연히 재미가 있어야 하는것 아닌가?
( 이건 교과서나 사서삼경이 아니란 말이다. )

평:
너무 술술 흘러가는 스토리.
주인공은 천재며(물론 극중에서 똑똑하게 나온다.)
운도 무진장 좋다. ( 무려 단 한번의 실패도 하지 않는다. 세상에!! )

  1. 옷장수 2009.08.27 09:54 신고

    무궁화 꽃이 피었습니다. 재미있게 읽었던 책이었죠. 10년은 더 된 듯 OTL

    • Chan 2009.08.27 13:57 신고

      넹. ㅎㅎ.
      하지만, 천년의 금서는 실망 ;; 쩝..

  2. 용훈 2009.09.02 21:50 신고

    찬님 블로그 rss --> http://job11.co.kr/rss/rss.php?part=2 에 추가했습니다. ^^
    괜찮죠?

    • Chan 2009.09.03 10:09 신고

      헉.
      제 블로그가 IT RSS 목록에 들어갈만큼 좋은글인지 의문이네요 ^^;
      RSS는 공개 되어 있으니, 출처가 있다면 어떻게 사용하셔도 상관없겠습니다~ ㅎ

  3. 나미 2009.09.04 22:43 신고

    난 무궁화는 잊어라 라고 하길래
    무궁화꽃이 피었습니다 를 넘어설만큼 재밌다는 뜻인줄 알았는데.. ㅋ


  소프트웨어 컨플릭트 2.0 - 시대를 뛰어넘는 즐거운 논쟁  로버트 L. 글래스 지음, 박재호 외 옮김
바쁘게 돌아가는 소프트웨어 개발 업계에서 '늘 그래왔다'는 변명이란 이름으로 반복되는 오류를 한 번쯤 제거하고 싶었던 적이 있었다면 이 책에 귀 기울여 보자. 50년 실무 개발 경력자가 소프트웨어 개발 업계에 던지는 날카로운 비평과 시대를 뛰어넘는 논쟁의 세계로 여러분을 초대한다.



회사에 책을 신청해 구매 뒤 읽은 책이다.
이전에 소프트웨어, ... 개떡 ... ( Why software SUCKS...) 역시 신청해서 읽은책.

역사는 반복된다. ... 15년전에서 몇 발자국 벗어나지 못한 현재 상황을 바라보면서 심지어 절망을 느낄지도 모른다.

이 책은 1990년에 출판 되었다가 2006년에 재판되었다. 예전의 내용이 그대로 들어 있어서, 지금과는 맞지 않는 내용이 있지만 최근과도 거의 맞아 떨어지는 내용들이다. 저자는 예전의 글들에서 최근과 달라진 점, 혹은 최근에 다시 느끼고 있는 점을 각 장의 마지막에 몇페이지 추가해 두었다.


여전히 그렇듯이 읽었던 부분에서 줄 친 부분을 옮겨 적어 보도록 한다.

은총알은 없다.

1. 가능하다면 소프트웨어를 제작하지 말고 구매하라.
2. 점진적으로 소프트웨어를 제작하라.
3. 뛰어난 소프트웨어 설계는 뛰어난 설계자로 부터 나온다는 사실을 기억하라. 창의적인 소프트웨어 인재를 고용하고 양성하라.
..... 상호소통을 통해 서로 자극이 되는 만남의 기회를 제공하기 등을 제시한다.




가장 뛰어나고 명석한 두뇌들이 내 놓은 보고서

향수 십년동안 소프트웨어 생산성, 안정성, 직시성을 10배 이상 향상시킬 기술적 발전은 눈 씻고 찾아봐도 없다.
업계 실무에서 최고 수준과 평균 수준이 이렇게 차이가 나는 분야는 거의 없다.
진짜 문제는 기술이 아니다. 오늘날 정말로 심각한 문제는 관리다.

... 그래서 명세를 반복해서 조정하지 않고서는, 소프트웨어 시스템의 동작 요구사항을 정확히 내 놓지 못한 다고 믿는다. 오늘날에 구축되는 시스템은 머리속으로만 분석해서 전체 정황을 예측하기에는 너무나 복잡하다.




인지적 견해: 소프트웨어 설계를 보는 다른 시각

.... 강사가 모두에게 요구사항을 설명하자 마자, 내 급우 중 한명인 보잉사에서 온 똑똑하고 젊은 친구가 설계안을 내 놓았다. 당시 나는 문제조차 이해하지 못해서 고심하는 중이었는데 그 친구는 즉석에서 설계안을 떠 올렸던것이다! 그 때 나는 깨달았다. 설계는 마음속에서 번개처럼 떠오르는 무언가임을. 그리고 어떤 사람의 번개는 다른사람의 번개보다 훨씬 빠르다는 사실을.

프로그래밍에서 첫번째 단계는 상상이다. 일어날 일을 마음속으로 명확히 구체화 한다. 이와 같은 초기 단계에서 나는 연필과 종이를 사용한다. 진짜 그림은 마음속에 있기 때문에... 그저 끄적일 뿐이다.

어느 순간에 (설계가) 폴발적으로 떠올라서 머리 속에 모두 들어있다... 머리속에 온갖 생각이 들어 있어서 종이에 옮기지 못한다. 마음속으로 계속 고치기 때문이다.

설계자들이 무(無)에서 시작하는 경우는 거의 없다. 앞서 유사한 문제에 사용했던 해결책에서 가져온다는 뜻이다. 돌아 보면 에이다 수업에서 보잉사에서 온 젊은 친구가 내 기를 죽였던 방법이 바로 그것이다. 그는 유사한 문제 유형을 이미 풀어 보았고, 그래서 머리속에 잠정적인 해결책이 들어있었던 것이다!




소프트웨어 오류에 대한 단상

2. 사람 목숨이나 돈이 걸린 시스템의 소프트웨어는 소프트웨어 오류에 대비해서 오류 제거를 넘어선 주의를 기울여야한다. 오류가 없도록 아무리 노력하고 바란다고 해도, 제품은 여전히 오류가 있다는 가정하에 취급해야 한다.
3. 소프트웨어 오류 제거에서 가장 중요한 요소는(사실상 모든소프트웨어 제작에서 가장 중요한 요소는) 업무에 투입할 인력 선택이다. 우수한 인력은 우수한 해결책을 내놓는다. "나쁜" 인력은 훨씬 나쁜 해결책을 내 놓는다.



프로토타이핑에 대한 단상

두 논문의 실험 방식은 기본적으로 동일하다. 개발 팀 여럿을 대상으로 몇 팀은 생명주기 접근방법을, 다른 몇개 팀은 프로토타이핑 접근 방법을 사용해서 소프트웨어를 개발했다. 개발 후에는 명확한 기준에 의거하여 점수를 매겼다.
그렇다면 결과는 어땠을까? 이 질문에 대답하기 위해, 사용자들과 소프트웨어 개발 자들에 대한 인터뷰를 진행했다. 사용자들은 일반적으로 프로토타이핑으로 만든 제품이 사용하기 더 편하고 좀 더 정확하고 쓸만한 인터페이스를 제공했지만 기능면에서는 부족하다고 판단했다.

프로토타이핑을 어떻게 관리할까?... '대충 급조한' 첫번째 제품이 형편없는 최종 제품이 되어 버리지 않도록 만드는 방법은? ... 프레드 브룩스가 'The Mythical Man-Month'에서 "버릴 수 있도록 만들어라" 라고 말한지 십여 년이 넘었지만, 우리는 아직도 방법을 제대로 파악하지 못한 상태이다. 단지 프로토타이핑이 장래성이 있는 기술이라는 사실만은 안다.



-_- 빌어 먹을 -_- IE7 -_-
또 한참 써 두었는데 -_- 뻗어 버렸다. -_-;;;;
지금보다 3배는 더 많이 적었지만 -_-  그것도 2번씩이나!!!
걍 요까지만 -_-;;;


  1. iolo 2008.08.15 21:29 신고

    ㅎㅎㅎ
    그러니까 노트를 쓰라니까~.~

    책이나 좀 빌려주셈~

    • Chan 2008.08.16 11:34 신고

      푸하하~ 이제 쓸껍니다. ㅋㅋ
      노트가 대세~ ㅎㅎ

  2. 버리 2008.08.17 12:16 신고

    Thinkfreenote 쓰고 계시죠? ^^;;

    • Chan 2008.08.17 20:10 신고

      최신 포스트는 Thinkfree note로 작성된거랍니다. ㅋㅋ

2-3주동안 아직 100페이지도 못본 책을 오늘 마음 먹고 읽었다.
원서의 제목은 다음과 같다.
Why Software SUCKS... and what you can do about it.


  소프트웨어, 누가 이렇게 개떡같이 만든 거야 - 사용성을 제대로 이해하는 유쾌한 통찰  데이비드 플랫 지음, 윤성준 옮김
왜 사용자가 소프트웨어를 사용하기가 어려운지를 사용성 문제에 관심이 있거나 관심을 갖기 시작한 초보 프로그래머, 웹 기획자, 관리자, UI 개발자, 웹디자이너, 웹 개발자, 컨텐츠 작성자, 마케팅.비즈니스 담당자 등에게 쉽게 알려주는 책이다. 어려울 수 있는 소프트웨어의 사용성 문제를 일반인이 읽어도 소화할 수 있을 정도로 쉬운 용어와 유머러스한 문체로 풀어냈다.

우선 확 눈길을 끄는 제목과 표지에 한표.

위에 설명이 나와 있으니 더 이상 이 책에 대해서 다시 설명할 필요는 없을것 같고
항상 그랬듯이 책을 읽으면서 괜찮다 싶은 부분을 발췌해 본다. ( 좀 많다. ;; )

스크롤의 압박이 있을테니.. 책을 읽은 결론 부터 이야기 하면.


책 내용의 대략 다음과 같은 내용이다.

1. 왜 이딴식으로 만들었나? 조금 생각해서 만들면 안되나?
2. 사용자들과 괴짜(Geek)혹은 프로그래머는 생각 자체가 다르다.
3. 마이크로소프트에 대한 잡다한 이야기
4. 프로그램이 맘에 안 들면 사용자가 갈궈(feed back)해 주자. 칭찬도 잊지 말고.

뭐 이런 내용들이다.
딱 책의 원서 제목대로 "우리가 할 수 있는 일"을 마지막에 배치해 놓았다.


충분히 읽을만 하다. 특히 프로그래머한테는.
정확하게 이야기 하면 프로그래머 보다는 기획자가 읽어야 한다.
책에서 계속 지적당하는 UPS나 스타벅스는 웹사이트를
과연 프로그래머 혼자서 생각하고 만들었을까?



그럼 아래는 발췌한 내용들이다. ( 생각보다 내용이 길다. )

( 사진은 다른 곳에서 그냥 암거나 퍼온것임 )

그림4.(그림생략) 마이크로소프트 워드의 메뉴 바가 문서 위에 떠 있다. 이렇게 할 수는 있지만, 누가 이런것을 원하겠는가?


예를 들면, 문서를 윈도우의 휴지통으로 보낼 때 나타나는 확인 대화상자("~ 항목을 휴지통에 버리시겠습니까? 정말로? 정말, 정말, 정말로?")를 끄는 방법과 같은 것들 말입니다. ( Undo와 같은 기능을 사용하면 되지? )


그 시절에는 프로그램을 사용하기 쉽게 만드는것은 잘못이라는 통념이 있었습니다..... 지적투쟁을 통해 자신의 가치를 증명한 사람들만이 프로그래머의 노력으로 인한 혜택을 받을 수 있어야 한다는 것이었습니다. 처음 사용했던 시스템에서 문서를 인쇄하기 위한 명령어이 Print 또는 P가 아니라 Q (인쇄를 하기 위해서는 문서를 큐에 넣어야 하므로)라는 것을 알아 냈을 때 느꼈던 자부심이 기억납니다. 저는 마법의 주문을 배운것이었습니다. 저는 소수의 선택받은 사람이 된 것이었습니다. 저는 똑똑했으니까요!


그대의 사용자를 알라. 사용자는 그대가 아닐지니


사용자 인터페이스를 설계할 때 프로그래머가 하는 두번째 실수는 사용자로 하여금 프로그램의 내부 동작을 이해하도록 강요하는 것입니다.....누군가 사용자 인터페이스가 왜 그런 식으로 동작하느냐고 묻는다면 그는 의아해하며 "그게 제 프로그램의 동작방식입니다."라고 대답할 겁니다.


우리는 프로그래머처럼 생각하도록 강요 받고 있었던 것입니다..... 자동차를 운전하려고 자동차 정비공 처럼 생각해야 하는것도 아니고, 아스피린 한 알 먹으려고 의사처럼 생각해야 하는것도 아니며, 햄버거를 굽기 위해 정육점 주인처럼 생각해야 하는것도 아닙니다. 우리는 힘들여 번 돈을 이 제품에 지불했습니다. 제품이 우리에게 맞도록 프로그래머가 노력해야지, 그 반대가 아니란 말입니다.


단 한번이라도 "이런! 삭제하려던게 아니었는데. 물어봐줘서 고맙군."라고 말하며 '아니오' 버튼을 클릭한 적이 있습니까? ... 자동차 키를 꽂아 돌렸을 때 "정말 시동을 걸고 싶으십니까?" 하고 물어 보는 차는 없습니다.... 자동차에 시동을 걸때나 가게에서 물건을 살 때 확인 질문을 받지 않는 또 다른 이유는 실수라고 깨닫는 즉시 작업을 취소해 원래대로 되돌릴 수 있기 때문입니다.... 이런 실행 취소(undo) 기능은 사용자 인터페이스 설계자의 무기고에 있는 무기 중 가장 훌륭한 것입니다.


스타벅스의 프로그래머들은 아마 검색에 대해 더 많이 제어할 수 있게 만드는 것이 더 강력하고 좋을 것이라 생각했을 겁니다. 그러나 실제로 그것은 불필요할 뿐 아니라 사용자를 짜증나게 합니다. 어느 누구도 "반경 5마일 안에 스타벅스 매장이 있는가? 10마일은? 15마일은?" 과 같은 식으로 묻지 않습니다..... 해당 범위에서 매장을 찾지 못한 경우 적절한 결과를 찾을 때까지 자동으로 검색 반경을 넓혀야 합니다.


컴퓨터를 실제로 사용할 때는 적절한 수준에서 보안과 실용성 사이에 타협을 하게 됩니다. 애플리케이션에 대해 적절한 수준의 트레이드오프를 선택하는 것이 프로젝트의 성공과 실패를 가릅니다.


지문을 통한 인증은 문제가 많습니다. 지문은 훔치기는 쉬운 반면 바꿀 수는 없기 때문입니다. 생각해 봅시다. 식당에서 사용한 모든 유리잔을 깨끗이 닦을 겁니까? 모든 문고리는 어떻고요?.... 패스워드의 장점중에 하나는 새로운 패스워드를 만드는 데 드는 비용이 싸다는것 입니다. 사실 공짜나 다름없죠. 따라서 패스워드가 유출됐다는 생각이 들면 언제든 새로운 패스워드로 바꿔 버릴 수 있습니다.


요즘은 아무도 개인 외상 장부를 관리하지 않습니다. 대신 상점은 전체 지불 프로세스를 비자나 마스터 같이 회계, 지불, 수금 과정을 처리하는 신용카드 회사로 아웃소싱합니다. 상점은 자신들의 핵심역량(옷을 팔거나 자동차를 수리하는 등의)에 노력을 집중합니다.....상점의 지불 과정을 아웃소싱한 것처럼, 웹 사이트도 인증 과정을 (1) 자신들이 뭘 하는지 잘 알고 따라서 (2) 제대로 할 수 있는 제3의 회사로 아웃소싱하는 것이 좋습니다.


그러나 이런것이 실제로 활용되려면 조금 기다려야 할 것입니다. 마이크로 소프트는 2000년도 경에 패스포트 시스템으로 이와 정확히 같은 서비스를 시도했었습니다..... 원래의  아이디어는 어떤 웹 상점이든 마이크로소프트에 적정한 요금을 내면 그들의 고객 인증을 마이크로소프트로 아웃소싱할 수 있게 만드는것 이었습니다..... 시장이 패스포트를 거부한것이 분명합니다.... 기본적인 문제는 마이크로소프트가 인증 데이터를 보관하는 것을 허용하는 것에 대한 고객의 부정적 생각이었습니다....."은행으로서 우리가 파는 가징 기본적인 상품은 신뢰입니다.... 우리가 고객의 인증 데이터를 직접 보관하지 않고 마이크로소프트가 보관하게 하는 것은 신뢰에 대한 배신이라고 생각하는 고객의 비율이 거북할 정도로 높다는 것을 알게 되었습니다..... 우리는 패스포트를 사용할 수 없었고, 그걸로 얘기는 끝났습니다.


책에 나오는 용어 설명

opt in : [명사]<통신> 미리 받아 보겠다고 허락한 사람에게만 전자 우편을 보내도록 하는 일. 또는 그런 방식.

opt out : [명사]<통신> 전자 우편을 보내서 받은 사람이 수신을 거부하면 이후에는 보낼 수 없도록 하는 일. 또는 그런 방식.


유럽 연합은 미국보다 개인정보 보호에 대해 엄격한 법을 가지고 있어 데이터를 수집, 사용하기 위해서는 보통 옵트인(opt-in) 동의를 필요로 하지만, 옵트인 박스는 흔히 디폴트로 체크되어 있고, 아무도 자세히 살펴보지 않는 라이선스 동의서 속에 숨겨져 있습니다.


그런 곳에는 항상 자신이 고객을 제대로 이해하지 못한다는 사실을 인정하기보다는 자기가 이해하지도 못하는 전문 용어를 나불거리면서 고객을 낚아 제품을 팔 생각만 하는 마케팅 얼간이들이 있게 마련입니다. 자기네 소프트웨어 새 버젼이 '객체지향'으로 만들어졌다고 잘난척 하던 사람이 기억납니다...... "제가 구매하는데 있어 그런 차이점에 왜 신경을 써야 하는지 설명해 주시겠습니까?" 라고 물어서 그들의 입을 다물게 합니다.


저는 오해하고 있는 모든 팀에게 설명하기 위해 많은 노력을 했습니다. 컴퓨팅은 더 이상 기술 분야가 아니라, 사람과 관련된 분야입니다.


괴짜(Geek) [명사]
종종 다른 사람들이 생각하기에 지나치다 싶을 정도로 과도하게 컴퓨터나 다른 기술의 사용을 즐기고 이에 자부심을 갖는 사람. - 마이크로소프트 구내 매장에 걸려 있는 티셔츠에서


그들은 스스로 이렇게 생각합니다. "난 이게 마음에 들어. 이렇게 하는게 명확하지. 따라서 다른 사람들도 이걸 좋아할 거고, 이렇게 하는 게 그들에게도 이해하기 쉬울거야. 그저 상식(common sense)일 뿐이지. 안그래?......틀렸습니다. 소프트웨어를 만드는 괴짜들의 세계관은 사용자들의 세계관과는 매우 다릅니다. 별로 놀랄만한것도 아닙니다. 의사와 환자가 세상을 어떻게 다르게 볼지 생각해 보십시오.
"....이 용어(common sense)는 세상에서 가장 모순되는 단어의 조합이다..... 그들은 확실히 다르게 생각하기 때문입니다. '상식'을 '내 생각'으로 바꾸십시오. 그게 실제 의미입니다.....


괴짜들은 항상 자신들이 상황을 통제하고 있다는 느낌을 갖고 싶어 합니다...... 괴짜들은 수동 기어 자동차를 좋아합니다. 뭔가를 마음대로 제어할 때의 느낌을 좋아히기 때문입니다. 그 방법을 배워야 하는것, 그리고 운전을 하면서 지속적으로 기어를 바꿔야 하는것 과 같은 부가적인 일에는 신경을 쓰지 않습니다. 그들은 이런 것이 상당히 괜찮은 트레이드오프라고(그리고 자동차라면 당연히 그래야 한다고) 생각하며, 그걸 인식하고 그렇게 할 수 있을 정도로 똑똑하다는 것에 대해 스스로 자부심을 느낍니다.


프로그래머는 소프트웨어를 조금 더 좋게(그들이 더 좋다고 생각하는 것은 종종 사용자들의 생각과는 다르지만) 만들려 하면서 하루를 보내고, 다음 날에도 조금 더 좋게, 그 다음 날에도 조금 더 좋게 만들려고 합니다.


프로그래머는 자신 또는 다른 프로그래머가 만든 정신적 구조만을 조작합니다. 따라서 괴짜들은 다른 분야에서와는 달리 추상적 정신 모델을 통해 세상을 바라봅니다.....은행 창구나 항공사 체크인 데스트는 패킷 스위치 큐로 구성되어 있는 반면("줄에 서 있는 다음분은 4번 창구로 오세요"), 슈퍼마켓은 각 계산원마다 별도의 큐를 가지고 있습니다. 캔디 바를 계산하는데 수표책을 가지고 버벅거리고 있는 노쇠한 할머니 뒤에서 기다리다 짜증이 난 한 괴짜가 슈퍼마켓 매니저에게 "이 대기열은 패킷 스위치 큐로 해야 한다는 걸 모르겠습니까?" 라고 비명을 지를 지도 모르는 일입니다..... 괴짜들은 이런 정신 모델속에서 살고 이런 모델을 좋아합니다.


괴짜들의 7가지 습관
5. "고장 나지도 않는 것을 계속 고치려 한다. 고장날때까지."
괴짜들은 간단한 것을 간단하게 만들기보다는 복잡한 것을 가능하게 만드는데 집중합니다.

6. "내가 대답을 잘못한게 아니라, 당신이 질문을 잘못한 것이다." 라고 생각한다.
스타벅스 매장 위치 검색 웹 페이지보다 더 좋은 예가 있을까요?... 스타벅스 매장이 전 우주에 하나 밖에 없더라도, 제 집에서 가장 가까운 매장이 하나는 있을것입니다..... "당신은 5마일 내에 스타벅스 매장이 있는지 물었고, 나는 없다고 대답했다"고 웹사이트가 말합니다. 이 멍청하, 질문을 잘못한건 내가 아니야. 그런 질문은 나 대신 네가 스스로 한거란 말이야.


새로운 제폼을 만들 때나 기존 제품을 수정할 때, 기존 사용자 때문에 엄청난 제약이 따릅니다. 사용자가 이미 익숙하게 사용하는 어떤것을 깨고 새로운 제품을 출시하는 것은 매우 어렵습니다....."Q: 신이 어떻게 6일만에 세상을 창조했지? A: 기존에 설치된게 아무것도 없으니 하위 호환성을 걱정할 필요가 없잖아."



제가 이 책의 전반에 걸쳐 설명했듯이, 벤더는 사용자가 더 좋은 소프트웨어를 요구하지 않는 이상 그런 소프트웨어를 제공하지 않을겁니다. "사람들이 와서 어떤 것이 개떡 같은지를 알려 주면, 우리는 그걸 더 좋게 만들기 시작합니다."....."우리가 어떤 것이 개떡 같고 어떤 것이 그렇지 않은지를 알아내는것은 당신이 상상하는 것보다 훨씬 어렵습니다."


그러나 그들의 궁극적 목표는 사용자의 마음에 드는 소프트웨어를 만들어 구입하게 하는것, 사용자의 마음에 드는 웹사이트를 만들어 사용하게 하는 것, 그리고 그로부터 개발자 자신과 개발자를 고용한 사업주가 보상받을 수 있도록 하는 것입니다.


대부분의 제조업자는 고객의 소리를 듣고 싶어 합니다. 그들은 고객이 어떤 생각을 하는지, 뭘 좋아 하고 싫어하는지, 어떤 것이 바뀌기를 원하고 어떤 것이 그대로 남아있기를 원하는지 알아야 한다는것을 이해하고 있습니다......"제조업자에게는 만족하지 못한 고객이 설계에 대한 피드백의 중요한 원천이다. 그들은 다른 방법으로 쉽게 얻을 수 없는 정보를 제공한다. 설계자와 생산자는 종종 제품에 너무 가까이 있어 제품이 약속한 기능을 다하지 못해 실패할 수도 있다는 것을 올바르게 인식하지 못한다....."


웹이 도래하기 이전 세상에서는 그걸로 끝이었을 겁니다. 화난 고객 한 명이 제품 하나를 반품하지만, 다른 사람에게 큰 영향을 미치지 못했습니다. 그러나 오늘날에는 고객이 엄청 화가 나서 아마존닷컴에 다음과 같은 평가를 올릴 수 있습니다...... 이렇게 되면 아마존에서 그 제품은 거의 팔리지 않을 겁니다. 그리고 제조업체는 그 제품 생산을 중단하게 될 것입니다.


이번에 책을 무려 3권이나 구입했는데, 그 중에 하나.

  테스트 주도 개발  켄트 벡 지음, 김창준 외 옮김
최근 학계와 업계에서 많은 주목을 받고 있는 프로그래밍 방법인 '테스트 주도 개발(Test-Driven Development)'에 대해 설명한 책이다. 테스트 주도 개발을 퍼뜨린 장본인이며 객체 지향 프로그래밍의 선구자 중 한 사람인 켄트 벡이 직접 서술했고, 부록에는 TDD 시연 동영상을 수록했다.



지금은 겨우 서문을 다 읽고 1부의 1장을 아주 조금 읽었다.
실제 내용은 겨우 5-6페이지 읽었을 뿐이다.

책의 앞에는 옮긴이의 서문과, 옮긴이가 쓴 TDD 수련법, 옮긴이와 글쓴이의 인터뷰내용이 들어 있다.
이 내용은 테스트주도개발을 처음 접하는 독자들에게는 그렇게 크게 느낄만한 내용이 없다.

처음 읽는 사람은테스트 주도 개발이 뭔지도, 왜 필요한지도 모르기 때문이다.


저자의 글에서 몇가지 정리하면..

. 매 결정사항에 대해 피드백을 제공하는 실행 가능한 코드를 기반으로 하는 유기적인 설계를 해야 한다.
. 테스트를 쉽게 만들려면 반드시 응집도는 높고 결합도는 낮은 컴포넌트들로 구성되게끔 설계해야 한다.

| 용기 |
두려움이란 나쁜 의미의 - 무서워요. 프로그래머는 젖꼭지가 필요해요 - 두려움을 뜻하는 것이 아니고, "정말 어려운 문제라서 시작 단계인 지금은 어떻게 마무리될지 알 수 없군" 하고 생각하는 식의 합리적인 두려움을 말한다.

. 두려움은 여러분을 망설이게 만든다.
. 두려움은 여러분이 커뮤니케이션을 덜 하게 만든다.
. 두려움은 여러분이 피드백 받는 것을 피하도록 만든다.

프로그래밍 문제가 어려울수록 각각의 테스트는 좀 더 작은 부분을 커버해야 한다.

순수하게 TDD로만 풀어낼 수는 없는 프로그래밍 작업이 분명히 있을 것이다( 혹은 최소한 아직까지는). 예를들면 보안 소프트웨어와 동시성(concurrency)은, TDD로 해당 소프트웨어의 목표가 달성되었다는것을 기계적으로 보여주기에 부족한 두 가지 주제라고 할 수 있다.

설계는 반드시 잘 되어야 한다. 그렇게 해야만 Test를 이용해서 개발하기가 쉬워진다. 즉, 테스트가 설계를 잘 하도록 도와주지는 않는다. 그렇기 때문에
설계가 우선 되어야 한다.



들어가는 글에서..
"... 하지만 미합중국 달러로 명명된 채권만 다루더군요. 저는 새로운 채권 펀드를 시작하려고 하는데 제 전략상 다른 화폐로 채권을 다룰 필요가 있습니다." 라고 했다. 보스가 워드를 돌아보며 말했다. "저기, 우리가 그걸 할 수 있을까요?"
이것이 바로 어떤 소프트웨어 개발자에게든 악몽이 될만한 시나리오다. 당신의 몇가지 가정하에 성공적이고 행복하게 순항하고 있었는데 별안간 모든것이 바뀌었다.

.....

그날 하루가 끝나갈 즈음에는 테스트가 전부 통과했다. 워드는 코드를 빌드에 체크인하고 보스를 찾아갔다. "할 수 있습니다.", 그는 확신에 차서 말했다.

이 이야기에 대해 조금만 생각해보자. 이틀 만에 잠재적 시장이 몇 곱절이나 커졌고 덕분에 와이캐시의 가치 역시 몇 배 늘어났다. 하지만 그렇게 빨리 그토록 많은 비즈니스 가치를 만들어내는 능력은 우연이 아니었다.


저기에서는 저기 빨간 말이 진짜 마음에 와 닿는다.

당신의 몇가지 가정하에 성공적이고 행복하게 순항하고 있었는데 별안간 모든것이 바뀌었다.

대충 요렇다~


딱 요만큼만 보고, 충분히 -_- 필요하다고 공감했다.
이번 설에 집으로 내려가는 길에, 차가 막히는 읽을 책을 구하려고 서점에 들렀었다.

컴퓨터 관련 책을 한권 살까 했는데, 테크노마트에 있는 서점에는 그리 책이 많지 않았다.
그리고 다른 책들도 한번 살펴 봤는데, 그리 눈에 띄는 책이 없다.

지하철 타야할 시간은 점점 다가오고, 오랜만에 흥미진진한 추리소설을 읽어 볼까?

처음 골랐던 책은 꽤나 유명한 책을 골랐었는데,
애거서 크리스티의 작품이라는것과, 매우 끌리는 이름을 가지고 있는 책.

"그리고 아무도 없었다. ( And Then There were none. )"


  그리고 아무도 없었다 - 동서미스터리북스 3  애거서 크리스티 지음, 김용성 옮김
'그리고 아무도 없었다'라는 제목처럼, 이 소설은 10명의 등장인물들이 자신의 지난 죄과 때문에 차례차례 죽음을 맞이하는 과정을 그려내고 있다. 대개의 추리물들이 그러하듯이, 외부와의 통신수단이 끊긴 밀실상태에서 서로가 서로를 의심하면서 긴장이 고조되어가는 플롯은, 이 작품에서도 유효하게 사용된다.


이 책의 제목은 "그리고 아무도 없었다." 이지만, 이것 말고도, "하나 둘, 내 구두 버클을 채우고" 라는 제목을 가진 또 한편의 추리 소설이 들어 있다.

"하나 둘, 내 구두 버클을 채우고"라는 소설은 그리 집중하지 못하고 읽었기 때문에 그렇게 재미를 느끼지 못했다. 지하철에서 마지막 부분을 조금 읽었는데, 옆 사람이 떠드는 바람에 집중도 못하고 -_- 재미도 떨어지고.. 나중에 집에 돌아와서 새로 읽었으나 역시나 -_-;; 그리고 소설의 내용이 충분히 독자가 예상할 수 있도록 되어 있다.


"그리고 아무도 없었다"의 초반 도입부는 책 뒤에 적힌 말로 대신하겠다.

초면의 남여 10인이 절해고도 인디언섬으로 향한다. 불길한 바위섬에 도착한 일행은 호화로운 대저택으로 들어가나 정작 초대한 주인의 모습은 보이지 않고 우아한 식탁만이 그들을 맞이한다. 그때 어디선가 들려오는 마더 구즈의 노래 <10명의 작은 인디언>!
기발한 착상, 얽히고 설킨 복선, 미스터리 여왕의 진면목이 드러나는 불후의 명작.

책은 충분히 읽을만큼 재미있다.
범인을 추측해 가면서 읽으면 당연히 훨씬 더 재미 있어진다.


추리소설을 읽을때 주의 할 점은 소설 내용에 등장하는 인물이 매우 많다는것이다.
그러므로 초반에 등장인물이 설명될때에 잘 기억해 두는것이 좋다.
그렇지 않으면 사람이 헛갈려서 재미가 팍! 반감 될것이다.

"그리고 아무도 없었다." 의 경우에는 1~5페이지 사이에 모든 인물이 등장하여 설명되고 있으니
책을 읽으면서 자주 참고 하여서 읽었고, "하나 둘, 내 구두 버클을 채우고"는 아예 내용이 시작하기 전에, 미리 한페이지에 다 설명해 준다.

  1. 제노몰프 2008.02.12 01:15 신고

    그렇죠. 초반에 등장인물이 한꺼번에 펼쳐지니 기억하기 조금 힘들더라구요. 그래도 소설자체가 인물들이 섬에 모인 이후에는 각자의 캐릭터를 살리고 있기 때문에 읽어내려가는 데 별 어려움은 없었던 것 같습니다. 재미있는 소설이었어요.^^

    • Chan 2008.02.12 02:12 신고

      맞아요. 등장인물의 캐릭터가 아주 잘 살아 있던것 같아요 ^_^ 그래도 이름보다는, 하인, 선생님, 의사 뭐 요렇게 설명되는게 더 쉬울듯 해요. ㅋㅋ
      ( 이름이 없으면 -_- 말이 안되긴 하지만. ㅋ )

  2. 현영목소리 2008.03.07 11:36 신고

    나.. 이 책 고등학교 때인가? 옛날에 읽었었는뎅.. 한참 애거서 크리스티 소설 좋아할때.. ㅎㅎ
    이거 말고도 잼나는거 많았던것 같은뎅..
    쥐덧, 오리엔트 특급살인?? 맞나? 이런것들도 잼나게 봤오..
    함.. 보삼.. ㅋㅋ

    근데.. 내가 누구~ 게??
    하하하~~

    • Chan 2008.03.08 16:09 신고

      내 주위에 현영 목소리는 한명 밖인데. 어쩌지? ㅋㅋㅋ
      누구~게. 라고 말할 사람도 한명 밖인것 같은데 어쩌지? ㅋㅋㅋㅋ
      오리엔트특급살인은, 1974년작 영화를 이미 본적이 있어서. ㅎㅎ. http://ggaman.com/tt/82

      근데.. 요렇게 방문까지 해 주다니. 영광인데~ ㅋㅋ

이번엔 스프링이다~

요것도 -_- 설마.. 몇일만에 끝나는건 아니겠지 ;;;
직접 해 봐야 하는데 -_- 책만 읽고 넘어 가는 ... ㅋㅋㅋㅋ


  스프링 인 액션 - 에이콘 오픈소스 프로그래밍 시리즈 9  Craig Walls.Ryan Breidenbach 지음, 이태상 옮김
스프링의 근본 사상을 소개하며 신속하게 프레임워크에 대한 실질적인 연구를 시작하는 법을 알려준다. 책 전반에 걸쳐 확장되는 예제와 짧은 코드들을 통해, 어떻게 간단하면서 효과적인 J2EE 애플리케이션을 개발할 수 있는지를 보여주고 있다.
  1. sungsunc 2008.01.26 21:57 신고

    앗~ 봄책이다~ㅎㅎㅎ

    • Chan 2008.01.30 01:06 신고

      봄 책인데.. 책 내용은 잘 모르겠네요 ㅠ_ㅠ

어제.. 하루 종일 집에서 뒹굴다가..
이게 뭐하는 짓인가 싶어서, 오늘 도서관에 갔습니다.

몇일전 팀장님께서 재미 있을거라면서 읽어 보라고 주신 책이 바로,
"뉴욕의 프로그래머" 이지요..

  뉴욕의 프로그래머  임백준 지음
뉴욕 월스트리트 금융회사에서 근무하는 프로그래머들의 이야기를 소설 형식으로 그렸다. 십수 명의 등장인물들이 저마다 독특한 개성과 프로그래밍 실력으로 만들어가는 이야기를 통해 프로그래머들의 창조적이고 예술적인 노동의 가치를 엿볼 수 있다.


"프로그램은 이러한 방법으로 짜야한다." 라는 어려운 책이 아닙니다.
그냥 뉴욕에 있는 프로그래머의 일을 다루는 소설책이죠 ^_^

한국에서 건너간 "영우"라는 주인공(당연히 프로그래머)이 나오고
그의 직업인 주식거래프로그램을 다루는 회사에서,
일어 나는 일을 바탕으로 하고 있습니다.

이것을 읽어 보면, 참으로 실무와 관련되는 내용이 많이 나옵니다.

1. 인텔리j를 IDE로 쓰고
2. Swing 으로 어플리케이션을 개발하고
3. Swing과 관련되는 Event Dispatch Thread ( EDT ) 내용도 나오고
4. 테스트를 위한 JUnit 도 나오고
5. 실제 데이터처리와 UI를 구분하라는 이야기도 나오고,
6. Java의 컨커런트패키지에 관련된 내용도 나오고
7. 버그는 어떤것은 지금 당장 고쳐야 하고 어떤것은 나중에 고쳐야 하는지..

등등 많이 등장합니다. ^_^


Java라는 언어는 무시하고라도, 프로그램 회사에서 나오는 일반적인 체계라던지 등은,
프로그래머를 꿈꾸는 초보자분들이나 대학생분들은 꼭 읽어 보았으면 하는 바람입니다.

Java를 실무를 다루시는 분은 그냥 재미삼아 읽어 볼만 하구요.
( 특히 Client단이 아니라, Server단 분들은.. ^_^ )
( 제가 다니는 회사가 국내에 몇안되는 Java Client Application 개발 회사라 ;; ㅋ )
( 우리회사에 들어온 신입이라면 반드시 읽어 보라고 하고 싶은 책이네요 ^_^ )
( 사실 저도 이 책을 읽으면서 몇가지 느낀것이. ㅋㅋㅋㅋㅋㅋㅋ )

다시 한번 말하지만, 이 책에는

"프로그램은 이러한 방법으로 짜야 한다." 라고 적혀있지는 않습니다.

하지만, 책을 다 읽고 나면
"프로그램은 이러한 방법으로 짜야 하는구나~" 라고 느낄 수 있을것입니다.
책의 절반이상이 버그와, 그 버그를 처리하는것에 대한 이야기가 나오거든요 ^_^

절대 어려운 책이 아닙니다.
가벼운 소설책 읽듯이 한번 읽어 보세요 ^_^

자기가 프로그래머라면, 혹은 프로그래머를 꿈꾼다면,
이 책을 지루하지 않게 읽을 수 있을것입니다. ^_^

물론, 진짜 실무에 있으신 분들은, 이깟것이라고 생각할 수도 있겠죠 ^_^

요즘에.. 팝송중에서.. 괜찮은 노래가 있어서. ㅎㅎ

[Kanye West] Stronger

  1. 지나가다 2008.06.04 19:21 신고

    2008 그래미 시상식 공연때 셔터 쉐이더 쓰고 나와서 노래 하는데 완존 작살이였읍니다.

    • Chan 2008.06.04 19:25 신고

      찾아 봐야 겠군요~ ㅎㅎ 감사 합니다. ^_^

  2. 여민 2011.02.02 21:56 신고

    2010년 8월 낙산 썸머위크앤티인가?
    거기에 칸예 웨스트 왔었음.
    ㅋㅋㅋ

+ Recent posts