함께 자라기 : 애자일로 가는 길 (김창준 지음)

이 책에서 나오는 핵심 내용을 소개해드리고자 합니다. 

학습을 할 때 야생학습으로 공부를 하면 개발 공부 시 많은 도움을 얻을 수 있습니다. 

  • 야생학습은 대부분 비순차적이다. (학교 학습은 대부분 공부 순서가 정해져 있다.)
  • 야생 학습은 대부분 자료에 한정이 없다.(학교 학습은 대부분 교과서, 교재, 시험 범위 등이 정해져 있다.)
  • 야생 학습은 대부분 명확한 평가가 없다.

A-Z까지 보기 보다는 필요한 내용 공부를 우선하자. 볼 수 있는 참고 자료들이 많기 때문에 학습 하는데 어려움을 덜 수 있다. 다만, 정리를 지속적으로 하면서 보면 도움이 많이 될거 같다. 

 

전문가가 되는 3단계

수파리 이론

  • 수파리의 첫 번째 단계인 '수( 守 )'는 '가르침을 지킨다'는 의미로 사부가 가르친 기본을 철저하게 연마하기 위해 지루한 반복을 거듭하는 단계다. 여기서 지루한 반복은 어제와 비슷한 단순 반복이 아니라 들뢰즈 용어로 이야기하면 어제와 다른 차이를 지속적으로 생성하는 다른 반복이다.
  • 두 번째 '파( 破 )'는 원칙과 기본기를 바탕으로 자신의 개성에 따라 독창적인 응용 기술을 창조하는 단계다.
  • 마지막 단계인 '리( 離 )'는 모든 것에 얽매이지 않고 새로운 신기의 세계로 입문하면서 스승과 이별하는 단계다.

위 내용의 전달 의미는 아래와 같다. 

  • 우선 규칙을 지키고
  • 나중에 그 규칙을 깨트리고
  • 다음에는 규칙 자체를 넘어선다는 얘기

처음에는 규칙을 따르지만, 배우고 응용하는 과정에서 나만의 것을 만들어가는것입니다 

 

잘 뽑는 것 이상으로 중요한것

  • 보험 설계사가 업무 중에 자신의 능력을 향상시키기 위해 시간을 얼마나 쓰는가 직무 성과를 비교한 연구가 있다. 최근 일주일 동안 업무 능력 향상을 위해 얼마나 시간을 쓰는지 물었는데 이 시간의 양과 직무 성과 간의 통계적으로 유의미한 양의 상관성이 있었다.
  • 그들이 자주 하는 수련으로는 ‘머릿속에서 시뮬레이션하기’ (클라이언트와 어려운 대화 상황을 머릿속에 그리고, 가능한 시나리오를 탐색해봄)
  • 피드백 요청하기

꾸준하게 공부하되 방향이 잘 맞는지 확인하기 위해 지속적으로 피드백을 요청해야 한다. 

 

개발자들이 할 수 있는 것

  • 1만 시간 법칙을 만든 주인공, 안데쉬 에릭손은
  • 55년 동안 걸었다고 걷는 게 점점 더 나아지고 있는 건 아니다.
  • 1만 시간 법칙에서 1만 시간은 ‘자신의 기량을 향상시킬 목적으로 반복적으로 하는 수련’ 이런 수련을 의도적 수련이라고 한다.

애자일 프로젝트에서는 내가 한 행동의 피드백을 10분 후, 한 시간 후, 일주일 후 등 여러 주기를 통해 지속적으로 얻을 수 있다 .

 

 

자기계발은 복리로 돌아오도록 만들어라 

일 년 회고를 할 때 항상 되짚어 보는 것 중 하나가 나 자신에게 얼마나 투자를 했나 하는것이다.

자기계발 하루 평균 시간으로는 1-2 시간은 39% / 1시간 정도 27.8% / 2-3시간 14.8% / 30분 이하 12.0% / 3시간 6.5% 순으로 조사된다.

하루에 1%씩 이자를 복리로 받는다고 하면 원금의 두 배가 될 때까지 며칠이 걸릴까요? 70일이면 된다. 1년이면 약 38배가 된다. 복리가 소위 기하급수의 구조이기 때문이다. 더하기가 아니고 곱하기로 진행되는 급수이다.

이렇게 복리식으로 학습을 하려면 자신을 개선하는 프로세스에 대해 생각해 봐야 한다.

  • 예컨데 나의 A 작업을 되돌아보는 회고/반성 활동을 주기적으로 하는 프로세스를 만들어라.

 

누구에게서 잠재력을 많이 봤을까요? 

아직 1년도 되지 않아서 책 보고 코드 보고 업무를 배워가는 중입니다. 그래서 딱히 누구에게 물어보지 않고 또 아직 업무 파악이 안 된지라 누굴 도와주거나 할 입장도 아닙니다. 아직 1년도 되지 않아서 많이 물어보며 배우고 있습니다. A선임, B선임, 그리고 제가 공부하고 싶은 내용을 주제로 팀 내 스터디를 운영하고 있습니다. 같이 공부해 가는 거지요. 제가 출퇴근 시간에 지하철에서 많이 봤던 모 프레임워크와 관련된 문제로 다른 팀원이 어려워하는 걸 우연찮게 알게 되었습니다. 그래서 도와드렸죠. 아직 1년도 안 되어서 시간이 있으니까 적극적으로 다른 분들 일을 도와드리려고 나서고 있습니다. A선임, B책임... (책 내용중 일부)

 

가장 학습하기 힘든 직업이 살아남는다.

  • 배우기 힘든 것에 집중하라
  • 학습하기 힘든 환경에서 학습하기 힘든 주제들을 골라야 하는 상황
    • 목표가 모호하고 주관적일 수 있으며 동적이다.
    • 매 순간 선택할 수 있는 행동/선택의 종류가 불확실하다.
    • 매 순간 내가 목표에 얼마나 근접했는지를 알기 어렵다.
    • 주로 열린 시스템(즉, 예상 못 한 외부 요소가 갑자기 들어오는 경우가 흔한) 속에서 일한다.
    • 과거의 선택과 결과에 대한 구조화된 기록이 별로 없다.

개발자는 항상 열린 사고로 다양한 가능성에 초점을 맞추고 장애상황, 업무를 수행해야 한다. 

 

당신이 제자리걸음인 이유

실력을 높이기 위해서는 의도적 수련이 중요합니다.

의도적 수련이 되려면 나의 실력과 작업의 난이도가 비슷해야 합니다.

인지부하이론에서는 학습 시 불필요하게 인지적인 부담을 주면 어떤 것도 제대로 학습하기 어렵다는 말을 한다. 예컨대 미적분을 독일어로 배우면 미적분 자체보다 엉뚱한 다른것들에 두뇌 에너지를 뺴앗겨서 학습효율이 떨어질 수 있다는 것이죠. 반대도 있습니다. 영단어를 여러 개 외울 때 모음을 감추고 외우면 더 어려워서 오히려 기억이 오래갈 수 있다는 연구도 있습니다. 핵심은 적절한 난이도입니다. 

 

실력이 늘지 않는 이유

  • 자신이 업무 시간 중에 불안함이나 지루함을 느끼는 때가 대부분이라면, 실력이 도무지 늘지 않는 환경에 있는 겁니다.

 

실력 향상 시키기

지루함을 느끼는 경우 : 실력 낮추기

  • 평상시 즐겨 쓰던 보조 도구를 일부러 안 쓰는 것.
  • 컴파일을 30초마다 한 번씩 한다면 5분에 한 번씩으로 주기를 늘려보기.

지루함을 느끼는 경우 : 난이도 높이기

  • 하루 만에 개발하라고 주어진 업무인데 지루한 느낌이 드니 한 시간 만에 할 수 있는 방법 고안하기.
  • 100rps 되는 시스템을 1000rps 기준으로 만들기.

불안함을 느끼는 경우 : 실력 높이기

  • 나보다 뛰어난 전문가의 도움을 얻는 것.
  • 다른 도구의 도움을 받는것, 괜찮은 디버그, 자동 통합 도구, 코드 분석 툴 등
  • 비슷한 일을 했던 경험을 머릿속에서 되살려 보는것

불안함을 느끼는 경우 : 난이도 낮추기

  • 자신이 맡은 일의 가장 간단하면서 핵심적인 결과물, 즉 아기 버전을 첫 번째 목표로 삼는것
  • 애잘일에서 말하는 WTSTTCPW와 같다.

일을 하다 보면 지루함, 불안함을 느낄 때가 종종 있는데 실력 낮추기, 난이도 높이기, 실력 높이기, 난이도 낮추기 방법을 통해 접근해볼 수 있다. 

 

두 가지의 실수 문화

  • 실수는 어떻게든 할 수밖에 없다. 대신 그 실수가 나쁜 결과로 되기 전에 일찍 발견하고 빨리 고치면 된다. 이미 결과가 난 실수에 대해서는 학습을 통해 다음 행동할 때 이렇게 하자 는 계획도 세우기도 한다.

실수 예방 문화에서는 한 사람을 비난하고, 처벌하고, 따라서 실수를 감추고 그에 대해 논의하기 꺼리며 문제가 생겼을 때 협력도 덜하게 됩니다. 반대로 실수 관리 문화에서는 실수가 나쁜 결과를 내기 전에 빨리 회복하도록 돕고, 실수를 공개하고, 실수에 대해 서로 이야기하고 거기에서 배우는 분위기가 생긴다.

개발 문화에 있어서 중요한 것은 실수를 관리하는것이다.