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
재사용하기 쉽게 만들라.
.
기본적인 도구
.
실용주의 편집증
.
구부러지거나 부러지거나
.
코딩하는 동안 해야 할 일들
.
프로젝트 전에
.
실용주의 프로젝트
.