우하한 테크코스 프리코스 4주차 미션이 끝났습니다! 이번 회고는 미션에 대한 회고 + 프리코스를 끝내는 프리코스에 대한 회고도 간략하게 적어보려 합니다.
GitHub - woowacourse-precourse/java-convenience-store-7
Contribute to woowacourse-precourse/java-convenience-store-7 development by creating an account on GitHub.
github.com
GitHub - dye0p/java-convenience-store-7-dye0p
Contribute to dye0p/java-convenience-store-7-dye0p development by creating an account on GitHub.
github.com
처음 미션을 받고 정말 어렵다고 느꼈습니다. 이전 6기 분들의 4주차 문제를 풀었을때도 어렵긴 했지만 천천히 요구사항을 따라가다보면 이해가 되는 부분들이 많았습니다. 하지만 이번 4주차 미션은 요구사항을 계속 읽어봤음에도 이해가 되지 않는 부분들이 너무나도 많았습니다.
결론적으로 4주차 미션은 그간 1,2,3 주차의 결과물에 비해서 같은 사람이 짠 코드가 맞냐는 의심이 들 정도로 처참한 코드로 제출을 하게되었습니다. 부끄러운 과정이지만 자기 반성을 하기 위해서 미션을 진행하면서 느낀점을 말해보겠습니다.
1. 새로운 풀이 방식의 문제
4주차 미션이 너무 어렵지만 않길 바랬는데 예상보다 어렵게 나와서 멘탈이 그냥 무너져 버렸습니다..
특히 이번 4주차 문제에서는 파일 입출력을 이용하여 해결해야하는 문제였는데, 처음 이 파일을 어떻게 사용해야할지 감을 잡을수가 없었습니다. 부랴부랴 파일 입출력에 대해서 알아본 뒤, 제공해준 md 파일을 불러와서 출력하는데 성공했습니다.
그리고 추가적으로 한 가지 고민이 있었는데, 제공해준 md 파일과 ApplicationTest 테스트의 출력 형식이 달라서 "md 파일을 수정해야 하나?" 고민을 했었습니다. 이 고민을 거의 마지막 날까지 했는데, 추후에 알게되었지만 이때 선택한 결과로 4/4 테스트는 통과할 수 있었습니다.
처음 파일 입출력을 어떻게 하라는건지 감이 안와서 고민을 하다가 상품 목록 md 파일을 불러와서 출력하라는 것으로 해석했습니다.
제공해준 ApplicationTest와 md파일의 형식이 달라서 md파일의 수정을 고민 했습니다.
그런데 '이걸 그냥 쉽게 수정할 수 있다면 왜 이렇게 줬을까? 이 형식을 그대로 사용하라는 의도가 있지 않을까?" 생각을 했고, 파일을 수정하지 않고 진행하기로 했습니다! 의도를 잘 파악했다기보단 그냥 운이좋아서 테스트를 통과할 수 있었던것 같습니다.
이러한 과정을 거치면서 파일 입출력(IO)에 대해서 배우게 되었습니다. 입출력 스트림이라는 것을 알게 되었고, 평소 자주 사용하지 않던 개념이어서 배우는것이 좀 낮설었습니다.
2. 설계의 아쉬움
문제의 난이도가 올라감으로써 설계를 하는것에 상당한 어려움이 있었습니다. 특히 복잡한 요구사항으로 빈번한 조건분기가 일어날 수 밖에 없었고, 프로모션에 너무 많은 책임이 부여되었습니다. 지난 3주차 로또 미션에도 Controller에 너무 많은 객체가 결합되도록 설계한것이 아쉬움으로 남아서 4주차 미션에서 아쉬움을 극복해보려고 했지만 결과적으로 객체지향적 설계를 실패하고 절차지향적으로 구현을 하였습니다.
3. 절차지향 설계의 문제점 (feat. 조급한 마음)
일주일 이라는 시간은 충분이 긴 시간이라고 생각됩니다. 하지만 조급한 성격탓에 충분히 활용하지 못했습니다. 여기서 정말 바보같은 생각을 하게 됩니다. "우선 구현하고 나중에 리팩토링 하면 되지 않을까?" 그리고 얼마 지나지 않아 이 때의 선택이 얼마나 안일한 생각인지 깨달을 수 있었습니다. 모든 ApplicationTest를 통과한 시점은 금요일 쯔음 이었습니다.
일단 돌아가는 쓰레기를 만들어 놓은 상태라 리팩토링이 시급했습니다.
우선 절차지향적으로 구현했기 때문에 객체들은 자율적이지 못하고 위 사진처럼 그저 데이터만 가지고 있는 데이터 모델에 불과했습니다.
그리고 가장 큰 문제점은 하나의 Controller에 모든 비즈니스 로직을 구현해놓은 상태라 엄청한 결합도와 낮은 응집도를 가지는 상태였습니다. 컨트롤러의 라인수가 400줄에 근접했으니 말 다 한거겠죠?..ㅎ
처음엔 하나로 뭉쳐진 스파게티를 쉽게 풀 수 있을줄 알았습니다. 그런데 이건 엄청난 착각이었고, 제출 직전까지 코드를 잡고 어떻게든 해보려 했지만 실타래같이 엉킨 스파게티를 풀기엔 역부족 이었습니다. (절차지향적으로 짜더라도 정도껏 할걸..) 그래서 스파게티를 푸는것을 포기하고, 문자열 상수화, 메서드 라인수 제한등 할 수 있는 부분에 집중을 했습니다. (나중에 코드를 보니 이것도 지키지 못한 부분이 상당히 많았습니다..ㅎ)
느낀점
불안감과 절망속에 갇혀 헤어나오지 못한 한 주가 된 것 같습니다. 미션이 끝나고 다시 코드를 봤을 때 아쉬운 부분들이 많이 보였고, "다시 했다면 저렇게 하지 않았을 텐데..." 라는 생각이 들기도 했습니다. 가장 아쉬운 점은 1,2,3 주차의 미션을 통해서 배운부분과 지금껏 공부했던 것을 다 보여주지 못한것이 큰 아쉬움으로 남았습니다. 하지만 이미 버스는 지나갔고 지나간 버스에 미련을 가져서는 안됩니다. 새롭게 오는 버스를 기다리며 다시 놓치지 않도록 대비하는 것이 최선이라고 생각이 듭니다. 많은 후회와 아쉬움을 담았던 일주일 이었습니다. 이러한 과정을 성장하기 위한 성장통으로 생각하며 다음 버스인 최종 코딩테스트를 기다리며 다시 열심히 해야합니다. 4주차까지 열심히 달려온 우아한 테크코스 관계자 분들과 수많은 지원자들 모두 수고많으셨습니다 :)
'우아한 테크코스 > 프리코스' 카테고리의 다른 글
[우아한 테크코스 7기 백엔드] 1차 합격 & 최종 코딩테스트 회고 (6) | 2025.01.02 |
---|---|
[우아한 테크코스 7기 백엔드] 프리코스 3주차 회고 - 로또 - (2) | 2024.11.23 |
[우아한 테크코스 7기 백엔드] 프리코스 2주차 회고 - 자동차 경주- (0) | 2024.11.13 |
[우아한 테크코스 7기 백엔드] 프리코스 1주차 회고 -문자열 덧셈 계산기- (0) | 2024.10.29 |