#acl +All:read [[책/함께 자라기]]의 1부. * 1부는 [[../자라기]] * 2부는 [[../함께]] * 3부는 [[../애자일]] = 3. 애자일 = 계획주도 방식에서는 초반에 계획을 정교하고 꼼꼼하게 만들려고 엄청난 노력을 한다. 그러면 실행단계는 간단해지고 예측 가능해진다고 생각하기 때문이다. 하지만 애자일은, 불확실성이 높은 일에 대해서는 애초에 이것이 불가능하다고 본다. 불확실성이 크기 때문에 미리 분석하고 설계하는데 한계가 있다는 것이다. 애자일은 불확실성이 클 때 우리가 어떻게 해야 하는지를 고민한 결과물이다. 따라서 애자일은 불확실성이 높은 프로젝트에 더 적합하다. 애자일이 불확실성을 다루는 방식은, 좀 더 짧은 주기로 더 일찍부터 피드백을 받고, 더 다양한 사람으로부터 더 자주 그리고 더 일찍 피드백을 받는 것으로 정리할 수 있다. 광의의 애자일을 얘기해보자. 애자일을 소프트웨어 뿐 아니라 모든 종류의 업무, 혹은 삶에 내재하는 방식으로 확장해 보는 것이다. 지금까지 이 책에서 이야기했던 학습과 협력이 애자일이 불확실성을 다루는 핵심적인 구동원리이다. 다시 말해 학습과 협력을 증진해서 우리 삶에 애자일을 적용하고, 또 이를 통해 불확실성과 친구가 될 수 있다. 학습에 대해 이야기해보자. 불확실하다는 것은 우리가 이동을 할 때 목표점의 위치가 자주 바뀌거나 우리 위치가 자주 바뀌거나 하는 상황으로 비유해 볼 수 있다. 그런 경우일수록 우리는 가다가 멈춰서서 주위를 둘러보고 목표점과 우리 위치를 확인하는 것 같은 피드백을 통해 방향을 재조정하는 일을 자주 해야 할 것이다. 초기 계획대로 가면 완전히 동떨어진 곳으로 갈 수 있다. 다시 말해 이동하면서 계속 배워나가야 한다는 뜻이다. 불확실성이 높을수록 학습을 잘 해야 하는 것이다. 새로운 상황에 대해서 계속 배우고 내가 맞춰 나가야 한다. 따라서 우리의 학습 능력을 향상시킬 수 있다면 우리는 불확실성에 대해 더 잘 대응할 수 있을 것이다. 협력의 경우는? 불확실한 상황일수록 리스크가 높은 것이고, 고로 안 좋은 일이 벌어질 확률이 높을 것이다. 일반적으로 안 좋은 일이 벌어질 확률은 '또는'조건으로 연결되어 있을 때 더 높아진다. 앞서도 얘기했지만, '또는' 조건은 하나라도 문제가 생기면 전체에 문제가 생기는 황상이다. 한 사람이라도 실수하면 전체 조직에 구멍이 뚫리는 것이다. 반대로 '그리고' 조건은 모든 변수에 문제가 생겨야 전체에 문제가 되는 상황이고, 이 경우 전체에 문제가 생길 확률은 기하급수적으로 낮아진다. 모든 사람이 실수해야만 구멍이 뚫리는 경우이다. 결과적으로 애자일은 서로의 업무를 공유하고 상호 검토하는 협력을 통해 불행한 일을 '또는' 조건에서 '그리고' 조건으로 바꾸게 한다. 반대로 불확실한 상황에서는 예상치 못한 일이 생길 확률도 있다. 그런 경우 이 좋은 일을 확장해야 한다. 애자일은 좋은 일의 상황에 대해서는 그리고' 조건을 '또는' 조건으로 바꾸게 한다. 모든 사람이 통찰을 얻어야 업무를 개선할 수 있는 게 아니라 한 사람이라도 통찰을 얻으면 그걸 공유해서 전체가 개선되는 것이다. == 애자일의 씨앗 == 애자일의 씨앗, 생성성(generativity)를 가진 어떤 그것이 무엇일까? 한 문장으로 ''고객에게 매일 가치를 전하라''로 압축해봤다. 이 문장의 단어들은 각기 모두 중요하다. 각 단어에 대해 다음과 같이 여러 가지 질문을 해볼 수 있다. 고객에게 * 우리의 진짜 고객은 누구인가? 매일 * 어떻게 점진적으로 (벼락치기 하지 않고) 가치를 전할 것인가? * 어떻게 보다 일찍, 그리고 자주 가치를 전할 것인가? 가치를 * 무엇이 가치인가? * 지금 우리가 하고 있는 일이 정말 가치를 만드는 일인가? * 지금 가장 높은 가치는 무엇인가? * 비슷한 수준의 가치를 더 값싸게 전달하는 방법은? 전하라 * 가치를 우리가 갖고 있지 않고 고객에게 정말 전달하고 있는가? * 고객이 정말 가치를 얻고 있는가? 학습적 측면에서 보면, '매일' 하는 것은 학습의 빈도를 말한다. 불확실성이 높을수록 빈도가 자주 있어야 한다. 예컨대 눈을 감고 목적지로 가는데, 만약 목적지가 움직이는 정도가 크다면 그럴수록 잠깐씩 현재 위치와 목적지의 위치를 확인하는 빈도가 잦아야 한다. 그리고 좋은 학습은 질 높은 피드백에서 오게 된다. 만약 그것이 가짜 피드백이라면 잘못된 학습이 될 수도 있다. 진짜 가치를 전달할 때 우리는 진정한 피드백을 받을 수 있다. "이런저런 기능이 있다면 어떻겠어요? 구입하겠어요?"에 대한 대답은 그리 믿을 만하지 않다. 그리고 다시 '매일'로 돌아가서, 프로젝트의 말미에만 하는 게 아니라 시작하는 날부터 '매일'이 되기 때문에 학습이 처음부터 발생하게 된다. 즉, '매일'에는 빈도와 동시에 이른 시점부터 시작한다는 의미가 있다. 이러면 학습의 복리 효과를 얻을 수 있다. 협력이라는 면에서는 '고객에게'라는 부분이 그 중요성을 말하고 있다. 소프트웨어 개발이건 뭐건 혼자서 결과물이 나오는 경우는 드물다. 협력을 통해서 결과물이 나온다. 여기에서 고객은 넓은 의미의 이해관계자라고 생각하자. 우리에게 돈을 주고 일을 맡긴 사람뿐만 아니라 우리의 이해관계자는 모두 고객으로 여겨야 한다. 이렇게 되면 의외로 협력의 대상이 넓어진다. 간혹 애자일을 한다고 해놓고는 실상 고객을 완전히 잊어버리고 자기들끼리 북치고 장구치고 하는 모습을 보곤 하는데, 이건 애자일의 핵심을 높치고 있는 것이다. 그리고 협력을 할 때 '가치를 전하면' 협력이 쉽다. 우선, 신뢰가 쌓이게 된다. 신뢰가 있을 경우 협력의 비용이 낮아지고 원활해진다는 연구가 많다. 그리고 이는 앞의 학습과도 연결되는데 가치를 전달하게 되면 의사소통이 명확하고 구체적이 된다. == 애자일 도입 성공 요인 분석 == [[http://agile.egloos.com/5299932|애자일 도입 성공 요인 분석]] 발표에 대한 요약 내용이다. === 애자일 도입 설문 === 대체적으로 애자일 성숙도가 높은 조직은 애자일이 프로젝트 성공에 도움이 많이 된다고 느끼는 것으로 나왔다. 흥미로운 점은 성숙도를 낮게 평가한 조직이 성공도도 무조건 낮은 것은 아니다. 성숙도를 낮게 평가한 조직들은 성공도가 낮은 조직부터 높은 조직까지 골고루 분포해 있었다. 하지만 성숙도가 높은데 성공도가 낮은 조직은 없었다. 여기서 우리는, 조직이 애자일을 성숙하게 실천하고 있지 못하다고 해도 프로젝트 성공에 도움이 되게 할 수 있다는 희망적인 메세지를 찾을 수 있다. "애자일 실천법 중에서 도입해서 성과에 도움을 준 것들을 모두 고르세요"라는 질문에 대해 상관도를 구해보면 아래와 같다. * 고객 참여: 0.77 * 리팩터링: 0.42 * 코딩 후 자동화 테스트 붙이기: 0.38 * 코드 공유: 0.37 === 애자일 도입에 대한 무서운 사실 === 그런데 많은 조직들이 고객 참여와 코드 공유를 뒤로 미룬다. "우리 상황에서는 할 수 없다. 어렵다"라고 생각한다. 두 가지 모두 '사람'이 중심이 된다. 고객 참여는 고객을 설득해야 하고, 코드 공유는 개발자를 설득해야 한다. 사람과의 대면과 충돌이 무섭고 두려운 것이다. 하지만 이런 것들을 제대로 하지 않으면 프로젝트를 성공하기가 더 힘들어진다. 애자일 초보팀들과 애자일 전문가팀을 보면 공통된 차이점을 발견할 수 있다. 초보팀일수록 처음에 쉽고 안심이 되는 것에서 시작한다. 그것은 별 문제될 것이 없다. 그렇게 해서 얻는 '작은 성공'의 심리적 효과가 도움이 된다. 여기서 중요한건 어렵고 두렵지만 중요한 것을 '얼마나' 미루느냐이다. 그런데 초보팀들은 프로젝트가 접히기 직전까지 미룬다. 저항이 적은 일만 하면서 '오손도손 영차영차 우리끼리 재미있게 하자'고 한다. 그러다가 우리들만의 잔치로 끝나는 경우를 종종 봤다. 전문가팀은 무섭고 두렵더라도 중요한 일이라면 그 일을 안하는 리스크를 인식하고 꾸준히 시도한다는 점에서 초보팀과 다르다. ''두려워도 중요하다면 시도해 봐야 하지 않겠는다''. === 성숙도가 낮다면 고객 참여는 필수 === 이 설문을, 성숙도가 높은 조직과 낮은 조직(애자일을 시도한지 얼마 안되었고, 스스로 잘 모른다고 생각)을 나누어서 분석을 해보면 값이 달라진다. * 고객 참여: 0.94 "우리가 애자일을 도입한지 얼마 안되었다. 잘 못한다. 그런데 어떻게든 프로젝트가 더 성공적이 되었으면 좋겠다"라는 입장이라면, 답연 ''고객 참여뿐이다''. 성숙도가 높은 조직은 아래와 같다. * 짧은 반복 개발 주기: 0.49 * 고객 참여: 0.36 * 코드 공유: 0.33 애자일에 대해 어느 정도 이해는 하고, 실험도 좀 해봤다 싶은 조직에서 성공 기여도를 높이려면 짧은 반복 개발 주기, 고객 참여, 코드 공유에 관심을 기울여야 한다. 이런 것들을 제대로 하지 못하면서 다른 실천법에만 계속 신경을 쓰면 프로젝트 성공을 미루는 일이 될 수도 있다. 성공도 회귀분석을 정리하자면 고객 참여와 짧은 개발 주기가 프로젝트 성공의 가장 핵심이라고 할 수 있다. 그런데 이 두 가지는 각기 '함께' 그리고 '자라기'와 연결 지을 수 있다. 애자일을 소프트웨어 개발 프로젝트에 적용할 때 고객 참여와 짧은 개발 주기를 하면 함께 자라기가 되는 것이고, 이것이 불확실성 하에서 우리가 더 현명해지도록 도와주는 것이다. 실제 고객을 참여시키지는 못해도, ''프로젝트의 성패를 좌우하는 사람과 최대한 가까운 사람을 참여시키려고 우리가 계속 노력''할 수는 있다. 추가로, 컨설팅을 하면서 관찰해본 결과, ''성공하는 조직들에는 항상 뛰어난 애자일 코치가 있었다''. 그 점이 애자일 도입을 성공하는데 핵심이었다. 어떻게 보면 뛰어난 애자일 코치라는 존재는 애자일 도입 성공의 메타적 요소라고 할 수 있다. 뛰어난 애자일 코치를 통해 실천법을 더 잘 도입할 수 있게 된다. 뛰어난 애자일 코치의 특징은 다음과 같다. * 의사소통 스타일(팀원, 상사, 팀장과) * EQ 및 스트레스 하에서의 행동 * 리더십 및 코칭 스타일(동기부여 등) * 회고를 통한 개인적 학습 능력 * 개인적 성장 의지, 성장 사고관([[MindSet]]), [[자기효능감]] * 관찰 및 상황파악(SenseMaking) 능력 * 일치적 행동(믿는 것을 행동에 옮기는 능력) * 기술적 능력? 애자일 코치는 팀장일 수도 있고, 팀원일 수도 있고, 사장일 수도 있다. 애자일 코치는 어느 누가, 어느 조직이 정해줄 수 있는 것이 아니다. 조직적, 정치적 위치와는 관계가 없다. ''오로지 자신의 선택이다''. 애자일 코치는 그런 것이다. 내가 애자일 코치가 되어야겠다고 결심하는 것이 가장 중요하다. 이 사람이 어떻게 행동하고 의사소통하느냐에 따라 팀의 행동과 의사소통 방식이 바뀔 수 있다. 결과적으로 보면 뛰어난 애자일 코치는 함께 자라기를 하는 사람들이다. 발표를 요약하자면 다음과 같다. 1. 애자일을 도입해서 성공하는 조직들이 국내에 있다. 2. 애자일 실천법을 잘 실행하면 성공률도 높아질 수 있다 (애자일을 한지 얼마 안되더라도) 3. 실천법 중에서 비교적 성공과 직결되는 것들이 존재한다. 그것은 고객 참여, 리팩터링, 코딩 후 자동화 단위 테스트 붙이기, 코드 공유 등이다. 4. 애자일 성숙도가 낮은 조직일수록 고객 참여를 하지 않으면 프로젝트 성공이 어렵다. 5. 무섭고 두렵지만 중요한 일이라면 계속 미루지 말라. 6. 뛰어난 애자일 코치가 있는 것이 애자일 도입 성공에 핵심적이다. 7. 뛰어난 애자일 코치는 함께 자란다. == 당신의 조직에 새 방법론이 먹히지 않는 이유 == 치료자 효과란, 치료자가 누구냐에 따라 상담 효과가 좌우되는 것을 말한다. ''설탕물을 받아먹더라도 뛰어난 의사에게 가는 경우에 치료 효과가 더 높다''는 연구 결과가 있다. 어떤 기법을 쓰느냐보다, 치료자가 누구인가가 상담 효과에 더 큰 영향을 준다는게 연구 결과로 거듭 밝혀졌다. 마이클 폴라니(MichaelPolanyi)는 ''우리는 말할 수 있는 것보다 더 많이 알고 있다''라고 암묵지의 중요성을 이야기했다. 더 나아가서 모든 지식이 근본적으로는 암묵지라고 역설했다. 통상, 사람 요소가 차지하는 비율이 많을수록 복잡한 (CynefinFramework)도메인에 속한다. 상담도 그렇다. 이러한 ''복잡한 분야일수록 어떤 특정 기법의 효과보다도 치료자 효과가 더 큰 영향''을 미칠 것이다. 그렇다면 어떻게 해야 할까? ''슈퍼슈링크들을 찾고 그들을 연구하고 육성해야'' 한다. 그러면서 이런 연구를 토대로 우리가 사용하는 기법과 방법론들을 더 발전시켜 나가야겠다. 소프트웨어 분야에서도, ''우리가 어떤 방법론을 쓰느냐는 문제보다도 누가 참여하는가가 훨씬 더 압도적으로 중요한 문제''가 아닐까? 예를 들어 애자일 방법론 도입을 원하는 팀장이라면 ''나는 어떤 팀장인가''를 먼저 자문해봐야 하지 않을까? 내가 어떤 팀장인지가 전혀 바뀌지 않으면서 새 방법론만 도입한다고 무슨 효과가 있을까. == 애자일을 애자일스럽게 도입하기 == 세계 여러 기업들이 앞다투어 도요타 방식을 도입했다. 하지만 모 경영학자에 의하면 전 세계에서 도요타 방식을 도입해 정말 성공한 기업은 딱 한군데라고 한다. 도요타 자신. 일반적으로 도요타를 배우려는 기업들은 도요타의 실천법들을 배워간다. 안돈, 칸반, 포카요케 같은 것들. 처음 보면 굉장히 인상적이다. 눈에 확 들어온다. 하지만 도요타를 만든 것은 이 실천법들이 아니다. 도요타에서 1년간 구현되는 개선 아이디어의 갯수는 1백만 개라고 한다. 제안되는 아이디어 갯수가 아니다. 하루에 3천개의 개선 아이디어가 실제로 구현된다. 동종 업계의 10배에서 1천배 수준이라고 한다. 도요타가 도요타일 수 있었던 것은 칸반 같은 개별 '베스트 프랙티스'가 아니라, 그런 실천법들이 생겨날 수 있는 문화적 풍토와 생성적 과정(generating process) 때문이었다. 칸반 같은 개별 신천법은 상시 변화하고 발전하는 도요타의 특정 시점의 스냅샷 같은 것이 아닐까. 우리가 배워야 할 것은 칸반 이면의, 칸반이 나올 수 있었던 구조와 문화이다. 애자일을 진행하는 가운데 가장 빈번히 빚어지는 폐단은 무엇일까? 애자일을 반애자일적으로 진행하는 것이다. 예컨대 애자일은 불확실한 상황에 대한 접근법인데, 애자일을 도입할 때 확실성 위에서 진행하려고 한다면 문제가 된다. 애자일 방법론을 도입할 때 뭘 해야 할지 명확하게 알려달라고들 한다. 근데 그 모습은 전혀 애자일적이지 않다. 찾아가는 모습이 애자일이다. 어차피 방법론 도입이라는 것이 매우 불확실한 것이기 때문에 정답이 있을 수 없다. 이전 경험이 이번에도 정확히 들어맞는다고 말할 수도 없다. 이것은 모든 종류의 방법론 도입에 적용된다. 왜냐하면 방법론 도입은 태생적으로 불확실성이 높기 때문이다. 그럴 때 현명한 전략은 정해진 수순을 따르는 것이 아니라 곁에 있는 사람들과 주변을 탐색하고 조금 나아가고 확인하고를 반복하면서 우리의 현 맥락에 맞는 좋은 전략들을 스스로 만들어 나가는 것이 아닐까 한다. 그리고 이 과정에서 함께 자라기가 귀중한 나침반이 되어 줄 것이다.