본문 바로가기

후기/강의 후기

[완강 후기] 포큐 아카데미 'COMP2500 객체지향 프로그래밍 및 설계'

728x90

- 공부 기간 :  2022년 5월 2일 ~ 8월 15일 (총 15주 과정)

- 공부 시간 :  총 115시간 59분

- 플랫폼 :  POCU 아카데미 홈페이지

- 100% 온라인 강의

선택 이유


현재 개발자로 일하고 있는 지인의 소개로 포큐(POCU) 아카데미를 처음 알게 됐다. 그 친구는 나에게 포큐 과정을 입이 닳도록 칭찬했는데 요약하자면 "해당 코스를 패스만 해도 바로 실무에서 일할 수 있을 정도의 실력이다"라고 높게 평가했다.

 

포큐 아카데미에는 다양한 강좌가 개설되어 있다. '왕초보 프로그래밍 입문(C#)'부터 '실무 프로그래밍 입문', 그리고 '소프트웨어 공학용 수학', 'C 언매니지드 프로그래밍', '알고리듬 및 자료구조' 등 입문부터 전문 과정까지 있다. 이 중에서 친구가 추천해준 강의가 바로 "[COMP2500] 개체지향 프로그래밍 및 설계 (Java)"였다.

 

포큐 아카데미는 크게 2가지 방법으로 학습할 수 있다. 

 

 

(1) 영구 소장 동영상 강의만 구매해서 듣기  =  약 22만원

(2) (동영상 강의)  +  11가지 실습  +  4가지 과제  +  중간고사  +  기말고사  =  (22만원  +  80만원)  총 약 102만원

 

친구는 나에게 '무조건' 2번. 즉 학기제에 수강을 하라고 했다. 왜냐하면 포큐 아카데미의 꽃이 바로 다양한 실습과 과제이기 때문이었다. 하지만 100만원이란 거금을 선뜻 지출하는 것은 쉬운 일이 아니었다. 무엇보다 현재 시점에서 나에게 필요한 강의인지 확신이 들지 않았다.

 

당시 나는 독학만 하고 있었고, 기본 지식이 탄탄하지 않은 상태였다. 자바 문법은 남궁성 저자의 '자바의 정석'을 베이스로 '객체지향 프로그래밍 파트'를 한 번 돌파한 수준이었다. 그 뒤 범위인 '컬렉션 프레임워크', '제네릭', '람다', '쓰레드' 등은 전혀 알지 못했고 이제 객체지향이 무엇인지 맛만 본 상황이었다. 그러나 무식한 게 용감하다고 했던가. 나름 자바의 기본 지식에 대해 알았다는 자신감이 충만한 상태였다. 이 정도면 부족한 점이 있더라도 공부하면서 보완이 되지 않을까 낙관적인 태도를 가졌다.

 

 

 

수강 전에 자가평가 질문이 팝업창으로 뜬다. 선수과목에 대한 사전 지식을 묻는 질문이었다. 나는 모든 질문에 '아니오'로 답했다. 일단 C# 언어를 할 줄 몰랐고, 해당 내용에 대해 알지 못했기 때문이었다. 바로 다음 주의 창에서 "진도를 따라가기에 벅찰 수도 있습니다"라는 경고를 받았다. 이 순간 걱정이 들었던 것도 사실이었다. 그러나 수강 신청을 감행했다. 그 이유는 다음과 같았다.

 

1. 내가 기대하는 건 "객체지향 관련 지식"뿐인데, 이를 위해서 선수과목 2개를 수강하기엔 시간적으로나 비용적으로 여유가 없었다.

 

2. 앞선 선수과목은 Java 언어가 아니라 C# 이라서 부담이 됐다. 현재 Java 언어를 익히는 것도 부담인데 다른 언어를 중복해서 배우면 혼동이 우려됐다. 

 

3. 객체지향 프로그래밍(OOP)이 무엇인지 너무 궁금했다. 책에서 말하는 개념이 추상적이라서 실질적인 이해에 대한 갈망이 심했다. 그런데 객체지향 전문 강의라고? 매력적일 수밖에 없었다.

 

4. 주간 일정에 나와있는 학습 커리큘럼 내용이 자바의 정석에서 공부한 범위와 크게 다르지 않아서 괜찮을 거라 판단했다. 

 

5. 친구의 추천과 구글링해서 찾아본 후기들이 대부분 긍정적이었다.

 

이러한 이유들로 수강 신청을 했고 새로운 도전을 시작했다.

강의 내용


-  동영상 강의

동영상 강의는 학기제와 상관없이 구매/학습이 가능하다. 따라서 학기가 시작하기 전에 미리 시청할 수 있다. 학습 가이드에 따르면 학기 진도 범위보다 약 한 달치 분량의 영상을 사전에 공부하기를 권한다. 그 이유는 실습과 과제 때문이다. 실습과 과제는 나중에 자세히 말하기로 하고, 인터넷 강의는 '김포프 강사'가 직접 나와서 가르친다.

 

각각의 영상 길이는 5분 ~ 10분 이내로 길지 않지만, 각 내용마다 꽤 많은 영상이 존재한다. 나는 이 강의 영상들이 마음에 들었다. 특히 객체지향 범위에서는 여타 강의에서 느껴보지 못한 감탄이 몇 번이나 나왔다. 굉장히 추상적인 개념인데 적절한 예시와 입담으로 지루하지 않게 이해할 수 있었다. 강사의 역량이 대단하구나 싶은 순간들이 꽤 있었다. 객체지향에 대한 개념을 알아가는 데는 동영상 강의만으로도 충분하다고 생각한다.

 

무료로 제공되는 미리보기의 한 장면이니 저작권 문제는 없으리라 생각한다.

 

클래스, 개체 모델링 1, static, 싱글턴, 내포 클래스, 상속, 다형성, 추상 메서드/클래스, 인터페이스, 예외처리 등 '객체지향 프로그래밍'에서 중요한 개념들을 오로지 객체지향적인 관점에서 바라본다. 이러한 배움이 객체지향에 대한 이해를 한층 높였다.

 

물론 포큐 아카데미의 꽃이 실습과 과제에 있음은 두말할 여지가 없다. 

- 실습  (11 개)

매주 월요일에 실습 미션(?)이 1개씩 주어진다. 수강생들은 주어진 일주일 동안 해당 실습을 진행하면 된다. 실습 명세서에 따라 주어진 기능을 구현하는 코드를 작성하여 Sourcetree를 통해 깃에 push 한 후, Slack의 '빌드봇'에게 검토를 요청한다. 그러면 빌드봇이 명세서의 요구사항대로 코드가 작동하는지, 코딩 스타일은 맞는지 등을 채점한 다음 점수를 알려준다.

 

첫 실습에서 지속적인 오류로 너무 스트레스를 받았었다...

 

빌드봇은 애증의 존재인데, 오랜 시간 고민해서 작성한 코드도 얄짤없이(?) 퇴짜를 놓는 비정함에 밉기도 하고 반대로 통과 메시지를 보내줄 땐 누구보다 고마운 존재가 된다.

 

 

실습은 과제를 하기 위한 '연습'이라고 보면 될 것 같다. 

-  과제  (4 개)

과제는 3주에 한 번씩 출제된다. 즉 고민할 시간이 3주가 되는 만큼 난이도가 어렵다. 미리 수강했던 내 친구도 나에게 단단히 각오하라던 것이 '과제'였다. 과제는 쉽게 말해 어떤 제품을 구현하는 것이다. 가상의 시나리오가 주어진다. 내가 어떤 회사에 들어왔다면 팀장이 나에게 고객의 요청사항대로 개발을 지시하는 것이다. 실습에서 구현했던 기능들을 통합하고 전체적인 그림을 그릴 수 있어야 가능하다.

 

다시 말해, 과제는 <객체지향 프로그래밍의 특징을 살려 "설계"하는 과정>을 연습하는 것이다.

 

나는 이 단계에서 엄청난 좌절감을 맛봤다. 실습들은 어느 정도 구현이 가능했지만, 과제를 통과하기엔 내 실력이 부족했다. 앞서 봤던 경고문이 여기에서 증명됐다. 말하기 부끄럽지만 당시에 컬렉션 프레임워크나 자료구조에 대해 무지했다. 간단한 ArrayList의 특징도 몰랐던 시점에서 무언가 제품을 만드는 건 현실적으로 불가능했다. 그래서 정말 크게 낙담하고 절망감에 힘든 시간을 보내야만 했다.

 

과제 1에서 44%를 달성했다

 

과제의 결과는 좋지 못했지만, 그 과정에서 배운 건 많았다. 애매모호했던 객체지향의 개념들, 특히 '캡슐화'의 필요성과 사용법에 대해 인지할 수 있었고, 클래스 간의 연결을 수 없이 연습해보면서 전체적인 감각을 익혔다. 또 어떤 실무에서 제품을 만들 때 어떤 방식으로 접근하는지 엿볼 수 있었던 점도 큰 소득이었다.

 

과제는 정말 정말 정~~ 말 큰 도전이었다...

-  중간고사  &  기말고사

한 학기에 중간고사와 기말고사를 본다. 집에서 컴퓨터로 보는데 웹 카메라를 키는 등 부정행위 차단에 대해 철두철미했다.

 

난이도는 쉽지 않았다. 중간고사의 경우 100점 만점에 평균이 약 50~60점 정도 되는 것 같았다. 나는  52점을 받았다. 문제들은 거의 다 주관식이었다. 코드들을 보고 실행 결과를 작성하거나, 예외가 발생한다면 어디가 문제이며 해결 방안까지 적어야 했다. 결코 넉넉하지 않은 시간에 초 집중 모드로 풀어야 하기 때문에 시험 직후엔 기진맥진하다.

 

일부로 헷갈리는 부분에 함정을 심어두는 등 만만치 않은 수준에 많은 연습이 될 수 있었다.

좋았던 점


(1) 객체지향의 개념과 방향에 대한 수업 중에선 수준이 탑이라고 생각한다. 제공되는 강의의 질이나 수업에 대한 고민이 충분히 깊어 OOP를 심도 깊게 공부하고 싶은 사람에겐 충분히 좋은 강의가 될 것이다.

 

(2) 직접 객체지향을 설계해 볼 수 있는 기회가 제공되어 좋았다.

 

(3) 개발자로서 지향해야 하는 방향을 알게 됐다. 단순히 코드만 작성할 줄 아는 '코더'가 아니라, 논리적으로 설계할 수 있는 능력 배양이 필요하다는 점을 체감했다. 더 효율적으로 논리 설계를 할 줄 아는 능력이 앞으로의 경쟁력이 될 것임을 알게 됐다. 학생 입장에서 OOP를 전부 알 수 없더라도 차후 학습 목표에 있어 중점을 둬야 할 지점에 대한 고민을 할 수 있었다.

 

(4) 실습과 과제를 통해 내가 부족한 부분을 깨달았다. 과제에서 원하는 기능을 구현하지 못할 때 새로운 지식을 갈망하는 욕구가 커졌고 학습 동기가 부여됐다. 단순히 책으로 접하는 것과 실제 필요성을 인지한 상태에서 공부하는 것은 학습 효과에 있어 큰 차이가 있었다.

아쉬웠던 점


포큐 아카데미는 '방임 주의'를 표방한다. '물고기를 잡아주지 않고, 물고기 잡는 법을 가르친다'는 것이 그들의 철학이다. 따라서 학습 진도는 철저히 학생의 몫이다. 동영상 강의 진도율도 수강생이 하루 만에 100%를 듣던지, 학기 내내 아예 안 듣던지 신경 쓰지 않는다. 즉 뒤처지는 학생이 있어도 나 몰라라 내버려 둔다.

 

개발자가 되기 위한 공부법이나 태도에 대한 수많은 의견들이 있지만, 관통하는 한 지점이 있다. 바로 '자기 주도적인 학습'이다. 평생 공부해야 하는 특성상 스스로 답을 찾는 훈련이 필요하다는 의견엔 나 또한 이견이 없다. 그러나 포큐 아카데미는 자신들의 본질을 망각한 채 구호에 충실한 오만한 모습으로 보인다.

 

아카데미는 말 그대로 학문을 익히는 곳이다. 익힌다는 건 '모르는 것을 배우는 행위'이다. 당연히 부족한 상태일 수밖에 없다. 그렇다면 배우려는 학생들을 위한 여러 가지 배려 장치도 필요하다. 하지만 포큐 아카데미는 이러한 안전장치에 대해서 전무하다 싶다. 실습과 과제, 그리고 시험의 진행 행태를 보컨데 사자 새끼를 절벽에서 떨어트리고 살 놈만 키우고 낙오하는 새끼들은 버린다는 태도가 마음에 들지 않는다.

 

내가 비판하는 포인트는 3가지다.

 

빌드봇 채점은 해당 실습이나 과제 제출 기한이 끝나면 더 이상 동작하지 않는다.

배움은 지난 일을 복기하면서도 일어난다. 내 부족한 실력으로 어떤 기능을 구현하지 못했다면, 과제 제출 기한이 끝나고 채점이 끝난 뒤 다른 사람들의 피드백이나 코드를 보고 다시 연습할 수 있어야 하는 것 아닌가? 과제 제출 전에 고민하는 과정에서만 배움이 일어나는 건 아니다. 특히 나처럼 기본기가 부족한 사람에겐 다른 이들의 코드를 통해 힌트를 얻고 다시 고민하는 과정이 더욱 유효할 것이다. 그러나 현재 포큐 정책은 채점 기간이 지나면 그냥 과거의 일로 치부하곤 빌드봇의 피드백을 더 이상 받아 볼 수가 없다. 해당 의견을 문의한 답변은 다음과 같다.

 

 

즉 일부의 학생들이 공부를 덜 할까 봐 기능을 막아뒀다는 논리인데, 너무 허점이 많다. 만약 복습 기능이 있어서 공부를 하지 않는 사람들은 복습 기능이 없어도 공부를 하지 않을 자들이다. 오히려 해당 기능으로 학업성취도를 높일 수 있는 기회를 '의지가 부족한 몇몇 학생들을 배려하고자' 박탈한다면 누구를 위한 학습 공간이란 말인가. 그리고 학생이기 전에 80만원이란 고가의 수강료를 지불한 고객이다. 과제를 미루는 일부 사람들을 위해서 지극히 제공 가능한 기능을 원천적으로 차단했다는 점도 이해되지 않는다. 스스로 답을 찾도록 만든다는 교육 방침의 기본도 결국 '자율학습'에 있을 텐데 학습에 열의를 보이지 않는 학생들을 배려한답시고 학습 의지를 가진 학생에게 피해를 주는 정책을 고수한다라... 굉장한 모순이 있다고 생각한다.

 

중간고사와 기말고사의 채점 결과를 알려주지 않는다.

점수는 알려준다. 하지만 무엇이 틀렸고 정답이 무엇인지는 끝내 알려주지 않는다. 시험 종료기간 종료 후 검토 및 이의제기를 위해 30분간 다시 시험문제를 볼 수 있다. 하지만 내가 어디서, 왜 틀렸는지는 알 방도가 없다. 왜냐하면 그들이 제공하는 정보는 내가 틀렸다는 것, 그리고 내가 작성한 틀린 답뿐이기 때문이다.

 

만약 이 시험이 자격 검정을 위한다거나, 남들과 경쟁하기 위한 거라면 답안을 공개하지 않는 것이라면 이해한다. 하지만 이 시험의 목표는 '학습'에 있지 않는가? 정말 포큐 아카데미가 학생의 성장과 학습 성취에 관심이 있다면 시험 문제를 복기하면서 어디서 왜 틀렸는지 고민할 수 있게 작은 힌트라도 줘야 하는 것 아닌가? 혹시 시험 정답을 공개하는 것도 시험을 대충 볼 사람들을 걱정해서 하지 않는 건가? 검토 후 이의신청을 해도 그 이의가 받아들여 졌는지, 안됐다면 왜 그런지도 안 알려준다. 너무나 불친절해서 화가 날 정도다.

 

환불 시스템도 형편없다. 일반적으로 환불은 내가 지불한 금액에서 이용한 기간을 감안해 금액이 측정된다. 그러나 포큐 아카데미는 수강 시작일로부터 딱 2주 끝나는 시점에서 환불 자체가 불가능하다. 2주라면 실습 2의 제출이 끝나는 때이다. 실습 1은 기본적인 세팅을 하는 거라서 어려울 것이 없다. 실습 2부터 본격적으로 해당 강의의 난이도와 분위기를 파악할 수 있다. 그런데 실질적인 첫 실습을 경험하는 순간 80만원 전부 환불이 불가능하다. 이는 마트에서 물건을 구매하고 시식코너에서 한 입 먹었다고 환불이 불가능한 것과 뭐가 다른가? 갑질도 이런 갑질이 없다고 생각한다. 환불 정책은 최악이다. (악질인 헬스장들도 이렇게는 안 한다)

총평


포큐 아카데미의 '개체지향 프로그래밍 및 설계'는 분명히 좋은 강의다. 객체지향에 대해 심도 깊게 다루고 배울 수 있는 기회임이 틀림없다. 강의를 수강하고 나면 OOP를 바라보는 수준이 분명 향상될 것이다. 그저 그런 강의가 아니라 많은 고민 끝에 세상에 나온 수업이라는 데에 동의한다.

 

하지만 아쉬운 부분이 많다. 도움이 필요한 학생에 대한 배려가 부족해도 너무 부족해서 그들의 철학이 오만하다는 생각이 들 정도였다. 이 정도 서비스가 과연 80만원인가에 대한 물음엔 의문이 든다. 수강생 모집에 정원이 있던데 그 의미는 한 명이라도 더 잘 케어하겠다는 의미 아니었나? 하지만 케어는 무슨... 이 정도의 강의 서비스는 딱 20만원 정도가 적당하다고 생각한다. 더욱이 환불 정책도 악질이고, 갑질 비슷하게 느껴지는 전체적인 분위기에서 '오만함'이 내가 받은 인상이었다.

 

해당 강의는 준비된 사람들에겐 더할 나위 없이 좋은 학습 기회가 될 것 같다. 포큐 아카데미의 선수과목 2개(총 200만원 상당)를 들었거나, 실무 경험이 있는 사람들이 그 대상이다. 하지만 Java 언어를 공부하고 있는 일반 학생들에겐 비용 대비 가성비가 매우 좋지 않을 것이다.