지난 5월 26일 배너 광고를 통해 네이버 부스트 캠프 참여자를 모집하고 있다는 걸 알게 됐다.
처음 개발자로 전향하려고 했을 때 몇 번인가 들어봤지만 어차피 실력 부족으로 못 들어갈 거란 생각에 포기했었는데, KDT 수료 후 어차피 취업도 안 되고 있는 상황에 도전이나 해보자 싶어서 지원서를 작성했다.
지원서를 작성하면서 살펴본 블로그에서 부스트 캠프가 지향하는 개발자의 태도나 성장 방향을 어느정도 알 수 있었다.
간략하게 설명하자면 AI·언어·프레임워크와 같은 기술은 결국 도구일 뿐, 개발자의 목적은 문제 해결이다.
이 전제를 바탕으로 개발자에게 중요한 건 문제 해결력이라는 결론이 나오게 된다.
그럼 문제 해결력이란 무엇일까?
문제가 무엇인지 정의하는 것에서부터 해결과정에 존재하는 제약과 자원을 고려해 최적의 방향을 설계하고,
필요하지만 부족한 정보가 있다면 스스로 학습하고 적용하는 역량까지 포괄한다고 추측된다.
더불어 어떤 도구를 선택하고, 어떤 관점과 가치를 담아 사용할지 판단할 수 있어야 한다.
베이직 과정에서는 문제 해결력을 어떻게 키워줄까?
실무에서는 요구 사항이 불명확한 경우가 잦다고 한다.
문제 정의에서부터 막히기 쉽기 때문에 스스로 생각하고 시행착오를 겪으며 자신만의 해법을 탐색하는 경험이 축적되어야 한다.
이 경험이 쌓여 자신만의 논리로 문제를 정리하고 방향을 설계할 능력이 생긴다.
네이버 부스트 캠프 베이직 과정에서는 2주간 이 경험을 밀도있게 쌓을 수 있다.
베이직 과정에선 해결과 리뷰를 반복한다.
하나의 미션을 반드시 해당 시간표에 따라 진행해야 하는 것은 아니며, 심지어 마지막 날 모두 몰아서 제출할 수도 있었다.
미션 해결에 필요한 학습은 간단하게 가이드해주지만 어떤 것을 어떻게 학습할지는 캠퍼에게 맡겨졌다.
때문에 해결에 대략 4~5시간이 필요하도록 설계되었음에도 각자의 해결 과정에 따라 동료마다 해결에 필요한 시간이 천차만별이었다.
이러한 자유로운 미션 완료 방식은 정말 사소한 부분까지 캠퍼가 스스로 생각하고 판단하도록 유도했다.
피어 피드백을 고려한 업로드 방식도 모두 달랐다.
어떤 분은 빠르게 틀을 완성해낸 뒤 업로드 순서 상단에 위치하여 많은 피드백을 받았고,
한 분은 늦게 제출하더라도 적극적으로 다른 분에게 리뷰를 달아 피드백을 돌려받기도 했다.
리뷰를 누구에게 어떻게 남길지도 모두 자유로웠고, 스스로 판단해야 했다.
내가 느끼기에 베이직의 미션은 마지막 미션과 문제 해결력 테스트를 해결하기 위해 정말 잘 설계되어있었다.
미션 난이도 상의 미션에 대해 금요일 단 하루만 주어졌지만 어떻게든 해결하고 제출할 수 있었던 건 전부 9개의 지난 미션을 통한 학습과 경험 덕분이었다.
개발 지식을 쌓는 것에만 그치는 것이 아니라 어떻게 학습할지 고민하게 해주고,
남들을 위한 문서 작성은 어떻게 할지, 어떻게 기록을 쌓아나갈지 스스로 찾아보고 결정하도록 만드는 미션들이었다.
피어 피드백을 통해 어떻게 배워나갈지도 어느정도 미션을 통해 알려주고 있다고 느꼈다.
특히, 미션 완수 후 점검을 위한 체크리스트를 통해 해당 미션의 의도가 무엇이었는지, 내가 어떤 점을 놓쳤고 어떤 점을 잘 수행했는지 알 수 있어 더욱 좋았다.
그렇다고 미션의 의도에 완벽히 부합해야만 정답이란 것은 아니다.
내가 생각하지 못한 부분을 발견할 수 있다는 게 중요하며, 미션 해결 과정과 결과 중 그 어떤 것도 맞았다, 틀렸다의 관점으로 판단되지 않는다.
난 비전공자로서 대부분의 미션에 대해 학습이 필요했지만, 어쩌다 이미 알고 있는 내용이더라도 한 번 더 찾아보고 깊게 학습하려 노력했다.
미션의 요구사항 이상의 상황을 상상하고 풀이하기도 했고, 그 과정 속에서 지식이 견고하게 쌓여나가는 걸 느꼈다.
배우기 위해 캠프에 참여한 만큼 스스로 하나라도 더 배우고 성장하려는 태도가 필요하다.
즉, 베이직 과정에는 토끼를 잡는 호랑이같은 태도를 가질 필요가 있다.
난 이 내용 어느정도 알고 더 학습할 필요 없는데? 라는 생각이라면 베이직이 정말 안 맞을 수 있다.
이미 학습한 내용이더라도 다시 한 번 남들에게 설명하듯 자세하게 풀어낼 수 있는 지식은 많지 않다고 생각한다.
알고 있다고 생각되더라도 한 번 더 레퍼런스를 체크하고 놓친 부분이 없는지, 확장해서 배울 부분은 없는지 스스로 찾는 사람일수록 베이직 미션에서 얻어가는 점이 많을 것이다. 또는 베이직 과정을 통해서 위와 같은 태도를 가지게 될 수도 있겠다.
여기서 피어피드백의 장점과 이어진다.
내 풀이를 남들에게 전달하기 위해선 내가 가진 지식을 바탕으로 어떻게 사고하고 결정했는지 전달할 수 있어야 한다.
이 과정에서 내 지식이 얼마나 견고하고 정교하게 쌓여있는지, 또는 근거는 다 잃고 그냥 결론만 남아있는 지식 조각일 뿐인지 깨닫게 된다.
잘못된 지식을 전달하거나 근거없는 피드백을 보내기 전에 한 번 더 스스로 점검하는 시간을 가지게 되는 건 비단 개발자로서 뿐만 아니라 일상에서도 도움이 될 것이다.
말을 아끼고 자신의 생각에 대해 비판적으로 판단하는 태도는 나쁠 수 없으니까.
피어 피드백을 통해선 베이직 OT에서 소개된 것처럼 확실히 다양한 시각의 풀이를 볼 수 있었다.
동료들의 풀이 방향이 비슷하기도 완전히 달라지기도 했고, 비슷하더라도 세부적인 판단은 각자가 모두 달랐다.
왜 그런 판단을 했는지 묻고 시야를 확장하거나 나와는 완전히 다른 새로운 풀이를 보면서 감탄하고 인사이트를 얻어갈 수도 있었다.
특히, 비전공자로서 이미 전공자인 분들, 도메인 언어에 익숙한 분들의 풀이를 통해 배울점이 정말 많아서 좋았다.
베이직에서 많은 걸 얻어가려면 얼마나 욕심있게 미션을 풀어나갈지가 중요하다.
미션 해결을 위해 얼마나 어느정도 학습할지 정하는 단계에서 어떤 결정을 내리느냐에 따라 미션에서 얻어갈 내용이 달라진다.
예를 들어 로봇을 만드는 이론을 이미 알고 있고 이론에 대한 미션이 나온다면,
그냥 알고 있는 이론을 적기보다 로봇의 팔 하나라도 직접 만들어보는 것으로 미션을 확장해 수행하는 욕심이 필요하다.
문제 해결에 필요한 행동들만큼은 "별 생각없이", "그냥", "이렇게 하면 되니까 뭐" 같은 생각을 접어둘수록 좋다.
이번 베이직 10기를 통해 어느정도 문제 해결 과정에 대한 나만의 프로세스를 세울 수 있었다.
특히, 문제 해결을 위한 설계가 대체 어떤 걸 의미하는지 체감할 수 있어 의미 있는 2주 간의 경험이었다.
스스로 깊게 파고들기를 좋아하는 사람일수록 베이직 과정을 한 번 경험해본다면 좀 더 자신만의 문제 해결 체계를 확립하는 데 도움이 될 것이라 생각한다.
다행히 챌린지에 입과하게 되어 더 심도있는 문제 해결 과정을 겪을 수 있게 되었는데,
베이직에서 얻은 인사이트와 학습 태도를 바탕으로 문제 해결력을 더욱 높일 수 있도록 노력해야겠다.