본문 바로가기
일상/독서

책 [함께 자라기 애자일로 가는 길] 후기 및 정리

by Dahna 2022. 10. 23.

함께 자라기 애자일로 가는 길

후기

  • 애자일이 무엇인지, 그리고 개인과 팀에 어떻게 도입할 것인지를 다루는 책이다.
  • 애자일은 불확실성을 다루는 대응 방식으로, 좀 더 짧은 주기로 더 일찍부터 피드백을 받고, 더 다양한 사람으로부터 더 자주 그리고 일찍 피드백을 받는 것으로 정리할 수 있다.
  • 저자는 애자일을 애자일다운 방식으로 도입하는 것이 필요하다고 말하며, 애자일을 구동하는 원리를 성장적인 학습(자라기)과 협력(함께)라는 두 축으로 설명하고 있다.
  • 개인의 성장과 팀의 성장을 애자일한 방식으로 견인하기 위해서는 애자일적 사고 방식이 중요하다는 것을 알게 되었다. 애자일은 어떠한 방법론 자체가 아니라, 찾아가는 모습이 애자일이다. 이러한 생각 거리들과 방법론들을 정리해서 적용해가면서 애자일을 삶에 도입하고 싶어졌다.

애자일 도입을 위한 액션 아이템

자라기

  • 회고하는 습관 가지기
  • 피드백을 구하고, 나도 주기
  • 타당성을 높이기: 변수를 제한하고 실험을 하면서 규칙성과 인과관계를 찾기
  • 실력과 난이도에 대한 메타인지를 높이고, 주기적으로 전략을 점검하여 의도적 수련 하기
  • 나만의 도구를 만들기
  • 의도적 수련에 사용할 수 있는 작고 유용한 프로그램을 생각해보기
  • 언어 표준 라이브러리 소스코드를 읽기
  • 다른 사람의 코드에 내가 필요한 기능을 추가하기
  • 전문가에게 전문성을 효과적으로 추출하는 방법을 연습하기(인지적 작업 분석)
  • 나만의 실수 관리 문화를 구축하기
  • 사회적 자본과 기술을 키우기
  • 다양한 경험에 나를 노출시키기
    • 경험을 구조화하여 정리하기
  • 상호 참조 전략 사용해보기. 개발 단계를 분리하지 않고, 오가며 프로젝트를 관리하기

함께

  • 커뮤니케이션 환경에 나를 노출시키기
  • 신뢰를 향상시키는 공유를 연습하기
  • 마이크로 커뮤니케이션 연습하기
  • 설득의 상황에서 상대방을 이해하기 위해 노력해보기
    • 상대방의 관점에서의 품질을 이해하기 위해 노력해보기
    • 상대방의 성향에 따라 설득 방법을 생각해보기
  • 맨토링, 코칭 등의 경험 해보기
  • 추상과 구상을 오갈수 있도록 노력하기
    • 개인의 관점에서 작업 영역을 순차적으로 나누지 말고 공유될수 있도록 신경쓰기
      • 필요하다면, 이를 돕는 도구를 고안하기
    • 협력의 관점에서 정보를 공유하는 경험을 하고, 더 잘 공유할수 있는 방법을 고민하기
      • 어떻게 하면 협력이 더 쉽게 될수 있을까?
  • 누군가의 심리적 안전감을 향상시켜보기
  • 쾌속 학습팀에서 바람직한 팀원이 되기
    • 예: 업무 수행 능력, 협력, 새롭고 애매한 상황을 즐길 수 있는지, 자기보다 지위가 높은 사람에게도 자신있게 의견을 제안할 수 있는지 등을 갖추기
  • 함께 일하는 방식, 함께 학습하는 방식을 고민하고 개선하기

애자일

  • '고객에게 매일 가치를 전하라' 문구를 프로젝트에 적용하기

내용 정리

1. 자라기

  • 학교 학습과 반대되는 개념, 야생 학습: 불확실성이 강한 환경에서의 학습
  • 목표 지점의 위치가 계속 바뀌는 경우, 과정 중 경로 조정을 빈번하게 해야 한다.
  • 이러한 야생 학습은 비순차적, 협력적, 명확한 평가와 정답이 없고, 목표가 불분명하거나 바뀌기도 한다는 특징이 있다.
  • 수파리 메타포: 산 속에 숨어 도인이 시키는대로 열심히 했더니 공력이 쌓이고, 득도하게 된다는 판타지

당신은 몇 년 차?

경력, 그 견딜 수 없는 무거움
  • 연차와 실력의 상관관계
  • 경력 연차라는 것으로부터 이 사람이 초급인지 아닌지 정도의 정보만 기대할 수 있으며
  • 초급이 아닌 사람들에 대해서는 경력 연차가 오히려 혼동을 불러일으키는 잘못된 정보로 작용할 수 있다.
소프트웨어 개발에서 경력과 실력
  • 개발자 개개인의 능력 차이가 최고는 최악보다 열 배 정도 업무 능력이 뛰어나며, 중간 이상의 업무 능력을 가진 사람들은 그렇지 못한 나머지 절반보다 두배쯤 뛰어나다.
  • 개발자의 경험이 얼마나 폭넓고 다양했는지가 실제 직무 성과와 관련이 있다. 경험의 질적인 면의 중요성
중요하다고 생각하는 것이 중요하지 않다
  • 구조화된 인터뷰(구조화된 행동중심적 인터뷰), 실제 작업을 해보도록 하는 작업 샘플 테스트, 실제 업무를 시험적으로 짧은 시간 동안 해보는 것, 전체 구인 과정에서 실제로 함께 일할 사람들이 인터뷰에 참여하도록 하는 것
잘 뽑는 것 이상으로 중요한 것
  • 업무 능력 향상을 위해 쓰는 시간의 양과 직무 성과 간에 통계적으로 유의미한 양의 상관성이 있다.
  • 머리속에서 시뮬레이션 하기, 피드백 요청하기 등
개발자들이 할 수 있는 것
  • 1만 시간 법칙의 함정: 양치를 평생 한다고 해서 양치의 전문가가 되는 것은 아니다.
  • 자신의 기량을 향상시킬 목적으로 반복적으로 하는 수련을 한 시간을 말한다.(의도적 수련, 자신의 약점을 개선하려고 애쓰는 수련)
  • 피드백을 짧은 주기로 얻는 것, 실수를 교정할 기회가 있는 것
  • 뛰어난 진단전문의는 상당한 시간을 자기 환자를 확인하는 데에 보내면서, 진단 시에 자신이 무얼 생각하는지 많은 기록을 하고, 자신이 얼마나 정확한지 나중에 확인을 한다.

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

  • 주변의 지인들과 함께하는 회고
  • 현재 나에게 무엇을 투자했느냐가 1-2년 후의 나를 결정한다.
  • 올해 업무도 잘한 것 같고, 사람들에게 인정을 받은것 같다면 1-2년 전에 열심히 자기 투자를 했을 것이다. 반대로 올해 읽은 책도 몇권 없고 새로 얻은 통찰도 없다면 지금 당장은 별 문제없는 것 같지만 내년이나 내후년에는 분명 추락을 경험할 것이다.
  • 직장인들의 평균 하루 자기 계발 투자 시간을 살펴보면, 하루 1-2시간이 54%로 가장 많았으며, 1시간 미만 33%, 2-3시간 9%, 3시간 이상 3% 였다.
복리의 비밀
  • 작업 A,B,C
  • A: 겉으로 드러나는 수행 작업. 개발, 생산, 판매
  • B: A 작업을 개선하는 것. 시스템, 프로세스 설계
  • C: B 작업을 개선하는 것(개선하는 능력을 개선하는 것)
  • C 작업은 결과물이 다음 단계의 도구가 되므로 복리가 적용된다.
    • 부트스트래핑: 자기가 신은 신발에 달린 끈을 들어 올려 자신의 몸을 공중에 띄운다. 외력의 도움 없이 스스로 상황을 개선한다.
    • 부분의 합이 전체보다 크려면 복리를 활용해야 한다.
복리 성장 키워드
  • 자신이 이미 갖고 있는 것들을 잘 활용하라.
    • 내가 지식을 얼마나 얻었는지 보다, 얻은 지식을 얼마나 어떻게 활용하고 있는지 반성하라
    • 이미 갖고 있는 것들을 하이퍼링크로 촘촘히 연결하라
    • 새로운 것이 들어오면 이미 갖고 있는 것들과 충돌을 시도하라.
    • 현재 내가 하는 일이 차후에 밑거름이 될 수 있도록 하라.
  • 외부 물질을 체화하라.
    • 주기적으로 외부 자극을 받아 빠르게 자기화하라.
    • 외부 물질 유입 이후 생긴 내부의 갈등을 해결하려는데에 노력을 기울이라. 상생적 관계를 끌어내자.
  • 자신을 개선하는 프로세스에 대해 생각해보라
    • 회고 반성을 주기적으로 하는 프로세스를 만들어라(C작업)
    • 나를 개선하는 과정(B)을 어떻게 하면 개선할 수 있을지 고민하라.
  • 피드백을 자주 받아라.
    • 사이클 타임을 줄여라.
    • 일찍, 자주 실패하라. 실패에서 학습하라.
  • 자신의 능력을 높여주는 도구와 환경을 점진적으로 만들어라.

학습 프레임과 실행 프레임

  • 실행 프레임: 잘하기
    • 목표가 학습을 통한 성장이라면 불리한 선택이다.
  • 학습 프레임: 자라기

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

학습에 유리한 조건, 불리한 조건
  • 인공지능 시스템에 유리한 조건
    • 목표가 분명하고 객관적으로 정해져 있으며 정적이다.
    • 매 순간 선택할 수 있는 행동/선택의 종류가 유한하게 정해져 있다.
    • 매 순간 자신이 목표에 얼마나 근접했는지를 알 수 있다.(내가 한 선택의 피드백이 빨리 주어진다.)
    • 주로 닫힌 시스템(예상 못한 외부 요소가 갑자기 들어오지 않는)속에서 일한다.
    • 과거의 선택과 결과에 대한 구조화된 기록이 많다.
  • 이 조건은 인간이 학습하기 좋은 환경의 조건이기도 하다. 인공지능에게 대체되지 않으려면 학습하기 힘든 환경에서 학습하기 힘든 주제들을 골라야 하는 상황이 되었다.
    • 목표가 모호하고 주관적일 수 있으며 동적이다.
    • 매 순간 선택할 수 있는 행동/선택의 종류가 불확실하다.
    • 매 순간 내가 목표에 얼마나 근접했는지를 알기 어렵다.(내가 한 선택의 피드백을 빨리 얻기 어렵다.)
    • 주로 열린 시스템(예상 못한 외부 요소가 갑자기 들어오는 경우가 흔한)속에서 일한다.
    • 과거의 선택과 결과에 대한 구조화된 기록이 별로 없다.
컴퓨터로 대체되기 힘든 일
  • 컴퓨터화에 병목이 되는 카테고리: 지각과 조작, 창의적 지능, 사회적 지능
  • 여기에 속하는 변수들: 독창성, 사회적 민감성, 협상, 설득, 타인을 돕고 돌보기
  • 이러한 요소에 요구 수준이 높은 직업은 컴퓨터화하기 어려우며, 직관과 암묵지가 많이 작용한다. 단순히 오래 한다고 실력이 느는 것은 아니다.

달인이 되는 비결

  • 실력을 개선하려는 동기가 있어야 하고
  • 구체적인 피드백을 적절한 시기에 받아야 한다.

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

전문성 형성에서 타당성과 피드백의 중요성
  • 직관이 형성되기 위한 조건: 타당성, 피드백
  • 타당성: 직관이 적용되는 영역에 어느 정도 인과관계와 규칙성이 존재해야 한다.(예측가능성)
  • 피드백: 직관적 판단에 대한 피드백을 받고 이를 통해 학습할 기회가 주어지는 환경이 갖춰져야 한다.
타당성과 피드백을 높이기
  • 타당성: 변수를 제한하고 실험을 하면서 규칙성과 인과관계를 찾으려는 노력을 한다.
  • 피드백: 동료, 상사, 고객, 프로그램에서 피드백을 구한다.

당신이 제자리걸음인 이유

의도적 수련의 필수 조건, 적절한 난이도
  • 작업에 대한 실력과 난이도의 상관관계와 결과
  • 실력>난이도: 지루함
  • 실력<난이도: 불안함, 두려움
  • 실력=난이도: 몰입, 의도적 수련, 최고 수준의 집중력 -> 퍼포먼스나 학습 능력이 최대치가 될 수 있다.
  • 더 뛰어난 스케이터가 엉덩방아를 더 자주 찧을 수 있다.
  • 이소룡의 일화: 이긴, 그러나 진
    • 겨루기에서 이겼지만 자신이 정한 시간인 3분을 넘겼기 때문에 실력을 키우기 위한 노력을 시작함
제자리걸음에서 벗어나기
  • 지루함을 느끼는 경우1: 실력 낮추기
    • 디버거 안쓰기 등
  • 지루함을 느끼는 경우2: 난이도 높이기
    • 자신만의 제약을 추가하기
    • 기준을 높이기(시간, 효율(속도), 코드 검토시 버그 찾기, 새로운 언어 등)
    • 업무 추가하기 - 리팩터링, 자동화 테스트 달기, 자신만의 도구 개발
    • 일을 좀더 효율적/효과적으로 하기 위해 내가 직접 만들어 쓰는 나만의 도구, 방법이 필요하다.
      • 예: 스레드나 프로세스 동작 확인하는 로그를 남기는 프로그램
      • 이런 것들을 만들기 위해서는 자주 일어나는 반복 패턴을 파악하고 분석해야 한다.
  • 불안함을 느끼는 경우1: 실력 높이기
    • 사회적, 도구적, 내관적 접근
    • 내관적 접근은 비슷한 일을 했던 경험을 머릿속에서 되살려 비유적으로 문제 해결. 자기효용감 증대
  • 불안함을 느끼는 경우2: 난이도 낮추기
    • 가장 간단하면서 핵심적인 결과물, 아기 버전을 목표로 삼기
    • 쉬운 작업을 먼저 할 경우 수행 시간 차이는 없으나 정확도가 높아진다.
동적인 균형
  • 실력이나 난이도가 요동칠때 자신의 상태를 알아차려 위의 조정 전략을 사용하는 것.
  • 메타인지
팀장이 할 수 있는 일
  • 개개인이 자기 스스로 몰입 상태를 조정하는 능력을 키우게 도와주는 것

의도적 수련의 일상적 예시

  • 등산, 코칭 등의 사례

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

  • 인간 역엔지니어링(인지적 작업 분석): 전문가들은 전문성의 비결을 묻는 질문에 그다지 유용하지 않은 답을 주는 경향이 있다.(너무 일반적인 답 혹은 실제 자신의 행동과는 다른 이론적인 답)
  • 전문성을 효과적으로 뽑아내는 방법들을 연습할 필요가 있다.
튜토리얼을 읽을 때 뭘 만들지 생각하고 읽는다.
  • 작성할 프로그램을 염두에 두고, 읽다가 만든 후에, 다시 돌아와 읽기를 계속한다. 이때는 다음 프로그램을 목표로 둔다.(적극적 읽기)
  • 예시: 단어 개수 세기 프로그램
공부할 때 표준 라이브러리 소스코드를 읽는다
  • 표준 라이브러리는 가장 그 언어다운 코드들의 말뭉치이다. 이런 스타일을 익히는 것이 중요하다.
  • 튜토리얼을 읽는 것만으로는 그 언어의 숙어와 패턴, 스타일을 배우기 불충분하다.
공부 중 다른 사람의 코드에 내가 필요한 기능을 추가한다.
  • 튜토리얼을 읽어 나가면서 실질적인 사용 예를 통해 실제 코드의 감을 익힌다.
  • 전문가는 다른 사람이 완성한 프로그램에 자신이 필요한 기능을 추가하기까지 걸린 시간이 길지 않았다. 자신이 만들 수 있는 작고 간단한 추가 기능을 생각해 내는 것이 중요하다.
  • 유용하면서 작고 간단한 걸 생각해 내는 것이 몰입을 위한 난이도 조절이다.
  • 튜토리얼을 읽으며 이해한 내용을 실제로 살아 있는 코드를 수정하고 돌려보고 하는 등 실험하면서 피드백 받고, 오픈 소스 커뮤니티와 교류를 통한 피드백 받기도 가능했다.
전문성을 효과적으로 뽑아내는 전문가 되기
  • 전문가에게 비결을 묻지 않기
  • 전문가에게 구체적인 사건에 대해 말하도록 유도하기
    • 예: 가장 최근에 익힌 언어를 묻고,
    • 그 언어를 익힌 과정을 시간대별로 짚어가며 어떤 행동을 했는지, 암묵적인 의사 결정과 상황 판단이 무엇이었는지를 추출했다.

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

두 가지의 실수 문화
  • 실수 예방: 행동에서 실수로 가는 경로를 차단하려고 하기
    • 불가능에 가깝다.
    • 실수를 비난하며 논의하기를 꺼리며, 문제가 생겼을 때 협력을 덜하게 됨
    • 실수에서 배우기 어려움
  • 실수 관리: 실수를 조기에 발견하고 빠른 조취를 취하기
    • 이미 결과가 난 실수에 대해서는 학습을 통해 다음 행동할 때 할 계획을 세우기
    • 실수를 공개하고 서로 이야기하며 회복을 돕고 배우는 분위기
  • 실수 연구의 역사: 기술 -> 인간 -> 문화(심리적 안전감이 포함된다)
  • 실수 훈련: 실수가 없으면 학습하지 못한다.
    • 실수를 더 유도해야 학습 전이가 잘 일어난다.
  • 자신의 실수 문화를 예방에서 관리로 옮겨가려면 어떻게 해야 할까?

뛰어난 선생에 대한 미신

전문가가 가르쳐 주는 것은 전부가 아니다
  • 해당 과제를 수행할 때 사용하는 지식 중 70%는 가르치지 않는다.
  • 전문가가 되면 자신이 하는 일이 익숙해져 자동화되어 암묵적이 되어버린다. 따라서 인식이 없어진다.
인지적 작업 분석으로 극복하기
  • 선생님: 메타 인지를 높이려는 노력
    • 내가 이 문제를 해결할 때 어떤 과정을 거치는가를 관찰하며 분석
    • 학생들이 이걸 배우면서 어떤 생각을 하는가를 직접 관찰하고 질문을 던지고 분석
  • 학생: 선생님의 메타인지를 돕기 위해 자신이 어떻게 생각하면서 문제를 풀었는지 인지적 과정을 알려줌
    • 선생님의 문제 풀이 인지적 과정 자체를 알려달라고 요청

나홀로 전문가에 대한 미신

  • 어떤 기술적 실천법이라도 그걸 현실에서 적용하기 위해서는 사회적 자본과 기술이 필요하다.
사회적 자본과 기술
  • 신뢰는 사회적 자본의 일종이다.
  • 사회 연결망도 사회적 자본의 일종이다.
  • 사회적 자본이 좋은 사람들은 사회적 기술이 뛰어나다.
고독한 전문가라는 미신
  • 전문가는 사회적 자본과 사회적 기술 또한 뛰어나다.
  • 뛰어난 소프트웨어 개발자일수록 타인과 인터렉션에 더 많은 시간을 쓴다.
  • 뛰어난 개발자들은 동료와의 협력을 중요하게 생각하는 경향이 있다.
  • 마이크로 인터랙션에 신경쓰기
  • 어떤 기술적 지식을 전달할 때, 사회적 맥락 속에서 가르치고 경험하게 하려고 노력하기
    • 사회적 기술의 예시: 도움받기, 피드백 주고받기, 영향력 미치기, 가르치고 배우기, 위임하기

2. 함께

  • 협력 방법을 배우고 수련하기

소프트웨어 관리자의 개선 우선순위

  • 복잡한 상황을 이해하는 능력으로, 프로젝트를 계획한 다음 관찰하고 행동하여 계획에 맞게 프로젝트가 진행되게 하거나 계획을 바꿀 수 있어야 한다.(시스템적 사고)
  • 관찰하는 능력으로, 무엇이 벌어지고 있는지를 관찰하고, 효과적인 적응 행동을 하기 위해 자신이 관찰한 것이 어떤 의미인지 이해할 수 있어야 한다.(일차적 측정)
  • 행동하는 능력으로, 어려운 대인 상황에서 우리가 심지어 혼란스럽거나 화가 나거나 무서워서 도망쳐 숨어버리고 싶을 때에도 적절하게 행동할 수 있어야 한다.(일치적 행동)

협력을 통한 추상화

커뮤니케이션과 협력
  • 뛰어난 프로그래머는 커뮤니케이션과 협력에 더 오랜 시간을 들인다.
  • 설계나 코딩, 테스팅에 들이는 시간에는 큰 차이가 없다.
추상화의 중요성
  • 협력하면서 작업하면 서로 시각이 다르기 때문에 두 사람의 다른 시각을 연결해 줄 다리가 필요하고, 그 다리에는 필연적으로 추상화의 요소가 있게 된다. 서로 다른 것들을 하나로 묶어야 하기 때문이다.
  • 전산학은 추상화의 과학이다.
  • 소프트웨어 공학의 전체 역사는 추상화 수준을 높이는 것으로 특징 지을 수 있다.
  • 복잡한 현상에 대한 이해를 발전시켜 나갈 때, 인간 지성에서 가장 강력한 도구는 추상화다. 실세계의 특정한 대상체, 상황, 과정 간의 유사성을 인식하는 데에서, 그리고 이러한 유사성에 집중하고, 차이점은 일시적으로 무시하는 결정에서 추상화가 생겨난다.
  • 다른 시각을 가진 두 사람이 협력하므로서 추상화를 높일 수 있다.

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

  • 신뢰 자산이 높은 조직은 커뮤니케이션 효율이나 생산성이 높다.
  • 애자일을 제대로 하려는 조직이라면 이 부분에 많은 노력을 들이고 있다.
  • 신뢰를 쌓는 방법: 투명성과 공유, 인터렉션
공유 조건별 신뢰도 변화 실험
  • 작업물을 공유하고 피드백을 받은 후, 상호 간의 신뢰 정도를 측정
  • 하나 공유, 최소 공유: 오히려 신뢰가 떨어짐
    • 기대감보다 불안감이 작용
  • 복수 공유: 상호 대화시 불안감이 덜하고, 부적적 피드백을 수용하려는 마음이 더 큼
    • 팀의 결속력이 강화되고 오너십을 느낌

객관성의 주관성

품질은 상대적이다
  • 품질이란 누군가에게 가치가 되는 것이다.
  • 설득도 결국 결정하는 것은 사람이기 때문에 객관의 개념 자체가 매우 주관적이 되고, 따라서 설득을 위해서는 인간에 대한 이해가 필요하다.
감정을 배제할 수 없다
  • 의사결정을 하는 과정에 뇌과학적으로 감정적이고 직관적인 부분이 큰 역할을 하고 있으며, 그런 감정적 부분이 배제된다면 의사결정을 제대로 할 수 없다.
  • 설득하기 위해서는 상대방에 대한 이해와 대화가 필요하다.
성향과 기질에 따른 애자일 설명법
  • MBTI 성격 유형별 설득을 위한 애자일 설명법
  • NT(직관적 사고형): 애자일을 하면 낮은 의존성과 높은 응집성의 이상적이고 우아한 설계를 실제로 실현하고, 지속적으로 유지할 수 있다. 스파게티 코드는 안녕이다.
  • NF(직관적 감성형): 고객과 우호적 관계를 이어갈 수 있다. 팀원 모두가 신뢰하고 협력하면서 즐겁게 일할 수 있다. 누군가를 비난하는 일이 없을 것이며, 개인적 성장도 가능하다.
  • SP(감각적 지각형): 설계한다고 몇 달씩 시간 끌지 않는다. 당장 개발로 들어갈 수 있다. 순식간에 원하는 대로 코드를 바꾸고 테스트를 통과하는 경험이 가능하다.
  • SJ(감각적 판단형): 효율적이다. 낭비되는 작업을 하지 않는다. 불필요한 문서화나 회의 안한다. 현 프로젝트 상황이 한눈에 들어오고, 지금 당장 뭘 해야 할지가 명확하게 보이게 된다. 더 안전하다. 데드라인에 와서 완료되지 않은 상황 나오지 않고, 정확한 예측이 점점 가능해진다.
  • 설득을 하기 위해 객관적 자료를 모으는 부분 이상으로 상대를 이해하는 데 많은 시간을 투자해야 한다.

이것도 모르세요?

  • 멘토링, 코칭을 할 때, 공감하며 들어주며 상대가 어떤 멘탈 모델을 갖고 있는지 파악하는 것이 좋다. 그러면 그 접근에 따른 좀 더 정확하고 효과적인 제안이 가능하다. 암묵적인 것들을 전달해 줄 수도 있다.
  • 여기서 행동을 유도하는 코칭을 더할 수 있다. 피코치가 스스로 약속한 것을 지키는 확률은 매우 높다. 무엇을 할지 질문을 통해 정할 수 있도록 돕는다.

하향식 접근의 함정

  • 전문가들은 자신이 자주 접하지 않았던 문제, 어려운 문제, 잘 정의되지 않은 문제를 해결할 때는 탑다운과 바텀업을 섞어 쓴다.
  • 추상과 구상을 오르락 내리락 하는 지점에서 실마리를 자주 얻는다.
  • 비전문가들은 복잡하고 불확실한 일을 철저하게 계획하고 단계적으로 접근하자고 마음먹는다. 이는 초보의 접근법이다.
  • 협력에서 상호 참조 전략(도메인 -> 프로그램의 언어로 빈번히 오가는 것)을 사용하면 문제를 보다 잘 해결할 수 있다.
  • 이를 가능하게 하는 두 접근법이 있다.
    • 한 사람이 다기능을 갖추도록
    • 협력이 쉽게 되도록
  • 후자를 잘하면 전자가 자동으로 좋아진다. 반대로 전자를 잘해서 후자도 잘 되게 할수도 있으나, 후자가 잘 되지 않으면서 전자가 잘 되게 하기는 어렵고 비용이 크다.
빠르고 빈번한 바통 터치가 가능한 전문가 조직
  • 삼투압적 의사소통: 서로 간의 정보가 은연중에 스며드는 것
  • 한번에 처리되는 일의 양(배치사이즈)을 줄여서 지속적 흐름을 만들고 짧은 시간 내에 탑, 바텀을 오가게 한다.
웹 개발의 추상화 단계의 다섯 면
  • 전략
  • 범위
  • 구조
  • 뼈대
  • 표면/비주얼

전문가팀이 실패하는 이유

  • 팀에 전문가가 포함되는 것과 동시에 각 멤버의 작업을 조율하고 통합하는 전략을 팀이 드러내놓고 탐색하는 경우에 팀의 성과가 가장 좋았다.
  • 협력을 잘하기 위한 명시적인 도움이 필요하다
  • 소셜 스킬 등이 뛰어난 제너럴리스트가 있으면 도움이 된다.

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

  • 팀에 누가 있는지보다 팀원들이 서로 어떻게 상호작용하고 자신의 일을 어떻게 바라보는지가 훨씬 중요했다.
  • 5가지 성공적 팀의 특징을 찾았는데, 그 중 압도적으로 높은 예측력을 보인 변수는 팀의 심리적 안전감이었다.
  • 팀 토론 등 특별히 고안된 활동을 통해 심리적 안전감을 개선할 수 있었다.
    • 심리적 안전감: 내 생각이나 의견, 질문, 걱정, 혹은 실수가 드러났을 때 처벌받거나 놀림받지 않을 거라는 믿음

쾌속 학습팀

학습 환경의 차이
  • 팀원: 업무 수행 능력, 협력, 새롭고 애매한 상황을 즐길 수 있는지, 자기보다 지위가 높은 사람에게도 자신있게 의견을 제안할 수 있는지 등을 갖춤
  • 당면 과제를 기술적 도전이라기 보다 조직적 도전으로 받아들인다.
  • 개개인이 새로운 기술을 획득해야 한다고 보지 않고, 함께 일하는 새로운 방법을 만든다고 생각
기술 전환에 성공한 개발팀
  • 성공: 도전을 팀의 학습 능력에 대한 도전으로 받아들이고 같이 학습해야 한다고 생각함. 리더는 기회와 가능성, 큰 변화의 흐름에 동참하는 중요성과 즐거움 등을 강조
  • 실패: 학습을 개인의 과제로 생각함. 학습보다는 단기 퍼포먼스를 중요시. 리더는 낙오의 위험성을 강조하고, 팀원의 실력이 부족하다고 불평함
현실에서 실천하기
  • 자신의 학습 환경을 만들기
  • 개별 기술 이상으로 일하는 방식에 대해 실험하기
  • 학습과 일을 분리하지 말고 동체로 만들기
  • 작지만 유용한 프로그램들을 매일 작성할 것
  • 학습 공동체를 구축하기
  • 정반대: 크고 쓸모없는 설계를 가끔 생각해 봄

프로젝트 확률론

  • 사람들은 AND 조건의 사건은 확률을 과대평가하는 경향이 있고, OR 조건의 사건은 반대로 확률을 과소평가하는 경향이 있다. 이를 인지적 편향이라고 하며, 일의 소요 시간과 제시간에 끝낼 확률을 추정할때 상당히 작용한다.
  • 분석, 설계, 밑부분 코딩과 본격적 코딩, 테스팅, 디버깅 등을 추정하는 것은 매우 부정확하다. 추정은 과거의 일과 미래의 일이 판이할수록 정확도가 떨어지는 경향이 있다. 이렇게 작업 단계로 나눠 일을 하면 단절 지점이 필연적으로 생기게 된다.
애자일 확률론
  • 애자일은 앞서의 고전적 방법과 달리 일을 공유한다. 각자 일을 얼마나 진행했는지 매일 공유하고 내 일, 네 일의 구분선이 뚜렷하지 않다. 애자일에서는 되도록 사람들이 섞이도록 한다.
  • 고전적 방법에서는 내가 일을 빨리 끝내는 것이 프로젝트에 큰 도움이 되지 않는다. 그래서 마감 시간에 맞춰 끝나도록 일부러 일을 늘리는 경향도 생긴다. 하지만 애자일에서는 내가 일이 빨리 끝나면 다른 사람의 일을 도와준다. 프로젝트에서 병목이 되는 사람을 도와주기 쉽다. 때문에 해당 시점에 나머지 사람들이 일을 제시간에 끝낼 확률이 높아진다. 지식을 공유하므로 AND에서 OR로 연결되어 전체 확률이 증가되며, 병목에 대처는 OR에서 AND로 연결되어 전체 확률이 감소된다.

3. 애자일

  • 애자일은 불확실성이 클 때 우리가 어떻게 해야 하는지를 고민한 결과물이다.
  • 애자일이 불확실성을 다루는 방식은 좀 더 짧은 주기로 더 일찍부터 피드백을 받고, 더 다양한 사람으로부터 더 자주 그리고 일찍 피드백을 받는 것으로 정리할 수 있다.
  • 학습과 협력이 애자일이 불확실성을 다루는 핵심적인 구동 원리이다. 학습과 협력을 증진해서 우리 삶에 애자일을 적용하고 또 이를 통해 불확실성에 대응한다.
    • 불확실하다는 것은 이동할때 목표점의 위치가 자주 바뀌는 상황이다. 그럴 수 록 목표점과 우리 위치를 확인하는 것 같은 피드백을 통해 방향을 재조정하는 일을 자주 해야한다. 이동하면서 계속 배워 나가야 한다. 새로운 상황에 대해서 계속 배우고 내가 맞춰 나가야 한다. 불확실성이 높을수록 학습을 잘해야 하며 학습 능력을 향상시킬 수 있다면 우리는 불확실성에 대해 더 잘 대응할 수 있다.
    • 협력의 경우, 안좋은 일이 생기는 경우와 좋은일이 생기는 경우 두가지로 나눠볼 수 있다.
    • 안좋은 일의 벌어질 확률은 또는 조건으로 연결되어 있을 때 더 높아진다. 반면 그리고 조건으로 연결되면 낮아진다. 애자일은 서로의 업무를 공유하고 상호 검토하는 협력을 통해 또는 조건을 그리고 조건으로 바꾸게 한다.
    • 좋은 일의 영향 범위는 또는 조건으로 연결되어 있을때 더 넓어진다. 애자일은 좋은 일의 상황에 대해서는 그리고 조건을 또는 조건으로 바꾸게 한다. 모든 사람이 통찰을 얻어야 업무를 개선할 수 있는게 아니라 한 사람이라도 통찰을 얻으면 그걸 공유해서 전체가 개선되는 것이다.

애자일의 씨앗

  • 고객에게 매일 가치를 전하라
  • 고객: 우리의 진짜 고객은 누구인가?
    • 이해 관계자
  • 매일:
    • 어떻게 점진적으로 가치를 전할 것인가?
    • 어떻게 보다 일찍, 그리고 자주 가치를 전할 것인가?
    • 학습의 빈도, 이른 시작
  • 가치를:
    • 무엇이 가치인가?
    • 지금 우리가 하고 있는 일이 정말 가치를 만드는 일인가?
    • 지금 가장 높은 가치는 무엇인가?
    • 비슷한 수준의 가치를 더 값싸게 전달하는 방법은?
  • 전하라:
    • 가치를 우리가 갖고 있지 않고 고객에게 정말 전달하고 있는가?
    • 고객이 정말 가치를 얻고 있는가?
    • 신뢰 자산

애자일 도입 성공 요인 분석

  • 애자일 도입 성공 요인 중 가장 상관관계가 높은 것은 고객 참여이다.
  • 그리고 리팩터링, 코딩 후 자동화 단위 테스트 붙이기, 코드 공유 순으로 상관관계가 높다.
  • 전문가들은 무섭고 두렵더라도 중요한 일이라면 그 일을 안하는 리스크를 인식하고 꾸준히 시도한다.
  • 프로젝트의 성패를 좌우하는 사람과 최대한 가까운 사람을 참여시키려고 계속 노력해야 한다.
  • 성공하는 조직들에는 뛰어난 애자일 코치가 있었다.
    • 의사소통 스타일
    • EQ 및 스트레스 하에서의 행동
    • 리더십 및 코칭 스타일
    • 회고를 통한 개인적 학습 능력
    • 개인적 성장 의지, 성장 사고관, 자기 효능감
    • 관찰 및 상황 파악 능력
    • 일치적 행동(믿는 것을 행동에 옮기는 능력)
    • 기술적 능력

당신의 조직에 새 방법론이 먹히지 않는 이유

  • 어떤 방법론을 쓰느냐는 문제보다도 누가 참여하는가가 훨씬 더 중요하며, 이는 암묵지가 생각보다도 훨씬 더 강하게 작용하기 때문이다
  • 애자일을 팀에 도입하기 위해서는 나를 먼저 자문해 봐야 한다.

애자일을 애자일스럽게 도입하기

  • 도요타가 도요타일수 있었던 것은 베스트 프랙티스 때문이 아니라, 그런 실천법들이 생겨날 수 있는 문화적 풍토와 생성적 과정 때문이었다.
  • 애자일을 반애자일적으로 진행하는 것이 빈번한 패착 요인이다. 애자일은 불확실한 상황에 대한 접근법인데, 애자일을 도입할 때 확실성 위에서 진행하려고 한다면 문제가 된다.
  • 찾아가는 모습이 애자일이다.

댓글