프리코스 3개의 과제를 끝내고 느낀 점 작성하기
원래는 1개의 과제를 끝낼 때마다 느낀 점을 작성하려고 하였다.
그런데 과제를 진행하다 보니 느낀 점을 작성할 시간에 과제 해결에 필요한 내용을 공부해야겠다는 생각이 들었다.
그래서 모든 과제를 다 끝낸 지금, 이제라도 느낀 점을 작성해보려고 한다.
프리코스 시작 전
일단 우테코 1차에 합격하고 프리코스 시작까지 5일이라는 시간이 있었다.
이 5일 동안 뭘 하면 좋을까 생각을 하면서 이전 기수 사람들의 블로그를 염탐하였다.
여러 블로그들에서 클린 코드, 람다와 스트림에 대한 중요성을 강조하였고,
그런 글들을 보자마자 바로 클린 코드와, 모던 자바 인 액션 두 책을 구매하였다.
5일밖에 없는 시간 동안 이 두 책을 읽는 것이 크게 도움이 될까?라는 생각을 하였지만
막상 읽어보니 엄청난 도움이 되었다.
사실 두 책을 모두 읽을 시간은 없었기에 4분의 1씩만 본 것 같다. 그렇지만 이것만으로 엄청난 도움이 되었다. 매주 과제가 끝나면 제출 코드에 대한 피드백을 해주었는데 이 피드백 내용의 대부분이 클린 코드 책에서 본 것 같은 내용이었다. 미리 피드백 내용을 알고 과제를 시작한 셈이었다.
그리고 모든 과제에는 프로그래밍 요구사항이 있었다. 예를 들면 indent depth를 2까지만 허용한다, 메서드의 길이가 15라인을 넘어가지 않도록 구현한다...
기존에 프로그래밍을 하던 방식이라면 for문 안에 if문 안에 if 문안에.. 뭐 대충 indent, 메서드 길이 따위 신경 쓰지 않고 구현하였을 것이다.
모던 자바 인 액션 책에는 이런 요구사항들을 해결해 줄 수 있는 람다와 스트림이라는 문법이 있었다.
그런데 이 책을 읽으면서 아니 학교에서도 자바를 배웠고 책도 계속 읽어가며 자바를 공부했는데 왜 람다와 스트림이라는 문법을 몰랐지?라는 생각을 하였다.
알고 보니 이때까지 해온 자바는 자바 8 이전의 자바였다.
왜 이제야 알았을까 반성을 하게 되었다.
아무튼 이 람다와 스트림을 처음 알게 되고 사용하면서 신세계를 느꼈다. 이것들을 통해 대부분의 요구사항을 지킬 수 있었다.
아직 두 책을 다 읽진 못했지만 과제가 다 끝나고 내년이 되기 전에 다 읽어볼 생각이다.
프리코스 1주 차
과제를 시작하기 전 두 책을 읽었기 때문에 자신감이 가득 찬 상태로 과제를 시작하였다.
그러나 개발환경 세팅이라는 것에 엄청나게 어려움을 겪으면서 정작 자신감이 넘치는 프로그래밍은 시작하지도 못했다. 개발환경 세팅은 항상 누가 세팅하는 것을 알려주어서 스스로 해본 적이 없었다.
개발환경 세팅에 엄청난 시간을 쏟은 후에야 프로그래밍을 진행할 수 있었다. 빨리 맥북을 사고 싶던 순간이었다.
1주 차 과제는 숫자 야구게임이었다.
내가 제출한 과제
숫자 야구 게임.. 라떼 생각나는 게임이다.
군대에서 할 거 없을 때 노트 다 써가면서 했던 게 숫자 야구게임이었는데..
그 시간에 백준 문제 풀었다면,, 이라는 반성을 하면서 과제를 시작하였다.
숫자 야구 게임은 엄청 익숙한 게임이기 때문에 기능 구현이 굉장히 쉬웠다.
1주 차는 기능 구현과 메서드 분리 두 가지에 대해서만 신경을 썼었다.
신경을 써야 하는 것들 중 이 두 가지만 알고 있었기 때문이다.
1주 차 과제를 진행하면서 다른 사람들이 제출한 코드를 볼 수 있었는데, 많은 사람들이 MVC 패턴과 같은 방법들로 클래스를 분리하는 것을 볼 수 있었다.
1주 차에는 MVC패턴을 보고도 MVC패턴인지 몰랐고, 굳이 왜 이렇게 나눈 거지?라는 생각만 하였다..
그래도 기능 구현과 메서드 분리 두 가지만 놓고 본다면 잘 해낸 것 같다.
프리코스 2주 차
1주 차 과제가 끝나고 받은 피드백은 대부분 클린 코드에서 본 것 같은 내용이었다.
피드백을 보면서 생각보다 간단하네?라는 근거 없는 자신감이 들었었다.
그러나 우테코 측으로부터 온 메일에서 2주 차 미션은 클래스를 분리하는 연습을 하는 것이 목표라는 것을 보고 이 자신감이 확 사라지게 되었다. 1주 차 과제에서 클래스 분리 같은 건 지키지 않았기 때문이다..
그래서 1주 차에서 봤던 패턴들을 다시 찾아보고 이것들이 MVC 패턴인지 알게 되었다.
MVC 패턴에 대해서 알게 되고 MVC 패턴에 대하여 공부를 했는데
우 테코 이전 기수 제리님의 MVC 패턴 영상을 보면서 많이 배울 수 있었다.
MVC 패턴에 대해 공부를 하였으니 과제에 적용을 해보았다.
2주 차 과제는 자동차 경주 게임이었다.
내가 제출한 과제
2주 차를 시작하기 전 MVC 패턴을 공부하고 객체 지향의 사실과 오해라는 책을 접하였다.
이건 그냥 읽고 싶어서 읽었다. 유명한 책인 것을 알고 있었지만 왜 유명한지 궁금했고, 내가 지금 작성하는 코드가 객체 지향적으로 옳은 코드인가?라는 의문이 들어 바로 구매를 하였다.
이 책에서는 이전의 두 책처럼 새로운 지식을 알려주거나 코드를 보여준다거나 하는 내용은 없었고 반복되는 부분이 많았기 때문에 이틀 만에 빠르게 읽을 수 있었다. 반복되는 내용, 즉 중요한 내용은 코드를 작성할 때 객체의 책임, 역할, 협력에 집중하라는 내용이었다. 객체의 책임, 역할, 협력에 집중,, 한 번도 안 해본 것이었다.
따라서 2주 차에는 MVC 패턴과 객체의 책임, 역할, 협력을 섞어서 model, view, controller 객체 각각이 책임, 역할이 있고 이 세 가지 객체가 어떻게 협력을 할 것인가에 대해 집중을 하였다.
집중의 결과로 2주 차 과제는 1주 차보다는 각 객체의 역할이 잘 드러나도록 구현에 성공한 것 같다.
프리코스 3주 차
2주 차 과제가 끝나고 받은 피드백 또한 클린 코드에서 본 것 같은 내용들이 있었다. 클린 코드가 정말 좋은 책인 것 같다.
그런데 피드백 내용 중 기능 목록 작성 예시 부분이 있었는데
위와 같이 굉장히 세세한 부분까지 다루고 있었다. 이게 세세한 것이다라는 기준은 내가 세운 거지만 내가 이때까지 해온 방식이라면 위의 내용은 3가지로 압축할 수 있다.
- 사용자로부터 이름을 입력받는다. (이름은 쉼표로 분리, 각 이름은 5자 이하)
- 자동차는 전진할 수 있다. (임의의 값이 4 이상인 경우)
- 최대 위치에 해당하는 자동차 목록을 구한다.
3가지 기능의 조건들은 기능으로 생각하지 않았다. 말 그대로 기능을 위한 조건이라고 생각을 하였다.
이 피드백 내용을 보면서 기능의 범위는 어디까지인가 라는 생각을 많이 하였다.
프리코스의 요구사항 중에서 커밋의 단위는 기능 목록 단위이기 때문에 기능의 범위라는 주제는 나에게 굉장히 중요한 것이었다. 이 생각을 가지고 과제에 임하면서 이전 과제보다는 더 세세하게 기능 단위를 나누어서 커밋을 했지만 피드백 내용만큼 나누지는 못하였다. 이 부분이 좀 아쉬웠다.
3주 차 과제는 자판기 구현하기였다.
내가 제출한 과제
2주 차 끝 무렵부터 여러 블로그들을 탐방하다가 알게 된 도메인 주도 설계 철저 입문 책을 읽기 시작했다.
이 책을 통해 도메인 객체, 도메인 서비스, 레포지토리 등등에 대해서 알게 되었지만, 어려웠다.
처음 책을 읽을 때는 아 대충 뭐 이런 거네 정도의 이해만 했던 것 같다.
그래서 이 개념을 과제에 적용하려다 보니 너무 어려웠다. 책에서 본 개념 중 값 객체라는 개념을 과제에 적용해보았는데, 값 객체에 대해서 이해를 했다고 생각을 하고 적용을 한 거였지만, 막상 적용하고 보니 다시 새롭게 값 객체에 대해 이해를 할 수 있었다. 말이 이상하겠지만 암튼 그렇다.
이번 과제에는 2주 차까지 알게 된 내용 + 값 객체를 적용하였다. 새롭게 알게 된 내용이 별로 없었다.
과제의 난이도가 이전 주차에 비해 많이 상승해서 새롭게 무언가를 볼 시간이 없었다.
과제를 잘 만들고 싶어서 4번 정도 처음부터 다시 만들기를 반복했던 것 같다.
최종 후기
프리코스를 시작할 때 처음에는 단순히 주어진 과제를 해결하는 것이라고 생각하였다. 프리코스의 시간 속에서 이 생각이 완전히 바뀌게 되었다. 물론 과제를 해결하는 것이 제일 중요한 것이지만 그 과정 속에서 많은 것을 느꼈다.
일단 프리코스를 통해 이 일이 내가 정말 하고 싶은 일이다라는 것을 느꼈다.
이전까지는 새롭게 알게 되는 것에 두려움을 많이 느꼈다. 그게 공부에 관한 것이든 아니든 새로운 것은 어렵게 느껴진다. 그런데 이 과정을 진행하면서 개발에 대한 새로운 지식을 얻는 일은 흥미 있게 느껴졌고 스스로 갈구하는 모습을 보며 정말 하고 싶은 일을 찾았다는 뿌듯함을 느꼈다.
그리고 이상하게 보일 수도 있지만 재미있었던 일이 있었는데, 이 과정을 진행하면서 코딩을 하는 꿈을 자주 꾸었다.
항상 어떤 메서드가 실행되지 않을 때 잠에서 깨곤 했다. 객체 지향의 사실과 오해를 보더니 내가 객체가 된 느낌이었다.
객체로써의 나의 역할은 개발자가 되기 위해 계속해서 공부하는 것이다라는 생각을 가지고 이 일에 몰입했다.
이런 사소한 일들이 되게 재미있게 느껴졌다. 앞으로도 개발을 계속하면서 이런 흥미로운 것들을 느끼고 싶어졌다.
그리고 프리코스는 3주간 과제를 진행하면서 우물 안의 개구리였다는 것을 느끼게 해 준 기간이었다. 물론 지금도 우물 안에 있다. 우물 깊은 곳에 있다는 것을 인지라도 할 수 있게 해 주어서 감사함을 느낀다.
매주 과제를 진행하면서 한 권 이상의 책을 읽었다. 책을 읽고 싶어서 읽은 적은 처음이었다. 과제들을 멋있게 해결하기 위해 계속 책을 읽고 싶었다. 그래서 3주 동안 책 읽기에만 몰입하였다. 책을 읽으면 읽을수록 우물을 깊게 파는 느낌이었다. 정말 모르는 게 많았고 앞으로 알아야 할 것들도 엄청나게 많이 남아있다는 것을 느낄 수 있었다.
공부는 하면 할수록 본인의 부족함을 느낄 수 있다는 것을 다시 한번 깨달을 수 있는 시간이었다.
그래도 프리코스 기간 동안 집 안에서 조용하게 책만 읽다 보니까 마음이 정말 편안해졌다. 이 덕분에 3주 동안 큰 부담 없이 과제들을 즐길 수 있었다.
마지막으로 프리코스가 개발 인생의 시작점이라고 느껴졌다. 과제를 진행하면서 항상 이 정도면 충분하다 싶을 정도로 리팩터링을 진행했다. 그렇지만 항상 다음 과제를 진행하면서 이전 과제에서 나온 문제점들을 확인할 수 있었다. 이 경험을 통해 프리코스가 아니어도 개발자로 사는 것은 계속해서 문제점을 발견해내는 이런 과정의 연속일 것이라고 생각이 들었다. 나는 프리코스를 통해 이 과정을 즐길 준비를 했다고 생각한다. 그리고 이 과정을 본 교육에서 즐기고 싶다는 생각을 2,147,483,647번 정도 한것 같다.
앞으로 남은 기간 동안 열심히 최종 시험을 준비해서 우테코의 최종 합격자가 될 예정이다.
우테코 1차 지원서에 인생에서 제일 몰입했던 순간에 대해 작성하는 항목이 있었다.
만약 다시 작성하게 된다면 이 3주의 시간을 작성할 것이다.
물론 긴 시간은 아니었지만 몰입에 대해 다시 생각해볼 수 있는 시간이었다.
'우아한테크코스 > 프리코스' 카테고리의 다른 글
우테코 3주차 후기 (0) | 2021.12.13 |
---|
댓글