애플사이다의 iOS 개발 일지

책 <함께 자라기> 리뷰 - 팀과 함께 학습하는 방법 본문

프로그래밍 철학/책 리뷰

책 <함께 자라기> 리뷰 - 팀과 함께 학습하는 방법

Applecider 2022. 11. 7. 00:06

김창준 저 <함께 자라기>를 읽었다. (도서 링크)

회사에서 자기 계발에 대해 얘기하다가 팀 리더의 추천으로 책을 읽게 되었다. 

 

이 책에서 저자는 애자일의 핵심은 함께 자라기, 즉 ‘학습’과 ‘협동’이라고 말한다. 팀원들과 신뢰를 쌓고, 팀이 함께 학습하고 현업에 성공적으로 적용하기 위해 필요한 것들을 설명하며, 다양한 성공/실패 예시를 담고 있다.

 

먼저 한국인이라면 익숙할 여러 교육 철학을 저자가 정면으로 비판해서 웃겼다. 처음에 무조건 도인이 시키는 대로 따라 하다 보면 내공이 쌓이고, 결국 도인의 비법을 전수받아 득도한다는 유명한 이야기가 사실은 허무맹랑한 판타지이고, 이 메타포로 인해 많은 교육적 문제가 생겼고, 심지어 이 미명 하에서 교육적 폭력이 자행되어왔다는 내용이 있는데, 크게 공감이 갔고 동시에 씁쓸했다. 이어지는 좋은 학습의 방법과 난이도에 대한 설명이 유익했다.

 

이외에도 주니어 개발자로서 가지고 있었던 조급함을 내려놓는 데도 큰 도움을 받았다. 당장 성과를 내는 것보다 장기적으로 성장하는 것이 중요하다는 것 (아래의 학습 프레임과 실행 프레임 챕터 참고), 그리고 개발 조직은 실수를 바탕으로 성장하는 문화라는 것 (아래의 실수는 예방하는 것이 아니라 관리하는 것이다 챕터 참고)에서 용기를 얻었다.

 

요약과 개인적인 감성이 뒤섞인 리뷰를 남겨봤다. (책에서 인용한 문장은 “”로 표시했다.)


1부. 자라기

야생 학습

‘학교 학습’과 상반된 개념으로 ‘야생 학습’이 있다. 저자가 이 책에서 설명하는 학습은 ‘야생 학습’이다. 여러 명의 멘토가 상반된 조언을 한다면, 현실과 비슷한 문제 상황을 맞닥뜨렸다고 생각해야 한다. 오히려 상반된 의견과 정보 속에서 스스로 생각하는 훈련을 할 기회로 삼아야 한다.

 

이외에도 야생 학습의 특징은 아래와 같다.

  • 협력적이다. 비순차적이다. 참고 자료가 무한하다.
  • 명확한 평가가 없고, 정답이 없다.
  • 목표가 불분명하고 바뀌기도 한다.

"불확실성이 높은 환경일수록 야생 학습이 중요하다."

경력과 성과의 상관관계

소프트웨어 엔지니어의 실력은 겉으로는 기술자격, 학력 등이 결정하는 것 같아 보이지만 사실상 ‘경험’이라는 요소가 가장 결정적인 역할을 한다. 이때 ‘경험’이란 질적으로 얼마나 폭넓고 다양했는지를 의미한다.

 

경력이 10년인 개발자가 2년인 개발자보다 더 우수하지 않았다. 경력과 생산성은 아무 상관관계가 없었다. 단, 언어를 접한 경험이 6개월 미만인 개발자들은 전반적으로 나머지 개발자들보다 성적이 저조했다. (...) 즉, 최소한도의 경험치만 넘어가면 경력 연수와 실제 직무 성과의 상관성이 생각보다 낮다."

 

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

 

몇 년 전 ‘1만 시간 법칙’이 유행했었다. 여기서 말하는 1만 시간은 종종 경력/근무시간으로 오인되기도 하는데, ’자신의 기량을 향상시킬 목적으로 하는 의도적인 수련’을 한 시간을 말한다.

하지만 업무를 하면서도 의도적 수련을 할 수 있는 방법이 있다. “피드백을 짧은 주기로 얻는 것”, 그리고 “실수를 교정할 기회가 있는 것”이다. 이 환경에서 학습 효과가 훨씬 좋다.

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

주기적인 회고가 중요한데, 이때 자기계발을 얼마나 했는지 되짚어봐야 한다. “현재 나에게 무엇을 투자했느냐가 1년, 혹은 2년 후의 나를 결정한다고 느끼기 때문이다.”

 

“잡코리아의 2012년 조사에 따르면 직장인의 하루 평균 자기계발 시간은 1~2시간이 54%, 1시간 미만 34%, 2~3시간 9%, 3시간 이상 3% 수준이었다. (…) 하루 평균 1시간도 투자하지 않는 사람은 자기계발이란 면에서 직장인의 하위 1/3에 속하는 셈이다. 무서운 사실은 이게 축적이 되면 엄청난 차이를 만들 거라는 점이다. 자기가 습득한 지식이나 능력은 복리로 이자가 붙기 때문이다.

 

비슷한 맥락에서 저자는 일반적 조직과 학습하는 조직의 차이를 아래 그림으로 나타냈다.

“내가 만든 결과물을 나의 일부로 만들어서 다음 단계에 보탬이 되도록 이용해먹는 것이다. 결과물이 다음 단계의 도구가 된다.”

왼쪽 - 일반적인 조직 / 오른쪽 - 복리 조직

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

무작위로 2개 그룹을 나누고, 그림 그리는 활동에 대해 다르게 안내하는 실험을 진행했다.

실행 프레임: 당신이 얼마나 그림을 잘 그리는지, 창의성을 평가하여 점수를 매길 것이라는 안내

학습 프레임: 평소에 안그려봤던 방식을 실험해보는 시간이라는 안내

 

즉, 실행 프레임은 ‘잘하기’에 초점을 맞추고, 학습 프레임은 ‘자라기’에 초점을 맞춘다. (…) 결과적으로 학습 정도를 비교하면 학습 프레임의 실험자들이 훨씬 학습 효과가 좋다. 이 결과는 사회학, 심리학, 교육학 등 여러 분야에서 여러 연구를 통해 거듭 발견된 현상이다.

 

“여기서 말하는 실행 프레임은 사람들이 현재 주어진 과업이 뭔가 좋은 성과를 내는 걸로 생각하는 틀을 말한다. 학습 프레임은 현재 주어진 과업이 내가 얼마나 배우느냐로 여기게 되는 틀을 말한다. 업무 중에 실행 프레임으로만 세상을 보는 사람들은 아마 내가 인정받아 다음 단계로 올라가냐 아니냐에 관심이 많을 것이다. 만약 다음 단계로 가지 못하고 떨어지면 자신이 속한 곳에서의 학습 기회를 보기보다 다른 경쟁체제와 다른 타이틀, 다른 자리에 관심을 둘 것이다. 실행 프레임은 당신의 목표가 학습을 통한 성장이라면 불리한 선택이다.

 

주니어 개발자로서 빨리 조직에 기여하고 싶다는 조급함과 초조함을 느끼고 있었는데, 이 내용을 보고 마인드셋을 바꾸게 되었다. 장기적으로 성장하는 것이 나에게도, 조직에도 나은 길이라는 확신을 갖게 되었다.

생각해보면 절대 실수가 발생해서는 안 되는 현장 (건설 현장, 병원, 군대 등)에서는 실수 예방 문화가 형성될 수밖에 없다. 실수가 곧 인명 사고로 이어질 수 있기 때문이다. 그래서 위계적인 문화, 군대 문화, 수직적인 문화, 태움 문화 등의 수식이 따라붙는다.

그래서 인명 피해로 이어질 위험이 낮은 IT 기업의 개발 조직은 상대적으로 실수에 대해 관대할 수 있다. 

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

“우리의 일자리가 인공지능에 대체되지 않으려면, 아래처럼 학습하기 힘든 환경에서 학습하기 힘든 주제들을 골라야 하는 상황이 됐다.

  • 목표가 모호하고 주관적이고 동적이다. 매 순간 선택지가 불확실하다.
  • 내가 목표에 얼마나 근접했는지 알기 어렵다.
  • 열린 시스템 속에서 일한다.
  • 과거의 선택과 결과에 대한 구조화된 기록이 별로 없다.

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

 

컴퓨터화에 병목이 되는 카테고리는 지각/조작, 창의적 지능, 사회적 지능이다.

우리는 내가 하는 일의 명칭이 무엇인지가 아니라 내가 실제로 매일 하는 일이 어떤 성격인지 주목해야 한다.

 

“현재 자신의 업무 상황 속에서 창의적으로, 사회적으로 (다른 사람의 생각과 마음에 관심을 갖고, 그들을 설득하고 협상하는 것) 일하지 않는 기간이 계속된다면 결국 자신의 커리어에 막대한 손해가 될 수 있다는 점이다. 혼자서 딱 정해진 일만 할 수 있는 환경이 축복이 아니라 저주가 될 수 있다.” 결론적으로 미래에는 암묵지와 직관을 잘 학습하는 사람이 높은 경쟁력을 가질 것이다. 

당신이 제자리걸음인 이유

“의도적 수련이 가능하게 하려면 나의 실력과 작업의 난이도가 비슷해야 한다."

 

"아래 그림의 C부분에서 사람은 몰입을 경험하고, 학습 능력이 최대치가 된다. 교육학의 인지부하 이론도 이와 유사한데, 핵심은 적절한 난이도를 설정하는 것이다.”

현재 A (실력은 높은데 작업 난이도는 낮아서 지루함)라면 2개 방법이 있다. 실력을 낮추는 것 (평소 일하며 사용하던 보조 툴을 의도적으로 사용하지 않기, 컴파일 주기를 30초에서 5분으로 늘리기), 일의 난이도를 높이는 것 (하루 종일 걸리는 일을 1시간 내에 하기, 익숙한 작업을 새로운 언어로 진행해보기, 리팩터링하기, 자동화 테스트 달기, 직접 나만의 도구를 개발하기 ex. C파일에 로그를 삽입해서 스레드/프로세스의 동작을 쉽게 분석해주는 도구) 이렇게 안 해도 되는 업무를 자발적으로 했을 때 업무 성과와 직무 만족도가 높고, 번아웃을 적게 경험한다.

현재 C (실력은 낮은데 작업 난이도가 높아서 불안함)라면 마찬가지로 2개 방법을 쓰면 된다. 실력을 높이는 것 (스터디 참가, 교육 수강, 다른 전문가에게 도움 요청, 라이브러리 등 툴을 활용), 일의 난이도를 낮추는 것 (맡은 일의 가장 간단한 버전을 첫 번째 목표로 삼는 것)이다.

 

한 연구에서 피실험자를 A/B 그룹으로 나누어 어려운 문제, 쉬운 문제 순을 다르게 설정하여 코딩 테스트를 진행했다. 결과적으로 쉬운 문제를 먼저 푼 그룹의 결함률이 50% 이상 낮았다. 낮이도를 낮춘 결과 학습 효과, 동기 강화, 스트레스 감소, 자기 효능감 증가 등의 긍정적인 효과가 나타난 것이다.

 

위 전략을 취하려면 메타인지가 필요하다. 즉, 스스로 자신의 상태를 알아차려야 한다. (mindfulness)

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

저자는 “적극적 읽기”를 권한다. 무언가를 읽을 때 구체적인 질문이나 목적을 가지고 읽는 방법이다. 예를 들어 튜토리얼을 읽다가 이 정도면 프로그램을 작성할 수 있겠다는 생각이 들면 읽기를 멈추고, 코딩을 시작하는 방식이다.

 

프로그래머가 실제 업무할 때 남의 코드를 읽는 시간이 자신이 코드를 쓰는 시간보다 훨씬 많다. 따라서 좋은 코드를 많이 봐야 하며, 특히 표준 라이브러리 소스코드를 통해 해당 언어의 문화와 스타일을 익히는 것이 좋다.

 

주변에 있는 전문가를 활용하는 방법도 있다. 이때 구체적인 사건에 대해 말하도록 유도해야 한다. 예를 들어 특정 언어를 익힌 과정을 시간대별로 짚어가며 어떤 행동을 했는지, 암묵적인 의사결정과 상황판단이 무엇이었는지 추출해야 한다.

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

이 챕터도 주니어 개발자로서 많은 위로를 받았다.

 

마이클 프레제는 회사의 실수 문화를 “실수 예방” 문화와 “실수 관리” 문화로 구분했다.

실수 예방은 행동에서 실수로 가지 않도록 요구한다. 즉 실수를 저지르지 말라고 요구한다.

하지만 이것은 불가능에 가깝다. “전문가도 1시간에 평균 3~5개의 실수를 저지른다.” 

 

따라서 실수 관리의 관점은 이렇다. “실수는 어떻게든 할 수밖에 없다. (코딩하다가 == 대신 =을 작성) 대신 그 실수가 나쁜 결과 (서버가 죽음)가 되기 전에 일찍 발견하고 빨리 고치면 된다.”

 

실수 관리 문화에서는 실수를 한 사람을 비난하지 않고, 오히려 실수를 공개하고, 서로 실수가 빨리 회복되도록 돕고, 실수에 대해 서로 이야기하며 배우는 분위기가 형성된다.

“보통 회사가 실수 관리 문화에 가까울수록 회사의 수익성이 좋고, 혁신 정도가 더 높다. 실수가 없으면 학습하지 못하기 때문이다.”

나 홀로 전문가에 대한 미신

“어떤 기술적 실천법이라도 그걸 현실에서 적용하기 위해서는 사회적 자본과 기술이 필요하다. 설사 나 혼자 하는 실천법이라 해도 그렇다. 예컨대 상사가 내가 하는 일을 보고 반대한다면 그를 설득해야 하며, 하다가 모르는 것이 생기면 주변에 물어봐야 하기 때문이다.”

 

“사회적 기술에서 ‘음의 기술’을 가진 사람도 존재한다. 예컨대 커뮤니케이션할수록 신뢰가 깨지는 사람을 말한다.”

 

“뛰어난 소프트웨어 개발자일수록 타인과 인터렉션에 더 많은 시간을 쓰며, 초보개발자들에게 조언할 때 사회적인 측면이 포함된다. 기술적인 조언만 하는 게 아니라는 뜻이다. 

2부. 함께

신뢰를 깎는 공유인가 신뢰를 쌓는 공유인가

2명의 디자이너가 광고를 디자인할 때, 피드백을 주고받는 방법에 따라 어떤 영향을 받았는지 실험을 했다.

작업을 공유하는 방식은 3개였다. (1) 1개 디자인을 만들고 1개를 공유, (2) 3개 디자인을 만들고 그중 본인이 가장 잘한 것을 골라서 1개를 공유, (3) 여러 개의 디자인을 만들고 여러 개를 공유

1번, 2번의 경우 작업 공유가 오히려 부정적인 결과를 낳았다. 공유에 대한 기대감보다 불안감을 가지게 되며, 상대방의 작업에 대해 솔직한 피드백을 내는 것을 조심스러워하고, 또 부정적인 평가를 받았을 때 보다 방어적인 태도를 갖게 됐기 때문이다. “상대가 부정적으로 들릴 만한 의견을 주면 그건 곧 나의 전문성에 대한 도전이 되는 것이다. 나의 작품이 하나밖에 없으니 ‘작업물 = 나’가 되는 것이다. 나름 방어를 해낸다고 해도 자기효능감이 떨어지기 쉽다.”

하향식 접근의 함정

“인공지능 연구에선 이 세상의 문제를 두 종류로 나눈다. 잘 정의된 문제 (well-defined)와 잘 정의되지 않은 문제 (ill-defined) (…)

전문가들은 잘 정의되지 않은 문제를 접하면 탑다운과 바텀업을 섞어서 쓴다. 비전문가는 탑다운이나 바텀업 중 한 가지에만 억지로 집착하려고 한다. (ex. 이번 문제는 복잡하니까 더 철저하게 계획하고 설계해야겠다.)”

 

“다음 그림은 엘리베이터 설계 시 전문가들의 문제해결 흐름을 보여주고 있다. 엘리베이터 설계에서 추상성이 높은 것은 알고리즘이나 기능 등이 될 테고, 추상성이 낮은 것은 모터의 가속도 제어나 회로 차원이 될 것이다. 전문가는 추상성의 정도를 오르락내리락거리고, 특히 탑다운과 바텀업의 방향이 전환되는 시점들에서 ‘아하 순간’이 찾아왔다.

“비전문가일수록 자신이 애초에 세운 계획에 집착했다. 전문가일수록 자신의 계획을 수정한 횟수가 많았다.”

 

“한 번에 처리되는 일의 양 (batch size)을 줄여야 한다. 배치 사이즈를 줄여서 지속적 흐름을 만들고, 짧은 시간 내에 탑, 바텀을 오가게 한다.”

 

“흔히들 말하는 개발의 5단계도 비슷하다. 분석, 설계, 구현, 테스트, 전개를 1년이라는 프로젝트 기간에 얼마씩 배치할까로 고민하지 말고, 어떻게 해야 첫 달부터, 아니 첫 주부터 분석, 설계, 구현, 테스트, 전개를 모두 왔다 갔다 할 수 있을까를 고민해야 할 것이다.“

구글이 밝힌 탁월한 팀의 비밀

구글은 뛰어난 팀의 특징을 찾기 위해 2년간 노력했다. 2015년 구글이 공개한 연구 결과의 일부는 아래와 같다.

  1. 팀에 누가 있는지 (전문가, 내향/외향, 지능 등)보다 팀원들이 서로 어떻게 상호작용하고 자신의 일을 어떻게 바라보는지가 훨씬 중요했다.
  2. 5가지 성공적인 팀의 특징을 찾았는데, 그중 압도적으로 높은 예측력을 보인 변수는 팀의 심리적 안전감이었다. 심리적 안전감이란, 내 생각이나 의견, 질문, 걱정, 혹은 실수가 드러났을 때 처벌받거나 놀림받지 않을 거라는 믿음을 말한다.
  3. 팀 토론 등 특별히 고안된 활동을 통해 심리적 안전감을 개선할 수 있었다. 단순히 우리팀의 현상황에 대해 열린 대화를 시작하는 것만으로 변화가 시작될 수 있다. 

3부. 애자일

“애자일”은 불확실성이 클 때 우리가 어떻게 해야 하는지를 고민한 결과물이다. (…) 좀 더 짧은 주기로 더 일찍부터 피드백을 받고, 더 다양한 사람으로부터 더 자주 그리고 더 일찍 피드백을 받는 것으로 정의할 수 있다.”

 

“학습과 협력이 애자일이 불확실성을 다루는 핵심적인 구동원리이다. (…) 불확실성이 높을수록 이동하면서 계속 배워나가야 한다.”

애자일의 씨앗

애자일의 핵심을 한 문장으로 표현하면 “고객에게 매일 가치를 전하라.”인데, 이 문장으로 여러 질문을 해볼 수 있다.

  • 우리의 진짜 고객은 누구인가?
  • 어떻게 점진적으로 가치를 전할 것인가? 어떻게 보다 일찍, 그리고 보다 자주 가치를 전할 것인가?
  • 무엇이 가치인가? 지금 우리가 하고 있는 일이 정말 가치를 만드는 일인가?
  • 지금 가장 높은 가치는 무엇인가?
  • 비슷한 수준의 가치를 더 값싸게 전달하는 방법은?
  • 가치를 우리가 갖고 있지 않고 고객에게 정말 전달하고 있는가? 고객이 정말 가치를 얻고 있는가?

“성공하는 조직들에는 항상 뛰어난 애자일 코치가 있었다.”

코치의 특징 중 성장 사고관이 있다. 내가 노력만 하면 뭐든지 더 잘할 수 있다고 믿는 것이다. 고정 사고관과 상반되는 개념이다.

 

- Reference

 

🍎 포스트가 도움이 되었다면, 공감🤍 / 구독🍹 / 공유🔗 / 댓글✏️ 로 응원해주세요. 감사합니다.

Comments