프로그래머의 길, 멘토에게 묻다.

Photo by Clement Chai on Unsplash

프로그래머의 길, 멘토에게 묻다.

  • 저자 : 데이브 후버, 애디웨일 오시나이
  • 역자 : 강중빈

들어가며

터미널을 띄워 놓고 명령문을 떠듬떠듬 타이핑 해 넣은 다음 이미 최고의 프로그래머가 된 것처럼 화룡점정의 기분으로 엔터를 칠 때의 알 수 없는 그 짜릿함, 그리고 이어지던 희열과 좌절. 이렇게 같은 길을 가는 사람 중에서 먼저 이 길에 대해 진지하게 고민하기 시작한 이들이 있다.

그 고민의 결과는 애자일, 실용주의, 소프트웨어 장인정신 같은 여러 가지 시도로 나타났고, 같은 길을 걷고자 하는 이들에게 의미 있는 이정표가 되고 있다.

프로그래머의 길, 멘토에게 묻다(Apprenticeship Patterns). 에서는 중세 시대의 수공업 장인과 장인의 밑에서 경험을 쌓는 견습생의 모습을 모델로 이를 소프트웨어 개발에 접목해서 다양한 사례와 그에 대한 해결책을 제시해준다.

이제 막 동산의 입구에 서 있는 나에게 이 책은 산에 오를 때 어떠한 마음가짐을 가져야 하며 어떻게 산에 올라야 하는지에 대한 큰 화두를 던져주었다. 사실 동산 뒤에는 더 큰 산이 있는데 나는 동산을 오르기도 전에 더 큰 산에 오르는 것을 고민했다. 책을 읽으면서 느낀 바를 바탕으로 동산부터 차근차근 정복해나가자.

소프트웨어 장인정신

책은 아래의 소프트웨어 장인정신 선언으로 시작된다.

  1. 우리는 동작하는 것을 넘어서 잘 짜인 소프트웨어에
  2. 변화에 대응할 뿐 아니라 지속적으로 가치를 더하는 일에
  3. 개인들 그리고 그 사이의 상호작용에 더해서 전문가들의 공동체에
  4. 고객과의 공동 작업 뿐 아니라 생산적인 파트너십에 가치를 둔다.
  5. 즉, 우리는 왼편의 항목을 추구함에 있어서 오른편의 내용이 필수불가결함을 알게 되었다.

책에서 의미하는 소프트웨어 장인정신이란 무엇일까? 장인은 한순간에 되는 것이 아니다. 하나의 경험이 차곡차곡 쌓이며 축적되고 그 경험은 하나의 점에 불과하지만 결국엔 점이 모여서 선을 이루고 선은 다시 면으로 확장될 것이다.

새로운 지식을 습득하고 무지에 맞서는 과정이 순탄스럽지는 않을 것이다. 나 역시 새로운 지식을 습득하는 과정에서 지레 겁을 먹었고 좌절한 적도 많았다. 아래는 책의 도입부에서 언급하고 있는 내용을 발췌한 것이다.

기술을 습득하고 수련하는 것은 사람에게 천성은 아니며 그것 자체가 수련해야 할 또 하나의 기술이다. - 워드 커닝햄

주변에서 개발자로서의 배움은 끝이 없다는 얘기를 많이 듣는다. 나 또한 이 말에 전적으로 동의한다. 앞으로 끊임 없이 새로운 지식을 습득해야 하는데 그 과정이 매 순간 고통스럽다면? 진정 쉽지 않을 거다.

기술을 습득하고 수련하는 것, 그것 자체가 수련해야 할 또 하나의 기술이다. 즉, 새로운 지식을 습득하는 것이 힘들다면 계속 부딪혀서 내성이 생기도록 체득하면 된다.

그리고 이 모든 것들을 즐길 수 있다면 그 과정은 멋진 여행이 되지 않을까 생각해 본다. 힘들 때마다 한 발자국 멈추어서 모든 것에 감사하는 습관을 들이자. 반복되는 나의 일상, 나의 하루가 어느 누군가에겐 깊은 갈망이었을 터. 주어진 것에 감사하며 최선을 다하자.

이렇게 긍정적인 마인드 세트로 끊임없이 공부하는 것은 가장 기본이 되는 항목이다. 이를 밑거름 삼아서 잘 짜인 소프트웨어를 만들 수 있도록 해야 하며 발전을 거듭하면서 더 나은 방법이 있는지를 항상 모색해야 한다.

더불어 기술이 향하는 가치와 효용성을 고민하고 더 나은 세상을 만들 수 있다는 믿음까지. 이 모든 것을 염두에 두고 끊임없이 노력하는 것이 소프트웨어 장인에 가까이 다가가기 위한 발걸음이 아닐까 생각해 본다.

잔을 비워라

열정을 드러내며, 무지에 당당히 맞서라. 때로는 여유를 가지고 한발 물러서서 걸어온 길을 폄하하지 말자.

긴 여정을 걷다

지속적인 동기 부여를 통해 자신만의 긴 여정의 지도를 그려라. 때로는 논리적이면서도 의욕적으로 말이다.

정확한 자기 평가

바닥을 쓸어라. 장인적인 전통에서, 새내기는 마스터의 견습생으로 시작한다. 팔꿈치를 맞대어라.

끊임없는 학습

연습, 연습, 또 연습이다. 능력의 폭을 넓혀라. 넓은 지식을 습득하려고 노력하자. 토끼굴에 빠지는 것을 조심하자. 모든 것을 알아야 한다는 강박을 버려라. 배운 것을 기록하고 공유해라. 부숴도 괜찮은 장난감을 만들자. 장난감을 분해하고, 조립하자. 피드백 루프를 만들자.

학습 과정의 구성

꾸준히 좋은 책을 읽어라. 고전을 공부하라. 더 깊이 파고들어라. 튜토리얼과 새로운 기술을 습득할 때는 항상 물음표를 던지자.


Hello, I'm@hyun
개발을 진심으로 즐길 수 있는 개발자가 되기를 희망합니다. 블로그에서는 개발과 관련된 일련의 경험을 기록하고 있습니다.

GitHubTILInstagram