[Book Review] 함께 자라기-애자일로 가는 길 : 학습하는 방법 학습하기
14 Jul 2019 |
함께 자라기 - 애자일로 가는 길 리뷰
“학습하는 방법을 학습한다.” 코드스쿼드에서 iOS 코스를 시작한 이후로 내 원래 학습방식, 생각하는 방식에 변화를 많이 주었다. 맨 처음 오리엔테이션 하는 날에 추천받은 학습에 관련한 책을 드디어 읽었다. 쉽게 읽히는 책이라 몇시간 걸리지 않았다.
그 동안 내가 학습해온 방식이 부적절했고, 많이 개선했다고 생각했지만 이 책을 보니 다시 원점에 선 느낌이었다. 하지만 매우 긍정적인 원점이었고, 명명하지 못했지만 내가 공감하는 부분들도 많았다.
학교 학습 vs. 야생 학습
야생학습의 특징은 다음과 같다.
- 정답이 정해져있지 않다
- 자료에 한정이 없다
- 비순차적 : 공부하는 순서가 정해져있지 않다
- 평가를 받지 않는다.
코드스쿼드에서 공부하면서 내 독학 방식이 잘못 되었음을 처음 깨달았을 때, 느꼈던 점들이다. 그동안 개선하려고 노력했지만 읽는 내내 내 안의 사고방식은 아직 남아있다는 사실도 깨달았다.
특히 비순차적! 공부의 순서가 정해져있지 않다는 태도는 제일 체화되지 않은 부분이었다. 항상 스텝을 순차적으로, 개념을 공부할 때도 베이스부터 먼저 끝내야지 그 다음 정리를 하려고 했다. 하지만 정답이 정해져 있지 않은 공부에서, 이 부분의 기반 지식은 다시 다른 분야의 기반 지식이기도 했고, 이렇게 진행하다가 결국에 원래 정리하려던 그 개념은 뒤로 밀리는 경우가 다반사였다. 이 부분을 다시 유의해서 학습해야겠다.
실수 예방 X 관리 O
실수와 이에 관련된 편견? 잘못된 생각도 책에서 다룬다. 이 부분은 내가 제일 공감했던 부분이다.
- 실수를 예방한다 : 실수 발생가능성을 아예 차단하자
- 실수를 관리한다 : 실수의 발생 가능성을 인정. 대신 더 나쁜 결과로 이어지기 전에 미리 발견하고, 빠르게 대처하는 방법에 신경쓰자
일반적으로 실수를 예방하는데 초점이 많이 맞춰져있고, 실수의 발생에는 엄청나게 부정적인 평가를 내린다. 그러나 나의 경험, 그리고 사고방식에서는 이미 이 방법이 틀렸다고 인지하고 있었다.
디즈니 컬리지 인턴십에서 나는 Magic Carpets of Aladdin, 일명 알라딘의 매직카펫 놀이기구를 담당하는 Attraction Cast Member 였다. 아무래도 놀이기구라서 Safety 는 최우선 가치였고, 트레이닝 동안에는 기구가 갑자기 멈출 때 등 비상상황에 대한 훈련과 평가가 비중이 제일 컸다.
실제로 내가 일하는 동안 기구는 자주 멈췄다. 아웃도어에 있는 놀이기구라 비가 많이 오는 날 다음날이면 말썽을 부리며 작동 안하기 일쑤였고, 버튼을 조금만 늦게 눌러도 빨간불이 들어왔다. 나는 비상상황, 즉, 기구가 멈춰서 매니저와 엔지니어에게 전화하는 상황이 제일 두려웠다. 그래서 실수를 예방 하고 싶었다.
하지만 내가 아무리 조작을 잘 해도, 오래된 놀이기구는 내 맘대로 움직여주지 않았다. 점차 익숙해지니 장애가 발생했을 때, 빠르게 대응하고 처리하는게 더 중요하다는 깨달음을 얻었다. 이미 발생한 장애를 빨리 관리자들에게 알리고, 게스트들에게 complimetary ticket 을 최대한 빨리 뿌리는게 제일 좋은 대처 방안이었다. 또한 매니저들도 원인이 나인 혹은 놀이기구인 장애가 발생시 내 실수에 대해 뭐라고 하기 보다는 다시는 더 나쁜 결과로 이어지지 않도록 코칭으로 이야기를 풀어나갔다. 실수는 정말로 관리 해야 하는 것이다.
시스템 운영 업무를 맡을 때도 그랬다. 내가 아무리 코드에 버그가 없어도, 모니터링을 잘해도, 네트워크 장애나 협력업체에서 데이터가 잘 못 들어와서 내 시스템이 제대로 돌아가지 않은 적이 훨~씬~ 많았다. 그때마다 피해 규모가 최소가 되도록 미리 막고, 대응을 빠르게 하는 것이 더 중요했다. 사수는 그럴 때 마다 실수에 초점을 맞추기 보다는 빠른 대처를 더 강조했다. 그리고 비슷한 상황 발생 시 피해를 최소화 할 수 있는 방법을 고안하도록 지도했다.
나는 항상 실수/장애를 대비해서 나만의 업무 cheat sheet 를 미리 만들어 대처했다. 인턴십에서도 업무에 있어서도 예측하지 못한 상황이 오면 패닉할 수 밖에 없다. 멘붕을 안한다면 진짜 거짓말이다. 하지만 이 cheat sheet 만 있으면 걱정이 없다. 안심할 수 있는 장치를 만드는 것이다. 멘붕이 왔을 때 키워드만 검색하면 해결 방안, 혹은 로직이 바로 눈에 보이게끔 도식화를 해서 만들었다. 나중에 이 cheat sheet 는 좋은 인수인계 자료가 되기도 한다. 이 블로그 이름도 여기서 아이디어를 얻었다.
달인이 되기 위한 두 가지 조건
- 동기 - 실력을 개선하려는 동기가 있어야 한다
- 구체적인 feedback 을 적절한 시기에 받아야 한다.
1만 시간의 법칙처럼 무조건 오래 반복한다고 해서 달인이 될 수 없다. 항상 더 개선하고, 더 나아지려는 방향으로 반복을 해야 달인이 될 수 있다.
나는 기존에 성적을 잘 받기 위해 요약정리를 하고 그 필기를 최소 5회독은 하고 시험장에 들어갔다. 덕분에 내 학점은 좋지만 이 방법은 시험 점수를 잘 받기 위한 방법일 뿐, 달인이 되고 진정한 학습을 하기엔 부족함이 많다는 것을 깨달았다.
물론 반복과 반복적 수련도 중요하다. 장기기억에 들어갈 수 있도록 지식을 쌓는 것도 중요하다. 하지만 그저 생각 없는 똑같은 내용의 반복은 진보할 수 없다.
내가 퇴사한 이유도 실력 개선을 할 수 있는 동기가 없었고, 적절한 피드백을 받지 못해서이다. 실력을 개선하기 위해 교육도 더 듣고 싶은데 눈치 주었고, 리팩토링을 몇시간 걸려 하면 그만 보라고 했다. 피드백.. 코드 리뷰는 없었고 코드가 돌아가면 바로 운영서버에 반영했다. 달인이 절대 될 수 없는 환경이었다.
의도적 수련 방법
작업의 난이도와 현재 실력의 위치에 따른 수련 방법은 다음 4가지가 있다.
- A : 실력 »> 작업 난이도
- B : 실력 «< 작업 난이도
- C : 실력 == 난이도 (ideal case)
- a1 : 실력 낮추기
- ex) 항상 쓰는 툴을 안 써서 더 힘들게. 자신의 실력을 낮춰서 해보기
- a2 : 난이도 높이기
- Ex) 제약 추가하기 - 100시간 주어졌다면 10시간 안에 완료하기
- b1 : 난이도 낮추기
- 일의 아기버전. 기초버전 부터 해보기
- b2 : 실력 높이기
- 사회적 접근 - 나보다 뒤어난 전문가의 도움 받기
- 도구적 접근 - 도구 접근 활용. 예를 들어 오픈소스 라이브러리를 사용
- 내관적 접근 - 그동안의 경험에서 비슷한 경험을 되살려 문제해결에 적용하기
Top-down fantasy
복잡한 문제일수록 체계적인 설계가 필요하다?
답은 X라고 한다. 실제로 실력 좋은 전문가들은 문제를 해결할 때, 무조건 탑다운으로 접근하지 않는다.
문제가 왜 복잡한지, 그 원인에 대해 생각해보자. 문제가 복잡한데는 그 문제가 잘 정의되지 않았기 때문이다. 우리가 풀어야 될 문제는 번호를 딱딱 매겨서 전체가 설명되는 것이 매우 드물다. 물론 잘 정의된 문제는 탑다운으로 요구사항 분석-설계-구현하면 정말 잘 해결할 수 있다. 하지만 그렇지 않은 문제에도 탑다운을 사용하면 제대로 해결하기 어렵다고 한다.
비전문가일수록 계획에 집착하고, 전문가일수록 계획을 수정해나가며 진행한다. 꼭 처음의 설계, 구조대로 문제를 해결해야 결과적으로 성공하는 것은 아니라는 의미이다.
나도 계획을 중간중간 수정했을 때, 더 좋은 결과를 얻은 경험이 있다. 캡스톤 디자인 수업에서 AR 육성 시뮬레이션 게임을 개발했을 때였다. 조원 모두 프레임워크, 엔진, 언어를 한 번도 써본 경험이 없었고, 정말 맨 바닥에서 시작한 말 그대로 비 전문가 였다.
처음 계획에는 타임 플로우 그리고~ 언제부터 언제까지 스터디하고 했지만 실제로 계획은 유동적으로 많이 바뀌었다. 또한 처음 설계에 집착하지 않고 우리가 할 수 있는 것부터 차근차근 해 나가고, 그 안에서 진전 상황에 따라 구조도 변동해 나갔다. 결국엔 처음에 우리가 생각한 것보다 많은 기능을 구현할 수 있었고, 내 인생에서 가장 만족스러운 프로젝트로 기억한다.
Reference
함께 자라기 - 애자일로 가는길 (김창준)