이 글은 챌린지 과정을 소개하는 정보글이라기보단 챌린지 과정을 겪으며 느꼈던 경험들과 나의 성장을 회고해보는 일종의 칭얼거림이다. 챌린지에 대해 다양한 정보가 필요하신 분들이라면 다른 챌린지 후기 글들이 더 도움이 되실 것 같다.
다만, 저의 경험을 통해 성장에 대한 동기부여를, 혹은 챌린지 과정에 대한 실마리를 조금이라도 얻어갈 수 있다면 뿌듯할 것 같습니다.
베이직 과정에서 나의 목표는 "나만의 학습법 찾기" 였고 이는 챌린지 과정까지 이어져왔다.
베이직 과정에서는 매일 부여되는 미션을 통해 어제의 문제점을 개선하고 오늘의 문제점을 내일의 목표로 잡아가며 어제보다 더 향상된 문제해결력으로 미션에 도전하려 노력하였다. 매일 하나의 문제들이 스택처럼 쌓여갔고 마지막 미션을 진행할 때 쯤에는 대여섯 개의 개선점들을 함께 문제를 해결하려 시도하였던 경험이 나에게는 하나의 성장이자, 인상적인 경험으로 남아있다.
하지만 이러한 경험만으로 ‘나만의 학습법이 확립되었다’고 말하기는 어려웠다. 이는 성장을 체감할 수 있었던 하나의 과정이었을 뿐, “나의 학습법은 어제의 문제를 오늘 개선하며 문제를 해결하는 것이다”라고 단정하기에는 다소 부족함이 있었다.
이런 나의 목표는 아직 달성되지 못한 체로 챌린지 과정에 넘어오게 되었다. 챌린지 과정에서는 과정의 이름답게 나의 한계를 시험해볼 수 있는 환경 속에서 미션이 진행되었다. '하루'라는 기간 안에 '나의 실력으로는 마무리할 수 없는 미션'에 대해 최선의 결과물을 도출하여 제출해야 했다. 사람을 극한까지 밀어붙이면 각성한다는 말에는 공감하였지만 실제 그러한 환경 속에서 미션에 몰입하다보니 이전에는 느껴보지 못한 새로운 경험들을 마주할 수 있었다.
그 과정에서 가장 크게 느낀 점은 역설적이게도 ‘나’라는 존재를 객관적으로 돌아볼 수 있었다는 것이다. 개발 경험에 앞서, 내가 어떤 면에서 강점을 지니고 있으며 예상치 못했던 단점은 무엇인지 파악할 수 있었고, 이를 통해 성취와 좌절을 반복적으로 경험할 수 있었다. 그리고 '나만의 학습법'에서 중요한 점은 지금까지 찾고자하였던 '학습법'이 아닌 '나'에 있다는 사실도 함께 깨달을 수 있었다.
결론적으로 아직까지 명확하게 "나만의 학습법은 무엇이다"라고 명쾌하게 말할 수 있지는 못하다. 다만, "어떤 것을 학습할 때는 이렇게 학습하는 것이 좋을 것 같다"라고 간단히 판단할 수 있을 정도라고 생각한다.
한편으로는 ‘나만의 학습법’이 과연 한 마디로 정의될 수 있는 것인지 고민이 들었다. 예를 들어 누군가 나에게 “배드민턴을 잘하는 방법이 무엇이냐”고 묻는다면 쉽게 답하기 어렵지만, “어떻게 하면 공격을 더 잘할 수 있을까” 혹은 “스텝을 더 빠르게 밟는 방법은 무엇일까”처럼 구체적으로 묻는다면 보다 쉽게 답할 수 있을 것이다. 이처럼 ‘나만의 학습법’ 또한 하나의 방식으로 규정되기보다는, 개발의 다양한 측면에 따라 달라질 수 있는 것이라고 생각하게 되었다.
그렇기에 ‘나’라는 사람에 대한 객관적 이해가 중요하다고 생각한다. 학습법이 여러 방식으로 나뉠 수 있다면, 이를 다양하게 시도해보고 자신의 특성에 가장 잘 맞는 방법을 선택하는 것이 필요하기 때문이다. 나 또한 이번 과정을 통해 여러 방식을 시도해볼 수 있었고, 그중 가장 효과적이었던 방법은 바로 ‘시각화’였다.
개념을 학습하다 보면 어려운 용어들이 점차 등장한다. 처음에는 이해하며 넘어갈 수 있지만, 여러 개념을 동시에 학습하게 되면 이전에 배운 내용을 쉽게 망각하곤 했다. 특히 구현 과정에서는 하나의 개념이 아니라 여러 개념을 유동적으로 결합해 코드에 녹여내야 하기에, 개별 개념 단위가 아닌 전체 흐름을 이해하는 것이 중요했다.
나에게 이러한 문제를 가장 효과적으로 해결해준 방법은 ‘시각화’였다. 이를 위해 다이어그램을 적극적으로 활용했는데, 하나의 개념을 이해하기 위해 도형을 고민하며 배치하는 과정 자체가 개념에 대한 깊이 있는 이해를 가능하게 했다. 이렇게 하나의 개념에 대해 여러 다이어그램을 만들다 보니, 점차 다양한 개념들을 시각적으로 정리할 수 있었으며 각 개념들을 유동적으로 연결하여 하나의 흐름을 표현하는 다이어그램으로 수정하면 이것이 미션 구현을 위한 하나의 설계로 자리매김하게 된다.
다이어그램을 통한 시각화는 학습에 대한 이해뿐만 아니라 직접 도형을 통해 다이어그램을 제작하는 시간이 소요되기 때문에 사람마다 호불호가 갈리는 학습법이다. 그렇기에 '나'라는 사람에 맞는 학습법이지, 모두에게 맞는 최적의 학습법이라고 말할 수는 없으며 이러한 이유로 '나'에 대한 객관적인 판단이 학습법을 선택하는데 중요한 역할을 할 것이라 생각하다.
물론 ‘시각화’ 외에도 다양한 학습법을 챌린지 과정에서 경험하고 활용해볼 수 있었다. 다만 이를 글로 정리할 만큼의 요령은 아직 부족하다고 느낀다. 앞으로는 학습 과정에서 어떤 방법을 채택했는지, 그것이 얼마나 효율적이었는지, 또 개선할 부분은 무엇인지 의식적으로 회고하며 나만의 학습법을 체계적으로 구축해나갈 필요가 있다고 생각한다.
챌린지 과정동안 가장 인상깊게 남아있는 나만의 목표는 "하나의 큰 덩어리를 작은 단위로 쪼개면서 학습과 구현을 반복하는 것" 이었다. 점차 미션의 단위가 커질수록 스스로 작은 단위로 쪼개서 구현해내는 것이 중요하다고 판단하였고, 어떤 범위로 미션을 자르고 어떤 우선순위를 갖고 어떤 작업을 먼저 시작할 지 그리고 작업을 위해 어떤 것을 얼마나 학습을 해야할 지 고민하는 연습을 많이 도전해보려 노력하였던 것 같다.
이러한 과정에서 가장 중요하게 생각하였던 핵심 원칙인 "빠른 실패와 개선" 을 항상 고려해서 미션을 진행하였다. 3주차까지는 미션에서 필요한 개념을 '학습'하는 것에 몰입하였던 반면, 마지막 4주차는 '구현'에 집중해보고 싶었고 이를 위한 나만의 절차를 구성하였었다.
예를 들어, 하나의 커뮤니티 사이트를 만드는 미션이 주어졌다고 가정해보았다.
이러한 방식으로 최대한 학습의 시간을 줄이고 주어진 시간 내에 미션을 최대한 구현해볼 수 있도록 노력하였다. (하지만 미션을 완성하여 제출한 적은 없다 😅)
그럼에도 불구하고 학습에 집중하여 미션에 몰입하였을 때에 비해 새로운 장단점들을 경험해볼 수 있었다.
Learning by Doing
부스트캠프에서 강조하였던 'Learning by Doing'에 대해 다시 한 번 경험해볼 수 있었던 것 같다. 해당 개념은 말 그대로 직접 해보면서 배우는 것을 강조한다. 미션에 필요한 내용을 학습하는 것에서만 그치는 것이 아닌, 직접 학습한 내용을 응용하여 구현해내는 과정 속에서 학습한 지식을 다시 한 번 점검하고 더 깊이 이해해볼 수 있는 기회를 제공한다.
또한, '완벽한 설계는 없다' 라는 말에 대해 더 공감해볼 수 있었다. 기존에 학습에 집중하여 몰입하였을 당시에는 구현해야할 것보다 더 넓고 깊은 지식들을 선행하여 학습하였기 때문에 빠르게 구현하기보다 개념적으로 완벽한 설계에 집착하였던 것 같다. 반면에 구현을 위한 지식만 채워가다보니 불완전한 설계를 빠르게 구축하게 되고 개선을 통해 그 완성도를 높여갈 수 있었다.
오히려 학습이 부족하였기 때문에(구현에 필요한 학습만 진행하였기 때문에) '불완전'하다는 것에 대해 당연하게 여길 수 있게 되었고 빠른 구현을 통해 지식을 점검하며 설계를 수정하고 개선시킬 수 있었기에 Learning by Doing을 체감해볼 수 있는 기회를 많이 얻었다고 생각한다.
성취감
하나의 큰 미션을 여러 작업으로 분리시키고 빠르게 구현하고 개선하다보니 작은 단위의 작업이 마무리될 때마다 작은 성취감을 빠르게 얻어갈 수 있었다. 학습에 몰입하였을 당시에는 더 깊은 개념을 학습하고 몰랐던 지식에 대해 탐구해가는 과정에서 희열을 느꼈다면, 이번에는 지식을 직접 코딩을 통해 손수 구현하고 이를 검증하는 과정에서 큰 희열을 느낄 수 있었다.
특히 이번 과정에서 공부하였던 A라는 개념에 대해 구현하여 미션을 제출하였는데, 다음 날의 동료들과의 피드백을 통해 개념에 대해 구현이 잘못되었다는 것을 깨닫게 되었다. 그 다음 날에 다시 부족했던 개념에 대해 더 깊이 학습을 보충하였고 잘못된 구현방식에 대해 개선하였고 스스로 구체적으로 문서화를 진행하였다. 이 후에 다시 학습하였던 내용과 개선한 작업에 대해 동료분들에게 자세히 설명을 드릴 수 있었었는데, 이러한 과정이 Learning by Doing 을 통해 얻을 수 있었던 경험과 성취감이라고 생각한다.
학습과 구현의 깊이가 불만족스럽다.
미션의 제한 시간은 하루였고 하루 안에 구현과 미션을 빠르게 진행한다고 하더라도 내가 해낼 수 있는 학습과 구현의 깊이는 한계가 명확하였다. 기존에 학습에만 몰입할 당시에 학습과 구현이 약 8:2의 비율로 이루어지다보니, 구현을 하지 못하더라도 깊이있는 학습에 대해(이것을 야크털 깎이라고 불렀다 🦬) 스스로 만족스러웠다.
이에 반면, 빠른 구현과 최소한의 학습을 하다보니 약 5:5 정도의 비율을 갖게 되었고 이에 대해 '깊이 있다'라고 생각하지는 못하였던 것 같다. 그러다보니 더 깊이 공부하고 싶은 개념이 있어도 '이게 구현을 위해 필수적인가?'라는 질문을 스스로 되새기면서 넘겼던 부분도 존재하였기에 아쉬움이 남을 수 밖에 없었다.
하루라는 미션의 제한시간이 존재하였기 때문에 자연스럽게 학습과 구현의 밸런스가 균형을 이룰수록 그 깊이가 얕아질 수 밖에 없다고 생각한다. 그에 반면에 균형있는 밸런스는 구현을 위한 적당한 지식을 학습하고 빠르게 구현에 녹여낼 수 있다는 점에서 장점을 가졌던 것 같다.
빠르게 학습할 수 없는 개념은 어떻게 공부해야 하나
이 부분이 사실 이번 주의 가장 큰 난관이었다. 만약, 구현을 위한 최소한의 학습이 몇 시간이 걸린다면 어떻게 할 것인가? 4주차의 목표를 세웠을 때는 이에 대해 생각치도 못했기 때문에 고민해보지 못했다. 하지만 실제로 이러한 상황에 마주하다보니 정신적으로 무너져버렸던 것 같다.
나는 빠르게 학습하고 구현을 해야겠는데, 학습해야하는 개념이 너무 어려워 깊이 들어갈 수 밖에 없게 되니 스스로 마음이 조급해지면서 학습과 구현 모두 놓쳐버리는 경험을 하였다. 그렇게 마음대로 학습도 진행하지 못하게 되고 부족한 지식으로 구현해내려 하니 어떤 것을 구현해야할 지도 감을 잡지 못하게 되며 정신줄을 놓쳐버리며 시간을 낭비하게 되었다. 결국, 잠시 손을 놓고 샤워하면서 곰곰히 생각을 다시 정리해보았다.
결국, 다시 처음으로 돌아가자고 마음을 먹었다. 구현을 위한 학습이 아무리 오래 걸리더라도 결국 학습을 건너뛰면 구현할 수 없다는 것을 몸소 체험해버렸으니 다시 처음부터 학습을 다시 시작하게 되었던 것 같다. 이러한 경험에서 오히려 마주한 문제에 대해 유연하게 계획을 수정할 수 있어야 한다는 것을 배웠던 것 같다.
"무조건 빠르게 학습하고 구현할 거야!" 라는 생각으로 접근하는 것보다 어려운 개념에 대해서는 학습과 구현을 8:2 비율로, 적당한 난이도에 대해선 5:5, 알고있는 개념에 대해서 2:8의 비율로 유연하게 조정해가며 접근하는 것이 문제 해결에 있어서도, 나의 정신력에 있어서도 유리하다라는 것을 뼈저리게 배울 수 있었다.
‘개발 실력이 늘었는가?’라는 질문에는 쉽게 답하기 어렵다. 그러나 하루 평균 14시간 이상 하나의 문제 해결에 몰입하며 학습하고, 나만의 방식으로 정리하며, 이를 실제 구현에 적용해 문제를 해결해온 과정을 통해 분명히 성장했다고 말할 수 있다.
그렇다면 성장은 언제 체감해볼 수 있었을까?
학습한 내용을 나만의 언어로 재정립
기존에는 직접 학습한 내용에 대해 정리해본 적이 없거나 적혀있는 내용을 요약하거나 따라 적으며 학습하였던 것 같다. 그에 반면, 챌린지 과정동안에는 직접 자료를 찾고 학습한 내용을 모두 요약하며 이해한 이후에 나만의 언어로 재정립하여 문서화하는 습관을 가지려 노력하였다.
어떻게 이런 변화가 생겼나를 고민해보면 아마 미션에서 요구하는 각 개념들이 쉽게 구글링을 통해 찾아낼 수 있는 간단한 내용들이 아니었기 때문이라는 생각이 든다. 물론 미션을 포괄하는 대표적인 키워드들은 쉽게 내용들을 찾아 학습할 수 있지만 더 깊이 들어갈수록 점차 영문 자료들을 참고하게 되고, 여러 개념들을 연관지어 학습하다보면 AI를 통해 동작의 흐름을 이해하게되는 순간들이 존재한다.
이렇게 구체적이면서 다소 모호한 개념들을 학습하다 보면, 참고 자료를 보더라도 이해하기 어려운 부분이 많다는 것을 깨달았다. 게다가 내가 무엇을 모르는지조차 알지 못했던 순간도 적지 않았다. 이러한 경험이 쌓이며 나는 알고 있다고 생각하였던 지식을 다시 한 번 나만의 언어로 정리하였고 이를 통해 모르는 개념을 분류하고 이해하려는 습관을 가지게 되었다.
내가 이해하였다고 생각한 개념에 대해 다시 한 번 나만의 언어로 작성하다보면 끊기는 부분이 분명 존재할 것이고 이에 대해 개념을 다시 한 번 보충해가면서 지식을 강화시켜나갔다. 또한, 각 개념들을 이어가며 흐름을 스스로 정리해보는 과정 또한 각 개념들의 지식을 다시 한 번 복습하고 개념 간의 관계를 고민해보면서 설계를 진행해볼 수 있다는 장점을 가질 수 있었다.
학습한 내용을 녹여내며 직접 구현
‘Learning by Doing’ 과정은 나에게 성장과 개발의 성취감을 가장 크게 느끼게 해준 경험이었다. 이론으로 개념을 학습하는 것과, 이를 직접 코드로 구현하는 경험은 완전히 다른 차원의 과정으로 느껴졌다.
충분히 학습했다 하더라도 바로 완벽하게 구현할 수는 없었으며, 구현 과정에서의 추가 학습이 필수적이었다. “완벽한 설계는 없다”는 말처럼, 아무리 많은 시간을 들여 설계를 구상하더라도, 코드를 작성하며 기존 설계는 계속 수정될 수밖에 없음을 경험했다.
이는 이론적인 학습과 실제 구현에서 오는 차이 때문이며 학습은 개념을 ‘알아가는 것’이라면, 구현은 이를 ‘체득하는 것’이라 생각한다. 실제 구현 환경에서는 다양한 제약 조건이 존재하였고, 여러 개념들을 응용하며 적용해야 했기 때문에 이론만으로는 충분하지 않은 경우가 많았음을 느꼈다.
특히, 학습한 내용을 코드로 구현하며 반복적인 에러와 디버깅 과정을 겪었고, 이러한 과정을 통해 더 깊이있는 학습과 실무적인 개념의 활용을 경험해볼 수 있었다. 또한 구현 후 코드를 점검하고 개선하는 과정을 반복하면서, 학습한 내용을 단기 기억에서 장기 기억으로 옮기고 더 오래 유지할 수 있는 기회를 얻을 수 있었다.
동료들에게 나의 근거에 대해 명확한 설명
나만의 언어로 재정립된 학습 내용과 이를 직접 코드에 녹여가며 구현한 내용들은 결국 나의 선택과 근거에 따라 이루어진 과정들이다. 그렇기 때문에 이에 대해 옳은 지, 틀린 지에 대해 스스로 판단하기 어렵지만 내가 왜 그런 선택들을 하였는 지에 대해서는 명확하게 설명해볼 수 있었다.
미션 구현을 위해 거쳐온 나의 수많은 선택들은 '설계' 단계에서 가장 많이 드러났다고 생각한다. 내가 어떤 것을 얼마나 학습할 것인지, 학습한 내용을 어떻게 미션에 응용할 것인지, 구현은 어떻게 해나갈 것인지 등 다양한 질문들에 대한 나의 선택은 구현을 설계 단계에서 대부분 이루어진다.
그리고 나의 선택들을 통해 구축된 나의 설계도는 항상 다이어그램을 통해 시각화를 시켜두었다. 다이어그램을 작성하는 데는 시간이 다소 소요되었지만, 전체적인 구조를 한눈에 확인할 수 있어 구현 과정에서 각 기능들에 대해 다이어그램을 빠르게 참고해나가며 구현해갈 수 있다는 이점이 있다.
이 뿐만 아니라 다이어그램을 통해 설계에 대한 나의 선택들을 동료들에게 명확하게 설명할 수 있다는 점이 나에게 가장 큰 이점이었다. 문자로 작성된 내용들로 설명을 할 때는 나의 의도와 달리 각자의 머리 속에 각기 다른 그림이 그려질 수 있어, 집중을 분산시키거나 명확한 의견 전달이 어려웠지만, 하나의 다이어그램을 그리고 이를 통해 동료들과의 피드백을 주고 받음으로써 더 구체적인 지점에 대해 동료들과 대화를 해볼 수 있을 뿐만 아니라 나의 설계 의도에 대해 더 명확하게 전달해볼 수 있었다.
이와 같이, 다이어그램이 단순히 소통의 도구로 사용하기 보다는 하나의 미션을 포괄하는 전체적인 설계도 역할을 해주며 나의 사고 과정을 반영한 결과물로 동료들에게 전달될 수 있다보니, 나의 근거를 담은 의도들을 명확히 동료들에게 전달할 수 있었고 이런 도구들을 활용하여 개발에 대해 근거있는 주장을 해볼 수 있었던 경험이 내가 성장하였음을 느낄 수 있게 해주었다.
멤버쉽 과정에서 떨어지게 된다면 AI를 통해 다양한 미션을 생성해서 나만의 챌린지를 이어나갈 계획이었다. 하지만 운이 좋게도 멤버쉽 과정에 합격하게 되었다.
챌린지 기간동안 '멤버쉽'이라는 단어에 대해 미친듯한 집착을 하였는데 실제 합격하니 마음의 안도가 찾아왔던 것 같다. 항상 새로운 과정에 들어가기 전에 설렘보단 두려움이 앞서는데, 지금도 '내가 잘해낼 수 있을까?'같은 두려움이 앞서는 것 같다. 막상 들어가면 기존에 두려워했던만큼 어려움은 없었기에 이번 과정 또한 내가 할 수 있는 최선을 다하려 한다.
+) 아 챌린지 과정 후기에는 이 말을 꼭 넣으려 하였다.
만약 챌린지 과정에서 불합격을 하였더라도 아쉬움의 고통을 크겠지만 후회는 하지 않았을 것 같다. 다시 돌아가더라도 지금 내가 해왔던 만큼 다시 할 수 있을 자신이 없다. 그만큼 나는 내가 할 수 있는 모든 것을 쏟아부워서 챌린지 과정에 몰입하였다고 생각한다.
정말 운이 좋게도 멤버쉽 과정에 합격하였으니 이번 과정 또한 내가 할 수 있는 모든 것을 동원하여 최선을 다할 생각이다. 아무래도 기간이 길다보니, 한 번에 타오르는 것이 아닌 은은하게 오래 타오를 수 있는 불꽃으로 임할 생각이다.
+) 하나 더 넣고 싶은 것이 생각났다.
이거는 "화산귀환" 웹툰을 보면서 감명깊게 보았던 대사였다.
하고 싶은 걸 다 하고 남는 시간을 투자하는 걸 노력이라고 하는 게 아니야. 내가 하고 싶은 일을 줄여 가며 하는 게 노력이지.
지금까지의 나의 행실을 되돌아볼 수 있었던 대사였다. 내가 누리고 싶은 것을 희생할 것인지, 내가 해야하는 것을 희생시킬 것인지 다시 한 번 더 고민해보게 되었다.