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