함께자라기 : 애자일로 가는길
산업 자체가 제조업에서 데이터, IT산업으로 흘러가며 사람들의 수요는 크고 빠르게 변화한다.
결국 현대 사회는 너무 빠르게 변하기에 자신이 무엇을 원하는지도 정확하게 알 수없는 사회가 되었다.
이런 상황속에서 많은 사람들이 동의할 수 있는 새로운 가치를 만든다는 것은 매우 어려운 일이다.
그래서 기존의 설계와 구현의 절차적인 시스템을 넘어서, 빠르고 민첩하게 피드백을 받으며 지수적 성장을 이루는 애자일이 등장하게 되었다.
애자일의 효과와 함께 성장하는 팀이라는 개념을 처음으로 알게된 책이다.
너무 좋은 책이다.
세줄요약
소통은 추상화 규칙 발견에 큰 도움이 된다.
또한 새로운 사실과 같은 이익을 확률의 합연산으로, 실수를 확률의 곱연산으로 바꾼다.
코드 공유, 고객의 참여라는 적극적 피드백을 통해 제품과 팀을 지수적으로 발전시키자.
아래는 책 내용 정리이다.
야생학습
학교 학습과 반대되는 개념
야생학습의 특징
⇒ 학교 학습과 반대
- 야생학습은 대부분 협력적
- 비순차적임(범위, 기간이 정해져 있지 않음)
- 명확한 평가가 불가능함(명확한 평가 기준이 없음)
- 대부분 정답이 없음
- 목표가 불분명하고 바뀌기도 함
야생학습은 학교 학습과 명확하게 다른데도 불구하고, 우리는 학교 학습을 야생학습에 적용시킬려고 함
뽑고 교육하기
누구를 뽑을 것인가?
저경력 년차에는 실력차이가 많이 나지만, 5년이상으로 넘어가면 그렇게 차이가 나지 않는다. → 양적 경력보다는 질적 경력이 중요하다.
구조화된 행동중심적 인터뷰, 실제 작업을 해보는 작업 샘플테스트, 가능하면 실제 업무를 주고 짧은 기간동안 일을 해보게 하는 것을 권함
또한, 함께 일할 사람들이 면접에 들어가야 함
사람보다 중요한 것은?
잘 교육하고 성장하게 도와주는 조직체계, 시스템이다.
뛰어난 사람이라도 조직체계가 잘못되면 묻히고, 평범한 사람이라도 좋은 시스템에서는 뛰어난 성과를 낼 수 있다.
개발자가 할 수 있는 것
1만 시간 법칙의 진실
자신의 기량을 향상시킬 목적으로 반복적으로 하는 훈련의 시간이 1만시간을 넘어야 한다.
기량 향상을 목적으로 자신의 약점을 개선하려고 애쓰는 수련(공연자가 공연하는시간, 토너먼트시간은 포함되지 않음)
애자일 철학을 활용하기
짧은 주기의 피드백, 실수 교정을 통해 성장할 수 있음
- 피드백의 중요성결과 확인이 없는 시도는 무의미하다.
- 잘했나 못했나 명확하게 확인이 가능해야 행동을 조정하여 시도할 수 있다.
- 피드백의 시점피드백 주기를 짧게 하는 것이 학습을 위한 방법
- 결과를 매우 나중에 알 수 있다면 피드백이 힘들어짐
성장은 복리
성장은 복리다.
자신이 습득한 지식이나 능력은 복리로 이자가 붙음
부트스트래핑
자신의 신발 끈을 들어올려 자신의 몸을 공중에 띄움
피드백, 교정이 없는 경우의 조직(개인)
피드백과 교정이 있는 조직(개인)
이 둘의 작은 차이가 이런 그래프 차이를 가져옴
조직의 3가지 작업
- A작업한 회사의 제품과 서비스의 개발, 생산, 판매
- 겉에서 가장 잘 드러나는 수준
- B작업 : A작업을 개선하는 것
- 회사가 자신의 제품과 서비스를 개발, 생산, 판매하는걸 가능케 해주는 시스템과 프로세스를 설계하는 것
- C작업 : B작업을 개선하는것
- 제품 제작 프로세스의 효율을 높히는 것
빠른 성장을 위한 방안
자신이 이미 갖고 있는 것들을 활용하라
- 새로운것을 유입시키는데 집중하지 말고 이미 있는 것들을 사용하라
- 책을 몇권을 읽었는지 보다 어떻게 활용하였는지가 중요하다.
- 이미 갖고있는 것들을 연결하라
- 새로운 것과 기존것을 충돌시키라
- 현재의 일이 후의 밑거름이 되게 하라
외부물질을 체화하라
- 주기적인 외부자극을 자기화하라
- 내부 갈등을 해결하는데 노력하라
자신을 개선하는 프로세스를 만들고 그에대해 생각하라
- A작업을 되돌아보는 회고/반성을 하는 활동을 만들라
- 나를 개선하는과정을 어떻게 하면 개선할 수 있을지 고민하라
피드백을 자주받아라
- 사이클 타임을 줄여라
- 일찍, 자주 실패하라. 그리고 학습하라
- 자신의 능력을 높여주는 도구와 환경을 점진적으로 만들어가라.
학습프레임과 실행프레임
실행프레임
얼마나 잘하는가? 얼마나 좋은 성과를 내는가? ****점수를 매기는 것 ⇒ 잘하기
학습프레임
이미 알고있는 방식을 여러가지 방식으로 실험해보기, 내가 얼마나 배우느냐? ⇒ 자라기
학습하기 힘든 일이 대체되지 않는다.
인공지능이 학습하기 좋은 조건
- 목표가 분명함
- 매 순간 선택할 수 있는 선택, 행동이 유한하게 정해져 있음
- 매 순간 목표에 얼마나 근접했는지를 알 수 있음
- 주로 외부요소가 없는 닫힌시스템에서 일함
- 과거의 선택과 결과에 대한 구조화된 기록이 많다.
⇒ 정 반대가 인공지능이 학습하기 힘든 조건
컴퓨터로 대체되기 어려운 변수 5가지
- 독창성
- 주어진 문제나 상황에 대해 특이하거나 독창적인 생각을 해내기
- 사회적 민감성
- 타인의 반응을 알아차리고 그들이 왜 그렇게 반응하는지 이해하기
- 협상
- 사람들을 화해시키고 서로간의 차이를 조정하려고 노력하기
- 설득
- 타인의 마음이나 행동을 바꾸기
- 타인을 돕고 돌보기
- 개인적 도움, 치료, 감정적 지지 등 타인에 대한 개인적 도움을 제공하기
컴퓨터 프로그래머와 소프트웨어 개발자
정의
컴퓨터 프로그래머 : 요구사항, 스펙대로 코드를 만드는 사람
소프트웨어 개발자 : 요구사항을 분석하고 그에 대한 솔루션을 제시하는 사람
⇒ 컴퓨터 프로그래머는 대체되기 쉬움, 그러나 소프트웨어 개발자는 대체되기 힘듦
남이 시킨 일만 하면 성장하기 힘듦
달인이 되는 비결
- 실력을 개선하려는 동기가 있어야함
- 구체적인 피드백을 적절한 시기에 받아야함
중요한 것은 동기와 피드백
의도적 수련
- 실력 조정하기 → 기존의 도구 없이 수련
- 난이도 조절하기 → 시작은 쉽게, 점점 난이도 증가
프로그래밍 언어 배우기
- 튜토리얼 읽을 때 만들 것을 생각하고 읽기
- 공부시, 표준 라이브러리 소스코드 읽기
- 공부중 다른 사람의 코드에 내가 필요한 기능 추가하기
전문가가 구체적 사건에 대해 말하도록 유도하기
전문가의 가르침은 자신의 사용하는 것들 중 30%에 불과함- 전문가가 문제를 해결하기 위해 어떤 과정을 거치는지를 알아야함
- ⇒ 전문가를 관찰하고 인터뷰 하기
실수는 예방이 아니라 관리하는 것이다
교육 중 실수를 유도해야, 그 학습의 전이가 빨랐음
실수를 해보는 것이 학습을 하는 가장 빠른 길
실수를 예방하는 문화는 실수시에 책임자를 찾아 처벌하는 문화를 만들 수 있음
전문가는 혼자가 아니다
뛰어난 SW개발자일수록 타인과 상호작용에 더 많은 시간을 쓴다.
사회적 신뢰가 없으면 어떤 행동을 해도 악의적으로 보인다.
함께
함께 하면 더 많은 것들을 더 빠르게 해낼 수 있다.
협력은 추상화된 규칙을 찾아내고, 일반화하는데 큰 도움을 준다.
코드의 추상성, 품질을 높이기 위해서는 페어프로그래밍을 하라
복수공유
아이디어를 낼 때 여러가지를 제시하여 그 중 best를 뽑도록 하는 것이 가장 솔직한 반응을 얻어낼 수 있다. 작업물이 하나만 있다면 작업물을 상대로 은연중에 생각하게 되어 솔직한 반응을 얻지 못하거나, 받는다 해도 좋지 않은 감정을 남길 수 있다.
하향식 접근에 대한 미신
전문가는 상향식(top down)으로 접근한다는 미신이 있다.
오히려 전문가 일수록 bottom-up을 사용하며, 초기 설계를 가장 많이 수정한다.
협력과 마이크로 인터섹션
마이크로 인터섹션(어떤 행동에 대한 작은 반응들)이 전체 협력의 성공 여부를 결정한다.
마이크로 인터섹션이 내 생각이나 의견, 질문, 걱정, 혹은 실수가 드러났을 때 처벌받거나 놀림받지 않을거라는 믿음을 만든다.
소통과 확률론
실수
소통은 실수를 and조건으로 만든다. 같은 사실을 공유함으로서 서로가 그 사실에 대한 실수들을 고려하고, 결과적으로 실수에 대한 확률이 곱연산으로 작용한다.
즉, 실수가 명확하게 줄어든다.
이익
소통은 이익을 or조건으로 만든다. 새롭게 알게된 사실을 공유하여 서로가 그 사실을 알게되어 경험과 그 이익의 확률은 합연산으로 작용한다.
즉, 이익이 극대화 된다.
애자일에 필요한 가장 큰 두가지
- 고객참여
- 코드공유
두가지 모두 피드백을 증대시킴 → 성장하는 제품, 팀을 만들어 나갈 수 있음