야곰 아카데미 iOS 스타터 캠프 후기

날짜
2021/06/16
작성자
Jake
태그
야곰
야곰아카데미
스타터캠프
iOS
iOS개발
iOS교육
앱개발
후기
회고
부트캠프
Swift
스위프트
2 more properties
야곰 아카데미 커리어 스타터 캠프 1기 수료생 Jake의 글입니다

시작하기 전

먼저 나에 대해서 간단히 소개하자면 서울에 있는 대학의 컴퓨터공학과를 나온 Jake이다. 4년 동안 학교를 다니면서 다양한 언어들과 CS 지식들을 얕다면 얕게, 깊다면 깊게 공부했었다. 그러다 중간에 휴학을 하고 배웠던 내용들을 복습하던 도중에 iOS 개발에 관심을 가지게 되었다. iPhone을 오랜 기간 동안 사용 하기도 했었고 iOS 앱만의 갬성(?)과 디자인이 이쁘기도 하고 무엇보다 iOS 개발의 가장 큰 진입 장벽인 맥북이 이미 있었기 때문에 iOS 앱개발 공부를 시작하게 되었다.
처음에는 네이버 부스트코스에 무료 강의인 iOS 프로그래밍을 위한 스위프트 기초, iOS 앱 프로그래밍을 보면서 공부를 진행했지만, 학교 다닐 때 과제를 하던 버릇 때문인지 Swift 언어에 대한 정확한 이해를 하기보다는, 바로 코드부터 작성해서 동작하면 넘어가는 습관 그리고 빠르게 진도를 나가려고 해서 그런지 혼자서 공부를 하는데에는 어려움이 많았다.
그러다가 2020년 11월부터 야곰 아카데미에서 iOS 스타터 캠프가 열린다는 것을 알게 되었고, 강의로만 보던 야곰한테 배울 수 있는 좋은 기회라고 생각해서 지원하게 되었다. 캠프 참가에 지원 후 간단한 과제와 면담을 진행하고 캠프에 합류하게 된다.

야곰 iOS 스타터 캠프 선택 이유

다른 캠프와의 차별성 - 현실적인 조언

사실 컴퓨터 공학과 학생으로서 주변에 이미 취업한 선배들로부터 회사의 얘기를 들어보면 학원에서 배우고 오는, 즉 학원 출신 개발자들을 별로 좋아하지 않는다는 말이 있다. 학원, 그리고 학원에서 공부하신 개발자 분들에 대해서 내가 비판이나 비난의 목적으로 이러한 말을 하는 것은 아니다. 또한 내가 직접 해당 학원에서 배워보지 않았고, 거기서 배우신 분들이 얼마 만큼의 노력을 했는지를 전혀 모르기 때문에 그들의 능력에 대해서 말하기는 어렵다고 생각한다.
그러나 몇몇 부트캠프 혹은 학원들의 커리큘럼을 보았을 때, 정말 많은 것을 단기간안에 알려주고 해당 과정을 마치면 취업을 할 수 있다라는 확신을 주는 것처럼 광고를 하는 학원들이 많았다. 이는 전공자인 내가 생각했을 때는 아무리 핵심만 가르치고, 수업을 듣는 사람이 열심히 따라온다고 해도 너무나 방대한 양이기에 불가능하지 않을까라는 생각이 먼저 들게 된다.
그러나 야곰 캠프에서는 실제 캠프 기간(6개월) 내에 할 수 있는 양을 준비하고 진행한다고 했고 실제로도 그렇게 진행하였다. 또한 사전 OT때 해당 캠프가 끝난 뒤에 취업이 가능하냐는 질문에 대한 답에도 무조건 할 수 있다는 대답 대신 "현실적으로 못할 가능성이 크다. 이후에 공부할 시간이 더 필요할 것이다." 라는 답을 해준 것이 마음에 들었다.
다들 적지 않은 돈과 열정, 그리고 자신들의 시간을 투자할 생각을 가지고 부트캠프나 학원을 찾아올텐데, 캠퍼(학원생)들을 무조건 등록시키려고 하는 것이 아니라 정말 iOS에 대해서 관심이 있고 이쪽 분야로 나가고 싶은 사람들에게 앞으로 스스로 공부할 수 있는 방법을 알려주고, 혼자라면 많이 하게 될 삽질의 양과 시간을 조금이나마 줄여주고자 하는 야곰의 뜻을 면담, OT 그리고 캠프 내내 알 수 있었다.

교육 방식 - Flipped Learning

우리가 익숙한 교육 방식에 대해서 말해보면 대부분 초등학교, 중학교, 고등학교를 다니면서 받은 교육은 주입식 교육일 것이다.
주입식 교육이란 학생의 흥미, 의욕, 능력, 이해 등은 전혀 고려하지 않고 일방적인 교과중심의 지식만을 학생에게 주입시키는 교육 방법으로서 '학생 중심'이 아닌 '교과서 중심'의 수업을 하고, 학생의 개성을 무시하여 교사의 일방적인 주도적 교육방법을 말한다. - by 두산 백과
정의는 이렇다고 하는데, 내가 생각하는 주입식 교육이라는 것은 학교에서 선생님이 그냥 교과서 진도를 나가시면 나는 그냥 그대로 필기를 하고 나중에 시험을 위해서 해당 필기의 내용들을 외우고 했던 것이라고 생각한다. 대학교에 가면 공부 방식이 바뀌지 않을까 했지만 대학교에서도 거의 모든 과목은 기존에 배우던 방식과 비슷했다.
그러다 한 교수님을 만나게 되었는데 교수님의 강의 평가가 엄청 좋지 않았다. 어떤 학생들은 배우는 것이 아무것도 없었다고 했고, 또 다른 학생들은 정말 많은 것을 배울 수 있었다고 했다. 알고 보니까 교수님은 아직 Flipped Learning의 도입이 거의 없던 학교내에서 Flipped Learning으로 수업을 시도하셨고, 그래서 미리 집에서 유튜브로 강의 내용을 찍으시고 해당 내용을 학생들이 보고 와서 강의 시간에는 미리 보고 온 내용에 대해서 학생들이 질문을 하고 서로 답변하거나 교수님이 직접 답변을 해주는 형태로 강의를 진행하셨던 것이다. 그래서 미리 강의를 들어보고 공부를 했던 학생들의 경우에는 배울 수 있는 것이 많았고, 강의를 보거나 공부를 하지 않고 강의에 들어온 학생들의 경우에는 강의 시간에 배울 수 있는 것이 없다고 했던 것이었다.
이 때 나는 주입식 교육만을 받다가 처음으로 먼저 공부해보고, 수업시간에 질문하고 답변하기 위해서 더욱 세부적인 내용들에 대해서도 공부했었다. 이런식으로 공부를 하다보니 공부에는 끝이 없었고 단지 강의로 들었으면 딱 여기까지 하고 끝났을 부분에 대해서도 더욱 알아봤던 것 같다. 그래서 나는 해당 강의를 통해서 강의 내용 뿐 만 아니라 공부를 하는 방법까지도 배워볼 수 있었다고 생각했었다.
Flipped Learning이란 혼합형 학습의 한 형태로 정보기술을 활용하여 수업에서 학습을 극대화할 수 있도록 강의보다는 학생과의 상호작용에 수업시간을 더 할애할 수 있는 교수학습 방식을 말한다. 흔히 적용되는 방식으로는 교사가 준비한 수업 영상과 자료를 학생이 수업시간 전에 미리 보고 학습하는 형태가 있다. 그 후 교실 수업시간에 교사는 교과내용을 중심으로 가르치기보다 학생들과 상호작용하거나 심화된 학습활동을 하는 데 더 많은 시간을 할애할 수 있다. - by 위키 백과
야곰 캠프의 교육 방식도 이러하다. Flipped Learning 방식을 통해서 강의 전에 스스로 공부해보고 수업시간에는 물론 아예 개념에 대해서 다루지 않는 것은 아니지만, 주로 캠퍼들과 상호작용하고 서로의 의견을 토론해 볼 수 있도록 한다.
그래서 야곰 아카데미의 캠프에서는 이러한 학습시간을 수업이라는 표현 대신 '활동학습'이라고 표현한다. 활동학습이라는 표현만으로도 야곰이 이 시간을 생각하는 관점, 그리고 이 시간의 주체가 누구인지 분명히 드러난다.
내가 생각했을 때 개발자가 된다는 것은 기존의 수능 시험을 보는 것처럼 단지 암기하고 문제를 푸는 것이 아니라, 개념을 이해하고 자신의 생각을 바탕으로 코드를 작성해야 한다고 생각한다. 그렇기 때문에 이러한 방식으로 강의를 진행한다는 점이 매우 기대되기도 하면서 캠프를 참여하기로한 결정적인 이유가 되었다.

야곰 캠프 진행 방식

Daily 스크럼

캠프를 진행하면서 캠퍼들과 매일 매일 시간을 정하고 스크럼을 진행하게 된다.
스크럼이란 Agile(애자일) 소프트웨어 개발 방법론 의 종류 중 하나로 반복적이고 점직전인 개발을 의미한다.
캠프 내에서의 스크럼은 팀원이 있다면 팀원과 스크럼 내용으로 어떠한 것을 할 것인지, 스크럼 시간, 요일 등을 미리 정한다. 그리고 정해진 요일 시간에 해당 내용들로 서로 얘기를 하며 하루를 미리 계획하고 전날 했던 것들에 대해서 정리할 수 있는 시간을 가질 수 있다. 또한 이 시간에 진행하면서 프로젝트나 공부하면서 모르는 점이나 어려웠던 점을 얘기하면서 서로 도움을 주고 받을 수 있었다. 나는 스크럼 시간을 일찍 잡아서 하루를 빠르게 시작했으며 주로 전날 했던 일들, 오늘 할 일 그리고 컨디션을 스크럼 주제로 잡았었다.
이렇게 매일 스크럼을 진행하다 보니 하루를 좀 더 계획적으로 보낼 수 있었고, 협업을 진행함에 있어도 프로젝트의 진행 상황이나 어려운 점들을 이 시간에 공유하여 해결할 수 있어서 캠프 생활 중에서 매우 좋았던 것들 중 하나이다.

활동학습

야곰 캠프에서는 일주일에 2번 월요일과 목요일에 활동학습을 진행한다. 활동학습 방식은 위에서 언급하였듯이 Flipped Learning 형태로 진행된다. 야곰이 그 주에 어떤 주제에 대해 함께 공부할지 미리 알려준다. 그러면 캠퍼들은 해당 내용에 대해서 미리 공부를 해오는 캠퍼들도 있고 그렇지 못한 캠퍼들도 있다. 활동학습 시간에는 간단히 개념을 설명해주고 생각해 볼 만한 내용들을 주고 여러 명씩 짝을 지어서 해당 내용에 대해서 토론을 진행한다. 그리고 일정 시간 이후에 다 같이 이야기를 나눈다.
이러한 활동학습 방식을 통해서 강의를 통해서 듣기만 하는 수업이 아니라, 야곰과 캠퍼들의 다양한 의견들을 들어보고 내 의견도 말해보면서 많은 것을 배울 수 있었다. 이러한 활동학습을 통해서 누가 정답을 바로 알려주어서 아는 것이 아닌 스스로 더 나은 해결책을 찾는 방법을 배울 수 있었다.

프로젝트(협업)

프로젝트는 1주, 2주 혹은 3주 짜리 프로젝트들이 캠프를 진행하는 동안 주어지게 된다. 캠프기간 동안에는 총 12개의 프로젝트를 진행하게 된다. 이때 팀원이 있는 프로젝트도 있고 개인으로 진행하는 프로젝트도 있다.
팀원들과 함께하는 경우에는 팀원과 프로젝트 룰을 정하고 해당 프로젝트 기간동안 같이 협업하게 된다. 이 때, 정해진 기간 내에 전체 프로젝트를 진행하긴 하지만 각각의 step에는 정해진 기간이 없다. 이러한 부분을 캠프에서 '언제까지는 해당 step을 하고 다음 step을 진행해라' 라고 강제할 수 있지만, 야곰 캠프는 그렇지 않았다. 실제 현업에서는 누군가 개인의 일정을 관리해주지 않기 때문에 자기 스스로 일정을 관리하고 팀원과의 일정 조절 및 협업 방법까지도 프로젝트를 하면서 배울 수 있었다.

현업자들의 코드 리뷰

위에서 말한 프로젝트는 각 step마다 리뷰어들의 리뷰를 받게 된다. Pull Request를 보낼 때 프로젝트를 진행할 때 자신이 고민했던 점, 궁금한 점 등을 아래와 같이 작성해서 보낼 수 있다.
그리고 아래와 같이 현업 리뷰어들의 답변을 받게 된다. 아래의 답변은 고민 사항에 대해서 답변을 해준 내용의 일부이며, 각각의 코드에 대한 자세한 리뷰도 받게 된다. 이때 중요한 점은 코드 리뷰어의 리뷰가 정답은 아니라는 점이다. 하나의 의견이라고 생각하고 그 의견을 토대로 팀원과 고민을 해보고 리뷰어의 의견이 더 좋다고 생각이 들면 수정을 하거나 팀원과 그렇게 작성한 이유가 있다면 그러한 의견을 리뷰어에게 알려주어 의견을 주고 받을 수 있다.
현업자들의 코드 리뷰를 받는 다는 것은 흔치 않은 경험이고 캠프 내에서 코드 리뷰를 통해서 다양한 리뷰어들과 많은 의견들을 나눠 볼 수 있었다. 코드 리뷰를 통해서 깨달은 것 중에서 가장 기억에 남는 것은 모든 코드를 작성할 때에는 이유가 있게 작성해야한다는 것이다. 내가 쓴 코드를 다른 사람들에게 왜 그렇게 작성하였는지에 대해서 설명할 수 있는 이유가 있어야하고, 이러한 이유가 단순히 내 생각이나 예측이 아닌 공식 문서를 토대로 제대로 알고 있어야 한다는 점이다.

알쓸신잡 및 테크캐스트

야곰 캠프에서는 테크캐스트알쓸신잡(알아두면 쓸모있는 신비한 잡학사전)이 있다. 테크캐스트는 현업에 있는 개발자들의 이야기와 궁금했던 점들을 들어보고 물어볼 수 있는 좋은 기회이다. 또한 알쓸신잡도 개발자와 관련있는 여러 지식들을 들어볼 수 있는 세션도 준비되어 있다.
캠프 생활을 하면서 좋았던 점 중에 하나는 내가 google에 검색했을 때 나왔던 블로그 작성자 선배들도 이러한 세션에서 만나볼 수 있고, 이들의 공부 방법, 취업을 위한 준비 방법 등을 들어보고 또 현업에서의 일하는 방법이나 경험들도 엿볼 수 있어서 좋았던 것 같다.

휴일 및 방학

캠프는 공식적으로 기간 내에 2번의 방학을 가지며 매주 수요일과 주말은 공식적으로는 휴일이다. 이때 너무 의욕이 불타올라서 달리는 것 보다는 6개월 동안 꾸준하게 하기 위해서 쉴 때는 열심히 그리고 잘 쉬고 오는 것을 추천한다. 캠프를 시작하고 처음에는 방학이 왜 있는지 이해되지 않았지만 다들 막상 캠프를 해보면 방학만을 기다릴 것이므로, 방학의 필요 존재에 대해서는 캠프를 하게된다면 바로 이해하게 될 것이다.

캠프 생활을 위한 Tip❗️❗️

1.
모르는게 있다면 캠퍼, 선배, 서포터즈, 야곰, 리뷰어에게 빠르게 물어보자.
프로젝트나 공부를 하던 도중에 모르는게 있다면 야곰 아카데미에는 이에 대해서 물어볼 사람이 정말 많다. 그러나 너무 쉬운 질문이지 않을까, 나만 모르는거 아닌가 이러한 고민에 사로잡혀서 오랜시간동안 혼자서 끙끙 앓는다면 비싼 돈을 내고 캠프를 들을 필요가 없다. 물어볼 사람이 정말 많고 다들 질문을 받게 되면 아는 사람은 아는 한도 내에서 최대한 열심히 알려줄 것이고, 모른다면 같이 고민하고 알아가게 될 것이다. 그러니까 너무 오랫동안 고민하지 말고 모르겠다면 빠르게 질문하자!
대신 질문을 할때는 최대한 구체적으로 질문을 해야한다. 데이터 통신에 대해서 공부를 한다고 할 때 너무나 막연하게 dataTask(with:)이거 어떻게 사용하나요? 이런 식의 질문은 지양하도록 하자. 일단 자신이 알아보고 해볼 수 있는 내에서 최대한 해보고 나서, 해당 과정들을 정리해서 물어보는 것이 질문을 받는 사람도 이 사람이 어느 정도까지 고민을 해봤고 정확히 어느 부분을 모르는구나, 내가 어디를 알려주면 되겠다라고 파악할 수 있을 것이다. 야곰 아카데미의 알쓸신잡과 여러 가이드를 통해 어떻게 질문해야 할지도 많이 배울수 있다.
2.
모든 내용들은 기억보다는 기록
캠프를 하면 TIL, TWL을 작성하게 된다. 이때 너무 모든 것을 완벽하게 적으려고 하지말고 그날 자신이 했던 고민, 해결했다면 해결 내용, 공부한 내용들을 적어두자. 당장 일주일 전에 공부했던 내용도 잊어버리는 것이 사람이다. 따라서 자신이 공부한 내용을 정리해서 기록하는 것은 정말 나중에 큰 자산이 된다. 기록해두지 않으면 같은 삽질을 또다시 하게된다. 이것을 읽는당신은 아마 분명히 그렇게 될 것이다. 그 때 이 글이 문득 생각나겠지... 또, 모든 프로젝트때마다 각 단계에서 고민한 내용들이라던가, 자신이 공부한 내용들을 Github의 README에 적어두면 좋다두어야 한다.
3.
체력은 정말 중요
하루 종일 컴퓨터 앞에 앉아서 공부하고, 코딩하는 것은 생각보다 많은 체력이 필요하다. 따라서 하루 내에 특정 시간은 운동을 하거나 스트레칭을 하는 시간을 가지도록 하자. 그리고 초반에는 일주일 내내 열심히 하는 경우도 많은데, 캠프는 수요일과 주말에는 하지않는다. 자율적인 참여를 막지는 않지만 그래도 공식적으로는 휴일이다. 휴일에는 충전을 하고 정 공부가 하고 싶다면 새로운 것보다는 복습을 하는 것도 좋다.
4.
Flipped Learning을 잘 이용하자❗️❗️
활동학습 시간 전에 어떠한 내용을 할지 야곰이 미리 알려준다. 물론 야곰이 때때로 쉬운 주제에 대해서는 예습할 필요 없이 활동학습에 참여해도 괜찮다고 하지만 Flipped Learning을 제대로 하고 싶다면 야곰이 제시한 주제에 대해 미리 읽어보고 이해가 되지 않는 점이나 궁금한 점 등을 활동학습 시간에 물어보는 것이 정말 좋다고 생각한다. 특히나 활동학습 시간은 주로 해당 주제에 대해서 토론을 하고 의견을 나눠보는 식으로 진행이 되기 때문에 활동학습 시간 내에 개념도 익히고 토론까지 하는 것은 힘든 경우가 많다. 또, 그룹끼리 토론을 진행하기 때문에 매번 공부를 해가지 않는다면 듣기만 해야할 수도 있다. 이것이 나쁘다는 것이 아니라 내가 해당 주제에 대해서 스스로 생각해 보고 의견을 말할 기회가 없다는 것이다.
후반에는 프로젝트와 활동학습 내용을 둘 다 소화하기 벅찰 경우가 많은데 그래도 활동학습 전에 그 날 배울 내용을 미리 어느 정도는 읽어보고라도 들어가는 것을 강!력!하!게 추천한다. 실제로 미리 공부하고 들어간 날과 그렇지 않은 날의 내 경험에 대해서 말하지만 오늘의 활동학습 주제에 대해 미리 공부해보고 간 날이 더 배운 것이 많았던 것 같다.

캠프 수료 후기

길면 길다고 생각할 수도 있었던 6개월 이라는 시간이 빠르게 흘렀다. 우선 야곰 캠프를 수료하고 난 뒤의 후기는 정말 대만족이다. 캠프가 끝나고 나서도 공부해야 할 부분과 정리해야 할 부분이 많이 남아있긴 하지만 그래도 캠프 기간 동안에 스스로 공부 하는 법, 사람들과 대화하고 협업하는 방법, 글을 쓰는 방법 등 여러 가지를 배운 것 같다. 당연히 iOS와 Swift에 대해서도 많이 배웠고 이제 이것들을 정리하고 내것으로 만드는 시간이 필요할 때인 것 같다.
캠프 초반과 나 자신을 비교 하였을 때 초반에 비해서는 코드를 작성하기 전에 설계를 하게 된 것도 있고, 기존에는 절차형 프로그래밍으로 작성했던 것 같은데 캠프를 진행하는 동안 객체지향 프로그래밍과 프로토콜지향 프로그래밍도 경험보고 나서 지금은 객체지향 적으로 많이 작성하는 변화된 모습을 볼 수 있었다. 또한 스스로 예전의 코드를 되돌아봤을 때 수정 하고 싶은 부분들이 많이 보이는 걸로 봐서는 그래도 조금은 성장한 것 같다.
야곰 캠프의 장점이었다고 하는 부분은 위에 내용에서도 많이 이야기 했지만 간단하게 요약하면 강의식이 아니라 학습 주제를 미리 공부하고 활동학습 시간에 토론하는 것이 공부에 있어서 많이 도움이 되었던 것 같고, 코드 리뷰를 통해서 코드를 작성할 때는 이유가 있어야한다는 점을 알게 된 것도 좋았다. 그리고 많은 팀 프로젝트를 진행하면서 사람들과 소통하고 전반적인 스케줄을 관리하는 것에 대해서도 많이 연습해보고 배운 것 같아서 만족한다.
좋은 개발자라는 것은 사람마다 정의하기 다르겠지만, 내 생각에 좋은 개발자는 적어도 팀원과의 의사소통을 중요하게 생각하고, 자신의 코드에는 이유가 있고, 더 좋은 코드를 작성하기 위해서 동료 개발자들과 꾸준히 서로 소통하고 받아들일 줄 알며, 자기 개발을 위해서 꾸준히 노력하는 사람이라고 생각한다. 따라서 iOS에 관심이 있고, 단지 기능 구현을 목표로 하는 것이 아니라 문제의 정답을 찾는 방법과 스스로 공부하는 방법, 그리고 좋은 개발자가 되고 싶은 사람이 있다면 야곰 캠프를 추천해 주고 싶다.