이 글의 내용은 인사이트 출판사의 실용주의 프로그래머 도서를
학습하며 정리한 내용입니다.   

추천사

  • 그들은 무언가를 하는 동안 그 자체에 주의를 기울였고, 또 그러고 나서 그걸 좀 더 잘해보려고 노력했다는 것입니다.
  • 두 번째 팁 ‘생각하면서 일하라’ 이기 때문입니다.
  • 저자들은 소프트웨어 개발에 대한 어떤 이론을 주장하지 않기 위해 계속 조심했습니다. 매우 다행스러운 일인데, 만약 그렇게 했다면 자기 이론을 방어하기 위해 책 전체를 그 이론에 맞추는 방향으로 쓸 수밖에 없었을 것이기 때문입니다. 이런 맞춤은 예를 들어 자연과학 같은 데에서는 일종의 전통입니다. 자연과학에서는 이론이 결국 법칙이 되거나 아니면 소리 없이 버려지기 때문이죠. 반면 프로그래밍에는 법칙이란 것이 아예 없거나 있더라도 아주 적습니다. 따라서 법칙이 되고 싶어 하는 이론에 맞추어 쓰여진 프로그래밍 조언은 글로 쓰기엔 좋아 보일지 몰라도 현실의 필요를 충족시키지 못합니다. 이것이 무수한 방법론 책들이 잘 되지 않은 이유입니다.

서문

  • 프로그래밍은 기예(craft)이다. 가장 간단하게 생각해보면 프로그래밍이란 컴퓨터에게 여러분이 시키고 싶은 일을 하게끔 만드는 (또는 여러분의 고객인 사용자가 시키고 싶은 일을 하게 만드는) 것이다. 프로그래머는 어떤 면으로는 들어주는 사람이고, 어떤 면으로는 조언하는 사람이며, 어떤 면으로는 통역하는 사람이기도 하고, 어떤 면으로는 명령을 내리는 사람이기도 하다. 프로그래머는 애매모호한 요구사항을 포착해서 단순한 기계까지도 그것을 잘 수행할 수 있도록 요구사항을 표현하는 방법을 찾으려 노력한다. 프로그래머는 다른 사람도 이해할 수 있도록 자신의 작업을 문서로 만들려고 노력하고, 다른 사람들이 자신이 한 것을 바탕으로 또 다른 것을 만들 수 있도록 자신의 작업을 설계하려고 노력한다. 이뿐이 아니라, 프로그래머는 쉬지 않고 똑딱대는 프로젝트 일정 시계의 초침에 굴하지 않고도 이 모든 일들을 해내기 위해 노력한다. 프로그래머는 매일매일 작은 기적을 만드는 것이다.

무엇이 실용주의 프로그래머를 만드는가?

  • 얼리어답터 성향/새로운 것에 빨리 적응하는 성향. 이런 사람은 기술과 기법에 대한 본능적인 감각이 있으며, 새로운 것을 시도해보는 것을 좋아한다. 이런 사람은 새로운 것이 주어지면 그것을 쉽게 파악해서 자기의 지식에 통합해 넣는다. 이런 사람의 자신감은 경험에서 우러나오는 것이다.
  • 캐묻기 좋아한다. 이런 사람은 질문을 많이 한다. “멋진데. 어떻게 한거지? 그 라이브러리에 무슨 문제 있어? BeOS라는 이름을 들었는데 그게 뭐야? 심볼릭 링크는 어떤 방식으로 구현되는 거야?” 이런 사람은 자잘한 지식들을 머리 속에 쌓아두며, 그 가운데 어떤 것들이 몇 년 후의 결정에 영향을 주기도 한다.

  • 비판적인 사고의 소유자. 이런 사람은 사실 관계를 확인하지 않고서는 어떤 것도 들은 대로 믿는 일이 드물다. 직장 동료가 “지금까지 그런 방식으로 해 왔으니까”라고 말하거나, 벤더가 이것이 모든 문제의 해결책이라고 약속하면 도전 욕구가 솟아오르는 사람이다.

  • 현실적이다. 이런 사람은 자신이 맞닥드리는 모든 문제의 근본적인 성격을 이해라려고 노력한다. 이러한 현실주의는 이런 사람에게 이일이 얼마나 어려운 일인지, 이일에 시간이 얼마나 걸릴지 판단하는 좋은 감각을 길러준다. 어떤 과정이 어려울 수밖에 없다는 것을 이해하거나 어떤 과정을 끝내는 데 상당한 시간이 걸릴 것이다 라는 것을 이해하면 끈기있게 그 일을 해나갈 지구력이 생긴다.

  • 다방면의 기술에 익숙하다.

실용주의 프로그래머 Tip

  1. 자신의 기술(craft)에 관심과 애정을 가져라.

    여러분이 소프트웨어 개발을 잘하려는 관심과 애정이 없다면, 그 일을 하는 것에 아무 의미가 없다고 생각한다

  2. 자신의 일에 대해 생각하면서 일하라!

    실용주의 프로그래머가 되고 싶다면, 어떤 일을 하면서 자기가 무엇을 하고 있는지 생각하라고 말하고 싶다. 모든 개발 과정에서, 매일, 여러분이 내리는 모든 결정을 지속적이고 비판적으로 평가해보는 것이다.

  3. 어설픈 변명을 만들지 말고 대안을 제시하라.

    안 된다고 하지 말고 상황을 개선하기 위해 무엇을 할 수 있는지 설명하라.

  4. 깨진 창문을 내버려두지 말라.

    오랜 기간 수리하지 않고 방치된 창문 하나가 거주자들에게 버려진 느낌을 스며들게 한다. 그래서 다른 창문이 하나 더 깨진다. 사람들은 이제 어지르기 시작한다.

  5. 변화의 촉매가 되라.

  6. 큰 그림을 기억하라.