[우아한 테크코스 7기 프리코스] 1주차 회고
/ 5 min read
Table of Contents
첫 인상
우테코 프리코스 1주차 문제를 보면서 처음에는 ‘기능자체는 어렵지 않은데?’ 라는 생각이 들었다. 물론 이게 PS 문제 풀이 라면 그냥 main
함수에 다 때려 넣고 함수 몇개 만들어서 제출하면 엄청 쉬웠을 것이다.
하지만 기능 자체를 구현 하는 것이 제일 중요하더라도 우테코는 현장에 필요한 인재
를 원한다. 그렇기에 어떤게 좋은 코드일까 많이 생각을 하게 되어, 이전 기수 지원자들의 PR을 보면서 어떤게 좋을 까 합격자들은 대체 어떻게 했을 까 분석을 했다.
나름의 분석
많은 코드리뷰가 있던 PR, 합격자 후기 블로그 등을 보았을 때 공통적은로 레이어(Layer)를 분리해서 개발을 한 게 보였다. MVC패턴으로 View와 Controller, Service로 각자 역할에 맞게 나누어서 과제를 했다.
MVC 패턴은 어려워
사실 이런 패턴은 학교 과제로 CLI기반 프로그램을 만들 때는 한 번도 해본적이 없었고, Spring 개발할 때만 어노테이션을(@Controller
, @Service
) 써가며 해봤을 뿐이지 사실 일반적으로 프로그래밍 하는데 있어 레이어를 나눠 개발하는 것은 내게 많이 어색했다. 물론 지금 과제로 올라간 내 PR또한 아마 운영진 분들 시선에서 되게 어색하고 그냥 따라해서 짜집기 한 듯한 코드란게 느껴질 것이다.
오히려 지금도 이렇게 어설프게 한 것을 보일 빠에는 그냥 PS하듯이 만든 프로그램이 나을 까 싶기도 하지만 그건 정말 아닌 것 같다.
예외 처리
사실 이번 과제를 하면서 제일 고민 했던게 프로젝트 구조랑 예외 처리다. 나는 처음에 그냥 요구사항에 맞지 않는 입력에 대해 바로 IllegalArgumentException
를 날렸는데 스프링 MVC개발 하시는 분들이나 이펙티브자바와 같은 책에서 에외처리를 할 때 직접 예외를 상속받아서 커스텀 예외(이게 맞는 표현인지는 모르겠다)를 만들어 사용해서 나도 이렇게 하는게 좋아보이네 하고 만들었다.
이렇게 만들면서 코드를 짜니 오히려 추상화가 더 잘되고 나중의 다른 과제가 오더라도 비슷하게 이용가능 할 것 같다는 생각이 들었다. 인간은 모방의 동물이라더니 일단 따라해보고자 하는 생각이 들어 따라해보고 나중에야 그 의미를 알게되다니..
소감
이번 과제를 제출하면서 내 코드가 많이 엉성하다는 생각이 들었지만 어떻게 해결해야할 지 몰랐다. 여기서 손을 더 댄다면 지금보다 더 안좋아지고 사족이될 까봐 코드를 짜기 무서웠다.
As Abraham H. Maslow said:
망치를 든 사람에게 모든 문제가 못처럼 보인다
디자인 패턴 공부를 하다가 이런 글을 보았다. 사실 내가 제출한 과제가 엉상하독 느낀 것도 이 말처럼 좀 더 나은 구조를 만들고자 디자인 패턴을 봤지만, 어떻게든 디자인 패턴에 맞추고자 상황이나 코드에 맞지 않는 패턴을 써서 그런게 아닐 까 싶은 생각도 든다.
이제 1주차가 끝났지만 남은 3주 동안 계속해서 담금질을 해야겠다.