2006년 4월 24일 월요일

강남아빠 따라잡기

강남아빠 따라잡기, 최강희 지음, 한국경제신문

  • 아버지의 관심이 아이의 인생을 좌우한다.
  • 아이들은 태어날 때 모두다 천재의 가능성을 갖고 태어난다. 그 차이를 만드는 것은 결국 부모의 관심과 사랑이다.
  • 하루 10분 혹은 주말의 한때 이루어지는 아버지의 학습지도는 아이들 인생에 큰 자양분이 되기에 충분하다.
  • 아이들이 부모에게 느끼는 제일 큰 불만은 "약속을 지키지 않는다"이다. 특히 아이들은 아버지가 한 약속은 절대 잊지 않는다.
  • 언제 어디서나 긍정적인 메시지를 준다. "세상은 너를 위해 이 모든 것을 준비하고 있단다."
  • "일단 뛰면서 필요한 것들을 준비해라. 바로 지금 해야 한다."
  • "인생에서 가장 중요한 것은 사람의 마음을 얻는 것이다. 그러기 위해서는 매사에 겸손하고 남을 배려할 줄 알아야 한다. 특히 어려운 일을 당하거나 슬픈 일을 당한 친구들에게는 반드시 힘이 되어 주어라."
  • "어떤 위치에 있든 사람은 늘 겸손해야 한다."
  • 아버지의 직업을 이해하도록 하는 것은 아버지를 이해하고, 세상을 이해하도록 하는 것이다.
  • 교양에 밝은 아이는 지혜로운 사람이 된다.

Professional 소프트웨어 개발

Professional 소프트웨어 개발
스티브 맥코넬 지음/윤준호, 한지윤 옮김, 인사이트

[Code Compelete]으로 유명한 스티브 맥코넬(Steve McConnell)이 전문적인 소프트웨어 엔지니어란 어떤 사람인가, 전문화된 소프트웨어 개발이란 무엇인가라는 주제로 쓴 책이다. 책 내용에도 언급되지만 이 책은 약간은 개념적인 부분을 중점적으로 다룬다. 즉, 전문적인 소프트웨어 개발을 위해 어떤 개발방법을 도입해야 되는지나 특정 프로젝트에 어떤 프로그래밍 언어가 필요하다는 식의 접근이 아니라 왜 지속적으로 개인이나 조직의 능력을 향상시켜야 하고 그 효과는 어떻게 나타날 수 있는가에 초점을 맞추는 식이다. 따라서, 약간은 지루하게 느껴질 수도 있지만 반드시 정독할 필요가 있다고 생각한다.

왜냐하면 스티브 맥코넬이 이 저서를 통하여 소프트웨어 개발자(책에서는 소프트웨어 엔지니어라 칭한다.) 또는 개발 조직이 더 효과적이며 효율적으로 변화하도록 하는 동인을 제공하기 때문이다. 또, 저자의 다른 저서들, 예컨대 [소프트웨어 프로젝트 생존전략]이나 [Code Complete], [Rapid Development]를 통해 다양한 스펙트럼의 이야기를 들려주므로 그런 책들의 입문서 역할도 한다고 볼 수 있다.

내용은 크게 Part 1 소프트웨어 늪지대, Part 2 개인의 프로정신, Part 3 조직의 프로정신, Part 4 업계의 프로정신의 네 개 part로 되어 있다.
첫 번째 part에서는 소프트웨어 개발자 또는 개발 조직의 문제점과 현상, 소프트웨어 공학에 대한 정의와 지식체계 등에 대하여 뒤이어 나올 3개 part의 진입 part이다.
Part 2는 엔지니어로서 개발자 개인이 어떤 자세를 가져야 할 지에 대하여 언급한다.
Part 3는 소프트웨어 개발 조직이 계속해서 개발 방법을 개선하며 조직 구성원들의 실력향상을 위하여 정량적이고 전문화된 실력 향상 프로그램을 도입해야 한다고 말한다.
Part 4에서는 소프트웨어 공학의 필요성 및 진보 방향, 기술사 육성 등의 자격제도와 공공 소프트웨어 개발자 면허제도에 대한 의견, 소프트웨어 공학 윤리 강령과 업무 규범에 대하여 이야기한다.

[Professional 소프트웨어 개발] 전체를 대표하는 단어는 공학, 정량화, 전문화, 계층화로 압축할 수 있다. 저자는 소프트웨어 공학자는 반드시 이론과 경험을 쌓는 데 최선의 노력을 다해야 한다고 주장한다. 또, 개인이든 조직이든 향상을 위해서는 공인된 측정도구를 통해 현재 상태를 점검할 수 있어야 하고 지속적으로 전문성을 개발할 수 있는 효과적인 프로그램을 도입해야 한다고 말한다.

소프트웨어 프로젝트 생존 전략 (Software Project Survival Guide)

소프트웨어 프로젝트 생존 전략 (Software Project Survival Guide)
스티브 맥코넬 지음, 김덕규 외 옮김, 인사이트

근래 읽었던 책 가운데 가장 재미없었던 책이다. 그런데도 반복해서 4번을 통독했다.
지금 나에게 직접적인 도움을 주지 않는, 코드 한 줄 없는 책이지만, 왠지, 어쩐지, 꼭 체화해야할 내용인 것 같아서 지루해도 참 고 읽었다.

실제로 이 책은 소프트웨어 프로젝트 매니저를 위해 쓰여졌다. 중간 규모의 프로젝트가 중단되지 않고 끝까지 생존 할 수 있도 록, 그리고 성공적으로 제품을 출시할 수 있도록 구체적인 가이드를 제시한다.

이 책의 근간을 이루는 중심 단어는 체계적인 프로세스, 추정, 통제, 단계별 릴리즈이다. 체계적인 프로세스, 추정, 통제는 저자 의 다른 책에서도 핵심적으로 다루는 주제이다. 프로젝트를 매 단계별로 상세히 계획하고, 철저히 프로세스에 의하여 관리하며 모든 활동을 정해진 양식에 기록하여 생존을 위해 위험을 통제해야 한다는 것이다.

소스 코드 통합 절차를 예로 들면, 개발자가 코드를 개발한 다음 단위 테스트를 실시하여 모든 예외나 오류를 포함혀 꼼꼼히 코 드라인을 살핀 후, 개인적으로 복사해 둔 메인 빌드에 통합하여 테크니컬 리뷰를 실시한다. 그리고 이 코드를 테스터에게 넘겨 주어 테스트를 수행하도록 하고, 테스트 수행 중 일어난 문제를 수정하고 수정된 내용을 리뷰한다. 그리고 최종 코드를 메인 빌 드에 통합한 후, 프로젝트 활동 목록의 해당 항목에 '완료'로 체크한다.

보통의 소프트웨어 프로젝트는 요구사항 분석 후 바로 설계와 코딩으로 들어가지만 이런 프로젝트가 기일에 맞춰 제대로 동작 하는 소프트웨어를 제작할 확률은 매우 낮다. 내 경험에서도 거의 항상 납기 기일에서 얼마 정도는 버퍼로 두고 완료일을 당겨 놓고 밤샘 작업을 해도 납기일을 맞춘 적이 거의 없다. 이제는 소프트웨어 제품의 고객들도 어떤 제품의 출시 예정일을 신뢰하 지 않는 것이 당연한 것처럼 여겨지기도 한다.

저자는 성공적인 프로젝트를 위해서는 프로젝트 상류에 해당하는 작업, 예를 들면, 프로젝트 계획, 요구사항 개발, 아키텍쳐 및 상세 설계 등에 많은 시간과 자원을 투자해야 한다고 주장한다.

몇몇 전문가들은 "프로젝트의 성공 여부는 수행 초반기 10퍼센트에서 결정난다"고 보고하였다. 프로젝트 초기에 프로젝트 탐 색 단계를 종료한 후 PCR(Planning Checkpoint Review)을 실시하게 되는 데 이 때 필요한 자료만 해도,
- 프로젝트 주요 의사결정자 명단
- 프로젝트 비전 선언문
- 업무정의서
- 개략 공수(effort)와 일정 목표
- 개략 공수와 일정 추정
- 10대 리스크 목록
- 사용자 인터페이스 스타일 가이드
- 상세한 사용자 인터페이스 프로토타입 결과
- 사용자 매뉴얼 및 요구 명세서
- 소프트웨어 품질 보증 계획(Quality Assurance Plan)
- 상세한 소프트웨어 개발 계획(SDP : Software Development Plan)
와 같다. 저자는 위와 같은 자료가 없이 PCR을 한다면 아무런 의미가 없다고 말한다. 이 외에도 수많은 상세 단계와 각 단계별 산출물(주로 문서)들이 존재하여 자칫 너무 관료적이라는 느낌마저 준다.

이런 절차가 개발자에게 무거운 짐을 지우고 창의성을 해치지는 않을까 걱정이 되지만 저자는 통계와 여러가지 경험적 사실을 바탕으로 오히려 반대로 제대로된 저차가 개발자의 사기를 북돋아 주고 더 좋은 결과를 가져올 수 있다고 주장한다. 저자가 실 력있는 개발자였기 때문에 그 주장을 신뢰하지 않을 수 없다.

나 또한 주먹구구식 시스템에서 많은 시행착오를 경험하고 있기 때문에, 작성해야 할 너무도 많은 문서와 따라야할 너무도 많 은 절차가 있음에도 불구하고 스티브 맥커넬의 주장에 동의하지 않을 수 없다.

캐즘 마케팅

캐즘 마케팅
제프리 A. 무어 지음, 유승삼.김기원 옮김, 세종서적

먼저 책 제목의 캐즘이란 무슨 뜻인가?
Naver 오픈 국어 사전에 의하면 다음과 같다.

"캐즘(Chasm)이란 균열을 뜻하는 단어로서 첨단기술관련 분야에서는 기업 컨설턴트인 제프리 무어(Geoffrey A. Moore)박사가 최초로 사용하였다.

이는 혁신성을 중시하는 소비자가 중심이 되는 초기 시장과 실용성을 중시하는 소비자가 중심이 되는 주류시장 사이에 일시적으로 수요가 정체하거나 후퇴하는 단절현상을 말한다.

예를들어 전자책시장이 활성화 될 것으로 예상했지만 어느순간 수요가 갑자기 정체하면서 현재 발전이 이루어지지 못하고 있다."

캐즘 마케팅이 바로 naver 사전에 나온 제프리 무어 박사가 지은 책이다.
이 책은 첨단 기술 마케팅에 있어서 초기시장과 주류시장 사이의 캐즘을 어떻게 극복할
것인가를 다룬다.

캐즘을 뛰어넘기 위한 첫 번째 작업은 "공격 포인트를 선택" 하는 것이다.
공격 포인트의 선택이라는 것인 타겟 시장을 선정하는 것을 말하는 데 가능한한
시장을 세분화하고 또 세분화하여 역량을 집중시키고 제품의 목표와 기능을
명확하게 정의해야 한다.

그 다음은 "특공대의 결성"이다.
첫 번째 작업에서 선택한 공격 포인트는 실용주의자들의 세상인 주류시장내에
있다. 그리고, 실용주의자들은 완전완비제품을 원한다.
기업이 고객에게 제시한 약속(가치 제안)과 실제 제품
사이에는 어느 정도 차이가 있는데, 그 차이를 극복하기 위해서 여러
서비스와 보조 제품으로 보강된 제품을 완전완비제품이라 한다.
세분시장에 대한 완전완비제품이 바로 캐즘 극복을 위한 특공대라 할 수 있다.

그리고, 반드시 경쟁 대상이 있어야 한다.
공격하고자 하는 세분시장에는 반드시 경쟁 제품이 존재해야 한다.
만일 세분시장에 경쟁 제품이 존재하지 않는다면 아직 초기시장으로 보고
기다려야만 한다. 실용주의자들은 다른 제품과 비교해보지 않고는 제품을
구입하려 하지 않기 때문이다. 따라서, 실용주의자들에게 있어서 경쟁은 구매의
기본 조건이 된다.

거점을 확보하라.
세분시장에서 가장 큰 물고기가 되는 것이 중요하다.
실용주의자들은 제품이나 서비스를 구입하기 전에 반드시 성공적인 적용 사례를
참고하길 원한다. 따라서, 세분시장을 장악하여 그것을 거점으로 다른 세분시장으로
점차 확장시켜 나가는 것이 매우 중요하다.

마지막으로 적절한 유통경로를 확보하라.
캐즘 마케팅에서 고객지향적 유통경로를 수립하려면 유통지향적 가격결정이
이루어져야 한다. 주류시장의 고객에게 직접적으로 다가서는 것은 바로 유통경로와
가격뿐이기 때문이다.
각각의 상황에 따라, IBM과 같은 직접 판매 방식, 델 컴퓨터와 같은 인터넷 소매방식 등
의 유통방식중에서 선택해야 한다.

캐즘은 첨단기술기업을 초기시장이라는 비교적 안전한 터전에서 험난한
주류시장으로 가차없이 내몬다. 중요한 문제는 경영진이 이러한 변화를 제때에
인식하고 전화위복의 기회로 삼아 위기를 극복해야 한다는 것이다.

어느날 우리 팀의 보스가 순수 엔지니어인 나에게 이 책을 건네주며 읽어보면
도움이 될거라 했다. 책을 읽으며, 캐즘 마케팅이 기업뿐만 아니라 내가 하고자

하는 일이 무엇이며 내가 지금 어디에 위치하고 있는지, 그리고 어떤 전략으로

일을 해야 하는지 알게 되었다.

나는 지금 팀내에서 새로운 기술을 내놓았고, 계속 업그레이드하고 있다.
팀내에서만 사용되는 이 기술을 어떻게하면 회사 전체로 확장시킬 수 있을 것인가?
첫 째, 내가 만들려는 기술이 아니라 다른 사람들이 필요로 하는 기술이어야 한다.
둘 째, 다른 개발자들이 참고할 수 있는 성공사례를 만들어야 한다.
셋 째, 문서화, 샘플, 세미나 등 나름대로 완전완비제품을 만들어야 한다.
넷 째, 이 기술이 아니면 해결할 수 없는 문제를 가진 세분시장에 집중해야 한다.

이런 것들이 나의 보스가 원하던 바인지는 잘 모르겠다.
어쨌든 2005년에는 뭔가 멋진 일을 해 볼 수 있을 것 같다.