실용주의 프로그래머

 · 3 mins read

The Pragmatic Programmer

숙련공

교육과 경험은 갖추었으나 그 능력이 평균 이상이라고 할 수 없는 직공

.

숙련공이 마스터가 되는 것은 단순한 기계적 학습으로는 어렵다.

지혜가 필요하다.

마스터로부터 통찰과 직관, 지혜를 배워야 한다.

.

기술 습득의 과정을 여러 단계로 나누면 각 과정에 따라

“규칙”, “격언”, “직관” 등이 중심이 된다.

초기에는 맥락에 상관없이 절대적으로 지킬 수 있는 “규칙”이 필요하다.

그러다가 발전을 하면 원리를 찾게 되고, 특정 맥락에서 “격언”을 이해, 응용하게 된다.

그리고 마지막에 이르러서는 이성보다는 “직관”에 따라 행동하게 된다.

(Hubert Dreyfux)

.

서문

Tip. 1

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

Tip. 2

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

.

실용주의 철학

자신이 하는 모든 일에 책임을 져야 한다.

.

고양이가 내 소스코드를 삼켰어요..

  • 우리는 자신의 능력에 대해 자부심을 가질 수 있지만 실수나 무지 같은 단점에 대해서도 정직해져야 한다.
  • 실수를 저지르거나 잘못된 판단을 내렸다면 정직하게 인정하고 다른 방안을 제안하도록 노력하라.

Tip. 3

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

.

소프트웨어 엔트로피

Tip. 4

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

  • 더 이상의 손상을 예방하기 위해 어떤 조치든 취하고 현 상황을 잘 관리하고 있다는 것을 보여 줘라.
  • 방치는 다른 어떤 요인보다도 부패를 더 가속시킨다.

.

돌맹이 수프와 삶은 개구리

Tip. 5

변화의 촉매가 되라.

Tip. 6

큰 그림을 기억하라.

  • 의욕과 팀 자체의 파괴는 종종 작은 것들의 누적에서 온다.
  • 큰 그림에 늘 주의를 기울여라.
  • 개인적으로 무엇을 하고 있는가에만 정신을 쏟지 말고, 주변에서 무슨 일이 벌어지는지 지속적으로 살펴보라.

.

적당히 괜찮은 소프트웨어

Tip. 7

품질을 요구사항으로 만들어라.

  • 완벽하게 훌륭한 프로그램을 과도하게 장식하거나 지나칠 정도로 다듬느라 망치지 말라.

.

포트폴리오 만들기

ex) 주식.

  • 주기적인 투자
    • 지식 포트폴리오에 주기적으로 투자하자.
  • 다각화
    • 여러 가지를 알면 알수록 자신의 가치는 더욱 높아진다.
  • 리스크 관리
    • 기술 달걀을 한 바구니에 모두 담지 말자.
  • 싸게 사서 비싸게 팔기
    • 새롭게 떠오르는 기술이 인기를 끌기 전에 미리 알고 학습하자.
  • 검토 및 재조정
    • 인기 있던 기술이 언제 식어버릴지 모른다.

Tip. 8

지식 포트폴리오에 주기적으로 투자하라.

목표

  • 매년 새로운 언어를 최소 하나는 배우자.
  • 기술 서적을 분기마다 한 권씩 읽자.
  • 비 기술 서적도 읽자.
  • 수업을 듣자.
  • 지역 사용자 모임에 참여하자.
  • 다른 환경에서 실험해보자.
  • 요즘 흐름을 놓치지 말자.
  • 인터넷을 이용하자.

Tip. 9

읽고 듣는 것을 비판적으로 분석하라.

.

소통하라!

  • 말하고 싶은 게 무언지 알자.
    • 의사소통하고 싶은 아이디어들을 적은 다음, 제대로 전달하기 위해 필요한 전략을 몇 개 세우자.
  • 청중을 알자.

    WISDOM (청중 이해하기)
    > 무엇(What)을 바우길 원하는가?
    > 말하려는 것에서 그들의 관심(Interest) 있어 하는 것은 무엇인가?
    > 얼마나 소양(Sophisticated)이 있는가?
    > 어느 정도의 구체적인(Detail) 내용을 원하는가?
    > 누가 정보를 소유(Owe)하길 원하는가?
    > 그들이 경청하도록 동기(Motive)를 주려면 어떻게 해야 할까? 
    
  • 때를 고르자.
    • 말하는 내용만 아니라 말하는 시간도 적절하게 하자.
  • 스타일을 고르자.
    • 전달하는 스타일이 청중에 어울리도록 조정하자. (사실만 전하기? 본론 전 길고 넓은 한담하기?..)
  • 멋져 보이게 하자.
    • 레이아웃, 맞춤법..
  • 청중을 참여시키자.
    • 피드백..
  • 청자(Listener)가 되자.
    • 질문을 하거나, 내용을 요약하도록 하자. 회의를 대화로 바꿔보자.
  • 응답하자.
    • 누군자 질문한다면 응답하자.

Tip. 10

무엇을 말하는가와 어떻게 말하는가 모두 중요하다.

.

실용주의 접근법

중복의 해악

Tip. 11

DRY - 반복하지 마라. (Don’t Repeat Yourself)

중복의 생성

  • 강요된 중복
    • 다른 선택이 없다고 느낀다. 환경이 중복을 요구하는 것처럼 보인다.
  • 부주의한 중복
    • 자신들이 정보를 중복하고 있다는 것을 깨닫지 못한다.
  • 참을성 없는 중복
    • 중복은 쉬워 보이므로 게을러져서 중복을 하게 된다.
  • 개발자간의 중복
    • 여러 사람들이 동일한 정보를 중복한다.

Tip. 12

재사용하기 쉽게 만들라.

.

기본적인 도구

.

실용주의 편집증

.

구부러지거나 부러지거나

.

코딩하는 동안 해야 할 일들

.

프로젝트 전에

.

실용주의 프로젝트

.