함께 자라기(애자일로 가는 길) 후기 및 정리
- 김창준님의 함께 자라기(애자일로 가는 길)를 읽고 정리한 글입니다
- 김창준님 발표를 전혀 들어보진 않았지만, 재미있게 읽었습니다
- 나는 어떻게 하고 있는가? 우리 조직은? 등에 대해 고민할 수 있었습니다
- 올해를 회고하기 전에 읽어서 정말 다행이네요!
- 특히 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장. 애자일
- 협의의 애자일
- 불확실성이 클 때 우리가 어떻게 해야 하는지를 고민한 결과물
- 더 짧은 주기로 피드백을 받고, 다양한 사람에게 피드백 받음
- 불확실성이 클 때 우리가 어떻게 해야 하는지를 고민한 결과물
- 광의의 애자일
- 삶을 사는 방식까지 확장
- 우리의 삶도 불확실하기 때문에 학습과 협력
카일스쿨 유튜브 채널을 만들었습니다. 데이터 분석, 커리어에 대한 내용을 공유드릴 예정입니다.
PM을 위한 데이터 리터러시 강의를 만들었습니다. 문제 정의, 지표, 실험 설계, 문화 만들기, 로그 설계, 회고 등을 담은 강의입니다
이 글이 도움이 되셨거나 의견이 있으시면 댓글 남겨주셔요.