The Productive Programmer

제가 2008년 10월호 마소에  팀 생산성 향상을 위한 패턴 이야기를 기고 했는데요.

이번에는 팀이 아닌 개개인이 생산성을 향상 시킬수 있는 좋은 지침이 되는 서적이 나와 소개하고자 합니다.

The Productive Programmer  (O’ Relly)

Abstract
이 책의 저자 Neal Ford는 리펙토링의 저자인 Martin Fowler가 있는 ThoughtWorks의 이사로 많은 컨퍼런스에 DSL 전도사로 활동중입니다.

이 책은 생산성 향상을 위해 조직적인 측면보다는 개발자의 개인적은 측면에 대해서 초첨을 맞추고 있습니다.

개발자로서 자주 사용하는 운영체제, 프로그램들의 숨겨진 단축키와 초기 셋팅 방법와 같은 Mechanic Skill 뿐만 아니라, 향상된 코드를 생성하기 위한 툴들, 코딩 스킬, 개발자가 지켜야 하는 규범들을 공유하고 있습니다.

목차 구성

Part 1. Mechanics

개발자가 자주 사용하는 다양한 툴들을 좀더 잘 사용할 수 있는 팁과 방해되는 요소들을 제거하는 방법등을 제안합니다.

ACCELRATION
제어판, 매크로등을 활용해 우리가 자주 사용하는 프로그램들을 좀더 속도를 내서 잘 사용할 수 있는 방법들을 제안합니다.

FOCUS
우리가 반보적으로 해왔던 시간 소모적인 방해가 되는 요소들을 제거하고, 본질에 집중함으로써 생산성을 향상하게 하는 방법으로, 프로그램의 사용하지 않는 기능 없애기, 그리고 원하는 데이터를 빨리 찾기 위한 방법들, 프로젝트 기반의 단축키, 멀티 모니터의 활용과 같이 불필요한 일들을 없애고 집중할 수 있는 방법들을 제안합니다.

Automation
기존의 툴이 가진 단점을 제거하기 위해 , 새로운 것들 다시 만들지 말고, 자동화함으로써 생산성을 향상시키는 방법을 제안합니다. RSS Feed에서 생산성을 향상 시키는 Yahoo Pipeline을 소개하거나, ANT, Power Shell과 같은 툴들에 대해서 언급합니다.

Canonicality (정해져있는, 정규적인, 규범적인)
만약 A의 컴퓨터에서 잘 돌아가던 Feature가 B의 컴퓨터에서 잘 안 돌아가서 알고보니 A씨가 버젼업된 플러그인을 사용해서 그런 문제였다면. 서로간의 동질성을 가지고 동일한 설정을 가지고 있는 환경을 제공한다거나, DRY(Don’t Repeat Yoursel)를 하기 위한 다양한 플랫폼들의 툴(문서화, 버전 컨트롤, DB Schema 생성, 플랫폼을 타지 않는 설정 파일 만드는 법등)들을 위해 소개합니다.

Part 2. Practice

어떤 실례들이 성공적인 프로그래머로 개발자의 능력을 증가시킬 수 있는 지 설명하는 파트입니다.

Test-Driven Design
TDD의 전체 흐름을 간략히 설명합니다.

Static Analysis
소스나 코드 분석을 통해 최적화, 복잡도등을 파악함으로써, 더 나은 소스를 만드는 방법에 대해 애기합니다

Good citizenship
개발자로써 시민 의식을 설명합니다. 객체 지향의 캡슐화를 깨거나, 생성자의 원래 목적 등과 범죄 행위등에 대해 언급합니다.

YANGI (You Ain’t Gonna Need It) – 당신은 이것이 필요하지 않을거에요.
누구나 좋다는 다양한 개념들이 오히려 더욱더 복잡한 프로그래밍을 만들고 있다. 이러한 것들이 과연 모든 개발자들에게 적용되어야 하는지 다시 생각해보자는 메시지를 전달합니다.

Ancient Philosophers.
고대 철학자들이나 소프트웨어 업계의 유명한 철학 애기들을 가져와 이것들이 코드로 어떻게 연결되어야 하는지 설명합니다.

Question Authority
우리가 가지고 있었던 관습들을 타파하자. Java 개발자는 lowercase에 익숙하지만 test할때는 CamelCase를 쓰는게 더 낫다라는 것과 소프트웨어 설계자와 DSL 도메인 분석가의 서로다른 형태의 인터페이스 요청들과 같은 문제들 다루어, 기존의 관습이 그대로 유용한지 생각할 수 있는 장입니다.

Meta-Programming
Java의 Reflection 기능으로, Testing에 사용할 때 더 나을 툴인 Groovy에 대한 소개와 Ruby의 강력하을 소개하는 장입니다.

Composed method and SLAP
Compose Method의 강점과 동일한 리벨의 추상화를 유지한느 메소드를 만드는 방법에 대해서 중점적으로 다루고 있습니다. 켄트 벡의 구현 패턴 (Implementation Pattern)에 많은 아아이디어 가져온 것 같습니다. 🙂

Polyglot Programming
다양한 언어와 플랫폼을 섞어서 사용해야 되는 당위성과 필요성에 대해서 이야기 하고 있습니다. 주로 DSL 이라는 요즘 유행하는 Domain Driven Design의 중요성을 역설합니다.

Find the Perfect Tools
주어진 일에 적합한 툴을 선정하는 방법을 제안하는 부분입니다.

책의 장단점
실용주의 프로그래머와 같이 소프트웨어 공학에서 좀더 실용적인 면을 강조하는데 관심이 있는 분이라면 구입하는 것이 좋을듯 합니다.

200 페이지 정도 밖에 안되기 때문에, 모든 것들을 깊숙히 다루지 못했습니다. 방향을 제시해 주는 큰 개념서라고 생각하시고,  Unix Power Tools와 같은 다양한 툴 소개 서적들을 더불어 읽어 보는 것들이 더 도움이 될듯 합니다.

현재 김현수 님이 번역중이시구요. 내년 4~5월쯤이면 역서를 만나보실수 있습니다.

Join the conversation! 8 Comments

  1. 저같은 초보에게 딱 알맞은 책 같네요 ^^
    좋은 책 추천해 주셔서 감사합니다!

    응답
  2. 레몬에이드 >>

    안녕하세요 레몬에이드님.
    🙂 좋은 서적인건 틀림없습니다.

    다만 비쌀뿐 🙂 ㅎㅎㅎ
    그럼 좋은 오후 되세용 🙂

    응답
  3. 좋은 책인것 같네요~ 🙂

    번역하면 한번 읽고 싶습니다.

    특히 제가 Meta-Programming에 많은 관심을 가지고 있는데~ 관련 자료가 많지 않아서 많이 살펴보지 못하였습니다.

    언제 Meta-Programming에 관한 좋은 자료가 있으면 공유 부탁드려요~

    벌써 크리스마스가 얼마 남지 않았네요~

    아기와 함께 즐거운 크리스마스 보내시구요~ 2009년에도 좋은이 가득 가득 하시길 기원드리겠습니다. 😉

    응답
  4. 장선진 >>

    선진님 먼길 방문해 주셔서 감사해요.
    실제 책의 페이지가 작은 관계로 Meta Programming으로 할당된 페이지가 사실 6~8페이지 정도 밖에 안됩니다.

    Metadata의 갈증을 풀고 싶으시다면, 이번에 PLOP 2008에 발표된 AOM의 진화된 버젼을 보시는게 좋을듯 쉽습니다.

    감사합니다. 🙂

    응답
  5. […] Productive Programmer 베타리더를 모집합니다. 많은 분이 기다리셨던 The Productive Programmer가 현재 1차 교정 작업을 […]

    응답
  6. 아시모프의 생각…

    새로 나온 책 전부다 사고싶지만 이번달 지른 책이 많기에 사지 못했다, 이중 Productive programmer 는 한국에서는 현재 1차교정이 끝난듯하다., arload님의 소개글, 이외에도 refactoring wetware도 재미있어보인다….

    응답

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.

카테고리

Books & Articles, My Thinking, News

태그

,