함께 자라기(애자일로 가는 길) 후기 및 정리
- 김창준님의 함께 자라기(애자일로 가는 길)를 읽고 정리한 글입니다
- 김창준님 발표를 전혀 들어보진 않았지만, 재미있게 읽었습니다
- 나는 어떻게 하고 있는가? 우리 조직은? 등에 대해 고민할 수 있었습니다
- 올해를 회고하기 전에 읽어서 정말 다행이네요!
- 특히 1장의 내용이 정말 좋았습니다 :)
- 성장, 코칭, 채용, 팀, 달인의 비결에 대한 내용이 계속 기억에 남네요
- 김창준님 블로그에도 좋은 내용이 많이 있습니다
- 서론
- 내가 정말 자랄 수 있을까?
- 우리가 정말 함께 자랄 수 있을까?
- 우리가 정말 매일매일 함께 자랄 수 있을까?
- 협력(우리) + 학습(자라다) + 접근 방법(매일매일)
- 함께 자라기 : 애자일의 핵심
1장. 자라기
- 자라기 : 학습
- 상반된 의견이 넘치는 현실
- 스스로 생각하는 훈련이 반드시 필요
- 야생 학습
- 현실에선 야생 학습이 더 많이 필요
- 협력적
- 비순차적
- 자료에 한정 없음
- 명확한 평가가 없음
- 정답이 없음
- 목표가 불분명하고 바뀌기도 함
- 불확실성이 높을 경우일수록 학습이 중요
- 학습 방법을 학습
- 당신은 몇 년 차?
- 개발자 가치 : 그 사람이 업계에서 얼마나 오래 살아남았는지로 결정
- 직원을 뽑을 때 무엇이 그 사람의 실력을 잘 예측할까?
- 미국 데이터로 메타 분석
- 메타 분석 : 연구마다 편향과 오류가 있을 수 있기 때문에 여러 연구를 통합해 통계 분석하는 방법. 실험 연구보다 더 강한 증거력
- 고려 변수별 직무 성과의 상관성
- 작업 샘플 테스트(실제 해야되는 업무 테스트) : 0.54
- 아이큐 같은 지능 테스트 : 0.51
- 구조화된 인터뷰(모든 후보에게 같은 순서의 동일 질문) : 0.51
- 성실성 같은 성격 테스트 0.41
- 레퍼런스 체크 : 0.26
- 연차 : 0.18
- 경력이 얼마 되지않을 경우엔 연차의 상관성이 높음. 연차가 높아질수록 상관성이 낮아짐
- 대학 갓 졸업자 vs 2년차는 후자의 실력이 높을 확률이 크지만 5년차와 10년차는 연차 차이가 의미 없음
- 학력 : 0.10
- 필체, 나이는 0에 가까움
- 소프트웨어 개발에서 경력과 실력
- 실력이 뛰어난 사람은 문제를 이해하는 데 시간을 적게 쓰는 것
- 대부분의 영역에서 최소의 경험치만 넘어가면 경력 연수와 실제 직무 성과의 상관성이 낮음
- 개발자의 경험이 얼마나 폭넓고 다양했는지가 실제 직무성과와 관련
- 양적인 면이 아닌 질적인 면
- 잘 뽑는 것 이상으로 중요한 것
- 사람을 뽑고 어떻게 교육, 훈련시키고 성장시킬지 회사에선 고민하지 않는 경우가 많음
- 시스템
- 개발자들이 할 수 있는 것
- (김창준님 예측) 소프트웨어 개발에서 점차 경력 연수를 중시하는 문화가 사라질 것이고 다른 것에도 신경을 써야 함
- 의도적 수련
- 자신의 기량을 향상시킬 목적으로 반복적으로 하는 수련
- 피드백을 짧은 주기로 얻는 것
- 10분 후, 1시간 후, 하루 후, 일주일 후 등
- 실수를 교정할 기회가 있는 것
- 뛰어난 전문의 예시
- 뛰어난 전문의는 진단시 자신이 무얼 생각하는지 많은 기록을 하고, 자신이 얼마나 정확한지 나중에 확인 ⇒ 동료들과 차별화하는 중요한 요소
- 자신이 언제 어떻게 나아지고 있는지 잘 알 수 있음
- 미국 데이터로 메타 분석
- 자기 계발은 복리로 돌아온다
- 회고
- 되짚어 보는 것 : 나 자신에게 얼마나 투자를 했나
- 습득한 지식이나 능력은 복리로 이자가 붙음
- 김창준님의 힌트
- 자신이 이미 갖고 있는 것들을 잘 활용하기
- 새로운 것만 유입시키지 말고, 그 지식을 얼마나 어떻게 활용하는지 반성
- 이미 갖고 있는 것들을 하이퍼링크로 서로 촘촘히 연결. 노드 간 이동 속도가 빨라질 수 있도록 고속 도로를 놔라. 다양한 분야를 넘나들며 시너지 효과!
- 새로운 것이 들어오면 이미 갖고 있는 것들과 충돌을 시도
- 현재 내가 하는 일이 차후에 밑거름이 될 수 있도록 하라
- 외부 물질을 체화하라
- 주기적인 외부 자극을 받기
- 외부 자극을 받고 재빨리 자기화
- 자신을 개선하는 프로세스에 대해 생각해보기
- A 작업을 되돌아보는 회고/반성 활동을 주기적으로 하기
- 나를 개선하는 과정을 어떻게 개선할 수 있을지 고민
- 피드백을 자주 받아라
- 사이클 타임을 줄여라, 순환율을 높여라
- 일찍, 그리고 자주 실패하기. 실패에서 학습하기
- 자신의 능력을 높여주는 도구와 환경을 점진적으로 만들기
- 자신이 이미 갖고 있는 것들을 잘 활용하기
- 회고
- 학습 프레임과 실행 프레임
- 실행 프레임 : 잘하기
- 주어진 과업이 좋은 성과를 내는 것으로 인식
- ex) 인정받아 다음 단계로 올라가냐에 관심
- 목표가 학습을 통한 성장이면 이런 프레임은 좋지 않음
- 학습 프레임 : 자라기
- 주어진 과업을 내가 얼마나 배우느냐로 인식
- 코딩 구루 이야기 : 입사 1년이 안된 두 사람의 선택, 행동, 반응이 다름
- 실행 프레임 : 잘하기
- 가장 학습하기 힘든 직업이 살아남는다
- 학습하기 힘든 환경과 주제
- 목표가 모호하고 주관적, 동적
- 매 순간 선택할 수 있는 행동/선택의 종류가 불확실
- 매 순간 목표에 얼마나 근접했는지 알기 어려움(빠른 피드백이 어려움)
- 열린 시스템에서 일함
- 과거의 선택과 결과에 대해 구조화된 기록이 없음
- 컴퓨터가 병목을 가지는 부분
- 지각과 조작, 창의적 지능, 사회적 지능
- 독창성 : 문제를 해결하는 창의적 방법
- 사회적 민감성 : 타인의 반응을 알아차리고 왜 그렇게 반응하는지 이해
- 협상 : 사람들을 화해시키고 서로 간 차이를 조정
- 설득 : 다른 사람들의 마음이나 행동을 바꾸게 설득
- 타인을 돕고 돌보기 : 타인에 대한 개인적 도움 제공
- 무엇에 집중할 것인가
- 딱 정해진 일만 할 수 있는 환경이 축복이 아닌 저주일 수 있음
- 암묵지와 직관을 배우고 수련!
- 학습하기 힘든 환경과 주제
- 달인이 되는 비결
- 달인이 되려면 1) 실력을 개선하려는 동기가 있어야 하고 2) 구체적인 피드백을 적절한 시기에 받아야 함
- 의도적 수련의 필수 조건, 적절한 난이도
- 나의 실력와 난이도가 비슷해야 함
- 비슷한 부분에서 몰입!
- 업무 시간에서 불안함이나 지루함을 느끼는 때가 대부분이면 실력이 늘지 않는 환경에 있는 것
- 팀장이 실력에 맞는 일을 주기보다 자신이 몰입할 수 있도록 전략을 세워야 함
- 지루함을 느끼는 경우 : a1 실력 낮추기
- 평상시 즐겨 쓰던 보조 도구를 사용하지 않기
- 지루함을 느끼는 경우 : a2 난이도 높이기
- 100rps면 되는 시스템을 1,000rps 기준으로 만들기
- 익숙한 작업을 새로운 언어로 진행
- 리팩토링, 자동화
- 남들보다 일을 더 효율적/효과적으로 하기 위해 나만의 도구 방법!
- 불안함을 느끼는 경우 : b2 실력 높이기
- 사회적 접근
- 나보다 뛰어난 전문가의 도움을 얻기
- 짝 프로그래밍, 스택 오버플로우, 튜토리얼 문서
- 도구적 접근
- 내 능력을 확장시켜 줄 도구
- Auto ML
- 내관적 접근
- 비슷한 일을 했던 경험을 머릿속에서 되살려보기
- 사회적 접근
- 불안함을 느끼는 경우 : b1 난이도 낮추기
- 가장 간단하고 핵심적인 결과물, 프로토타입을 첫 목표로 삼기
- 쉬운 작업을 먼저 하고 어려운 작업으로! 쉬운 작업을 먼저 할 경우 정확도가 높아진 비교 연구가 있음
- 동적인 균형
- 지속적으로 자신의 감정 상태를 살펴야 함
- 메타인지 전략 : 알아차림(mindfulness)
- 팀장이 할 수 있는 일
- 팀장들에겐 팀원의 상태를 파악하고 그들이 몰입으로 가도록 도와주는 것이 의도적 수련일 수 있음
- 프로그래밍 언어 배우기의 달인
- 인지적 작업 분석(Cognitive Task Analysis), 역 엔지니어링(Reverse engineering)
- 잘하는 사람이 어떻게 잘하는지 분석
- 새로운 언어를 빠르게 배우던 S님의 비결
- 1) 튜토리얼을 읽을 때 뭘 만들지 생각하고 읽음
- 읽을 때 다음 작성할 프로그램을 염두
- 작성할 수 있겠단 생각을 하면 코딩 시작
- 프로그램 완성하면 다시 문서 읽음
- 이런 방법을 적극적 읽기!
- 첫 프로그램은 단어 개수 세기
- 루프는 어떻게? 글자 하나를 읽으려면 어떻게? 출력은 어떻게? 라는 질문을 가지고 읽음
- 2) 공부를 할 때 표준 라이브러리 소스코드를 읽음
- 언어의 스타일!
- 언어의 결을 배우고 따르는 것이 중요
- 3) 공부 중 다른 사람의 코드에 내가 필요한 기능을 추가
- 자신이 만들 수 있는 작고 간단한 추가 기능을 생각
- 바로 적용
- 1) 튜토리얼을 읽을 때 뭘 만들지 생각하고 읽음
- 전문가에게 답을 얻을 수 있는 방법 : 구체적 사건에 대해 말하도록 유도
- 실수는 예방하는 것이 아니라 관리하는 것이다
- 실수 예방 문화 : 실수를 하지 마라! 실수한 사람 비난
- 실수 관리 문화
- 실수가 나쁜 결과를 내기 전에 빨리 회복하도록 돕고, 실수를 공유하고 실수에 대해 서로 이야기하며 배움
- 실수 관리 문화에 가까울수록 그 기업의 혁신 정도가 더 높음
- 실수가 없으면 학습하지 못함
- 뛰어난 선생에 대한 미신
- 대부분의 훈련은 6개월 정도만 지나도 효과가 거의 사라짐
- 복합적인 이유 : 학습자, 교사, 교육 방식과 내용, 조직 환경 등의 이유
- 교육의 목적 : 학생이 ‘더 잘하게’ 도와주는 것
- 인지적 작업 분석을 사용해보기
- 선생 입장에서 “내가 이 문제를 해결할 때 어떤 과정을 거치는가”를 생각하며 질문, 분석
- 그리고 학생들이 배우며 어떤 생각을 하는가 직접 관찰하고 질문을 던지고 분석
- 이런 부분을 생각하며 다른 사람을 가르치거나 배우는 자리를 마련
- 선생 입장에서 “내가 이 문제를 해결할 때 어떤 과정을 거치는가”를 생각하며 질문, 분석
- 대부분의 훈련은 6개월 정도만 지나도 효과가 거의 사라짐
- 나홀로 전문가에 대한 미신
- 고독한 천재? x
- 전문가는 사회적 자본과 사회적 기술 또한 뛰어남
- 뛰어난 개발자일수록 타인과 인터랙션에 더 많은 시간을 씀
2장. 함께
- 소프트웨어 개발을 잘 관리하기 위한 3가지 근본적 능력
- 1) 복잡한 상황을 이해하는 능력
- 프로젝트를 계획한 다음 관찰하고 행동해 프로젝트를 진행되게 하거나 계획을 바꿀 수 있어야 함
- 2) 관찰하는 능력
- 무엇이 벌어지고 있는지를 관찰하고, 효과적인 적응 행동을 하기 위해 관찰한 것이 어떤 의미인지 이해할 수 있어야 함
- 3) 행동하는 능력
- 어려운 대인 상황에서 화나거나 숨고 싶을 때도 적절하게 행동해야 함
- 1) 복잡한 상황을 이해하는 능력
- 짝 프로그래밍
- 두 사람이 대화를 통해 추상화를 높임
- 다른 사람과 협동하고 대화, 같이 그림도 그리고 소스 코드를 편집!
- 신뢰를 깎는 공유인가 신뢰를 쌓는 공유인가
- 신뢰 자산이 높은 조직은 커뮤니케이션 효율이나 생산성이 높음
- 신뢰를 쌓을 때 사용되는 방법
- 투명성과 공유, 인터랙션
- 복수 공유
- 하나 공유나 최고 공유는 “이 작업에 대해 흉을 보면 어쩌지?”라는 방어적 대응 전략을 생각해둠
- 또한 상대의 시안을 솔직하게 말하면 “내가 한 말로 나를 싫어하면 어쩌지?”라고 생각할 수 있음
- 복수 공유는 위에 나온 불안감이 상대적으로 적음
- 여러 개를 준비했으니 하나를 까도 나에 대한 공격은 아님
- 신뢰도 높아지고 성과도 좋음
- 하나 공유나 최고 공유는 “이 작업에 대해 흉을 보면 어쩌지?”라는 방어적 대응 전략을 생각해둠
- 팀장 자리에 있으면 새로운 아이디어 전파가 쉬울 것이라고 생각하는 것은 환상
- 상대방에 대해 이해하고, 많은 대화를 해야 함
- 이것도 모르세요?
- 공감하고 이해하려는 대화
- (혹시 이 부분이 문제있으면 연락주세요!)
- 이 부분은 링크 참고
- 훌륭한 팀장이라면 그 사람의 사고 과정을 전략적으로 이해하려고 함
- 행동을 유도하는 대화
- 공감하고 이해하려는 대화
- 하향식 접근의 함정
- 바텀업 : 탐색적인 성격
- 대부분 탐다운 식으로 일함
- 잘 정의된 문제(well-defined)와 잘 정의되지 않은(ill-defined) 문제에 따라 접근 방법이 다름
- 어려운 문제는 탑다운과 버텀업을 섞어 씀
- 전문가팀이 실패하는 이유
- 전문가들 모아서 팀 만든다고 반드시 잘하는 것은 아님
- 오히려 성과가 떨어질 수 있음
- 정보 공유하고 협력을 잘하기 위한 명시적인 도움이 필요하며
- 소셜 스킬 등이 뛰어난 제너럴리스트가 있으면 도움이 됨
- 구글이 밝힌 탁월한 팀의 비밀
- 팀에 누가 있는지보다 팀원들이 서로 어떻게 상호작용하고 자신의 일을 바라보는지가 중요
- 심리적 안전감이 높은 예측력
- 팀 토론 등 특별히 생긴 활동을 통해 심리적 안전감을 개선
- 심리적 안전감 : 내 생각이나 의견, 질문, 걱정, 실수가 드러났을 때 처벌받거나 놀림받지 않을 거라는 믿음
- 쾌속 학습팀
- 리더가 팀 학습 속도에 미치는 영향
- 단순히 기술적 탁월함만을 갖춘 사람보단 학습 환경을 만들 수 있는 리더가 필요
- 학습 환경의 차이
- 학습이 빠른 팀은 팀원을 뽑을 때 협동적으로 이루어짐(디자이너를 뽑을 때 개발자가 관여)
- 단순 업무 수행 능력뿐만 아니라 다른 사람과 협력을 얼마나 잘하는지, 애매한 상황을 즐길 수 있는지, 자기보다 지위가 높은 사람에게도 자신있게 의견을 제안할 수 있는지 등을 보고 뽑음
- 개개인이 새로운 기술을 획득해야 한다고 보지 않고, 함께 일하는 새로운 방법을 만들어야 한다고 생각
- 심리적으로 보호가 되어야 함!
- 학습이 빠른 팀은 팀원을 뽑을 때 협동적으로 이루어짐(디자이너를 뽑을 때 개발자가 관여)
- 리더가 팀 학습 속도에 미치는 영향
3장. 애자일
- 협의의 애자일
- 불확실성이 클 때 우리가 어떻게 해야 하는지를 고민한 결과물
- 더 짧은 주기로 피드백을 받고, 다양한 사람에게 피드백 받음
- 불확실성이 클 때 우리가 어떻게 해야 하는지를 고민한 결과물
- 광의의 애자일
- 삶을 사는 방식까지 확장
- 우리의 삶도 불확실하기 때문에 학습과 협력
카일스쿨 유튜브 채널을 만들었습니다. 데이터 사이언스, 성장, 리더십, BigQuery 등을 이야기할 예정이니, 관심 있으시면 구독 부탁드립니다 :)
PM을 위한 데이터 리터러시 강의를 만들었습니다. 문제 정의, 지표, 실험 설계, 문화 만들기, 로그 설계, 회고 등을 담은 강의입니다
이 글이 도움이 되셨거나 다양한 의견이 있다면 댓글 부탁드립니다 :)