시작하며
4주간의 프리코스가 끝이났다...!!!
모든걸 하얗게 불태운 4주차 미션을 끝낸 후 하루 반나절 이상 침대에 누워서 잠자고 먹고를 반복하며 저녁이 되서야 정신이 차려져 회고를 작성해보고자 한다.
결론적으로 너무 아쉬운 감정과 함께 4주차 미션을 마무리 하였다.
그 이유로 요구사항의 해석을 제대로 하지 못해 4개의 테스트 케이스 중 결국 3개만 통과한 채 끝이 났기 때문이다.
11월 10일 오후 3시에 미션을 제출한 이후 프리코스를 진행하며 처음으로 테스트가 실패하였다.
다시 미션 가이드를 천천히 정독하고 정리하며 놓친 부분이 없는지 확인해보았고, 그 과정에서 여러 버그를 수정하였다.
그 과정에서 실제 기능적인 버그도 수정을 하였지만, 무엇보다 요구사항의 해석을 다양하게 적용하고 그에 맞는 로직을 수정하는게 가장 많은 시간을 사용했다. 결국 이후 약 20번 정도 재제출하여 테스트를 했지만 결국 1개의 실패한 테스트를 해결하지 못했다.
정확하진 않지만 여러 커뮤니티를 살펴본 결과
- `src/main/resources/products.md`과 `src/main/resources/promotions.md` 파일을 이용한다.
- 두 파일 모두 내용의 형식을 유지한다면 값은 수정할 수 있다.
위 입력 요구 사항의 값의 수정으로 인해 실패한것 같다.
커뮤니티들의 대부분의 의견으로 '값 수정'에서 '추가'를 하면 안된다는 점이었따..!
물론 채점 과정은 공개되지 않고 커뮤니티를 정독해보며 내린 나의 뇌피셜 결론이다.
하지만 1개의 테스트를 해결하지 못한것 보다, 1개의 테스트를 해결하지 위해 모든 코드가 엉망이 되며 객체지향적인 설계와 프로그래밍 요구사항을 지키지 못했점 점이 너무 아쉽다..
첫 제출 이전에는 프로그래밍 요구사항들을 지키기 위해 리팩토링하며, 4주차 미션에 처음 적용해본 Service계층, dto, record, 도메인에서의 ToString을 활용한 ViewModel계층 등등 많은 기법을 적용했지만 디버깅을 하며 거의 망가졌다..
최종 마감 시간 6시간 이전 1개의 테스트를 포기하고 체념하여 리팩토링을 진행하고자 하였지만, 1개를 해결하는데 너무 꽂혀 결국 최종 제출 마지막 5분전까지 디버깅을 하며 시간이 모두 지났다..!
하지만 프리코스를 진행하며 너무 많이 성장하고 나의 생각의 기저, 공부하고 싶은 내용과 방향성 등등 너무 좋은 영향을 많이 받아 생각보다 큰 데미지 없이 다시 일상으로 돌아올 수 있었다.
나아가서 남은 시간 프리코스를 통해 공부하고 싶었던 내용과 현재 진행중인 프로젝트에 적용하고 싶은 기법들을 적용하고 싶은 욕구가 아쉬움보다 더 큰것 같다 !
고민했던 것
모든 고민은 프로모션 요구사항 해석과 관련된 내용이었다.
1️⃣ 프로모션 및 멤버십 할인 적용 요구사항 해석
프로모션 할인
- 오늘 날짜가 프로모션 기간 내에 포함된 경우에만 할인을 적용한다.
- 프로모션은 N개 구매 시 1개 무료 증정(Buy N Get 1 Free)의 형태로 진행된다.
- 1+1 또는 2+1 프로모션이 각각 지정된 상품에 적용되며, 동일 상품에 여러 프로모션이 적용되지 않는다.
- 프로모션 혜택은 프로모션 재고 내에서만 적용할 수 있다.
- 프로모션 기간 중이라면 프로모션 재고를 우선적으로 차감하며, 프로모션 재고가 부족할 경우에는 일반 재고를 사용한다.
- 프로모션 적용이 가능한 상품에 대해 고객이 해당 수량보다 적게 가져온 경우, 필요한 수량을 추가로 가져오면 혜택을 받을 수 있음을 안내한다.
- 프로모션 재고가 부족하여 일부 수량을 프로모션 혜택 없이 결제해야 하는 경우, 일부 수량에 대해 정가로 결제하게 됨을 안내한다.
멤버십 할인
- 멤버십 회원은 프로모션 미적용 금액의 30%를 할인받는다.
- 프로모션 적용 후 남은 금액에 대해 멤버십 할인을 적용한다.
- 멤버십 할인의 최대 한도는 8,000원이다.
위 내용이 가이드의 프로모션과 멤버십에 대한 내용이다.
멤버십 할인에서의 '프로모션 미적용 금액'
멤버십 할인을 위해서는 프로모션이 미적용된 금액을 알아야한다.
하지만 '미적용'의 범위에 대해 많은 해석이 가능했다.
1. 2+1 행사에서 10개의 프로모션 재고가 있지만 7개를 주문하였 6개만 프로모션 적용이 된 경우
2. 2+1 행사에서 10개의 프로모션 재고가 있지만 8개를 주문하여 1개의 주문을 프로모션으로 더 얻을지 물어본뒤 안받는다고 답한 경우
3. 2+1 행사에서 7개의 재고가 있을 때 10개를 주문하여, 프로모션 재고가 부족한 경우 일반 재고로 일반 결제에 대한 동의를 받은 경우
4. 2+1 행사에서 7개의 재고가 있을 때 10개를 주문하여, 프로모션 재고가 부족한 경우 일반 재고로 일반 결제에 대한 동의를 거절한 경우
등등
위와 같은 다양한 경우에서
1. 2+1 행사에서 10개의 프로모션 재고가 있지만 7개를 주문하였 6개만 프로모션 적용이 된 경우
1개는 프로모션 미적용 금액으로 포함시켜야할지
2. 2+1 행사에서 10개의 프로모션 재고가 있지만 8개를 주문하여 1개의 주문을 프로모션으로 더 얻을지 물어본뒤 안받는다고 답한 경우
2개는 프롬션 미적용 금액으로 포함시켜야할지
3. 2+1 행사에서 7개의 재고가 있을 때 10개를 주문하여, 프로모션 재고가 부족한 경우 일반 재고로 일반 결제에 대한 동의를 받은 경우
4개는 프로모션 미적용 금액으로 포함시킬지
와 같이 손님의 자의로 프로모션을 안받는 경우와 같은 일부 미적용의 범위에 대해 많은 고민을 하였고, 정답에 대한 가이드는 없어서 모두 하나하나 적용한 뒤 테스트를 진행해 보았다.
보완해야할 점 아쉬운점
가장 아쉬웠던 점은 1개의 실패한 테스트를 해결하기 위해 모든 코드를 뒤엎으며 기존에 지켜왔던 프로그래밍 요구사항들을 모두 지키지 못한것이었다.
1주차 미션을 진행한 뒤 제공받은 1차 공통 피드백의 '문자열계산기' 피드백 영상에서의 1순위는 요구사항을 만족하는 것에 큰 깨달음과 중요성을 느껴 최 우선 요구사항을 지키는것 즉, 모든 테스트에 성공하는것이었다.
분명 요구사항을 만족하는것이 1순위임은 분명하고 지금도 그런 의견은 변치 않았지만, 시간이 지나 지금 생각해보니 그래도 제출 마감 3시간 혹은 1시간 전에는 놓친 프로그래밍 요구사항을 지키기 위해 노력했어야 한다 생각한다.
처음 격은 실패 테스트로 인해 해당 문제만 해결하기 위해 다른 모든것을 놓친것이 너무 아쉬웠다.
이후의 다른 코딩테스트 혹은 다른 프로젝트를 진행을 하면서도 이번의 경험을 토대로 중요한 1개에 꽂혀 이외의 다른 모든것을 놓치지 않도록 주의해야겠다..!
'외부활동 > 우아한테크코스 [프리코스]' 카테고리의 다른 글
[우아한테크코스 7기] 프리코스 3주차 회고 (0) | 2024.11.05 |
---|---|
원시값 포장, VO, 일급 객체, 일급 컬렉션 톺아보기 (0) | 2024.11.02 |
정적 팩토리 메서드 톺아보기 (0) | 2024.11.01 |
상수관리에 Enum은 필수적인가 ? (0) | 2024.11.01 |
[우아한테크코스 7기] 프리코스 2주차 회고 (0) | 2024.10.29 |