본문 바로가기
나의 서재

[책]Code Craft 짧은 서평

by esstory 2008. 3. 9.

Code Craft 코드 크래프트 - 10점
피트 구들리프 지음, 김윤명 옮김/한빛미디어


책 제목은 참 멋있다.

하지만, 700 페이지나 되는 엄청난 물량공세에 비해 구태의연한 사실의 나열과 반복이 500 페이지는 되어 보인다.

 

책의 내용을 꿰뚫는 멋진 서평은 희한하게도 같은 책 16페이지에 있는 “Code Craft에 보내는 찬사에 적혀 있는 아래 글이다.


정확히 말해서 이 책은 아무 것도 모르는 신입사원에게 줘야 할 그런 종류의 책입니다. 진솔하고, 읽기 쉽고, 신출내기 프로그래머들이 알아야 할 주제들에 대해 광범위한 영역을 다루고 있습니다

신입 프로그래머들에게 어울릴법한 초보적인 내용의 글이 실제로 상당히 많아서 책의 반 정도를 혹시나 하고 읽다가 집어 치울까 여러 번 고민한 책 --;;

 

하지만, 나름 책을 읽다 보면, 책의 전체 내용도 중요하지만, 기억해야 할 몇 군데 좋은 글만 만나도 용서가 된다.

책의 후반부로 갈수록 읽을만한 내용이 조금씩 나오고 특히 부록으로 있는 답과 논의”(611 ~ 732p) 부분은 실무에서 접할 수 있는 여러 가지 질문에 대한 저자의 의견을 엿볼 수 있어 도움이 되었다.

 

개인적으로는 광범위한 실무 경험을 다룬 책자를 원한다면 이 책보다는 Code Complete2 를 권하겠다.  양도 많을 뿐더러 이 책보다 전달하는 내용의 깊이도 상당히 깊어 도움이 많이 되는 책.

 

책에서 건진 내용들 


최적화가 절대적으로 필요하다는 사실이 증명되지 않으면 최적화를 하지 않습니다.
(311p)

가끔 보면 최적화가 굳이 필요하지 않은 부분에 최적화를 위해 상당한 시간과 노력을 투입하는 사람을 만나게 된다.  최적화가 필요할 만큼 성능 이슈가 있는 부분인지, 시간대비 효과가 있는 지 물어 보고 싶다.

설계를 할 때는 언제든지 설계를 하는 부분보다 바로 다음으로 큰 콘텍스트 안에서 생각하고 설계하십시오 의자는 방안에서, 방은 집 안에서, 집은 주변 환경 안에서, 주변 환경은 도시 계획안에서  - 일라일 사리넨
(354p)

 그냥 봐도 멋진 말 ^^; 

객체지향 설계 - … OO 설계는 시스템에 있는 데이터들에 초점을 맞춥니다.
(355p)

당연한 얘기인데, OO 를 하면 할수록 데이터를 잘 다루는 것이 프로그램의 키가 된다는 것을 절감하고 있다. 요즘하고 있는 프로젝트에서도 데이터 클래스를 잘 설계하고 UI 부분과 격리시켜 두면 두고 두고 유지보수가 쉬어지고 데이터에 집중할 수 있게 된다는 것을 뼈저리게 느끼고 있다.


팀장이 결단력이 없고 무능력한 사람이면 그렇게 하려고 한 것이 아닌데도 민주주의를 하게 될 수 있습니다. 그런 어눌한 팀장은 알아차리지 못하는 사이에 서서히 존재가 희미해질 수 있습니다. 팀원들이 좌절해서 그의 역할을 공동으로 대신하게 됩니다
(445p)

팀장의 능력은 참 중요하다. 관리자로서의 역할 못지 않게 기술적 리더를 겸해야 하니 사실상 슈퍼맨이 되어야만 가능한 게 현실의 관리자 같다. 중소기업에서는 거기에다가 영업까지 해야 하는 경우도 많은데 다행히 아직 영업은 시키지 않을 것 같고, 그럴 능력도 없다. 어디나 마찬가지지만, 올라갈수록 월급 많아지는 것 말고 좋아지는 것 하나도 없다. 

실무적인 추정방법

1.     일을 가능한 한 가장 작은 덩어리로 나누십시오. 이것은 시스템 설계의 실질적인 첫 번째 패스에 해당합니다.

2.     이해하기 쉬운 적당한 크기의 구성요소들로 잘게 나누었으면, 각각의 덩어리에 대해 맨-아워 또는 맨-데이 단위로 소요시간을 추정하십시오.

3.     각각의 소요 시간을 모두 추정하고 난 다음에는 그것을 연속해서 늘어놓고 기간을 합산하십시오. 그러면 자 보세요, 바로 소요 시간이 측정되었습니다.

(542p)

개발 일정을 산출해 내는 건 아직도 내가 잘 못하는 분야이다. 그냥 막연하게 2, 1개월, 2개월씩으로는 나오는 데 세세한 계획은 잘 못 잡겠다. 보통은 기간을 미리 정해놓고 일을 거꾸로 맞추고 있는데, 제대로 된 일정 추정을 나도 한번 해 보고 싶다. 

여러 가지 동작의 상대적인 비용에 대해서 대략적으로 생각해 보는 것은 유용한 일입니다. 프로세서가 인스트럭션 하나를 실행하는데 1초가 걸린다면, 전형적인 함수의 호출은 3-4초 걸릴 것이고, 가상함수의 호출을 10~30초 걸릴 것이고……
(673p)

가상함수 호출비용이 저렇게 높다고? 가상함수를 즐겨 쓰는 1으로써 충격.. 내일 당장 테스트 한번 해 봐야겠다. 


효과적인 팀워크를 위해서는 다음과 같은 모든 요소들이 제자리를 잡아야 합니다. :

사람들의 올바른 분포

여러 가지 다양한 경험을 갖춘 팀원들

팀원들의 성격 유형은 서로를 보안해야 합니다.

명확하고 현실적인 목표

동기

가능한 한 빨리 제공되는 적절할 규격서

훌륭한 관리

가능한 만큼 작지만 현실적인 크기이고, 그보다 더 작지는 않은 팀

팀이 따를 명료하고 보편적인 소프트웨어 엔지니어링 프로세스

회사로부터의 후원

(701p)

효율적인 팀 관리를 위해 역시 관리자가 해야 할 몫이 상당히 많다. 부족한 점이 너무 많아 언제나 열공이 필요한데, 요즘은 블로깅에 너무 많은 시간을 뺏기는 듯.

 

 

댓글