함께 자라기, 애자일로 가는 길
자라기
핵심 키워드
-
야생 학습
-
학습하는 방법을 학습해야 한다.
당신이 제자리걸음인 이유
우리는 양치질이나 세수를 십수 년 해오고 있지만 그렇다고 작년에 비해 오늘 나의 세수하는 방식이 크게 나아진 건 없습니다. 이 책에서는 단순히 반복으로는 전문가나 달인이 될 수 없고, 실력을 높이기 위해서는 의도적인 수련을 해야 한다고 말합니다. 의도적인 수련을 하기 위한 필수 요건으로는 적절한 난이도가 있습니다. 수련을 하는 과제가 너무 쉬워도 안되고 너무 어려워도 안됩니다. 만약 과제의 난이도가 너무 쉽다면 내가 취할 수 있는 방법에 제한을 걸어 난이도를 높이는 등의 방법을 취할 수 있습니다. 만약 나의 실력에 비해 어려운 문제에 직면했을 때 해결 방안으로 아기 버전(다시 말해 v0.0.1)을 목표로 삼으라고 말합니다.
아기 버전?
아기 버전이란 동작할 수 있는 가장 간단한 단계를 뜻합니다. 만약 테트리스를 구현한다면 화면 위에 블록을 그리는 단계 정도가 아기 버전이라고 할 수 있겠네요. 새로운 프로그래밍 언어를 배운다면 hello world를 프린트하는 것으로 시작하는 것처럼 말이죠. 저에게는 이 부분이 크게 와 닿았습니다. 그래서 블로그에 아기 버전의 코드를 올리는 v0.0.1 프로젝트를 시작하기로 결심했습니다.
v001프로젝트!
개발자는 새로운 기술을 접하는 경우가 정말 많습니다. 특히나 주니어 개발자인 저에게는 매일매일 새로운 기술에 대해 알게 됩니다. 이러한 맥락에서 새로 알게 된 기술에 대해 처음부터 깊이 파기보다는 어떤 기술인지 어떠한 컨셉을 가지고 있는지 공부해보고 아기 버전 즉, 0.0.1 버전을 만들어 지속적으로 포스팅해가는 프로젝트입니다. 해당 프로젝트를 통해 학습 한 내용을 정리도 하고, 다른 개발자가 해당 기술을 이해하는데 조금이나마 도움이 되었으면 하는 바람입니다.
실수 예방 vs 실수 관리, 그리고 실수 훈련
실수 예방이란 실수를 미연에 방지하자는 태도입니다. 그에 반해 실수 관리는 실수 자체는 어쩔 수 없다고 받아들이면서 다만 실수를 했을 때 나쁜 결과가 발생하기 전에 빠르게 조치를 취하자는 태도입니다.
실수 예방 문화에서는 실수를 외면합니다. 실수한 사람을 비난하고 그것에 대해 논의하기를 꺼려합니다. 반대로 실수 관리 문화에서는 실수가 발생하면 서로 협력하여 회복을 돕고, 추후 실수에 대해서 논의하며 성장해 나갑니다. 결과적으로 실수를 관리하는 문화일수록 학습을 잘하게 됩니다.
더 나아가 실수 훈련이라는 개념이 있습니다. 실수를 안 하는 훈련을 하기보다는 실수를 했을 때 어떻게 대처하는가를 가르치는 교육이 더 효과적이라는 것입니다. 이 파트를 읽으면서 저는 큰 인사이트를 얻었습니다. 그동안의 저는 남들 앞에 서서 발표를 하거나 이야기를 할 때 절대 실수하면 안 된다는 강박이 있었던 것 같습니다. 그런 완벽주의자적인 성향인 오히려 더 실수하게 만들고, 긴장하게 만들고 안 좋은 결과를 만들었던 건 아니었나 깨닫게 되었습니다.
실수 훈련과 실수 관리...! 앞으로의 삶의 방향성이 조금은 달라질 것 같습니다.
전문가에 대한 오해
-
지식이 많은 전문가라고 해서 가르치는 것 또한 잘하는 건 아니다.
-
전문가는 모든 일을 혼자서 뚝딱 처리하는 천재가 아니다. 오히려 뛰어난 전문가일수록 협력하는 능력이 뛰어날 가능성이 높다.
어떠한 문제에 접근할 때 탑다운과 바텀업이라는 접근방식이 있습니다. 탑다운은 추상적인 숲에서 출발하여 나무로 가능 방식이고, 바텀업은 나무에서 출발하여 숲으로 가능 방식입니다. 바텀업은 탐색적 성격이 강하여 여기저기 찔러보고 방향을 바꾸는데 비해 탑다운은 훨씬 깔끔해 보여서 전문가일수록 모든 문제를 탑다운 방식으로 접근할 것 같습니다. 하지만 오히려 전문가일수록 계획을 수정하고 고쳐나간 횟수가 많았습니다. 처음부터 완벽한 설계를 하기보다는 탑다운과 바텀업 방식을 적절히 섞어 그때마다 더 좋은 방법을 찾는 것이죠.
이해를 돕기 위해 한 가지 예시를 들어보겠습니다. 스타크레프트라는 게임을 많이들 아실 겁니다. 게임에 미처 익숙해지기 전에는 게임 시작도 전에 이번에는 4드론을 해야지, 혹은 뮤탈 러시를 해야지 하는 등의 처음부터 구체적인 계획을 짜고 그 계획대로 게임을 하곤 했습니다. 하지만 프로게이머들은 상황에 맞게 자신의 계획을 수정하고(물론 큰 전략은 가져오겠지만) 상황을 반전시켜 게임을 승리로 이끌어 갑니다.
단일 공유, 최고 공유, 복수 공유 그리고 신뢰
두 명의 팀원이 아이디어 회의를 한다고 가정하겠습니다. 서로의 아이디어를 공유하는 방법에는 3가지가 있습니다.
-
단일 공유 : 하나의 아이디어를 가져와서 서로 공유한다.
-
최고 공유 : 몇 가지 아이디어를 생각해보기로 하고 그 중 가장 괜찮아 보이는 아이디어를 서로 공유한다.
-
복수 공유 : 몇 가지 아이디어를 생각해보기로 하고 모든 아이디어를 공유한다.
공유 방법에 따른 신뢰의 영향을 실험해보니 단일과 최고 공유의 방법에는 팀 간의 신뢰가 저하되는 결과가 있었지만, 복수 공유 후에는 신뢰도가 상승하는 효과가 있었습니다. 단일 공유와 최고 공유의 경우 나의 아이디어가 지적받았을 때 마치 나 자체가 지적받는 것처럼 느껴질 수 있고, 곧 자기 효능감 저하로 이어집니다. 복수 공유는 그런 불안감이 상대적으로 덜 해 피드백을 받아들이는 마음도 더 많고, 결과적으로 더 생산적인 대화가 가능해집니다.
이런 부분을 개발자에게 어떻게 적용해볼 수 있을까요? 개발을 하면서 팀 단위의 회의나 혹은 페어 프로그래밍을 많이 하게 됩니다. 그러면서 서로의 생각을 공유하는 일이 많습니다. 말하는 방식이나 회의 방식에 따라 회의를 거듭할 수록, 페어프로그래밍을 진행할 수록 우리는 서로 간의 신뢰를 깍아먹을 수도 있고, 신뢰를 더 쌓아갈 수도 있습니다. 회의나 페어프로그래밍을 끝낸 후 여러분의 감정에는 어떤 변화가 있었나요? 저는 어떨 때는 팀워크가 다져진 기분이 든 적도 있었고, 어떨 때는 위의 말처럼 신뢰가 저하된 것 같은 기분을 느낄 때도 있었습니다. 과연 그 차이는 어디서 오는 걸까요? 한 번씩 생각해보면 좋을 것 같습니다.
설득
-
누군가를 설득하려면 대상에 대한 이해가 필수이다
-
각각의 사람마다 사용하는 단어의 정의가 주관적이다.
-
객관이라는 개념 자체가 주관적이다.
-
또한 의사결정을 하는 과정에서 감정과 직관이 큰 역할을 하고 있어 감정적이 요소를 배제할 수 없다.
-
즉, 설득에 성공하려면 그 사람을 이해하는데서부터 시작해야 한다.
마치며
우리는 때로는 당연하지 않은 것들을 당연시 여길 때가 있고, 그리 훌륭하지 못한 방법임에도 나의 방법은 옳다고 생각하며 살아갈 때가 많습니다. 이 책은 저 자신을 돌아보며 삶의 큰 인사이트를 얻게 해 주었고, 저의 가치관에 영향을 준 책이었습니다.
책의 내용이 소프트웨어 개발에만 국한되어 있는 건 아니라 개발자가 아닌 분들에게도 추천드릴수 있는 책입니다.
만약 여러분에게 성장하고 싶은 마음이 있다면, 노력하는데 성장하지 못하고 있는 것 같다면, 꼭 한번 읽어보시기를 추천드립니다.
'책 📖' 카테고리의 다른 글
'단위 테스트 - 생산성과 품질을 위한 단위 테스트 원칙과 패턴'을 읽고 (0) | 2022.03.13 |
---|---|
존 도어의 OKR 핵심 내용 정리 (0) | 2021.01.19 |
클린 코드, 클린 코드 40 가지 원칙! (0) | 2020.11.25 |
소프트웨어 장인을 읽고 (1) | 2020.07.21 |
모던자바인액션 / 6장 스트림으로 데이터 수집(처리) 정리 (0) | 2020.05.02 |