우아한테크코스 - 프리코스 4주간의 회고록

JK·2022년 11월 30일
0

서론

우아한테크코스 5기 프리코스가 끝났다.

프리코스를 진행하면서 블로그를 열심히 운영하시는 분들을 많이 보았고, 그런 분들에게 자극을 많이 받았다. 프리코스가 나에게는 중요한 경험이 되기도 해서, 이에 대한 기록을 남길 겸 프리코스 4주간의 회고록과 함께 블로그를 시작하게 되었다.

어떤 코드를 작성했는지 보다는, 프리코스를 진행하면서 변화된 나의 마음가짐을 위주로 기록하려고 한다.

1주차 - 온보딩

프리코스를 시작하던 첫 주에는 그저 기능 구현에만 급급했던 기억이 난다. 좋은 코드를 작성하고 싶다는 막연한 느낌만 있었을 뿐 어떻게 해야하는지는 몰랐기 때문에 요구되는 기능 구현이 끝나자마자 손을 놓았다.

좋은 코드를 위해 고민하기

1주차는 4주차가 끝날 때까지, 프리코스 내내 하게 된 고민의 시작점이 되기도 했다. static 메서드, 또는 변수를 어떻게 관리할 것인가, 어디까지 static으로 관리할 것인가에 대한 고민이었다. 그 이전까지는 static 메서드, 변수를 보면서도 해본 적이 없는 고민이었기 때문에, 이런 고민을 시작하게 된 것조차 나에게는 변화였다.

static과 non-static

static에 대해 많이 찾아보았지만, static을 사용하는 것에 대해 정해진 규칙이나 원리는 없는 것 같았다. 다만 static을 많이 사용할 수록 객체지향과 멀어지고, java는 객체지향언어인 만큼 객체스럽게 사용하는 것이 좋기 때문에 실용성과 객체지향성의 사이에서 균형을 잘 잡는 것이 중요해보였다. 아래의 글은 static과 non-static의 사이에서 고민할 때 많은 도움이 되었던 글이다.

우테코 2기 오렌지님 - 정적 메소드, 너 써도 될까? (출처: Tecoble)

2주차 - 야구 게임

2주차 때는 내가 앞으로 공부해 나가야 하는 것들의 거대한 형체를 윤곽이나마 느끼기 시작했다. 뭘 공부해야 할 지 조차 몰랐던 때에 비하면 그래도 뭘 공부해야 겠다! 정도는 생각할 수 있게 되었다. 또한 코드를 작성하기 전에, 작성할 때, 작성한 후에 유의해야 하는 일에 대해 어느 정도 감을 잡아가던 시기였다. 1주차에 대한 피드백을 받고 나서, 1주차 때는 그냥 형식적으로 작성하는 줄 알았던 기능 목록의 중요성을 알게 되었다. 코드를 작성하는 동안 신경써야 하는 자바 컨벤션에 대해서도 알게 되었고, 코드를 작성한 후에 이를 커밋할 때 커밋 메시지를 어떻게 작성할 것인지에 대해서도 신경쓰게 되었다.

클래스 분리

한 클래스에 모든 메서드를 때려넣던 1주차에 비하면, 2주차에서는 그래도 클래스를 어느 정도 분리해서 작성했었다. 너무 소소한 분리여서 지금 생각해보면 부족한 점이 많지만, 처음으로 클래스 분리의 필요성을 느꼈던 시작점이었다.

자바 컨벤션

자바 컨벤션이라는 게 있다는 것을 처음 알게 되었다. 자바 컨벤션이라는 것이 있다는 것에 한 번 놀라고, 자바 컨벤션 내용을 보니 내가 자바 컨벤션에 어긋나는 안 좋은 습관을 많이 갖고 있다는 것에 또 한 번 놀랐다. 아래는 자바 컨벤션에 대해 학습할 때 참고했던 글이다.

캠퍼스 핵데이 Java 코딩 컨벤션

3주차 - 로또 게임

지금 생각해 보면, 3주차 때 나는 좋지 않은 자신감(근자감)에 차 있었다. 아직 부족한 점이 많긴 해도 잘 해나가고 있다고 느꼈고, 이 이유모를 자신감은 치명적인 실수로 이어졌다. 나는 이 실수를 4주차가 되어서야 깨닫게 되었다... 이 실수는 4주차 때 이야기하도록 하고, 3주차에 배우고 반영하려고 했던 것들에 대해 먼저 이야기하도록 하겠다.

패키지 분리

3주차에서는 클래스 분리 뿐만 아니라 패키지 분리를 시도했었다. 패키지 분리는 크게 두 가지 방식이 있는데, 계층을 기준으로 분리하거나 기능을 기준으로 분리하는 방식이다. 나는 계층을 기준으로 분리하는 것은 코드의 구조가 직관적으로 보이지 않는다고 생각해서 기능을 기준으로 분리했다. 하지만 지금 내가 분류한 것을 다시 보면 내가 못해서 그런지 기능을 기준으로 분리해도 그리 직관적으로 보이지는 않는 것 같다.

하드코딩된 값 상수 선언

2주차 까지는 값을 대입할 때 그 값을 그대로 하드코딩해서 사용했다면, 3주차 부터는 상수로 선언하여 대입하려고 노력했다. 하지만 습관이 안 되어 있다보니 어떤 것은 상수로 선언하여 사용하고, 어떤 것은 하드코딩된 값을 그대로 사용하는 불상사가 일어나기도 했다. 또한 지금 생각해보면 해당 상수가 사용되는 클래스에서 선언을 했다보니 전역적으로 사용되는 상수의 경우 접근성이 떨어질 것 같다.

단위 테스트

내가 작성한 것을 단위 테스트라고 해도 될 지 모르겠지만, 내가 할 수 있는 가장 작은 단위에서 테스트 코드를 작성해 보았다. 다른 분들은 TDD도 시도해보시는 분들도 있는 것 같았는데, 나는 아직 테스트 코드를 작성하는 것도 어려워서 TDD는 테스트 코드를 작성하는 것에 확실히 익숙해진 뒤에 도전해보고 싶다.

4주차 - 다리 건너기 게임

마지막 주차였지만, 이전 주차 때 큰 실수를 한 것을 인식한 상태로 시작해서 오히려 자신감이 폭락한 상태였다. 그래서 아주 새로운 것을 적용하고 공부하기 보다는, 이전 주차까지 진행하는 동안 공부하고, 지키려고 시도했던 내용들을 모두 정리해서 복습하는 느낌으로 진행했다.

요구사항 파악

3주차 때 했던 큰 실수는, 바로 요구사항 파악이었다. 3주차 미션은 로또 게임이었는데, 로또를 한 번도 사본 적이 없던 나는 로또를 살 때 보너스 번호도 골라서 보너스 번호끼리 맞는지 비교해야 하는 것인줄 알았다.. 지금 생각해보면 정말 어처구니 없는 실수지만, 그 때 내가 로또에 대해 잘 모른다는 것을 인식하고 좀 더 잘 찾아봤더라면 일어나지 않았을 실수였다. 그래서 4주차 때는 README 작성, 요구사항 파악에 많은 공을 들였다.

MVC 패턴

피어 리뷰를 하면서, 많은 분들이 MVC 패턴을 적용하려고 노력하시는 것을 보고 도전해보게 되었다. 이전까지는 클래스 분리를 해도 각 클래스 별 역할과 관계가 모호한 느낌이 있었는데, MVC 패턴을 적용하려고 시도하다보니 각 클래스별 기능과 역할, 관계에 대해 명확히 이해하고 코드를 작성하게 되었다. 물론 첫 시도였던 만큼 뜻대로 잘 되지는 않았지만 프리코스가 끝나더라도 더 공부해보고 연습해보고 싶은 것을 찾은 것 같다.

Enum 활용

Enum 타입을 처음 사용해 본 것은 3주차 때였는데, 단순히 요구사항에 명시되어 있어서 '사용'했을 뿐, 제대로 '활용'해보지는 못한 것 같아, Enum 활용을 재도전했다. 요구사항에 else 예약어 사용 금지가 있었는데 단순히 if문을 사용하고 else를 사용하지 않는 것이 아니라, enum을 활용하여 분기문 자체를 줄이는 방식으로 진행해보았다. 아래의 글을 참조했다.

Java Enum 활용기 (출처: 우아한형제들 기술블로그)

마무리

프리코스를 시작하기 전, 나는 어디로 가고 싶다는 애매모호한 목적지만 정했을 뿐 어디로 가야하는지에 대한 방향도, 어떻게 가야하는지에 대한 방법도 모르는 상태였다. 프리코스를 통해 어떤 방향으로 어떻게 공부하면 되는지에 대한 해답을 얻을 수 있었다.

지금 생각해보면, 프리코스를 시작하기 전의 나는 모르는 것이 너무 많아서 내가 뭘 모르는 지도 모르는 상태였던 것 같다. 앞으로도 공부해야 할 것이 너무나도 많고, 아직 갈 길이 멀지만, 긴 여정의 시작에 앞서서 프리코스를 통해 방향을 명확히 잡을 수 있었던 것은 큰 행운이었던 것 같다.

특히 같이 프리코스를 진행했던 많은 분들에게 자극도 많이 받고 여러모로 많이 배울 수 있어서 짧지만 임팩트있는 4주였다.

0개의 댓글