Skip to content

Latest commit

 

History

History
69 lines (51 loc) · 5.97 KB

apprenticeship-patterns.md

File metadata and controls

69 lines (51 loc) · 5.97 KB

apprenticeship-patterns

한국어판 제목은 '프로그래머의 길, 멘토에게 묻다' 이다. 제목부터 책 표지까지 별로 끌리지 않는 책이었다. 하지만 의외로 주변에서 추천하는 사람이 많아 반신반의 하며 책을 읽기 시작했다. 그리고 지금 이렇게 내용을 정리하고 있는건 굉장히 괜찮은 책이었기 때문이다. 원 제목처럼 견습과정의 경험 적은 소프트웨어 개발자들이 흔히 마주치는 딜레마에 대한 해결책을 패턴 형식으로 모아둔 책이다.

견습과정

  • 항상 좀 더 좋고 세련되고 빠른 해결 방법을 고민하는 태도
  • 더 좋고 빠른 해결 방법을 배우도록 만드는 사람, 회사 혹은 상황을 찾는 과정

좋은 동료 견습생들, 숙련공, 마스터로 이루어진 환경에서 있는 것이 이상적이다. 하지만 어쨌거나 당신의 견습과정은 당신이 통제할테고 그 결과도 당신의 책임이다.

숙련공이 된다는 것

  • 견습생과 마찬가지로 자기 분야에서 배우고 성장하기 위한 내적 집중을 유지
  • 팀 내부, 팀 외부로 오고 가는 커뮤니케이션의 통로
  • 더 크고 다양한 프로젝트를 수행

견습과정 패턴들

책에 나온 여러 견습과정 패턴 중 내게 가장 와닿는 몇가지를 정리한다.

잔을 비워라

  • 이미 많은 경험을 쌓았을수록 잔을 비우기 위해 더 많은 노력이 필요. 경험이 쌓일 수록 나쁜 습관, 자기 역량에 대한 자부심을 접어 두는 일들에 대해 마음을 열어두기 더 힘들게 느껴질 것이다.

첫번째 언어

  • 언어를 하나 선택하고, 그 언어에 능숙해져라.
  • 언어를 선택할 때 주변에 누가 있는지도 중요하다. 언어를 혼자 배울 수는 있겠지만, 전문가들과 교류하지 않으면 그 언어의 진수를 깨우치는데 오랜 시간이 걸린다.
  • 첫 언어는 일상적인 업무에서 주로 사용하겠지만, 주기적으로 시간을 내 일반적인 범위를 벗어나도록 사용해 보라. 관습에 구애됨 없이 자유롭게 사용해보다 보면 여러 언어의 강점과 약점을 파악하는데 도움이 된다.
  • 첫 언어를 깊이 파고 들 때 한가지 위험은, 거기에 그대로 붙잡혀 버리는 것이다. 그 언어어 너무 익숙해져 다른 언어를 배우지 못하게 되는 일은 없어야 한다.

흰 띠를 매라

  • 흰 띠를 맨다는 것은, 배우는 것 말고는 다른 선택이 없다는 깨달음에 근거를 둔 행위다.
  • 어떤 언어를 가지고도 기존 언어에서 하던대로 코딩하는 것은 새로운 지식에 대해 깊이 이해할 수 없게 한다.
  • 배운 것을 잊어버릴 수 있는 기회를 찾아보라. 이전의 경험을 일시적으로 잊어야 하는 상황이라면 이상적일 것이다.

무지를 드러내라

  • 사람들에게 진실을 말하라. 그들이 무엇을 원하는지 이제 이해하기 시작했고, 그것을 해낼 방법을 배워 가는 중이라고 알려주어라. 그 사람들을 안심시켜야 할 때는 아는 척 하기보다는 당신이 얼마나 잘 배울 수 있는지를 가지고 안심시켜라.
  • 무지를 드러내는 가장 확실한 방법은 질문하는 것이다.
  • 장인에게 가장 중요한 특성 중 하나는 학습하는 능력, 즉 무지의 영역을 파악해서 이 영역을 줄이려 애쓰는 것이다.

긴여정

  • "합기도를 마스터하려면 얼마나 걸리나요?" 수련 지망생이 묻는다. 여기에 대한 훌륭한 대답은 이것 뿐이다. "자네 얼마나 오래 살 것 같나?"
  • 견습기간 동안에는 급여나 통상적인 리더쉽 같은 것보다는 학습과 장기적인 성장에 더 가치를 두어라.

가장 뒤떨어진 이가 되라

  • 유능한 팀에 속하면 마치 당신이 더욱 일을 잘 하는 것 처럼 느낄 수 있다. 팀 사람들은 종종 당신의 실수를 막아 주고, 혹 실수를 하게 되더라도 너무나 매끄럽게 복구하도록 도와주기 때문에, 당신은 생각처럼 많이 배우고 있지 못하다는 사실을 미처 깨닫지 못하고 있을 수 있다.
  • 당신이 얼마나 많이 배웠는지 깨달을 수 있는 것은 당신이 혼자 일할 때 뿐이다.

멘토를 찾아라

  • 멘토를 찾을 때, 견습생은 우리 모두 긴여정을 걷고 있으며 누구도 모든 것을 알지는 못한다는 사실을 기억해야 한다.

소스를 활용하라

  • 시스템을 진정으로 이해한다는 것은 오로지 코드를 읽어 보아야만 가능하다.
  • 다른 사람들의 코드를 찾아서 읽어라.

피드백 루프를 만들어라

  • 자기 평가는 오로지 자신이 지닌 능력에 비례하며, 늘 객관성이 부족할 것이다.
  • 테스트 코드, 짝프로그래밍 또는 다른 사람에게 직접 물어보는 방법들이 있다.

독서목록

  • 읽기로 한 책들을 추적해 갈 독서목록을 유지하고, 다 읽은 책은 기억해두라.
  • 독서목록이란 실제로는 우선순위 큐이므로, 결국 어떤 책들은 순위에서 너무 많이 밀려서 아마도 결코 읽지 않게 될 것이다. 이것은 좋은 일이다. 지식의 홍수 속에서 우선순위를 매기며 걸러내는 방법이기 때문이다.

더 깊이 파고들어라

  • 도구나 기술 분야, 각종 기법 같은 것을 깊이 파고드는 법을 배워라. 왜 그런식으로 되어 있는지 알게 될 때까지 지식의 깊이를 더해 가라.
  • 어떤 개념을 정말로 이해하려면 그 개념이 최초로 언급된 당시의 전후 맥락을 재구성해 볼 필요가 있다.
  • 튜토리얼을 읽을 때는, 복사해서 갖다 쓸 코드를 찾지 말고 새로 습득한 지식을 마음 속 어디에 두면 좋을지 찾도록 하라.