2008년 5월 10일 토요일

The Art of Project Management

The Art of Project Management, Scott Berkun

프로젝트 매니지먼트란 무엇인가?

컴퓨터 소프트웨어 제작하는 프로젝트를 위해서는 어떤 계획을 세워야 하고, 어떻게 사람들을 이끌어가야 하는가?
프로젝트의 목표와 비전을 프로젝트 팀원들과 어떻게 공유할 것인가?
스케쥴대로 진행되지 않을 것을 알면서도 스케쥴을 작성해야 하는 이유는 무엇인가?

스펙문서를 써야 하는 이유와 어떻게 써야 하는가?
어려운 상황에서 어떻게 결정을 내려야하는가?
사람들과 어떻게 의사소통을 하는가?
의미없는 회의 같은 것으로 사람들을 귀찮게 하지 않으려면 어떻게 해야 하는가?
프로젝트가 잘 못되어가고 있을 때 어떻게 해야 하는가?

리더쉽에 있어서 신뢰가 필요한 이유가 무엇인가?
프로젝트가 한참 진행중일때 취할 전략은 무엇인가?
프로젝트가 종료모드일때 취할 전략은 무엇인가?
정치적 행동이 필요할 때 어떻게 정치적 힘을 구사할 것인가?

이런 질문에 대한 답을 얻고 싶은 프로젝트 매니저라면 Scott Berkun의 The Art of Project Management를 읽어보기를 권한다. 이 책에서 정답은 아닐지라도 어느정도의 기준과 방향은 얻을 수 있을 것같다.

Scott Berkun은 MicroSoft에서 Internet Explorer, MSN, Windows 등의 제품을 개발하기 위한 프로젝트 매니저로서 10년을 일했다. 그 중 2년간은 MicroSoft의 Engineering Excellence Group에서 활동하였다. 그런 경험과 생각을 바탕으로 현재는 컨설턴트로서 활동하고 있고, 저작활동을 하고 있다.

2008년 5월 9일 금요일

캡틴리가 추천하는 책

그 동안 읽었던 책 중에 명저 몇 가지를 추천합니다. 앞으로 계속 갱신하겠습니다.

[Project Management]
- 소프트웨어 프로젝트 서바이벌 가이드(SPSG), 스티브 맥코넬, 김덕규 외 역, 인사이트
- Professional Software Development, 스티브 맥코넬, 윤준호 외 역, 인사이트
- The Art of Project Management, Scott Berkun, O'REILLY
- 피플웨어, 톰 디마르코,티모시 리스터 공저/박승범 역, 매일경제신문사

[마케팅/기획]
- 캐즘 마케팅, 제프리 A. 무어, 유승삼 외 역, 세종서적

[Design/Quality/Methodology]
- Refactoring, Martin Fowler, Addison Wesley
- Design Patterns, GoF, Addison Wesley
- UML Distilled, Martin Fowler, Addison Wesley
- The Software Optimization Cookbook, Richard Gerber, Intel Press

[C/C++/Coding]
- Effective C++, Scott Meyers, 대림
- Effective STL, Scott Meyers, 정보문화사 : vector, list 정도만 겨우 쓰고 있나요? STL로 빠져봅시다!
- More Effective C++, Scott Meyers, 인포북
- Exceptional C++, Hurb Sutter, 인포북
- Modern C++ Design, Andrei Alexandrescu, 인포북
- Essential C++, Stanley B. Lippman, 인포북
- Applied C++, Philip Romanik, Amy Muntz, 인포북
- Code Complete 2, Steve McConnell
- Joel On Software, Joel Spolsky, Apress
- Pragmatic Programmer, Andrew Hunt, David Thomas, Addison-Wesley
- Write Great Code, Randall Hyde, NO STARCH PRESS

[JavaScript]
- 자바스크립트 핵심 가이드, 데이비드 플라나긴, 최상선 역, O'REILLY, 한빛미디어

[Graphics/Multimedia]
- DirectShow 멀티미디어 프로그래밍, 신화선, 한빛미디어

[Network]
- 클릭하세요! 네트워크, 조광선, 대림 : 네트워크쪽에는 유명한 책들이 몇 권 있지만 읽기 쉬우면서 하드웨어적인 지식도 같이 제공한다는 면에서 추천하는책
- 윈도우 네트워크 프로그래밍, 김선우, 한빛미디어 : 윈도우 소켓 프로그래밍에 대한 입문서. 다른 사람들은 어떨지 모르겠지만 내게는 이렇게 명쾌하게 소켓 프로그래밍을 쉽게 설명해 준 책이 없다.

[보안/암호화]
- 코드북, 사이먼 싱 저, 영림카디널
- 보안과 암호화 모든 것, H.X. Mel & Doris Baker 공저, 정재원 외 역, 인포북 : 이 책은 원서를 권한다.

[기초과학]
- 파인만의 여섯가지 물리 이야기, 리차드 파인만 강의, 박병철 역, 승산
- 일반인을 위한 파인만의 QED 강의, 리차드 파인만 강의, 박병철 역, 승산

[과학철학]
- 부분과 전체, 하이젠베르크 저, 김용준 역, 지식산업사
- 과학혁명의 구조, 토마스 쿤, 김명자 역, 까치

[역사/인류학]
- 국화와 칼, 루스 베네딕트 저, 김윤식 외 역, 을유문화사
- 청소년을 위한 한국사
- 이야기 중국사, 조관희 엮음, 청아출판사
- 먼 나라 이웃 나라, 이원복, 김영사
- 역사란 무엇인가, E.H. 카, 권오석 역, 홍신문화사

[영성/자기계발]
- 스크루테이프의 편지, C.S. 루이스, 김선형 역, 홍성사
- 영적 리더십, 헨리 블랙커비, 윤종석 역, 두란노
- 원칙중심의 리더십, 스티븐 코비
- 성공하는 사람들의 7가지 습관, 스티븐 코비
- 성공하는 가족들의 7가지 습관, 스티븐 코비

[기타]
- 모성 혁명, 산드라 스타인그래버, 김정은 외 역, 바다출판사
- The Scarlet Letter, Nathaniel Hawthorn

2008년 5월 8일 목요일

역사란 무엇인가, E. H. 카

역사란 무엇인가, Edward Hallett Carr, 권오석역, 홍신문화사


역사란 현재 사회와 과거 사회의 끊임없는 대화이다.
역사란 하나의 사회과정이며, 개인은 사회적 존재로서 이 과정에 참여한다.
역사는 항상 새롭게 해석.평가될 수 잇고, 역사를 보는 모든 사람의 시각은 절대적이 아닌 상대적이다.

역사를 어떻게 볼 것인가?
역사란 무엇인가?
역사가 우리에게 어떤 의미인가?

이런 물음에 대해 한 길을 제시해주는 책이다. 일반 지식인을 위해 쉽게 쓰여졌다는 데도 항상 그렇듯이 나에겐 어렵고 심오하다.

나는 왜 역사를 공부하는가?

역 사를 통해 과거를 이해하기 위해서이고, 과거를 통해 현재의 나와 나를 둘러싼 세계를 새로운 눈으로 바라보고 싶고, 앞으로의 나와 나를 둘러싼 세계를 예측해보고 싶어서이다. 과거가 현재의 나를 볼 수 있게 해주고, 또한 예측한 미래가 현재의 나를 변화시켜주기 때문이다.

내가 역사를 공부하는 궁극적인 목적은 진리를 찾고자 함에 있다. 틀림없는 사실과 이 사실을 올바로 해석하기 위한 통찰력을 갖고 싶다.

2008년 5월 3일 토요일

Head Rush Ajax (웹 진화를 이끄는 비동기 프로그래밍 학습법)

Head Rush Ajax - 웹 진화를 이끄는 비동기 프로그래밍 학습법, 브렛 맥래프린 저, 박영록 역

요즘 유행하는 웹의 최신 기술에 대해 이 정도로 재밌게 공부할 수 있는 책은 없을 것이다. 프로그래머가 아닌 초보자들이 보기에 정말 좋은 책이지만, 나 같은 전문 프로그래머(프로그래밍을 업으로 하는)가 보아도 배울 게 많다.

기존의 웹 기술은 주로 서버의 측면에서 기술 혁신이 이루어졌었다(주요한 웹 기술 혁신에는 멀티미디어적인 요소를 웹에 구현하는 기술의 측면도 있으나 여기선 제외하자). 어떻게 데이터베이스와 쉽게 연동할 것인가, 어떻게 웹 애플리케이션을 쉽고 빠르게 개발할 것인가 라는 관점에서 새로운 기술이 많이 개발되었다. 다양한 웹 애플리케이션 개발 도구, 다양한 기능을 가진 웹 서버 또는 웹 애플리케이션 서버, 웹 환경에 맞게 적응한 데이터베이스 서버 등 서버 기술이 대세였다.

반면에 클라이언트 측면에서는 초기의 웹 환경에서와 같이 여전히 페이지 기반으로 동작하고 있었다.

가령 인터넷 서점에서 특정 카테고리에 속한 어떤 책을 주문한다고 가정해보자. 구입하려는 책의 카테고리를 선택하면 그 카테고리에 속한 책의 목록을 보여주기 위해 새로운 페이지를 불러온다. 원하는 책이 첫 번째 목록에 없다면 다음 페이지 링크를 클릭한다. 다음 페이지를 새로 불러온다. 책을 찾았으면 주문 버튼을 선택하고 주문 페이지를 불러온다. 이런식으로 몇 개의 페이지를 거치는 데, 페이지를 불러올 때마다 펄럭이는 인터넷 익스플로러 로고를 보고 기다려야 하고 때로는 하얀 바탕에 에러 메시지만 출력하고 그대로 멈춰버리기도 한다.

대부분의 사용자는 여러해 동안 다져진 훈련을 통해 기다림과 뜬금 없는 에러 메시지를 잘 참아내지만 개선할 방법은 없을까?

바로 Ajax('에이잭스') 다.

페이지를 다시 불러오지 않고도 필요한 정보만 서버로부터 가져와서 표시할 수 있다. 다음 목록을 볼 때마다 새 페이지를 불러오기 위해 기다리지 않아도 된다. 사용자 등록 페이지에서 잔뜩 정보를 입력하고 '등록' 버튼을 눌렀는 데 실패했다는 페이지를 보고 다시 이전 페이지로 돌아가지 않아도 된다. 성질 급한 사람도 편안하게 인터넷을 즐길 수 있다.

사실 Ajax는 엄밀히 말하면 신기술은 아니다. 기존에 있었던 JavaScript와 DOM, 그리고 브라우저에서 제공하는 비동기적 통신 객체인 XMLHttpRequest를 조합한 것이다. 이 조합으로 Google Maps, Flikr 등의 웹 애플리케이션이 등장하면서 주목을 받게되면서 최신 유행이 되었다.

책 한권으로 Ajax에 대해서 다 알게된 것은 아니나, 최소한 맥은 제대로 짚은 것 같다.

나는 진실을 추구할 용기가 있는가?

대화 (부제 : 한 지식인의 삶과 사상), 리영희

"잘 알려진 노신(魯迅)의 글 가운데, 빛도 공기도 들어오지 않는 단단한 방 속에 갇혀서 죽음의 시간을 기다리는 사람에게, 벽에 구멍을 뚫어 밝은 빛과 맑은 공기를 넣어주는 것이 옳은 일인지 아닌지를 궁리하면서 고민하는 사람의 이야기가 있다. 방 속의 사람은 감각과 의식이 마비되어 있는 까닭에 그 상태를 고통으로 느끼지 않을 뿐더러 자연스럽게까지 생각하면서 살아(죽어)가고 있다. 그런 상태의 사람에게 진실을 보는 시력과 생각할 수 있는 힘을 되살려줄 신선한 공기를 주는 것은 차라리 죄악스러운 일일 수도 있지 않느냐 하는 말이다. 노신은 물론, 당시의 중국의 사회와 중국인의 상태를 안타까워해서 쓴 것이다." - 우상과 이성(리영희)의 머리말에서

나는 진실을 알기 원하고 진리를 추구하고 싶다.
설령 그 길이 가시밭 길이 된다 하여도 포기하지 않으려고 생각했다.

"대화"를 읽으면서 두려워졌다.

내가 원하는 삶이 얼마나 힘든 길인지에 대한 구체적인 모범을 알게 되어서가 아니라 내가 추구한 진리의 세계가 내가 생각해 온 세계가 아닐 수도 있다는 것 때문에 두렵고 무서워졌다.

내가 배우고 또한 만들어 온 세계의 틀이 깨어져야 진실에 다가갈 수 있을 것 같다는 생각에 두렵고 무서워졌다.

나는 그런 용기가 있을까? 내 신념의 기반이 거짓이라면 나는 그것을 받아들일 용기가 있을까?

[책]Peopleware

Peopleware - Productive Projects and Teams
by Tom DeMarco, Timothy Lister

오래전에 이제 막 사업을 시작하는 벤처기업에서 메인 개발자로 일을 했었다.
그 회사의 사장님이 나에게 개발자에 대해서 했던 이야기가 있다.

"개발자는 세상에 널렸다. 그리고, 개발자는 얼마든지 교체할 수 있다."

기억이 정확하진 않지만, 이런식의 이야기를 나에게 했었는데 기분은 나빴지만 뭐라고 대꾸할 수가 없었다. 아직 세상 경험이 없었고 반박할 논리가 없었기 때문이다.

"Peopleware"는 이런 논리가 잘못되었다는 것을 보여준다. 매니저가 어떻게 사람을 대해야 하며 어떻게 팀을 운영할 지에 대한 바른 지침과 교훈을 준다.

Peopleware 3판 마지막 장의 글을 인용해 본다.

"... what great managers do best: the making of community"