조금 늦은 부스트캠프 웹모바일 6기 챌린지 안드로이드 분야 후기

seong-hwan Kim
shDev
Published in
16 min readOct 24, 2021

이 글에서는 내가 부스트캠프 6기 챌린지 동안 겪은 경험에 대해 소개한다.

조금 늦었지만 Connect 재단에서 운영 중인 부스트캠프 웹 모바일 6기 챌린지 과정의 후기를 남겨보려 한다. 이전 부터 후기를 써 볼까 했지만, 차일피일 미루게 되었는데 더 늦으면 지금의 기억마저 흐려질 것 같아 부스트캠프의 준비 과정과 챌린지 후기를 남긴다.

후기를 작성하는 이유를 밝히자면, 먼저 챌린지 과정에 참여하면서 스스로 얼마나 부족한지 깨닫고 많은 것들을 배울 수 있는 성장의 발판이 되었기 때문이며, 이 글이 어디까지 도달될 수 있을지는 모르겠지만 부스트캠프라는 프로그램이 꾸준히 진행된다고 했을 때 예비 동료들의 고민을 덜어주고 싶기 때문이다.

실제 후기를 작성하기에 앞서, 이 글에서 다음 내용들은 소개되지 않는다.

  • 코딩테스트의 난이도, 출제 범위…
  • 부스트캠프 챌린지 과정과 멤버십 과정의 자세한 커리큘럼
  • 합격 방법, 합격 기준

위의 내용은 다루는 것은 부스트캠프의 보안 규정에도 어긋나며, 주관적인 생각이지만 자세한 과정에 대해 알지 못해도 신청, 미신청을 결정하기 위해서는 공개된 자료만으로도 충분하다고 생각된다.

현재 이 글의 작성 시점인 2021년 10월 23일 나는 부스트캠프 웹모바일 6기의 멤버십 과정에 안드로이드 분야의 캠퍼로 참여하고 있다. 하루 전인 22일 8주간의 학습 스프린트를 마쳤고, 6주간의 그룹 프로젝트를 앞둔 상황에서 작성되었음을 밝힌다.

https://boostcamp.connect.or.kr/

부스트캠프 공식 자료

부스트캠프 6기 일정

모집 기간(서류 접수): 2021년 5월 13일 ~ 2021년 6월 21일

1차 코딩테스트: 2021년 6월 24일

2차 코딩테스트: 2021년 7월 3일

합격자 발표: 2021년 7월 13일

부스트캠프 챌린지: 2021년 7월 19일 ~ 2021년 8월 13일

부스트캠프 멤버십: 2021년 8월 23일 ~ 2021년 12월 3일

나의 준비 과정

접수 이전

일단 나는 부스트캠프를 준비하기 전 프로그램을 신청 해야 할지 하지 않아야 할지 부터 많은 고민이 필요했다.

부스트캠프의 접수는 내가 학부생 4학년 1학기를 보내고 있을 때 신청하게 되었는데, 이때 나는 이미 졸업 요건을 만족하고 조기졸업을 준비하며 이후 취업 준비를 어떻게 할지 고민하고 있었다. 이때 고민하던 활동은 다음과 같다.

부스트캠프의 서류 준비부터 합격 발표까지 한 달 보름 정도의 시간이 소요되는데, 실제 프로그램 참여까지 상당히 긴 시간을 기다려야 하는 만큼 부스트캠프를 선택한다면 다른 활동은 선택할 수 없었다. 더군다나 2회의 코딩테스트와 챌린지 과정을 통과해야 멤버십 과정에 참여할 수 있으므로 탈락에 대한 심한 부담감이 있었다. 긴 시간을 투자했는데 세 개의 단계 중 하나라도 실패한다면 이후의 계획이 망가지게 되니까.

Photo by Nik Shuliahin on Unsplash

나는 안드로이드 개발자를 목표로 공부했던 만큼 이쪽 분야에 대해 성장할 수 있는 활동이 필요했다. 대학을 졸업하고 취업을 위해 안드로이드 개발자 신입 요건을 어떻게 맞춰야 할지에 대한 고민이 많았다. 3학년부터 안드로이드 개발을 공부하기 시작했고, 채용 공고에서 자주 등장하는 조건(테스트, RxJava, 코루틴, DI 라이브러리) 등 기술에 대해 하나라도 더 알고 싶었고, 안드로이드 개발자들의 협업에 대한 관심이 많았다(이후 생각이 바뀌긴 했는데 특정 라이브러리나 도구를 단순히 써본 경험만 가지고 있는 것은 큰 도움이 안 되더라).

결론적으로는 부스트캠프를 신청하게 됐는데, 이는 5기에 참여했던 지인의 추천도 있었고, 안드로이드라는 분야에 대해 좀 더 공부하고 싶었는데 앞서 말한 5개의 활동 중 부스트캠프의 커리큘럼이 가장 마음에 들었다.

코딩테스트

앞에서 말했든 코딩테스트에서 출제한 문제나 알고리즘, 범위, 합격 기준에 대해선 다루지 않는다. 특히 합격 기준 같은 정보는 부스트캠프 수료생 중 누구도 알지 못한다. 그리고 부스트캠프를 준비하면 ‘코딩테스트 난이도가 어떻다.’ 또는 ‘이정도면 합격할 수 있다.’ 같은 말을 들을 수 있는데 이것은 큰 의미가 없다. 출제 난이도나 기준은 상황에 따라 출제자의 마음대로 얼마든지 변경될 수 있으니 그냥 꾸준히 준비하는 게 정답인 것 같다.

1차 코딩테스트의 경우는 학교의 졸업프로젝트와 기말 고사와 시간이 겹치게 되어 많은 준비를 하지 못했고 테스트 이후에도 많은 아쉬움이 남았다. 그래서 비전공자 또는 자료구조, 알고리즘 등의 강의를 수강하지 않았거나 코딩테스트를 준비하지 않았다면 시간이 부족하다 보니(어디까지나 학부생 4학년 기준에서) 조금 힘들 수도 있을 것 같다.

이후 2차 코딩테스트까지 2주 정도의 여유가 있었는데 이 시기에는 프로그래머스나 백준 위주로 준비했다. 사실 나는 코딩테스트보다 중간에 기다리는 시간이 더 힘들었는데, 어느 정도까지 해야 합격한다라는 기준이 없으니 밑 빠진 독에 물 붓기 하는 심정으로 준비하게 되었다.

참고로 나에 대해 좀 더 얘기하자면 전공자로서 자료구조와 알고리즘 강의를 수강하였고, 이후 프로그래머스랑 백준으로 알고리즘을 공부하며 부스트캠프 합격 당시 solved.ac 기준 gold 2 였다. 네이버와 카카오 공채 코딩테스트 경험이 있지만 당연히 광탈하였다👍.

노파심에 말하는데 위의 정보를 가지고 합격 기준을 정하지 않았으면 한다. 나는 어디까지나 합격자 중 하나에 불과하므로 ‘이 정도까지는 해야 합격한다.’ 라는 기준이 될 수 없다.

챌린지 후기

사실 이 글은 부스트캠프를 생각하며 코딩테스트부터 준비하는 사람들을 위해 작성되었기보다는 코딩테스트를 통과하고 챌린지 과정을 기다리는 예비 캠퍼를 위해 작성되었다. 자기소개서나 코딩테스트의 경우 내가 여기서 무슨 말을 하든 합격과 불합격에 영향을 끼치지 않기 때문에 의미가 없다고 생각한다(하지만 준비하시는 분들 모두 응원하고 있습니다✊). 많이 부족하지만, 이 글을 보고 챌린지 과정을 어떻게 보내야 도움이 될 수 있는지 얘기하고 싶다.

내 경험을 말하기에 앞서 부스트캠프에서 챌린지 과정을 어떻게 설명하고 있는지부터 확인하자.

https://boostcamp.connect.or.kr/program_wm.html

제한된 시간과 강도 높은 경험. 챌린지 과정의 경험자라면 모두가 공감하겠지만 이 과정에서 진행되는 미션은 절대 쉽지 않다. 지금까지 내가 말하는 내용은 어디까지나 주관적인 경험을 얘기하는 것이지만 챌린지 과정은 정말 힘들다고 생각한다(지금 진행 중인 멤버십보다 더).

챌린지 소개에서는 12시부터 19시까지 미션을 수행하고 제출한다고 나와 있는데, 시간 안에 미션을 해결할 수 있다고 생각해선 안 된다. 개발 경험이 많지 않거나 신입 채용을 준비하는 일반적인 개발자라면 시간 내에 미션을 제출하는 것은 정말 쉽지 않다. ‘단순히 요구사항만 만족하는 선에서 하드 코딩, 무지성 코딩을 한다면 시간 내에도 충분히 할 수 있어요!’ 라고 말 할 수도 있지만 이것이 개발자로서의 성장에 대해 아무런 의미를 가지지 않는다는 것은 쉽게 알 수 있을 것이다. 미션의 요구사항과 미션에서 말하고자 하는 주제, 소프트웨어의 완성도를 생각하며 코딩했을 때 시간 내에 스스로 만족할 정도로 작업물을 제출하기란 정말 힘들다. 실제로 나를 포함하여 챌린지 과정에 참여한 동료들을 보면 새벽을 넘겨 밤샘 작업하는 일이 비일비재하였다. 12시부터 19시까지의 시간제한은 코어 타임을 지켜 달라는 정도로 이해해도 될 것 같다(또는 당신이 새벽이든 아침이든 아무리 코딩해봤자 우리가 준비한 미션을 해결하긴 힘들 거에요 하하하😄 라고 말할 순 없기 때문 일지도?).

챌린지 미션이 어렵다는 것을 조금 길게 얘기했는데 이게 챌린지를 진행하다 보면 다른 캠퍼들과 자신을 비교하게 되면서 자존감이 낮아지거나 스트레스를 받는 경우가 종종 있다. 그러지 않았으면 한다. 미션이 어렵다고 생각되면 그게 당연한 거고 실제로 어려우니까 시간제한에 집중하여 요구사항과 타협하는 코드를 작성하기보다는 주어진 시간 동안 모든 요구사항을 만족하지 못하더라도 스스로 만족할 수 있는 코드를 작성했으면 한다. 이건 내 경험담이기도 하다. 시간 안에 해내야 한다는 생각에 무작정 코드를 작성하다 보니 이게 점점 산으로 가더라.

챌린지 과정 전반적인 경험을 얘기하자면 챌린지의 처음 1–2주 사이는 많은 스트레스를 받았다. 애초에 부스트캠프에 지원한 목적 자체가 안드로이드에 있다 보니 챌린지를 멤버십을 위해 거쳐 가는 단계로 큰 의미를 두지 않았고, 멤버십에 꼭 참여해야 하는데 챌린지의 모든 인원이 멤버십에 참여할 수 없다는 점에서 오는 부담감이 자연스럽게 챌린지의 과정과 미션을 다른 사람과의 경쟁과 해결해야만 하는 숙제로 생각하게 되었다.

Photo by Jeff Griffith on Unsplash

내가 여기서 하고 싶은 말은 부스트캠프 챌린지를 멤버십을 위한 중간 단계나, 상위 몇 퍼센트를 가리기 위한 시험이라고 생각한다면 다시 생각해볼 필요가 있다는 것이다. 이러한 생각은 챌린지 과정을 고통스럽게 여기거나 나아가 개발에 대한 흥미를 떨어뜨릴 수 있다. 나 또한 비슷한 생각을 가졌던 만큼 이 생각이 어떻게 바뀌고 극복할 수 있었는지를 소개하고 싶다.

챌린지에 임하는 자세

본론에 들어가기 전에 내가 부스트캠프에 참여하기까지 어디까지 공부하였는지를 먼저 말하려 한다. 나는 소프트웨어 관련 학과 전공자로서 2학년부터 본격적으로 프로그래밍을 공부하기 시작했다. 여타 학부생과 마찬가지로 C언어부터 시작해서 자바를 공부하였고, 자바(JVM)를 좀 더 유용하게 사용하고 싶다는 생각에 3학년부터는 안드로이드와 코틀린 공부를 시작하였다. 이후 졸업 전까지 2회의 안드로이드 프로젝트를 진행하였다.

굳이 이 얘기를 하는 이유는 내가 공부하며 어느 정도의 자부심이 있었고, 이것이 챌린지까지 이어졌기 때문이다. 자부심은 알게 모르게 자만이 되었고 취업을 위한 공부를 하다 보니 안드로이드의 특정 기술과 라이브러리 등 도구의 사용법과 사용 경험에 집중하게 되었다. 이것은 내가 챌린지 과정의 초반을 소홀하게 여기는 계기가 되었다. 마음이 콩밭에 가 있으니 지금 하는 일에 만족하지 못하는 것은 어찌 보면 당연한 결과이다.

이 생각을 바꿀 수 있었던 데는 챌린지의 난이도가 큰 역할을 담당했다고 생각한다. 객체지향, 비동기, 네트워크 등 여러 가지 핵심 주제에 대해 스스로 알고 있었다고 착각하고 있던 것을 확실히 부술 수 있었고, 안드로이드 개발을 준비하기 전 소프트웨어 개발자로서 얼마나 부족했는지 느끼게 되었다. 특히 이전에 안드로이드를 공부하며 기계적으로 Activity, Fragment, ViewModel을 사용하고, 스스로 생각하기보다는 아키텍처에 맞춰서 앱을 구성하는데 익숙해지다 보니 챌린지의 미션을 위해 여러 객체를 만들고 책임을 분리하는 데 많은 어려움을 겪었는데, 안드로이드라는 환경이 없을 때 내가 가진 능력은 생각보다 보잘것없었구나 라는 감상에 많이 반성하게 되었다. 좁은 시야에서 맹목적으로 전진만 했는데 바닥에 내려와 보니 주위를 살펴볼 수 있었다.

Photo by Robert Ruggiero on Unsplash

이후로는 챌린지의 미션을 과제라고 생각하기보다는 내가 부족한 점을 채울 수 있는 발판으로 여기게 되었다. 자연스레 미션의 주제에 대한 학습과 깊이, 코드의 품질에 대해 많은 생각을 하게 되었고 만족스러운 코드를 위해 노력하게 되었다. 여기서부터는 챌린지의 만족도가 수직으로 상승하였다. 멤버십에 붙지 못하더라도 나는 최선을 다했고 앞으로의 방향을 잡을 수 있었다는 생각에 아쉬움과 걱정이 남지 않았다. 결과적으로는 멤버십도 합격하여 여전히 열심히 살고 있다.

한 가지 아쉬운 점이 있다면 이것을 너무 늦게 깨달았다는 것일까? 조금 더 일찍 알 수 있었다면 그만큼 더 많은 것을 얻을 수 있지 않았나 하는 아쉬움이 생긴다. 그래서 지금부터는 챌린지를 씹고 뜯고 맛보고 즐기며 200% 얻어가는 방법을 얘기하려 한다.

Jet boostcamp challenge

무한한 공간 저 너머로! — Photo by Brian McGowan on Unsplash

부스트캠프 챌린지를 진행하며 가이드가 제시하는 데로 진행해도 충분히 많은 것을 얻을 수 있지만 시간이라는 리소스는 한정되어있는 만큼 챌린지 기간 동안 최대 효율을 뽑아내기 위한 몇 가지 팁을 소개하려 한다.

시기 선택 + 기초 지식

부스트캠프를 진행하면 정말 다양한 사람을 만날 수 있다.

대학을 졸업하지 않고 2–3학년 중간에 휴학하고 참여하는 캠퍼부터 이전까지 직장을 다니다 성장을 위해 직장을 그만두고 부스트캠프에 참여하는 캠퍼까지, 물론 이 외에도 내가 모르는 캠퍼가 더 많을 것이라 생각한다. 나는 어찌 됐던 학교에 다니던 중 신청하게 되었으니 나와 비슷한 대학생들을 기준으로 얘기해보고 싶다.

자신이 대학생이라면 부스트캠프에 참여하는 시기에 있어서 가장 큰 고민은 둘 중 하나라고 생각한다.

  • 졸업 전 휴학 후 부스트캠프에 참여
  • 졸업 요건을 만족한 상태에서 부스트캠프에 참여

전자를 선택한다면 조금 일찍 시작하는 만큼 소프트웨어와 관련된 지식이 상대적으로 부족할 수 있고 부스트캠프의 체감 난이도가 높을 수 있다. 하지만 학교에서 배우는 것보다 빠르게 성장할 수 있고, 부스트캠프 종료 후 복학했을 때 자신이 원하는 방향으로 공부하며 남은 시간을 좀 더 의미 있게 보낼 수 있다고 생각한다.

나는 후자에 속하는데, 학부생 기간 동안 대부분 안드로이드 관련 공부는 독학으로 진행하게 되었고 여기서 오는 아쉬움이 많았다. 물론 내가 3학년일 때는 안드로이드 분야가 개설되지 않았다는 점도 크게 작용한다. 대신 안드로이드와 코틀린 관련 지식을 미리 학습한 채 부스트캠프에 참여할 수 있어서 문제에 대해 더욱 깊이 고민할 수 있었다고 생각한다. 또한, 멤버십 이후 복학할 필요가 없다 보니 앞으로의 일정을 유동적으로 선택할 수 있다는 것도 장점이 될 수 있다.

어떤 선택을 하더라도 정말 많은 것을 얻을 수 있다. 하지만 어디까지나 주관적인 의견으로 후자를 좀 더 추천하고 싶다.

이건 나의 주관이 듬뿍 담긴 성장 그래프이다. 처음 공부를 시작할 때는 빠른 속도로 성장할 수 있다. 이미 시중에는 고수들이 작성한 입문서가 많이 출판되었고, 인터넷에는 점점 양질의 강의 자료가 많아지고 있다. 안드로이드만 생각한다면 단순히 레이아웃을 작성하고 기능을 구현하는 것과 Jetpack 라이브러리를 사용하는 정도는 혼자 하더라도 충분히 할 수 있다고 생각한다.

하지만 그 이후로 나아가려 하면 약간의 정체를 느낄 수 있다. 이미 제공되는 기능과 도구를 사용할 뿐만 아니라 원하는 동작을 구현하기 위해서는 내부 소스를 이해해야 할 수도 있고, 복잡한 디자인 가이드가 있다면 뷰에 대해 더 깊게 파고들 필요가 있다. 협업을 한다면 상황은 더욱 심각해진다. 단순히 내가 이해할 수 있을 정도의 코드가 아니라 다른 사람들과 소통하며 서로가 만족하는 코드를 작성하는 것은 혼자 공부할 때라면 얻기 힘든 경험이다.

부스트캠프에 참여하는 것은 이러한 정체 시기에 부스터를 달아줄 수 있다. 기초 지식이 없는 상태로 노베이스로 참여해도 당연히 독학보다 훨씬 빨리 성장할 수 있지만 챌린지와 멤버십의 기간은 제한되어있다. 같은 관심사를 가지는 동료들과 함께 하루 대부분을 동일한 주제에 대해 고민하고, 코드를 작성하고, 토론할 기회는 쉽게 주어지지 않는다(사설 부트캠프에 참여할 수도 있지만 비용의 문제가 클 것으로 생각된다). 이 시기에서 혼자 고민해서는 해결하기 힘든 주제에 대해 동료들과 함께 고민할 수 있다면 상당한 비용을 줄일 수 있을 것이다.

말을 하다 보니 멤버십 과정이 들어가게 됐는데 챌린지에도 동일하게 적용될 수 있다. 자신이 코틀린에 대한 기초가 없는 상태에서 챌린지에 참여하게 된다면 미션을 해결하기 위해 코틀린의 문법과 컨벤션, 기능, 객체 생성 등 바닥부터 공부하며 요구사항을 만족하는 데 급급할 수 있다. 하지만 이미 이에 대한 기초가 있다면 단순히 요구사항을 만족하는 것을 넘어 객체의 역할과 책임을 어떻게 구분할지, 테스트는 어떻게 할 수 있을지, 내가 작성하는 코드를 어떻게 설명할지 또는 새로운 기술을 도입했을 때 학습하는 시간을 더 많이 투자할 수 있다. 스스로 생각했을 때 부스트캠프에 참여하기까지 시간에 여유가 있다고 느낀다면 실제로 부스트캠프에 참여했을 때 프로그램을 100% 활용할 수 있을지를 고민해보는 것은 어떨까?

책을 읽자

부스트캠프를 시작하면 정말 바쁘다. 나는 현재 멤버십에 참여하며 월화수목금 멤버십 일과를 수행하고, 금토일 스터디를 진행 중이다. 이렇게 살다 보니 여가를 즐길 시간도 부족하고 특히 책을 읽을 시간이 부족하다. 나중에 읽어야지 하고 생각만 한 책이 있다면 코딩테스트를 통과하고 챌린지 시작 전까지 읽어보는 것을 추천한다.

내가 추천하는 책이 있다면 ‘객체지향의 사실과 오해’와 ‘디자인 패턴’ 관련 도서이다. 이 책의 내용에 대해 완벽하게 이해하지는 못하더라도 책의 내용을 곱씹어 보면 챌린지의 미션을 수행하며 코드의 품질에 대해 생각하는 자신을 만날 수 있다. ‘객체지향의 사실과 오해’는 챌린지 전, 중, 후 3회 독을 도전해보자.

피어 세션

여기서 자세히는 설명하지 않겠지만 부스트캠프는 혼자 학습하는 프로그램이 아니다. 동료들과 같이 학습하는 만큼 피어 세션을 어떻게 활용하는지에 따라 엄청난 성장을 경험할 수 있다. 말주변이 없다고 해서 조용히 있는 것은 도움이 되지 않는다. 쉽게 얻기 힘든 기회인 만큼 만족할 수 있을 정도로 최대한 활용해보자.

마치며

가볍게 작성하려던 글이 생각보다 길어졌다. 마무리는 간단하게 하려 한다. 부스트캠프는 개발자의 지속 가능한 성장을 위한 학습 커뮤니티라고 소개되어 있다. 부스트캠프를 준비하고 있다면 이러한 인재상에 대해 스스로가 해당하는지 생각하고 경험을 녹여낼 수 있다면 좋은 결과를 얻을 수 있지 않을까? 끝으로 성장을 위한 선택이 부스트캠프가 되었든 다른 활동과 공부가 되었든 목표를 위해 나아가는 모두에게 응원을 전하며 지금 가장 좋아하는 글귀와 함께 글을 마친다.

https://wordrow.kr/한자/日新又日新-일신우일신/
http://thequotes.in/if-you-cant-explain-it-simply-you-dont-understand-it-well-enough-albert-einstein/

--

--