본문으로 건너뛰기

서문

이 책은 개인이 일을 더 잘 할 수 있도록 도울 것이다. 실용적이고 더 합당한 결정을 내릴 수 있도록 경험을 이용하는 일에 집중한다.

프로그래머는 애매모호한 요구사항을 포착해서 단순한 기계까지도 그것을 잘 수행할 수 있도록 요구사항을 표현하는 방법을 찾으려 노력한다. 최고의 해결방안은 없다. 오직 특정한 환경 조건의 집합마다 각 집합에 가장 적절한 시스템들이 있을 뿐이다. 바로 이것이 실용주의가 뜻하는 바다. 어떤 특정 기술에 매이면 안되며, 개별 상황마다 그 상황에서 좋은 해결방안을 고를 수 있도록 충분한 배경지식과 경험을 가져야 한다.

이 책은 누가 읽어야 할까?

이 책은 더 효율적이고 생산성 높은 프로그래머가 되고 싶어 하는 사람들을 대상으로 쓰였다. 여러분이 우리 접근 방식을 따른다면 빠른 속도로 경험을 쌓을 수 있고, 생산성은 증가할 것이고, 전체 개발 과정을 더 깊이 이해하게 되며, 더 좋은 소프트웨어를 작성하게 될 것이다.

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

  • 얼리어댑터 성향/새로운 것에 빨리 적응하는 성향 이런 사람은 기술과 기법에 대한 본능적인 감각이 있으며, 새로운 것을 시도해보는 것을 좋아한다. 이런 사람은 새로운 것이 주어지면 그것을 쉽게 파악해서 자기의 지식에 통합해 넣는다. 이런 사람의 자신감은 경험에서 우러나오는 것이다.
  • 캐묻기 좋아한다. 이런 사람은 자잘한 지식들을 머리 속에 쌓아두며, 그 가운데 어떤 것들이 몇 년 후의 결정에 영향을 주기도 한다.
  • 비판적인 사고의 소유자 이런 사람은 사실 관계를 확인하지 않고서는 어떤 것도 들은 대로 믿는 일이 드물다.
  • 현실적이다. 자신이 맞닥드리는 모든 문제의 근본적인 성격을 이해하려고 노력한다. 어떤 과정이 어려울 수밖에 없다는 것을 이해하거나 어떤 과정을 끝내는 데 상당한 시간이 걸릴 것이다 라는 것을 이해하면 끈기있게 그 일을 해나갈 지구력이 생긴다.
  • 다방면의 기술에 익숙하다. 이런 사람은 넓은 범위의 기술과 환경에 친숙해지려고 열심히 노력한다. 그리고 이런 사람은 새로운 발전의 흐름에 뒤떨어지지 않으려고 노력한다. 지금 하는 일이 특정 분야를 좁게 파고들것을 요구할지라도, 이런 사람은 언제든지 새로운 영역과 새로운 도전으로 옮겨갈 수 있다.
Tip 1

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

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

Tip 2

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

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

이것은 끊임없이 지속되는 과정이다.

매일 같이 지금 있는 기술들을 더 다듬고, 여러분 기술 목록에 새로운 도구들을 추가하라. 몇 년이 지나면, 얼마나 여러분의 경험이 무르익고 기술이 자랐는지 여러분 스스로 놀랄 것이다.