POCU COMP 1500 수강 후기를 써보려고 한다.
프로그래밍을 배우게 된 계기
행정병 복무 시절 대대 행정병으로 인사일만을 해도 바쁜데 재정담당관님의 육아휴직으로 인해 재정일까지 떠맡게 되었었다.
사수는 밀린 말년 휴가를 나가버렸고, 나는 매일 아침 9시부터 저녁 점호 전(밤 9시 30분)까지 일을 하면서 저녁이면 아무도 없는 사무실에 앉아서 일을 해야 했다. 휴가증 작성부터, 월말 결산까지 모든 행정일들은 다 나에게 와있는 기분이었다.
당직부관님은 네가 얼마나 대단한 일을 한다고 왜 늦게까지 일하냐며 핀잔을 주고, 다음날 아침에는 담당관님이 왜 아직도 일을 못 마쳤냐고 나에게 화내는 게 매일의 일상이 되었었다. 게다가 그런 지옥 같은 일과 속에 당직 순번에서 몇 달만 빼 달라고 동기들에게 부탁을 해도, 자기들도 힘들다며 내 당직을 한 번도 빼주지 않는 동기들이 원망스럽고 슬펐다.
누구에게 하소연하고 힘들다고 애원하고 싶었다. 하지만, 내가 어떻게 할 방법이 없었다. 그저 당직을 서고 그다음 날 잠을 못 잔 상태로 일을 해야 했다. 어떤 방법이라도 써서 일을 줄여야만 했다.
VBA 공부
내가 활용할 수 있는 방법을 모두 고민해야만 했다. 엑셀을 공부해 대부분의 업무를 자동화시켰지만, 그래도 느렸다.
파일이 깨지는건 다반사고, 엑셀 함수가 짬뽕되면서부터 에러가 나는 경우도 허다했다. 매달 5천 개가 넘는 간부들의 초과근무비를 일일이 조사하면서 엑셀 파일이 깨져 일일이 손으로 적어가면서 업무 한적도 꽤 되었다. 그러다가 행정병들이 정보를 공유하는 게시판을 알게 되었고, 그곳에서 프로그래밍을 알게 되었다.
누구는 포병기상사이트를 만들고, 누구는 랜덤 근무표 작성기, HTML로 쓴 2048게임까지 매우 다양했다. VBA 초보 글을 보면서 나도 프로그램을 만들어야겠다고 다짐했고, 그곳에 있는 모든 글을 읽었다. 그리고 모르는 것이 있으면 전산 주무관님에게 가서 모르는 지식을 물어보며 공부했다. 결국 나도 VBA프로그램들을 만들게 되었고, VBA를 통한 업무 자동화로 하루에 업무 시간을 2시간으로 줄일 수 있었다. 나만의 프로그램을 만들었다는 사실이 나를 너무 뿌듯하게 했다.
마치 7살때 처음 레고 블록으로 성을 지은 느낌이었다. 내 상상력으로 무엇이든 만들 수 있다는 자신감을 다시금 느낄 수 있던 경험이었다. 이러한 경험을 하게 되니, 개발이라는 게 거창한 웹사이트, 애플리케이션 제작뿐만 아니라 어떤 곳에 가져다 두어도 쓸모가 있고 쓰임새가 다양하구나 라고 알게 되었고, 전역 후에는 나도 사람들이 자주 쓰는 프로그램을 만들어야겠다고 결심했다. 이왕이면 해보고 싶은 거 하다가 눈을 감아야겠다는 생각과 함께 말이다.
전역 후
막상 사회에 나와 프로그래밍을 배우고자 하니 학원에, 유튜브에 개발자 선생님들이 즐비했다. 도대체 누가 얼마나 나에게 도움이 될지도 모르겠고, 어떤 선생님의 강의를 들어야 할지 고민도 많이 되었다. 특히 개발을 처음 하는 사람들에게는 국비 학원이 제격이라는, 국내 최대 개발자 커뮤니티인 okky 개발자님들의 말에 국비 학원이 어디가 좋은지 검색해서 후기를 거의 다 읽어보았다.
그중 도움이 되었던 글, 배민 리드개발자로 유명하신 이동욱 님 블로그 글이었다. 어떤 식으로 공부를 하면 좋을지 자세히 써두셨기에 궁금하다면 링크에 들어가 글을 읽어보길 권한다.
하지만, 내가 프로그래밍을 시작하려 하니 괜찮은 국비 학원은 이미 다 과정이 시작했고, 부트캠프들은 너무 비싸고 (3개월 과정에 대략 800만 원), 나머지는 코딩 시험을 봐야 들어갈 수 있는 곳들이었다. 그러다가 서칭 과정에서 포큐 아카데미를 알게 되었다.
물론, 처음에 의아했다. 다른 모든 학원들은 짧으면 3개월에서 6개월을 배우고 바로 취업을 했다는 리뷰도 많고 학생들이 교육기관을 통해서 많이 배웠다고 자부하고 있을 정도로 잘 가르친다는데, 왜 표큐는 그런 리뷰도 없고, 강좌들은 각각 4개월 가까이 걸리고, 어째서 대학 강의식으로 되어있는지 이해가 가지 않았다. 사이트 메인에 계신 분은 누구시고 이곳에서 무엇을 가르치는 건지 궁금했다.
포큐 후기를 읽고
포프님을 알기 위해서 포큐 수업 리뷰들을 꼼꼼히 읽다 보니 눈에 띄는 문구를 읽게 되었다.
"10년 뒤에도 살아남는 1% 개발자를 만들기 위한 곳" 너무나 강렬한 문구였다.
개발로 시작한다면 누구나 1% 개발자가 되는 게 로망이지 않을까 라는 생각부터, 와 얼마나 잘 가르치면 이렇게 홍보를 할까? 말만 번지르르한 다른 교육기관과 비슷한 곳은 아닐까? 너무 고민이 많아졌다. 다들 극찬을 하는데 그 정도로 대단한가?라는 생각이 들 정도였다.
그래서 오히려 포프 님에 대한 비관적인 시각을 가진 글을 찾아보려 했다. 하지만 커뮤니티 특성상 그냥 공격적인 성향의 댓글이 손에 꼽을 정도로 몇 개 있었기에 딱히 그런 글을 찾지는 못하였다.
그러던 중 유튜브에 '포큐 아카데미의 무엇이든 물어보세요, 포프티비의 언메니지드 언어와 메니지드 언어를 1개씩은 잘해야 한다, 수학을 못하는 프로그래머, 영어를 못하는 프로그래머, 코드 몽키의 미래' 등 많은 동영상을 보니, 포프 님의 인사이트를 간접 체험할 수 있었고, 이분은 전문가 중에 그것도 0.1%에 속하는 사람이라는 것을 프로그램을 잘 모르는 나도 알 수 있었다.
C# 이랑 C언어 말고 가르치는거 없어요?
포프 님이 대단하신 분이란 것도 알겠고, 수업을 들으면 좋은 건 알겠는데 다른 부트캠프들은 js, node.js, 서버, java 등 모든 분야를 다 가르치는데 포큐에서 c# 입문강의부터 해서 c, c++ 만 가르치는데 여기서 수업 들으면 써먹을 수 있을까요? 저는 급해요 당장 취직해야 하는데..라는 질문도 들 수 있다.
그리고 필자의 친한 친구에게도 이 수업을 들어보라고 추천했는데, 그래서 이 수업을 들으면 게임을 만들 수 있냐? 아니면 웹사이트를 만들 수 있냐 라는 질문을 받았다. 수업 커리큘럼엔 프로그래밍 기초 언어, 수학, C, C++, 알고리듬 이런 대학 수업들처럼 보이는 과목들밖에 없기 때문이다.
즉, 실용성이 없어보인다는 말이다. 그래서 친구에게 수업들을 듣는다고 해서 게임이나 애플리케이션을 만들 수 있을지는 잘 모른다고 했다. 나도 이제 comp1500 입문 과목을 들었으니 말이다. 하지만 포큐 수업을 듣고 나면 작은 프로그램부터 만들 수 있는 용기와 자신감이 붙는 건 사실이다.
위 동영상을 보면 포프님이 중간에 이런 말씀을 하신다 "어디 가서 언어 C++랑 C#정도 할 줄 안다고 만 말한다"라고 말이다. 그리고 영상 내용 일부분을 요약하자면 "몇몇 개발자들이 JAVA, C, PYTHON, TS, JS, REACT, 등등 엄청나게 많은 언어들을 열거하면서 나는 언어 이만큼 알아요 라고 말하지만, 정말 기본이 튼튼한지 아니면 자신의 전문성에 대한 기준이 낮은 건지 조금은 의심할 수밖에 없다. 하지만, 정말 잘하는 개발자들은 기초가 탄탄한 사람이 많았고 언어들 간에 공통점이 있기 때문에 새로운 언어는 조금의 노력을 덧붙이기만 하면 된다"라고 하셨다.
즉, 기초를 잘 쌓아서 원하는것들을 만드는 건 조금의 노력을 덧붙이기만 하면 된다는 말이다. 기초를 제대로 배운다면 어떤 언어를 접하더라도 쉽게 이해할 수 있는 개발자를 만드는 게 포큐의 지향점이 아닐까?
Comp1500을 들어야 하는 이유
예전 대학교를 졸업 후에 몇년이 걸리는 큰 시험을 준비한 적이 있었다. 좋은 결과를 얻지는 못했다. 하지만, 그 시험을 통해서 알게 된 것은 어떤 공부를 하더라도 첫 단추를 잘 끼워야 한다는 것이다. 물론, 자신이 그 공부에 흥미가 있는지 확인을 해보고 시작했을 때 말이다. (머릿속에서 하루 종일 공부 생각을 하지 못하고 지루하거나 힘들다면 흥미가 없다는 방증, 빨리 분야를 찾는 것이 좋다)
내가 말하는 첫단추란, 좋은 선생님 그리고 열정적인 수강생들이 모인 환경이다.
- 처음에 좋은 선생님께 배우지 못하면, 기초가 되는 지식들이 중구난방으로 쌓이게 된다.
공부에 시간은 많이 썼는데 모든 게 헛공부라는 것을 알게 되는 것은, 많은 시간이 지나가고 나서 나의 지식을 쌓아 올리는데 더 이상 실력이 올라가지 않을 때 알 수 있다, 그때서야 내 기초가 잘못되었구나 라는 자각을 하게 된다. (자각을 못하는 경우가 훨씬 더 많고 뭐가 잘못되었는지 이유를 밖에서 찾으려는 사람들이 훨씬 많다) 그 시기가 오면 시간은 시간대로 돈은 돈대로 써서 이미 되돌릴 수 없는 경우가 허다하다.
- 열정적인 환경에 자신을 묶어놓아야 자신도 열심히 한다.
맹모삼천지교라는 말이 그냥 나온 말이 아니다. 맹자의 어머님은 맹자가 공부를 할 수 있는 환경을 제공하려 노력하셨고, 그로 인해 맹자는 엄청난 스승이 될 수 있었다. 즉, 환경도 공부에 민감한 요소 중 하나이다. 다른 친구가 놀자고 꼬시면 공부를 더 할 수 있을까?
comp1500은 내 기준으로 첫 단추를 잘 꿰맬 수 있는 요소들을 다 갖추고 있다. 그리고 다음은 내가 선택한 포큐 아카데미를 들어야 하는 이유이다.
1. 최고의 강사에게 배우는곳
2. 매번 나의 한계를 경험하게 해주는 실습과 과제
3. 친절한 빌드 봇
4. 슬랙 환경
1) 포프 님은 굉장한 강사이다.
(잘 모르겠으면 '김포프'라고 구글에 쳐보면 나무 위키도 있다. 한번 읽어보자)
포프 님은 게임업계에서 유명한 개발자이시다. 포프 님 블로그에 따르면 스페이스 마린, fifa 14, 해일로, 마인크래프트 등을 만드셨다고 한다.
또한 강의 경력 또한 빠지지 않는데, 캐나다 대학을 다니시면서부터 학우들의 무료 프로그래밍 과외를 하셨고, 이후에는 BCIT 교수로 재직하셨다.
RateMyProfessor에 리뷰들이 있는데, 리뷰 점수가 높은걸 보고 깜짝 놀랐다. 나도 대학교 재학 시절 항상 이 사이트를 보고 다음 강의들을 선택했고 (4점 대면 거의 최고의 교수님이다) 대부분 3점에서 4점 사이에 있는 교수님들의 강의를 들었었다. (그 정도 점수의 교수님들도 내공이 엄청났다.RateMyProfessor는 익명이기 때문에 객관적으로 학생들이 교수님들을 평가하는 편이다. 게다가, 교수님들이 과제 점수를 짜게 줘서, 시험이 어렵다는 이유로 별점 테러를 당하는 일도 비일비재하다. 우리나라와 비숫하다).
하지만 대부분 리뷰를 보면 점수를 잘 줘서 리뷰가 좋은 것보다는 정말 잘 가르친다는 후기가 훨씬 많다. 그렇다면 더할 말이 있는가? 외국인, 한국인 너나 할거 없이 많은 수강생들이 최고라고 말하는 데는 이유가 있다.
또한, 동강을 통해서 강의를 듣고 있으면 아! 이래서 OOP가 탄생했구나, 아 자료형과 참조형은 이렇구나 등 어려운 주제들을 초보자 눈높이에 맞게 설명을 해주신다.
혼자 프로그래밍을 공부해보면 알겠지만, 대부분의 책과 강의는 나는 일단 말할 테니 네가 알아서 한번 이해해봐 라는 식이다. 책을 쓰신 개발자님들이 나름 독자의 눈높이를 고려할지 모르겠지만, 처음부터 일단 프로그래밍 메서드들이 튀어나오기 시작한다.
독자의 입장에서 이해하기 어렵고 외우려고 하지만 책이나 강의는 언제나 지루하다. 하지만, 포프 님의 강의는 계단식으로 난이도가 올라간다. 즉, 초보자의 눈높이에서 강의가 진행될수록 점점 자세하게 설명되고, 어려워진다. 몇몇 코린이 들을 앉혀놓고 잘 따라오고 있는지 확인하며 수업을 진행하는 느낌이다.
2) 매번 나의 한계를 경험하게 해주는 실습 및 과제
예전 대학교 4학년 때 프로그래밍을 공부해야지 하면서 산 파이썬 프로그래밍 책이 있다. 하지만, 설치 부분에서 너무 지루해서 파이썬을 설치만 해보고 hello world를 한번 쳐보고 더 이상 프로그래밍을 시도해 보지 않은 기억이 난다.
4만 원 가까운 책인데.... 오래되어서 당근 마켓에도 팔 수 없다.. 그만큼 처음이라면 강한 동기가 없다면 독학하기 어려운 게 프로그래밍이다.
독학을 하게 되면
- 혼자서 공부해야 하기 때문에, 혼자서 계획부터 실행까지 할 수 있는 사람이 아니라면 반복문 이후로는 공부하기 어려울 것이다.
- 책 예제만 쳐보고 " 아 어려워 귀찮아" 하고 그만두게 된다.
- 스터디를 구해도 보통 현업 개발자 혹은 이미 잘하는 사람들이 있는 곳에 들어가 남들과 나를 비교하다가 나가게 된다.
국비 학원을 가면
- 강사님이 수업이 매우 빠르기 때문에, 미리 공부를 많이 해가야 한다.
- 코드를 직접 만들어 볼 수 있는 환경이 적다
- 프로젝트까지 하고 나도 전에 배웠던 것이 기억이 나지 않는다.
와 같은 문제점들이 있을 거라 사료된다.
이걸 해결해 주는 게 바로 실습과 과제이다. comp1500에서는 매주 1개의 실습과 3주에 1개의 과제가 당신의 모든 프로그래밍 지식을 활용할 수 있도록 도와준다. 정해진 가이드라인은 있지만, 정해진 답은 없다. 강의에서 배운 모든 지식을 활용하고, 구글까지 검색을 해야 실습 및 과제를 진행할 수 있다.
심지어 왜 빌드 봇 채점에서 펑크가 나는지 스스로 문제점을 찾는 것조차 쉽지 않을 때도 있다. 나의 최선을 다해서 문제를 풀어야 한다. 그리고 이런 과정이 모든 지식들이 머릿속에 흡수되는 최고의 과정이다.
실습이나 과제는 위 그림처럼 문제에 대한 설명이 있고, 기본 함수 구조를 주어 직접 푸는 과정이다. 하지만 COMP1500은 입문 수업이지만 입문자를 위한 쉬운 실습, 과제가 나오지 않는다.
대부분의 COMP1500 리뷰들이 실습이 2시간 과제가 10시간 정도 걸린다고 하지만 그분들은 보통 프로그래밍을 이전부터 한 사람들이 많다. 나처럼 처음 프로그래밍을 공부하는 사람들은, 수업 중반부터는 최소 실습에 10시간, 과제에 30시간 이상 들어간다. 물론, 쉬운 실습이나 과제가 있겠지만, 점점 어려워지는 건 사실이다. 그리고 초보자라면 무조건 실습이나 과제가 나오는 날부터 시작하길 권한다.
또한 시간을 저렇게 많이 잡는 이유는, 코드 리펙토링을 해야 하기 때문이다.
코드 리펙토링이라고 해서 거창하게 생각할 필요는 없다. 자신의 코드를 다시 읽어보면서 다시 써보는 작업을 하는 일이다. 마치 글을 쓰고 읽고 다시 고치는 작업을 하는 일과 같다.
물론, 실습이나 과제가 단순했다면 코드 리펙토링과 같은 부수적인 작업을 할 이유가 없을 것이다. (이미 잘하는 프로그래머는 제외) 하지만 막 코딩을 시작한 사람들이라면 코드 리펙토링을 하는 걸 추천한다.
그리고 이러한 작업은 우리의 예광탄 코드로 과녁의 가장자리를 맞추는것 뿐만 아니라 과녁의 100점에 가까워질 수 있도록 도와주는 역할을 한다.
(실용주의 프로그래머 중)
어둠 속에서 사격을 할 때 목표물을 정확히 맞춘다는 것은 쉬운 일이 아니다. 이러한 상황 속에서 목표물을 맞추려면 두 가지 방법이 존재하는데, 첫째는 치밀한 계산을 통한 방법이다. 거리, 고도, 방위, 기온, 습도, 사양 등 무수히 많은 영향을 파악한 뒤 계산을 하고 사격을 하는 것이다. 둘째는 예광탄을 사용하는 방법이다. 탄창에 들어 있는 일반 탄환들 사이에 일정 간격으로 예광탄을 넣어 두면, 총알이 날아가는 궤적을 볼 수 있게 되고, 결과적으로 탄환을 목표물에 맞힐 수 있게 된다. 코딩에서도 이러한 효과를 얻으려면 빨리 눈에 보이는 전체 flow를 만들어 내는 것이 중요하다. 물론 완전한 기능을 넣을 필요는 없다. 우리는 컴퓨터가 아니다. 인간이고 개발하는데 많은 경험이 있지 않다면, 분명하게 자신의 예광탄을 보면서 정확도를 높이는 연습을 해야 한다. 또한 코드 리팩터링을 통해 100점 과녁을 쏠 수 있도록 도와줄 것이다.
결과적으로 사용자들에게는 최종 결과물을 예측할 수 있게 하여 빠른 feedback을 내놓을 수 있게 하고, 프로젝트에 참여한 개발자들에게는 무에서 유를 창조하는 어려움에서 벗어나 빠른 생산성을 낼 수 있게 하는 효과가 있다. 기존 개발 방식처럼 진공의 상태에서 개발되어 통합 테스트 전까지 어떤 결과도 예측하지 못하는 어려움에서 벗어나 지속적으로 코드를 통합할 수도 있으며, 진척 상황에 대해 쉽게 파악할 수도 있다. 물론 모든 것이 예측 가능하다면 전자의 방법을 택하는 것이 좋겠지만, 후자의 경우에 주는 이점들이 다수 존재한다. 우선 즉각적인 반응을 얻을 수 있고, 상대적으로 적은 비용이 든다는 것이다.
실용주의 프로그래머(David Tomas, Andrew Hunt)를 읽어보면 예광탄 코드에 대해 설명하고 있다.
3) 빌드 봇
위의 예시로 들었던 프로그래머스 코딩 문제는 코드가 실행이 돼서 답이 출력되는지만 확인한다. 하지만, 포큐 빌드 봇은 코드가 컴파일되는지부터, 원하는 기능이 돌아가는지 코드 스탠더드는 지켰는지, 예외조건은 생각했는지 등 여러 가지를 고려해 채점을 해준다.
그리고 내가 생각하는 타사 채점 봇과 다른 점 3가지를 소개하겠다.
A. 코딩 스타일
B. 예외조건
C. 금지 함수 사용 체크
A. 코딩 스타일
나는 레고를 예로 들어보겠다. 레고는 레고만의 규격을 따른다.
위 그림처럼 레고 블록마다 구체적인 규격이 존재한다. 그렇기 때문에 어떤 레고 부품을 가져다 새로운 창작물은 만들더라도 서로가 융합될 수 있다. 하지만, 나만의 독자적인 규격 혹은 규격에 대한 기준이 없다면 기존 레고와 전혀 융화될 수 없다.
코딩 스탠더드를 하나 예시로 보여주겠다.
포큐 아카데미만의 코딩 스타일이 있다. 인터넷 서칭을 하다 보면 아래 예와 같이 표기해 놓은 코드를 종종 볼 수 있다. 이렇게 해도 코드는 잘 돌아간다.
for(int i = 0; i < 10; ++i)
Console.WriteLine("hello world");
하지만 포큐 코딩 스타일대로 바꾸게 되면
for(int i = 0; i < 10; ++i)
{
Console.WriteLine("hello world");
}
가 된다 괄호 붙이는 게 무슨 대수냐 라고 생각할 수도 있지만, 이처럼 괄호의 존재 덕분에 더욱 쉽게 코드를 읽을 수 있고 코드의 통일성을 유지할 수 있다. 즉, 코딩 스탠더드를 통해서 제품의 규격화가 잘 이루어질 수 있고, 코드 가독성도 올라간다.
코딩 스탠더드는 이처럼 제품을 만드는 규격을 제시한다. 대부분의 현업 프로그래머들이 협업을 통해 제품을 만들고 있고, 혼자서 제품을 만들더라도 코드에 대한 규격(규칙)이 존재한다면 코드에 문제가 생겼을 때 빠르게 문제를 해결할 수 있다. 이처럼 포큐 코딩 스탠더드를 따라 작성을 하며 익숙해지면, 미래 개발자로서 협업에 대한 기본기를 쌓는 게 아닐까 생각해본다.
B. 예외조건
실습으로 함수를 작성해야 하는 문제가 있다고 하자. 그럴 경우에 함수에 정확한 값이 아닌 다른 값이 들어올 경우에 어떤 예외를 처리할 수 있을까? 예외를 생각해서 함수를 작성할 수 있도록 빌드 봇 테스트 도중에 여러 예외조건들이 테스트된다.
예를 들자면 다음과 같은 코드가 있다고 하자. 처음 글자를 반환하는 함수인데 어떤 글자를 넣더라도 처음 글자를 잘 반환하지만, 만약 x에 null 값이나 빈칸이 들어가면 무엇을 반환해야 할까? 와 같은 예외상황들이 존재한다.
public static void GetString(string x)
{
// return x의 첫번째 글자
}
(이런 함수의 매개 인자로 예외 값이 들어간다면?...)
아래 참고처럼 실습 및 과제 위키 페이지에 들어가면 실습을 통해서 빌드 봇이 확인하는 조건들이 모두 기록이 되어있다. 그리고 그 조건들은 대부분 함수가 정상적으로 돌아가는지 그리고 예외의 값이 들어가면 어떻게 되는지에 대한 문제들이 대부분이다. 즉, 실습과 과제를 통해서 연습을 하면 충분히 코드를 짤 때 예외조건들을 어떻게 처리할지 자동적으로 고민하게 된다.
C. 금지 함수 체크
예를 들어 이런 실습이 있다. 두 개의 리스트를 하나로 합치되, 숫자가 작은 순서대로 합치는 문제이다.
List<int> list1 = new List<int> { 1, 1, 4, 7 };
List<int> list2 = new List<int> { 2, 3, 4, 5 };
List<int> combinedList = Practice.MergeLists(list1, list2);
// [ 1, 1, 2, 3, 4, 4, 5, 7 ]
쉽게 문제를 해결하려 생각을 해보면 두개의 리스트를 하나에 모두 넣고 Sort메서드 (정렬 함수)를 바로 써주면 해결할 수 있을 것이다. 그리고 코드도 훨씬 줄어들게 되어 가독성도 올라간다. 하지만, 이런 기능은 빌드 봇에서 금지되어있다.
그렇다면 코드를 만들어 보면서 정렬 기능을 모방하는 코드도 짜 보게 된다. 버블 정렬, 삽입 정렬 등 검색해보고 고민해보고 이런 과정을 거치면서 한 줄짜리 코드에서 지원하는 기능들이 무엇인지 생각해봄으로써, 컴퓨터 내부에서 어떤 일들이 일어나는지 조금씩 알게 된다. 그리고 그런 지식들은 프로그래머로 성장하는 발판이 된다고 믿는다.
아래 예는 동영상 강의 중 포프 님이 소개하셨던 예이다. linq를 통해서 자료를 필터링하는데 linq의 조건문을 잘 모르면서 남용을 하면 안 되는 이유에 대한 예이다.
var filteredOrder = orders.Where(o => o.Pirce > 10);
var filteredOrder2 = orders.Where(o => o.Qality > 6);
이런 식으로 where를 쓰게 되면 (where는 조건에 맞는 값을 찾는 도구라고 생각하면 된다) orders에 있는 모든 자료를 두 번 훑게 된다. where가 어떤 기능을 하는지 정확히 몰라서 쓰다 보니 주문이 밀려들수록 프로그램의 실행 속도는 느려지고 업무 효율도 낮아졌다는 예이다.
코딩을 이제 막 시작하는 사람들이 있는 채팅방에 가끔 한 줄로 코드를 짠 사람들이 너무 멋지다며 찬양하는 글이 올라오곤 한다. 하지만, 함수들이 컴퓨터 내부에서 어떻게 도는지 정확하게 알고 고민해본다면 짧고 멋진 코드보다는 효율적인 코드를 짤 수 있는 개발자가 되지 않을까?
4) 슬랙 환경
언제든지 내가 궁금한 게 있으면 질문하고, 대답을 받을 수 있는 환경을 슬랙을 통해서 받을 수 있다. 마치 게시판 같은 느낌이다. 하지만, 이곳에서 강사님에게 질문도 할 수 있고, 실습 및 과제가 막히는 부분에서 뭘 더 생각해 봐야 할지 다른 사람들에게 힌트도 얻고, 남들과 코드 리뷰도 할 수 있는 고마운 공간이다.
혼자서 코드 짜면 자신이 잘한다고 우쭐 해 질 수도 있지만, 자신보다 더 잘 짠 코드를 보고 더 많은 공부를 할 수 있는 곳이다. 또한 포프 님이 잘한 코드를 추천해주시기도 한다.
실습 및 과제 주간이 끝나면 아래처럼 서로 코드 리뷰를 해준다.
하지만 포큐 아카데미에 단점도 존재한다.
1. 스스로 해야 하는 공부
누가 강제로 공부를 시켜줘야 하는 사람이라면 포큐아카데미가 아닐 수 있다
누가 하라고 해서 하는 주입식 교육을 느껴본 적 있는가? 그냥 생각하지 않고 하는 게 더욱 효율적이라면, 누군가 자신을 밀어붙여 공부를 하는 스타일이라면, 포큐아카데미는 맞지 않는 곳이다. 포큐 아카데미는 스스로 공부를 할 수 있도록 환경을 조성해 줄 뿐이다.
2. 틀린 부분을 딱 한 번만 볼 수 있는 시험
포큐 시험을 보면 기본적으로 따로 메모나 필기가 허용되지 않는다. 문제 유출 때문에 그런 것 같아 이해할 수 있다. 하지만, 시험이 끝나고 검토하는 기간이 주어지는데 틀린 부분을 딱 한번 다시 체크할 수 있다. 나는 이 부분이 큰 단점이라고 생각한다.
학생 입장에서는 시험에서 틀린 부분을 보고 스스로 생각해보고 다시 공부할 수 있는 기회라고 생각하기에, 시험을 보는 것뿐만 아니라 시험을 통해서 피드백을 받는 게 매우 중요하다고 생각한다. 수강생들은 포큐 학원이라는 곳 자체를 학위를 따려는 목적이 아니라 (사이트 메인화면에 비인가 학원이라고 써져있음) 오로지 코딩 실력을 향상하기 위해서 신청을 하는 것이다. 학생들도 이미 다 이해하고 있다. 그렇기 때문에 더욱 시험에서 틀린 부분도 피드백하고 싶은 수강생들이 있다.
하지만, 시험 검토를 위해 주어지는 30분간 검토 화면을 들어가면 틀린 문제에 자신이 썼던 답을 다시 보면서 뭐가 틀렸는지 고민해봤자 뭐가 문제인지 전혀 알 수가 없다. 컴파일러도 없는데 틀린 부분을 다시 보면 무엇이 틀렸는지 모두 알 수 있을까?
틀린 문제 옆에 해설이라도 달아주면 좋을 것 같지만 그런 건 없다. 내가 추측하기로는 적은 인원으로 돌아가는 회사에서 강의를 만드느라 바쁜데 매 학기마다 시험을 만들기 어려워서 그런 듯하다. 만약 그렇다면, 조교를 더 뽑아서 새로운 문제를 계속 만들면 되지 않을까 싶다.
그렇기에 시험을 보고 스스로 피드백을 하는 부분은 오로지 자신의 복기 능력에 달려있다. 시험은 학생들의 점수를 매기기 위해서만 사용되는 게 너무 아쉽다.
3. 수강생들이 만들어야 하는 리뷰 환경
리뷰 환경 자체가 수강생들의 자발적인 의지로 되기 때문에 70명 정도 정원이 있음에도 10명에서 15명 정도의 학우들만 자신의 코드를 공유하고 리뷰를 하곤 했다. 물론 조교님과 포프 님이 리뷰 댓글을 달아주시지만, 거의 대부분이 수강생들끼리 하는 리뷰가 주를 이룬다.
즉 리뷰 환경을 수강생들끼리 만들어야 하고, 열정 넘치는 사람들이 존재해야 리뷰를 받을 수 있다. 그렇기 때문에 수업을 들으면서 코드 리뷰를 할 시간이 돌아오면 자신의 코드에 아무 댓글이 달리지 않더라도 너무 낙심하지는 말자. 대신에 다른 수강생들의 코드를 보면서 배울 점을 고민해보자.
필자가 생각하는 수업을 들을 때 활용할 만한 tip
1. 테스트 케이스를 만들어보자
실습 및 과제에 항상 테스트 케이스가 같이 있다. 그리고 테스트 케이스를 만들면서 다시 실습 코드들을 생각해보면 실습에 대한 지식뿐만 아니라 테스트 케이스를 만들며 배운 지식을 활용할 수 있다.
2. 코드 리뷰 환경을 만들어 보자
같이 수강을 했던 수강생분 중에, 수강 중 저조한 코드 리뷰로 인해서 학기 사람들끼리 리뷰를 좀 더 할 수 있는 방법이 없을까 생각하다 내놓은 아이디어이다. 학기를 같이 하는 학생들끼리 코드 리뷰에 대한 문화를 만들어 보는 건 어떨까?
3. 직접 중간, 기말고사 모의 문제를 만들어 보자
이건 내가 가장 강추하는 부분이다. 중간고사와 기말고사를 대비하기 위해서 실습 및 과제를 훑고 동영상 강의를 다시 보는 걸로 시험을 대비하는 것보다. 자신이 직접 문제를 만들어 보면서 개념들을 적용시키면 막히는 부분이 나오기 시작한다. 그 부분들을 공부하고 정리하다 보면 실력이 향상되는 건 금방이다. 물론 내가 중간, 기말 시험을 100점을 맞은 건 아니지만, 이를 통해서 60점 을 맞을걸 80점 이상을 맞았다고 생각한다.
4. 참고하면 좋을 책들을 읽어보자
포큐 홈페이지에 권장 책이 있다. 그리고 공부를 하면서 책을 참고하면 많은 도움이 되리라 믿는다.
필자도 '이것이 c#이다'를 구매했고 동영상 강의를 듣고 내가 조금 더 보완하고 싶은 주제들을 책으로 공부하고 있다.
그리고 포프 님이 추천해주신 '조엘 온 더 소프트웨어' 책도 읽으면 좋을 듯싶다. (이 책은 좀 더 프로그래밍 지식을 쌓은 뒤에 읽으면 이해가 가지 않을까 싶다)
수강 후 느낀 점
혼자 공부할 수 있는 토대 마련
나는 포큐 아카데미 정규 코스를 통해서 굉장히 많이 성장했다고 자부한다. 아주 기초적인 형 변환부터 C#의 컬렉션, linq, 재귀 함수 기초를 배웠고 특히 재귀 함수는 프로그래밍 기본서 책으로도 인강으로도 잘 가르치는 곳이 많지 않다.
물론 아래 그래프처럼 아는 게 없지만 자신감만 붙어서 현재 필자는 우매함의 봉우리에 있을 거라 생각하지만, 적어도 comp1500를 듣는 것은 수업료인 100만 원을 길바닥에 버린 다음 짓밟는 짓은 아니라고 생각한다.
최소한 화수분에 좋은 영양분을 주었다고 믿는다. 좋은 토양에서 식물을 키워야 쑥쑥 잘 자라듯이 이 글을 읽는 미래의 포큐 수강생들도 comp1500을 수강해 좋은 토양을 만드는 기회가 되면 좋겠다.
새로운 언어에 대한 두려움 없어짐
c#을 공부하면서 java를 공부 안 하면 우리나라에서 프로그래머로 성장하지 못하지 않을까 라는 불안 때문에 강의를 들으며 java책을 사서 공부도 같이 하였다. 하지만 java를 공부하면서 느낀 점은 c#과 별로 다른 게 없었다. 문법이 조금 다를 뿐이다, 그리고 비슷한 메서드에 비슷한 함수들, 거의 차이가 없었다.
물론, 깊게 파고들면 파고들수록 다른 부분은 얼마든지 찾아볼 수 있다. 하지만, 포프 님 말씀대로 자바 혹은 다른 언어들 은 c#, c에 조금 더 얹는 공부를 하면 되는 것이었다.
그러니 자바로 프로그래밍 입문을 안 한다고 해서, 대한민국 주류 프로그래밍 언어로 공부하지 않는 사실을 두려워할게 아니다. 기본적인 지식을 어떻게 더욱 갈고닦을 수 있을지 고민해보고, 그를 통해서 다른 언어들을 손쉽게 익힐 수 있을 기반을 만들 수 있다.
미래에 대한 고민이 증가됨
포큐 강의를 듣기 전에는 java를 배워서 웹서비스의 백엔드 개발자 프런트엔드 개발자로 성장을 하는 게 일차적인 목표였다. 대부분의 학원 및 부트캠프들의 커리큘럼을 보더라도 대부분 웹서비스를 맡는 개발자들을 양성하고 있기에 그쪽으로 따라가는 것이 개발자로 입문하는데 쉽지 않을까 라는 생각 때문이었다.
하지만, 포큐 강의를 듣고 나니 이제는 정말 하고 싶은 분야를 해보고 싶다는 자신감을 얻었다. 만약 포큐아카데미를 만나지 않았다면, 기초도 제대로 쌓지 못하고 이곳저곳 전전하다가 프로그래밍을 배우는데 깊은 회의감을 느꼈을지도 모르겠지만, 이제는 나에 대한 가능성을 조금은 믿을 구석이 생겼다.
결과적으로 나의 실력이 향상했냐고 물어본다면, 나는 200% 성장했다고 자부한다. 이제 시작이란 것을 안다. 하지만, 첫 시작을 잘 꿰맨 만큼 이후 성장이 무섭지 않고, 앞으로 포큐에 있는 모든 강의를 완주할 계획이다.
나의 후기를 읽는 분들께 포큐 아카데미 수강을 선택하는데 조금은 도움이 되었으면 좋겠다.
최근댓글