Study/함께자라기

[Study][함께자라기 - 1] 1. 자라기

youn12 2022. 8. 28. 13:54
📋 목차.

0. 들어가면서

1. 자라기
    .당신은 몇 년 차?
    .학습 프레임과 실행 프레임
    .가장 학습하기 힘든 직업이 살아남는다.

    .달인이 되는 비결
    .수십 년 동안 전문가가 안 되는 비결
    .당신이 제자리걸음인 이유
    .프로그래밍 언어 배우기의 달인
    .실수는 예방하는 것이 아니라 관리하는 것이다.
    .뛰어난 선생에 대한 미신
    .나홀로 전문가에 대한 미신


✔️ 내용.

 

0. 들어가면서

 

"내가 정말 잘할 수 있을까? 아니, 우리가 정말 자랄 수 있을까?"

 

 무엇이든 혼자 힘만으로는 힘들다. 함께 해야 뭔가를 편히 이룰 수 있다. 하지만 우리는 함께 하는 것보다는 각자 하는 것에 익숙하고, 또 그렇게 강요받아왔다.

 이번에 잘하냐 못 하냐가 중요하지 않다. 앞으로의 기회가 많다면 지금 잘하냐가 아니라 지금 자라나는 것이다. 우리는 자라는 것을 훈련할 기회가 별로 없다.

 무엇보다 이런 함께, 그리고 자라기, 를 매일매일 해야 한다는 생각을 별로 하지 못한다. 한다 하여도 '계속 혼자서 해왔는데 가끔은 한 번쯤 함께 해보자', ' 지금은 바쁘니까 자라기는 나중으로 미루자' 같은 인식 수준에 머무르는 경우가 많다. 하지만 우리가 날마다 함께 자라기를 할 수 있다면 어떨까?

 

 이 책을 통해 '내가 정말 잘할 수 있을까?'라는 질문을 다음 질문들로 발전시켜 볼 수 있기를 기대한다.

 

 - 내가 정말 자랄 수 있을까?

 - 우리가 정말 함께 자랄 수 있을까?

 - 우리가 정말 매일매일 함께 자랄 수 있을까?

    - '우리'와 '함께'협력을 말하고, '자라다'학습을 말한다. '매일매일'접근 방법을 말한다

 

 스스로 변화하고 싶지만 계속 실패하는 사람, 혹은 조직을 개선하기 위한 시도를 하다 오히려 데어본 사람, 하루하루가 답답한 사람을 위해 책을 쓰게 되었다.

 이 책에서 말하는 함께 자라기는 '애자일'이라고 하는 일하는 방법의 핵심이라고 생각한다. 하지만 많은 사람들이 이런 핵심에 대해 생각하기보다 애자일의 지엽적 실천법과 도구에 집중을 하는 것 같다. 따라서 애자일 도입, 확산하려 했지만 좌절했던 사람들에게도 이 책이 중요한 통찰을 주리라 기대한다.

 


 

1. 자라기

 

'자라기' (학습)부터 시작해 본다.

 

 - 야생 학습

 

 여러 사람들로부터 의견을 받을 때 하나로 통일된 의견보다는 상반된 의견일 경우가 일반적이다. 이런 상반된 의견에서 스스로 생각하는 훈련을 해가야 한다.

 앞서 이어 학습의 중요성을 얘기하면 학교 학습을 예로 많이 들게 된다. '학교 때 열심히 해온 공부가 실제로 크게 도움이 안 되는 것 같다.' 저자가 말하고자 하는 학습은 이런 학습이 아니다. 학교 학습의 반대되는 개념으로 '야생 학습'을 얘기한다.

 

 야생 학습과 학교 학습의 차이점 (전부가 아닌 대부분을 중점)

야생 학습 학교 학습
협력적 개별적
비순차적 순차적 (공부 순서가 정해져 있다)
자료에 한정이 없다 한정 (교과서, 교재, 시험범위 등 정해져있다)
명확한 평가가 없다 시험이라는 명확한 평가기준이 있다.
정답이 없다. 정답이 명확하다.
목표가 불문명하고 바뀌기도 한다. 시험 합격, 자격증 과같이 목표가 뚜렷하다.

 

 

 학습의 본의야생 학습에 더 가깝다 생각하고, 현실 세계에서는 야생 학습이 더 많이 필요하다. 따라서 이 책에서는 학습을 이야기할 때 대부분의 경우 야생 학습을 언급하는 것이라 보면 된다.

 

야생 학습이 필요한 경우? 일반적으로 불확실성이 높은 경우일수록 중요하다.

 


 - 수파리

 

 아이키도에서 자주 회자되는 격언. 

 

 1 단계. 규칙을 지킨다.

 2 단계. 규칙을 깨트린다.

 3 단계. 규칙 자체를 넘어선다.

 

 수파리는 특히 1단계를 강조하기 위해 쓰인다. 무조건적인 받아들임!. 이러한 메타포여러 가지 교육적인 문제를 야기한다. 다음 장부터는 이러한 메타포를 대체할 새로운 메타포를 찾기 위해 시작한다.

 


.당신은 몇 년 차?

 

  - 경력, 그 견딜 수 없는 무거움

 

1. 경력 연차라는 것으로부터 이 사람이 초급인지 아닌지 정도의 정보만 기대할 것

2. 초급이 아닌 사람들에 대해서는 경력 연차가 오히려 혼동을 불러일으키는 잘못된 정보로 작용할 수 있다.

3. 경력 연차채용여부나 임금 수준을 결정하는 것판단 편의적이고 관료주의적이며 결과적으로 조직에 손해를 줄 수 있는 방식이다.

 


 

 - 직원을 뽑을 때 무엇이 그 사람의 실력을 가장 잘 예측할까?

 

 특정 연구 결과에서 경력연차와 직무 성과의 상관 여부는 낮다. 학력과 직무 성과와의 상관성 또한 낮다.

상관성이 가장 높은 것은 작업 샘플 테스트(실제 채용후 해야 할 작업의 일부를 해보는 테스트), 아이큐와 같은 지능 테스트, 구조화된 인터뷰(직무 분석을 토대로 한)였다.성실성, 성격 테스트 또한 앞에 나열한 테스트보다는 낮지만 경력 연차보다는 높은 상관성을 가지고 있다.

 물론 연차가 아예 상관성이 없다고는 할 수 없다. 다만 연차가 낮을 경우에는 상관성이 높지만. 연차가 높아질수록 상관성이 반비례한다고 알 수 있다.

 


 

 - 소프트웨어 개발에서 경력과 실력

 

  학부생과 회사원 과같이 비전문가/전문가에서는 직무 성과가 차이가 날 수 있지만. 동일한 개발자 선상에서 봤을 때는

경력이 10년 차인 개발자가 2년 차 개발자보다 더 우수하다고 볼 수 없다. 경력과 생산성은 아무 상관관계가 없다.

 


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

 

 앞서 말한 조건으로 뽑는다 하여도 그 이상으로 중요한 것이 뽑은 사람에 대한 관리이다. 업무 능력 향상을 위한 전문성 연구를 개인에게만 맡긴다면 좋지 않다. 조직은 개인이 자신의 전문성을 좀 더 발전시키고 관리할 수 있도록 최대한 지원해야 한다. 그것이 조직과 개인 서로 윈윈 하는 길이다.

 

 


 

 - 개발자들이 할 수 있는 것

 

 특정 분야의 전문가가 되기 위해서는 1만 시간의 경험이 필요하다.
'1만 시간의 법칙'

 1만 시간에서 얘기하고자 하는 1만 시간은 단순한 경력이 아니다. 의도적 수련 ('자신의 기량을 향상할 목적으로 반복적으로 하는 수련') 1만 시간에 해당하는 시간이다. '기량 향상을 목적으로 자신의 약점을 개선하려고 애쓰는 훈련'의도적 수련이다. 실제 실력상관있는 것은 의도적 수련이다.

 업무를 하며 수련을 할 수 있는 방법으로는 피드백 시간짧게 가지는 것이다. 보통의 프로젝트 피드백은 한 달 이상이 걸릴 경우가 생기는데 한달 뒤에는 이전에 내가 어떻게 개발을 진행했는지 파악하기가 힘들다. 하지만 피드백 시점을 짧게 잡으면 실수를 교정할 기회를 충분히 가질 수 있으며 수련 또한 가능하다.

 


 

 - 자기 계발은 복리로 돌아온다.

 

 회고를 통해 되짚어 보는 건 중요하다. 자신에게 얼마나 투자를 하였는지. 어떻게 지냈는지에 따라 1년, 혹은 2년 후의 나를 결정한다고 느끼게 때문이다. 지금 부족하다 느낀다면 1,2년 전의 나를 돌아봐야 한다.

 자기 계발에 하루 평균 1시간도 투자하지 않는 사람이라면 직장인의 하위 1/3에 속한다. 이게 축적이 되면 엄청난 차이를 만든다. 자기가 습득한 지식이나 능력은 복리로 이자가 붙기 때문이다.

 따라서 빨리 자라고 싶다면 어떻게 이율을 높일지 고민해봐야 한다.

 


 

 - 복리의 비밀

 

컴퓨터 마우스 발명가 더 글러스 앵겔바트는 작업을 A, B, C 작업 세 가지 수준으로 구분한다.

- A 작업원래 그 조직이 하기로 되어 있는 일을 하는 것을 말한다. 자동차 공장이면 자동차를 만드는 일이다.

- B 작업A 작업을 개선하는 걸 말한다. 제품 만드는 사이클에서 시간과 품질 개선, 제품 만드는 시스템 설계가 해당된다.

- C 작업B 작업을 개선하는 걸 말한다. 개선 사이클 자체의 시간과 품질 개선. 예컨대 개선하는 인프라를 설계하는 것이 포함된다. 즉, 개선하는 능력을 개선하는 것을 말한다.

 

더글 러스는 "우리가 더 잘하는 것을 더 잘하게 될수록 우리는 더 잘하는 걸 더 잘 그리고 더 빨리 하게 될 것이다."

 

 가장 미묘하고 또 잠재적으로 가장 영향력이 큰 것은 C 작업이다. 우리의 사고방식과 상호 작용 방식을 개선하는 단계이다. 이 부분이 복리와 관련이 깊다. '일반 조직'과 '복리 조직'을 예로 보면 이전과 똑같은 결과물을 내는 '일반 조직'과 결과물을 가지고 더 나은 결과물을 내는 '복리 조직'의 차이에서 성장이라는 비유가 나타난다.

 

일반 조직

 

복리 조직

 이러한 성장 기술을 부트스트래핑(bootstrapping)이라 한다. 외력의 도움 없이 스스로 상황을 개선하는 것을 뜻한다.

이렇게 작업하게 되면 매일 내가 더 나은 내가 되어간다. 앞서 얘기한 복리 효과로 성장하게 된다. 원금에 동일한 이자가 붙는 단리더하기라면 복리는 매번 이자가 증가하는 곱하기이다. 

 - 더하기 사고는 가용시간을 늘리고, 쓸데없이 낭비되는 시간을 줄이고, 잠자는 시간을 줄이는 것

 - 곱하기 사고는 집단의 지능을 높이는 것이다.

 

자신 이 평소 투자하는 비용을 되돌아보자. 만약 B 나 C 작업이 거의 없다면 후퇴하는 셈이 될 것이다.

 

 정리하면. 나의 A 작업을 개선하려면 두 가지 질문을 해봐야 한다.

 - 첫 번째 어떻게 하면 더하기보다 곱하기를 할 수 있을 것인가.

 - 두 번째 어떻게 해야 곱하는 비율(이자율)높일 수 있는가 혹은 이자 적용주기를 짧게 할 수 있는가.

 

여기에 대한 힌트로는 아래와 같다.


자신이 이미 갖고 있는 것들을 잘 활용하라.

 

 - 새로운 것을 유입시키는 데에만 집중하다 보면 새로운 것들이 이미 있는 것들을 덮어 버릴 수 있다. 자신이 올해 책을 몇 권을 읽었다 자랑하지 말고, 내가 그 지식을 얼마나 어떻게 활용하는지 반성하라

 

 - 이미 가지고 있는 것들을 하이퍼링크로 서로 촘촘히 연결하라. 노드 간 이동속도가 빨라질 수 있도록 고속도로를 놓아라. 즉, 이미 습득한 지식, 기술, 경험 등을 서로 연결 지어서 시너지 효과가 나게 하고 하나의 영역에서 다른 영역으로 왔다 갔다 하는 것을 자주 해서 다른 영역 간을 넘나들기가 수월해지도록 하라.

 

 - 새로운 것이 들어오면 이미 가지고 있는 것들과 충돌을 시도하라.

 - 현재 내가 하는 일이 차후에 밑거름이 될 수 있도록 하라.

 


 

외부 물질을 체화하라

 

- 내부 순환만을 하다가는 일정 수준에 수렴위험이 있다. 주기적으로 외부 자극을 받으면 좋다. 단, 외부 자극을 받으면 그걸 재빨리 자기화해야 한다. 

 - 외부 물질 유입 이후 생긴 내부의 갈등을 해결하려는 데에 노력을 기울여야 한다. 무시하고 덮어두지 마라. 내가 가진 것들의 상생적 관계를 끌어내도록 하라.

 


자신을 개선하는 프로세스에 대해 생각해 보라

 

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

 - 나를 개선하는 과정(B 작업)을 어떻게 하면 개선할 수 있을지 고민하라.


 

피드백을 자주 받아라

 

 - 사이클 타임을 줄여라. 새로운 정보를 얻었다면 1년 후에 크고 완벽한 실험을 하려고 준비하기보다는 1달, 혹은 1주 후작게라도 실험해 보는 것이 좋다. 순환율을 높여라.

 -  일찍, 그리고 자주 실패하라, 실패에서 학습하라.

 

 


 

자신의 능력을 높여주는 도구와 환경을 점진적으로 만들어라

 

 - 일례로, 한 프로그래머는 자기의 수족을 마음대로 놀릴 수 없는 불편한 언어에서 프로그래밍을 하는 경우 점차적으로 자신을 도와주는 환경을 나간다. 나의 속도를 늦추는 것들을 중력에 비유하면 중력을 점점 줄여나간다고 할 수 있다.

 - 완벽한 도구와 환경을 갖추는 데에 집착해서는 안 된다. 그런 식으로는 무엇도 영원히 얻을 수 없다. "방이 조용해지고 배도 안 고프고 온도도 적절해지기만 하면 공부 시작해야지"라고 생각하는 사람들 중 1등은 없다.. 또한 실제로 그런 환경이 되어도 몸에 배어든 습관 때문에 결국은 공부하지 못할 것이다.

 

 


 

.학습 프레임과 실행 프레임

 

 학습 프레임은 '자라기'에 초점을 맞추고 실행 프레임'잘하기'에 초점을 맞춘다. 두 프레임을 비교하면 학습 프레임이 훨씬 더 많이 학습하게 된다. 내가 얼마나 배우냐를 목표로 하는 학습 프레임과 달리 실행 프레임은 성과가 목표이다. 실행 프레임은 목표가 학습을 통한 성장이라면 불리하다.

 

상황이 이렇다 하여 업무에서 학습을 못한다 생각을 가지지 말자. 누군가는 상황이 그러하여 '덕분에' 학습 프레임을 가질 수 있었다. 대답할 수 있다.

 


 

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

 

 자신의 직업이 미래에 사라지지 않을까? 하는 걱정과 두려움에서 어떤 준비를 할 수 있을지 얘기한다.

 


 - 학습에 유리한 조건, 불리한 조건

 

 배우기 힘든 것에 집중하라. 학습하기 힘든 관경에서 학습하기 힘든 주제들을 골라야 하는 상황이다. 학습에 힘든 환경과 주제란.

 

1. 목표가 모호하고 주관적일 수 있으며 동적이다.

2. 매 순간 선택할 수 있는 행동/선택의 종류가 불확실하다.

3. 매 순간 내가 목표에 얼마나 근접했는지를 알기 어렵다(내가 한 선택의 피드백을 빨리 얻기 어렵다)

4. 주로 열린 시스템(즉, 예상 못 한 외부 요소가 갑자기 들어오는 경우가 흔한) 속에서 일한다.

5. 과거의 선택과 결과에 대한 구조화된 기록이 별로 없다.

 

 이런 환경은 소위 '암묵지', '직관' 같은 것들이 작동하는 회색 영역이다. 자신이 왜 이런 선택을 했는지 쉽게 설명할 수 없는 것들이다. 

 


 

 - 컴퓨터로 대체되기 힘든 일

 

 <고용의 미래>라는 옥스퍼트 대학에서 발표한 논문을 참고하면 702개의 직종이 미래 컴퓨터로 대체될 확률을 계산했다.

연구자들은 컴퓨터화에 병목이 되는 카테고리 3가지로 지각과 조작, 창의적 지능, 사회적 지능을 선정했는데 이 카테고리에 속하는 9가지 중 변수 다섯 가지를 추려봤다.

 

 - 독창성 : 주어진 주제나 상황에 대해 특이하거나 독창적인 생각을 해내기, 혹은 문제를 해결하는 창의적인 방법 만들기

 - 사회적 민감성 : 타인의 반응을 알아차리고 그 사람들이 왜 그렇게 반응하는지 이해하기

 - 협상 : 사람들을 화해시키고 서로 간의 차이를 조정하려고 노력하기

 - 설득 : 다른 사람들이 마음이나 행동을 바꾸게 설득하기

 - 타인을 돕고 돌보기 : 개인적 도움, 치료 감정적 지지, 혹은 동료, 고객, 환자 같은 타인들에 대한 기타의 개인적 도움을 제공하는 것.

 

 소프트웨어 개발자컴퓨터 프로그래머를 비교해보면 주어진 스펙대로 개발하는 컴퓨터 프로그래머뭘 만들지 고민하고 설계하는 부분이 포함되며 그 과정에서 타인과의 상호작용을 하는 업무가 많은 소프트웨어 개발자의 경우. 앞서 말한 다섯 가지 변수에 의해 컴퓨터 프로그래머가 사라질 위험이 더 높다.

 


 

 - 무엇에 집중할 것인가.

 

 자신이 주로 하는 일남이 시킨 대로 혼자 프로그램을 만드는 것이라면 그런 스킬과 경력만 계속 쌓일 것이다. 혼자서 딱 정해진 일만 할 수 있는 환경이 축복이 아니라 저주가 될 수 있다. 결론적으로 미래에는 암묵지와 직관을 잘 학습하는 사람들높은 경쟁력을 가지게 된다. 이런 것들은 배우기가 어렵다. 자신이 얼마나 잘하는지 판단하기도 어렵다 그래서 더닝 크루거 효과(실력이 떨어지는 사람일수록 자기 평가도 부정확하다)도 더 크게 나타난다.

 

 지금부터라도 암묵지와 직관을 배우고 수련하는 방법을 배우면 된다. 이런 것들을 빨리 학습하는 방법에 대한 연구가 이미 있다(자연주의 의사결정론, 적응성 전문성 연구)


 

.달인이 되는 비결

 

 전문성 획득에 있어 반복의 중요성도 있지만 반복만이 전부는 아니다. 자신이 해온 것 중에 전문성을 가지게 된 것과 그렇지 않은 것의 차이를 생각해보자. 

 

1. 동기가 부족하다.

 - 일정 수준만 되면 더 잘하고자 하는 동기가 없어진다. 

2. 피드백을 제때 받지 못한다.

 - 내가 치과에 가기 전까지 어떻게 양치질을 잘못했는지, 부족한지 피드백을 제때 받지 못하면 뭘 잘 못했는지 모르고 실력도 늘지 않는다.

 

 

 정리하면 반복만으로 달인이 되기 위해서실력을 개선하려는 동기가 있어야 하고 구체적인 피드백을 적절한 시기에 받아야 한다. 특정 영역에서 자신의 실력을 향상하고 싶은 사람이라면 혹시 그 일을 내가 양치질하듯 단순히 반복해 온 것은 아닌지 반문해 보고, 내 일에서 양치질 직후 구강 거울 역할을 하고 있는 것은 무엇인지, 없다면 어떻게 만들어낼지 고민해 보자.

 특정 영역에서 개인이 성취할 수 있는 최고 수준의 퍼포먼스는 경험을 오래 한다 해서 자동으로 얻을 수 있는 것은 아니다.

 


 

.수십 년 동안 전문가가 안 되는 비결

 

 수십 년 동안 한 가지 일을 하면서 전문가가 안 되는 비결은 타당성과 피드백이 부족한 환경에서 일하는 것이다. 복잡한 상황에서 뒤죽박죽으로 일하거나 오늘 실수한 것 몇 달 뒤에 알거나 혹은 영영 모르거나 하는 환경이다. 타당성이 떨어지는 영역의 예로 정치 판도 예측주가 예측이 있을 수 있다. 예측에 따른 결과는 큰 차이가 없다. 피드백 조건부족한 환경의 예로는 공항의 보안검사대 조사원을 들 수 있다. 보안검사대 조사원은 자신이 놓친 칼이나 액체 물질을 얼마나 찾았는지는 알아도 얼마나 놓쳤는지는 모른다.

 소프트웨어 개발타당성도 낮고 피드백도 낮은 편이라 생각한다.


 

 - 타당성과 피드백 높이기

 

 일하는 방식, 개발하는 방식을 바꾸면 이 타당성과 피드백을 어느 정도 높일 수 있다. 그리고 전문성을 현재보다 좀 더 빨리 발전시킬 수 있다고 생각한다.

 

 - 타당성을 높이기 위해 변수를 제한하고 실험을 하면서 규칙성과 인과관계를 찾으려 노력을 한다.

 - 피드백을 높이기 위해 상사, 고객 혹은 내가 개발하는 프로그램에서 직접 피드백을 적극적으로 구한다.

 

위 두 가지를 높이기 위해 어떠한 노력을 하고 있는가? 


 

.당신이 제자리걸음인 이유

 

 실력을 높이기 위해서는 의도적 수련이 중요하다. 양적인 부분(1만 시간의 법칙)은 알지만 질적인 부분,어떤 조건을 갖춰야 의도적 수련이 되는지, 더 효과적인 의도적 수련이 되기 위해서는 어떻게 해야 하는지 등에 대해 잘 모른다.

 


 - 의도적 수련의 필수조건, 적절한 난이도

 

의도적 수련이 되려면 나의 실력과 작업의 난이도가 비슷해야 한다. 이것은 미하이 칙센트미하이의 몰입 이론과 일치하는 부분이다.

미하이의 단순 도식

 

가로축은 해당 작업에 대해 자신이 느끼는 자기 실력을 말하며 세로축은 해당 작업에 대해 자신이 느끼는 난이도이다.

 - A 영역은 실력에 비해 난이도가 낮기에 지루함을 느끼게 된다.

 - B 영역은 실력보다 높은 난이도의 일을 하기에 불안함이나 두려움을 느낀다

 

 중요한 지점은 C 영역으로 난이도와 실력이 엇비슷하게 되어 이 부분에서 인간은 몰입을 경험한다. 이때 바로 최고 수준의 집중력을 보이고, 덕분에 퍼포먼스나 학습 능력이 최대치가 될 수 있다고 한다. 또한 그때 최고 수준의 행복감을 경험한다.

 

 비슷한 이야기로 i + 1 이론이 있는데, 현재 언어 학습자의 언어 수준을 i라고 했을 때 딱 한 단계 높은 i + 1 수준의 입력이 주어질 때에만 언어 능력이 유의미하게 진전한다는 이론이다.

 

 교육학에서도 비슷한 이야기로 인지 부하 이론이 있다. 학습 시 불필요하게 인지적인 부담을 주면 어떤 것도 제대로 학습하기 어렵다. 예로 미적분을 독일어로 배우게 될 경우 미적분 자체보다 독일어에 두뇌 에너지를 빼앗기게 되어 학습 효율이 떨어진다. 반대로 영단어를 여러 개 외울 때 모움을 감추고 외우면 어려워서 오히려 기억이 오래갈 수 있다는 연구도 있다. 핵심은 적절한 난이도다.

 


 - 실력이 늘지 않는 이유

 

 앞서 말한 A, B의 영역 이유로 자신이 업무 시간 중에 불안함이나 지루함을 느끼는 때가 대부분이라면, 실력이 도무지 늘지 않는 환경에 있는 것이다. 더 무서운 것은 이런 환경에 익숙해지고 행동이 습관화된다는 점이다. 그때는 자기 인식도 잘 되지 않는다.

 뛰어난 선수자기 기량보다 어려운 기술을 연마하지만 그렇지 못한 선수이미 잘하는 걸 더 연습한다.

 


 

 - 제자리걸음에서 벗어나기

 

현재 직무 자체가 반순 작업이거나 불안함을 느끼는 작업이라면? 어떻게 해야 할까.

본인의 하루가 불안하거나 지루한 때가 대부분이라면 이 전략을 사용한다.

전략도


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

 

 같은 난이도의 체력 훈련에서 모래주머니를 다는 경우를 생각하면 된다. 프로그래머로 예로 들면. 평상시 즐겨 쓰던 보조 도구를 일부러 쓰지 않는다. 마우스를 즐겨 쓰면 키보드로만 개발하고, 디버거를 늘 쓰는 경우 디버거를 안 쓰는 것이다. 컴파일을 30초마다 한다면 5분에 한 번씩 주기를 늘려본다. 실력이 팍 떨어지는 느낌이 들게 될 것이다. 좀 더 집중해야 하고 머릿속에서 좀 더 많은 연산을 해야 한다.

 하지만 난이도와 실력이 잘 맞아 들어가기만 하면 의도적 수련이 될 수 있다. 지루한 작업이 몰입하는 작업이 되고 실력도 늘 수 있다.

 


 

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

 

 자신만의 제약을 추가한다. 예로 주어진 시간이 8시간이라면 4시간 만에 개발을 완료하는 형식이다. 이 전략은 뛰어난 프로그래머들이 이미 많이 쓰고 있다.

 흔하게 쓰는 방법은 자기에게 요구되는 수준을 더 높게 여긴다. 하루 만에 개발하라고 주어진 업무를 한 시간 만에 할 수 있는 방법을 고안해 보기. 100 rps(Request per Second. 초당 응답수) 면 되는 시스템을 1,000 rps 기준으로 만들기, 평소 코드를 검토할 때 버그를 시간당 하나 찾았다면 오늘은 두 개 찾기, 익숙한 작업을 새로운 언어로 진행해보기 등

 또 다른 방법으로 공식적으로 안 해도 되는 업무를 자신의 의지로 추가하는 경우. 보통은 자신의 업무를 개선하는 일로 리펙터링, 자동화 테스트, 자신만의 도구 등이 있다.

 

 이 외에 에도 a2에서는 자신만의 도구, 방법을 만드는 게 매우 중요하다. 상대의 전문성빠른 시간 내에 간파하는 기법 중에 남들보다 일을 좀 더 효율적/효과적으로 하기 위해 내가 직접 만들어 쓰는 나만의 도구, 방법을 묻는 방법이 있다. 이런 것들을 하기 위해서는 자주 일어나는 반복 패턴을 파악하고 분석해야 하며, 부족한 시간에도 짬을 내어 도구를 고안하고 작성해야 한다. 일의 난이도가 확 올라가는 셈이다. 

 


 

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

 

 장기적으로 실력을 높이는 방법은 많다. 책을 보거나 스터디에 참가하거나 교육을 듣거나 등등. 하지만 지금 당장 불안감을 느낀다면 어떻게 해야 하는가에 대한 문제가 발생한다. 크게 보면 사회적 접근도구적 접근, 내관적 접근 세 가지가 가능하다.

 사회적 접근나보다 뛰어난 전문가의 도움을 얻는 것이다. 잘하는 사람한테 가서 짝 프로그래밍을 부탁하거나 IRC(인터넷 채팅)에서 전문가의 도움을 얻거나, 괜찮은 튜토리얼 문서가 있을 경우 문서의 진행방향을 순서대로 따라가 본다.

 도구적 접근다른 도구의 도움을 받는 것이다. a1에서 도구 접근을 제약하는 경우의 반대로 볼 수 있다. 내 능력을 확장시켜 줄 수 있는 도구를 찾아 쓴다. 디버거, 자동 통합 도구, 코드 분석 툴, REPL(Read-Eval-Print Loop) 환경 등을 사용하거나 오픈소스 라이브러리를 빌려 쓴다.

 내관적 접근비슷한 일을 했던 경험을 머릿속에서 되살려 본다. 보통 이런 과정을 거치면 자기호용감(self-efficacy)이 증대하면서 스스로 인식하는 자기 실력이 향상되기 쉽고, 결과적으로 몰입 영역으로 들어가기 좋다.

 


 

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

 

 간단하면서 효과적인 방법은, 자신이 맡은 일의 가장 간단하면서 핵심적인 결과물, 즉 아기 버전(혹은 0.0.1 버전)을 첫 번째 목표로 삼는다. 애자일에서 말하는 WTSTTCPW와 같다. 쉬운 작업에서 어려운 작업으로 진행하는 경우가 좋다. 정확도 측면에서 매우 높은 결괏값을 얻을 수 있게 된다.

 


 

 - 동적인 균형

 

 위의 전략으로 난이도를 조절했다 하여도 지속적으로 자신의 상태를 돌아봐야 한다. 어려워서 난이도를 낮췄더니 의외로 지루하거나 쉬워서 난이도를 올렸더니 너무 과해 어렵게 느껴지는 경우가 생길 경우 똑같은 문제에 도달하게 된다.

 따라서 지금 자기가 어떤 상태인지 살피는 '알아차림'이 꼭 필요하다. 메타인지 전략이라고도 하는데, 교육학과 심리학 연구에서 공부를 잘하는 사람들의 중요한 특징 중 하나로 꼽는다. 또한 공부를 넘어 전문성에 있어서도 메타 인지는 핵심적 요소로 인정받고 있다. 예컨대, 테스트 주도 개발을 잘하려면 앞서 말한 동적인 균형 맞추기를 잘해야 한다. 이걸 잘하면 지속적으로 몰입을 경험할 수 있고 실력이 일신우일신 할 수 있다.

 


 

 - 팀장이 할 수 있는 일

 

몰입 영역 밖으로 팀원들을 몰아내는 행동을 하면 안 된다. 지루함을 느끼는 팀원에게 스터디를 시키거나 콘퍼런스에 보내 실력을 높이게 하는 것, 실력보다 높은 난이도의 일을 해서 불안함을 느끼는 직원에게 핀잔을 줘서 인지하는 실력(자기 효능감)을 떨어뜨리거나, 보고서 제출하라는 추가 업무로 난이도를 높이거나 하는 등이다. 이런 경우 팀원들을 몰입으로 가게 도와주는 것 자체가 고도의 의도적 수련이 될 수도 있겠다.


 

.프로그래밍 언어 배우기의 달인

 

 긍정 오류란, 실제로 지뢰가 없는데 지뢰가 있다고 믿는 오류다. 이에 반해 부정 오류란 있는데 없다고 믿는 거다. 부정 오류를 낮추는 가장 간단한 방법은 항상 지뢰가 있다고 외치는 거다. 일반적으로 부정 오류가 줄어들면 긍정오류는 증가하는 경향이 있다. 부정오류가 줄어들었는데 긍정 오류가 큰 변화가 없다는 것은 실력에 분명한 향상이 있다는 것이다.

(해당 범위에서 핵심 얘기는 아니지만 개인적으로 생각해 볼만해서 작성하였다.)

 


 - 튜토리얼을 읽을 때 뭘 만들지 생각하고 읽는다.

 

 읽기 전 작성할 프로그램을 염두에 둔다. 튜토리얼을 읽다가도 이 정도면 프로그램을 작성할 수 있겠다 생각이 들면 그 자리에서 읽기를 멈추고 코딩을 시작한다. 프로그램을 완성하면 잠시 멈췄던 자리로 돌아와 읽기를 계속한다. 이때에는 다음 프로그램을 목표로 두면서 말이다. 이것을 적극적 읽기라 한다. 무언가를 읽을 때 구체적인 질문이나 목적가지고 있는 방법이다.

 첫 번째 목표로 주로 삼는 프로그램은 단어 개수 세기 프로그램이다. 표준 입력을 읽어 줄 수, 단어 수, 글자 수를 표준 출력에 보내야 한다. why에 중심을 두고 출력, 읽기, 루프 등에 깊이 파고들어 본다. 또, 여러 언어에서 같은 프로그램을 작성하면서 언어 사이의 차이를 쉽게 느낄 수 있다.

 


 

 - 공부할 때 표준 라이브러리 소스코드를 읽는다.

 

 프로그래밍 언어를 가르칠 때 읽기보다 쓰기를 더 강조하는 경향이 있다. 하지만 실제로 업무를 할 때 코드를 읽는 시간쓰는 시간을 압도한다. 좋은 코드를 읽어봐야 좋은 코드를 쓸 수 있다. 

 표준 라이브러리는 보통 해당 언어 발명자가 직접 작성하거나 적어도 해당 언어의 스타일을 따르는 소수의 사람들이 작성한다. 가장 그 언어다운 코드들의 말뭉치이다. 이런 실제 사례들을 통해 해당 언어의 문화와 스타일을 익히는 것이 중요하다. Java라는 언어로 작성했지만 C언어로 작성한 코드와 별반 차이가 없는 코드도 나올 수 있다.

 Java와 C를 가르는 기준은 어떤 언어의 키워드를 썼는가가 아니라 어떤 스타일을 따르고 어떤 숙어를 사용했는가 이다. 이것이 프로그램 기능의 차이를 가져오지는 않을지 몰라도, 프로그램 작성 비용과 더 나아가 수정(유지보수) 비용을 좌우하게 된다. 따라서 해당 언어의 결을 배우고 그러 따르는 것이 중요하다.

 전문가는 튜토리얼을 공부하는 것만으로는 그 언어의 숙어와 패턴, 스타일을 배우기에는 불충분하다는 것을 알고 있다.

 


 

 - 공부 중 다른 사람의 코드에 내가 필요한 기능을 추가한다.

 

 튜토리얼을 읽어 가면서, 실질적인 사용 예를 스스로 만들어낸다. 튜토리얼에는 장난감 코드에 가까운 것들이 나오는 경우가 흔한데, 실질적인 사용 예를 통해 실제 코드의 감(읽고 쓰기)을 읽힌다. 보통은 그런 생각을 하지 못하다 보니 자신이 배우는 언어로 무엇인가 쓸모 있는 걸 해보겠다는 엄두를 내지 못한다. 유용하면서도 작고 간단한 걸 생각해 내는 것이 앞서의 몰입을 위한 난이도 조절이라고 볼 수도 있다.

 실제 살아있는 코드를 수정하고 돌려보면서 피드백을 받게 되고, 더 나아가 오픈 소스 커뮤니티와 교류를 통한 피드백을 받기도 가능하다.

 


 

 - 전문성을 효과적으로 뽑아내는 전문가가 되기

 

 타 영역에서도 전문가로부터 그의 비결을 배워 실행에 옮긴다면 자신의 전문성을 빨리 높일 수 있는 방법일 것이다. 한 가지 분명한 것은 전문가한테 "프로그래밍 언어를 빨리 배우는 비결이 무엇인가요?"라고 묻지 않았다는 것이다. 많은 연구를 통해 이러한 종류의 질문에는 그다지 유용한 답을 주지 않는 것으로 밝혀졌다.

 그렇다면 어떻게 질문을 해야 하는가? 한가지 비결은 전문가가 구체적인 사건에 대해 말하도록 유도하는 것이다.

 

 뭔가를 잘하고 싶다면 이미 잘하는 사람을 관찰하고 인터뷰하는 것부터 시작하는 것이 큰 도움이 된다는 것을 알아봤다.

 


 

.실수는 예방하는 것이 아니라 관리하는 것이다.

 

 - 미연에 실수를 막아야 한다?

 

 미국 산림청의 산불 정책이 수십 년 전에 바뀌었다. 산불 예방을 강조했던 것 에서 그렇지 않을 것으로. 왜냐면 산불 예방 때문에 더 심각한 산불이 날 수 있다는 걸 알기 때문이다. 불 생태학에서는 불을 인위적으로 억제하면 오히려 그 지역에 가연성 물질이 과도하게 축적되어서 결과적으로 한번 불이 나면 엄청난 규모의 불이 나게 된다. 실제로 자연 상태에서는 적절한 시기에 작은 규모의 불이 나서 큰 규모의 불이 잘 나지 않는다.

 


 

 - 두 가지의 실수 문화

 

 실수 문화에는 실수 예방실수 관리 크게 두 가지가 있다.

 실수 예방은 행동에서 실수로 가는 경로를 차단하려고 한다. 즉, 실수를 저지르지 말라고 요구한다. 하지만 이것은 불가능에 가깝다. 전문가도 1시간에 3 ~ 5개의 실수를 저지른다 한다. 하지만 전문가들은 실수를 조기에 발견하고 빠른 조치를 할 수 있기 때문에 세상이 올바르게 돌아갈 수 있다. 

 이러한 실수가 나쁜 결과가 되기 전에 일찍 발견하고 빠르게 고치는 태도실수 관리라 한다. 

 추가로 이미 결과가 난 이후실수에 대해 학습을 통해 다음 계획을 세우는 것을 2차적 실수 예방이라고 한다.

 

 실수 예방 문화에서는 실수를 한 사람을 비난하고, 처벌하고, 따라서 실수를 감추고 그에 대해 논의하기 꺼리며 문제가 생겼을 때 협력도 덜하게 된다. 실수에서 배우지 못하게 된다. 

 반대로 실수 관리 문화에서는 실수가 나쁜 결과를 내기 전에 빨리 회복하도록 돕고, 실수를 공개하고, 실수에 대해 서로 이야기하고 거기에서 배우는 분위기가 생기게 된다.

 실수 관리를 하는 문화일수록 학습을 더 잘하게 된다. 따라서 그 조직혁신 정도가 높으며 회사의 수익성이 높아지게 된다.

 

 교육 쪽에서도 실수 훈련이라는 개념이 있다. 실수를 더 유도해서 다양한 실수를 경험하고 격려하고 대처하는 방안 등을 배우는 것이 학습 전이가 더 잘 일어난다.

 실수는 피할 수 없다. 학습을 잘하라면 실수 격려해야 한다. 실수 문화를 예방에서 관리로 옮겨보자.

 


 

.뛰어난 선생에 대한 미신

 

 교육은 투입으로 성과를 측정하는 대표적인 분야다. 대부분훈련6개월 정도만 지나도 효과가 거의 사라진다.

이유가 무엇일까? 다양한 이유가 있지만. 강사의 요소를 살펴보자. 일반적으로 지식이 많은 강사를 뛰어난 강사로 보는 시각이 있다. 하지만 실험 연구에서 강사가 가진 지식과 학생의 성과는 큰 영향을 끼치지 못한다고 한다

 


 

 - 전문가가 가르쳐주는 것은 전부가 아니다.

 

 의료계 연구에서는 전문가가 학생을 가르칠 때 해당 지식의 70%는 가르치지 않는다는 분석이 거듭 나왔다. 그 기술을 성공적으로 해내기 위해 필요한 것의 30%만 가르쳐 놓고 자신은 다 가르쳤다고 생각하고 있는 것이다.

 이런 현상이 벌어지는 이유에는 여러 가지가 있지만 대표적인 것으로 자동화이다. 전문가가 되면 자신이 하고 있는 일이 반복적으로 몸에 익게 되어 자동화되어 결국 암묵적이 되어 버린다. 

 이런 이유로 뛰어난 선생에게 배웠다고 해서 무조건 잘 배웠다고 할 수 없다.

 

 


 

 - 인지적 작업 분석으로 극복하기

 

 선생과 학생의 입장에서 앞서 말한 이야기를 극복할 수 있다.

선생 입장에서는 내가 이 문제를 해결할 때 어떤 과정을 거치는가를 생각하며 자신의 머릿속을 관찰하고, 질문을 던지고 분석하는 것이다. 

 학생 입장에서는 선택권이 있다면 이러한 분석을 잘하는 선생고르는 것이 유리한 전략이 된다.

 


 

.나홀로 전문가에 대한 미신

 

 전문가의 사회성이라는 측면을 이야기해본다. 전문가의 뇌 속에서는 무슨 일이 벌어질까?

 테스트 주도 개발(TDD)을 예로 들어보면. 일반적인 TDD 교육을 통해 사람들이 기대하는 과정인 다음과 같다.

 

1. TDD를 제대로 이해하고 조직에 들어간다.

2. 나 스스로 TDD를 제대로 실천해서 객관적인 성과를 낸다.

3. TDD가 좋다고 사람들을 설득한다.

4. TDD를 가르쳐 준다.

5. 모두가 TDD를 열심히 한다.

6. 좋은 성과를 낸다.

 

여기서 보통 문제가 되는 부분은 3,4,5,6번이다. 그리고 1과 2를 잘한다 하여 3번 이후가 꼭 쉬운 것은 아니다. 하지만 교육에서 통상 1번에만 집중을 한다. 이럴 경우 실무로 돌아갔을 때 흔히 접하는 문제는 다음과 같다.

 

 - 실무에서 동료의 지원 없이 추가적으로 일을 하려 하니, 시간이 모자라 계속 미루게 되어 결국 적용하지 못한다.

 - 팀원 - 팀장들에게 전파 교육을 하려 하지만 일부 팀원들은 왜 하는지 필요성도 못 느끼고 강제로 해야 한다는 스트레스를 받아 부작용이 생긴다.

 - 배운 것을 팀 내에는 적용했으나 지원해주는 임원이 없어 확대하는 대에는 실패하고, 조직 내에서는 한 팀의 별난 문화로 치부 대어 실행 범위가 축소된다.

 - 배운 대로 팀에서 실천했더니 "다른 부서는 그런 거 없이도 잘하는데 너희는 왜 그런 거 하면서 제때 아웃풋이 안 나오냐"며 이해할 수 없다고 말하는 상사나 협력 팀의 리더와 갈등을 겪는다.

 - 기술적으로 어떻게 해야 할지 모르는데, 주변에 물어볼 사람이 없어 인터넷 검색하느라 몇 시간씩 보낸다. 하지만 결국 원하는 정보를 찾지 못해서 적용을 포기한다.

- 회사에서는 여력이 없어 배운 것을 집에서 시도해 보려 했더니 집에서의 환경으로 인해 진행하지 못하게 된다.

 

 정리하면 아무리 기술적인 실천법이라 해도 그 기술은 사회적 맥락 속에서 실천되어야 하며 그 기술의 성공을 위해서는 사회적 자본사회적 기술함께 필요하다.

 하지만 현실에서는 팀원들이 맘에 안 들고, 그들도 나를 맘에 들어하지 않는 상황, 즉 사회적 맥락이 나쁜 상황에서 타개책으로 TDD의 기술적 측면에만 매몰되는 경우가 있다. 이런 상황에서는 무엇을 골라도 실패하게 된다.

 

 어떤 기술적 실천 법이라도 그걸 현실에서 적용하기 위해서는 사회적 자본과 기술이 필요하다.

 

 

 

 어떤 기술적 지식을 전달한다 해도 그것을 사회적 맥락 속에서 가르치고 경험하게 해야 한다.

 


 

 - 사회적 자본과 기술

 

 서로 간의 신뢰가 깨져있으면 어떤 행동을 해도 악의적으로 보이게 된다. 책을 선물하여도 부정적인 시각으로 "나 보고 이런 거 모르니 공부하라는 건가?"와 같은 생각 말이다. 이 신뢰를 사회적 자본의 일종이라 한다. 사회적 자본이 좋은 사람들은 통상 사회적 기술이 뛰어나다.  쉽게 말하면 신뢰 구축을 보다 잘하는 사람이다.

 

사회적 자본 : 동료 간의 상호작용과 관계성에 기초하여 발생되는 자원으로 "신뢰할만하다"라고 증명되는 동료
사회적 기술 : 타인과의 대인관계와 사회적 의사소통 수월하게 하는 사회역량

 


 

 - 고독한 전문가라는 미신

 

 전문가가 해당 도메인 지식만 뛰어난 사람이라는 것대표적인 미신이다. 전문가는 사회적 자본과 사회적 기술 또한 뛰어나다. 뛰어난 연구자는 같은 부탁을 해도 훨씬 더 짧은 시간에 타인의 도움을 얻는다. 뛰어난 소프트웨어 개발자일수록 타인과 인터렉션에 더 많은 시간을 쓴다.

 평균 7년 경력자들에게 초보 개발자에게 해줄 조언을 적어보라 하였는데 뛰어난 개발자들은 약 70%가 동료와의 협력을 언급하는 반면, 실력이 그저 그런 개발자들은 20%도 안 되는 사람들만이 동료와의 협력은 언급했다.

 

 사회적 자본과 기술이 없이 해당 도메인 지식만 배우게 될 경우 배워도 못하게 된다. 한걸은 더 나아가 도메인 지식만 높으면 지식의 확산과 성공에 오히려 장애가 되기도 한다.

 

 다행히도 이런 부부는 훈련이 가능하다. 간단한 방법으로 주변 사람들과 매일 주고받는 마이크로 인터렉션(인사 주고받기, 지나가는 대화, 물어보기 등 일상적이고 소소한 내용)에 신경을 쓴다.

 

 특정 기술 도입에 실패했을 경우 한 번쯤 생각해보자 "동료들이 나를 좋아하는가?"

 


📝 느낀점.

 챕터를 크게 나누다 보니 이번 1장에 내용들이 너무 많이 담긴 것 같다..

 - 앞으로 학습을 어떻게 해야 하는지? 의도적 수련을 어떻게 진행해야 하는지 방향을 알 수 있게 되었다.
 - 공부를 하는 방법에서도 튜토리얼을 보면서 어떤 식으로 접근하고 어떻게 새로운 기술을 배우는지 방법을 알게 되었다.
 - 실수에 대해 예방에서 관리로 더 중점을 둘 수 있도록 해야겠다.
 - 최근에 클린 코드, 리펙토링에 대해 전파하고자 하였는데 그보다 먼저 사회적 자본과 사회적 기술을 높이는 게 우선인 것 같다!

'Study > 함께자라기' 카테고리의 다른 글

[Study][함께자라기 - 1] 3. 애자일  (0) 2022.08.28
[Study][함께자라기 - 1] 2. 함께  (0) 2022.08.28
[Study][함께자라기 - 0] 계획  (0) 2022.08.18