우테코 4주차 과제를 진행하면서 고민했던 내용을 정리했습니다. 참고 없이 진행된 내용으로 다소 주관적인 내용이 포함되어 있습니다.
과제
4주차 과제는 매우 어려웠다. 문제를 처음 읽기 시작할때부터, 심상치 않음을 느꼈다.
과제는 편의점 결제 시스템 프로그램을 개발하는 것이다.
요구사항이 전 미션에 비교하여 휠씬 많았다. 요약하면 다음과 같다.
- 재고 관리 기능
- 프로모션 할인 기능
- 맴버쉽 할인
- 영수증 출력
기능 목록
- 상품을 구매할 수 있다.
- 재고가 있는 상품만 구입할 수 있다.
- 프로모션 할인을 적용할 수 있다
- 구입한 날짜가 프로모션 날짜 범위에 있어야 적용할 수 있다.
- 프로모션은 N + 1 구조이다.
- 프로모션 재고가 떨어지면, 정가로 구매해야한다.
- 맴버쉽 할인을 적용할 수 있다.
- 맴버쉽 회원은 프로모션 미적용 금액의 30%를 할인 받는다.
- 최대 맴버쉽 할인의 최대한 한도는 8000원이다.
- 영수증을 출력 할 수 있다.
- 영수증으로 구매 내역과 할인을 요약한다.
- 영수증 항목은 아래와 같다.
- 구매 상품 내역: 구매한 상품명, 수량, 가격
- 증정 상품 내역: 프로모션에 따라 무료로 제공된 증정 상품의 목록
- 금액 정보
- 총구매액: 구매한 상품의 총 수량과 총 금액
- 행사할인: 프로모션에 의해 할인된 금액
- 멤버십할인: 멤버십에 의해 추가로 할인된 금액
- 내실돈: 최종 결제 금액
기능 구현
마지막 과제는 이전까지 과제에 비해 구현해야할 것들이 너무 많았다. 지금까지 진행한 과제가 좋은 개발을 위한 공부 목적이 였다면, 이번 과제는 우리가 실제로 마주하게될 과제를 만나는 느낌이 들었다. 실제로 실무나 프로젝트에서 만나는 요구사항은 복잡하게 얽허 있을 것이다. 우테코에서 좋은 설계 OOP도 좋지만, 결국 실제로 우리가 해결해야하는 문제들이 어떤 형태인데 경고하는 것으로 느껴졌다. 과제 문제를 읽으면서 다소 당황스러움을 느꼈고, 무조건 기능 개발을 1순위로 가져갔다. 확실히 클래스 분리에는 큰 어려움을 느끼지 않고, 과제를 진행하였다.(책임 분리만 4주한 보람이 있었다).
테스트 코드
프리코스 커뮤니티에서는 테스트 실패로 인해 불이 나고 있었다. 특히 테스트 1개가 말썽이였다. 기능 구현을 완료하자마자 테스트용으로 제출했는데, 테스트가 모두 성공해서 당황하였다.. 마감 직전까지 커뮤니티에서 말이 많았기 떼문에, 예외 케이스를 찾아가면서 과제를 끝마쳤다. 과제 종료 이후 알게된 내용인데, 파일로 제공된 데이터를 사용할때, 파일을 직접적으로 수정하는 경우에 테스트를 통과하지 못했다고 한다. 나는 파일을 건드리지 않고, 예외 케이스에 대해 코드로 구현해서 운좋게 테스트가 통과 했던 것이다.
우테코 지원
우테코 지원에 관한 이야기를 하기 전에 나는 몇시간 전에 1차 불합 메일을 받았다. 그럼에도 우테코를 지원하고, 프리코스에 대해 복기 해보고자 한다.
사실 우테코를 작년에도 지원했었다. 그러나 작년에는 개인 사정으로 1주차부터 참여하지 못하였다. 나는 올해부터 본격적으로 백엔드 공부를 시작했다. 사람들이 많이 사용하고, 기업에서도 많이 사용하면 스프링 부트를 공부하면서 자바공부를 병행했다. 공부하면서 내가 얼마나 자바를 잘모르는지 뼈저리게 느꼈기 때문이다. 특히 내가 자바 공부의 필요성을 느끼게 되었던 경험이 있는데 교내 개발 동아리 면접을 진행하는 중에 객체 지향에 대한 질문이 있었다. 지원자들의 눈높이에 맞쳐서 질문은 해주신거 같은데, 제대로 대답하지 못했다. 책임 분리, 인터페이스와 같이 대충 기억나는 단어로 포장해서 대답했었다.
우테코를 지원해야겠다고 본격적으로 느낀 시점은 2학기가 시작되면서 였다. 그때 당시 개발자 채용 서류 탈락 메일을 계속 받고 있었고, 우테코를 하면 좋겠다는 생각을 가지게 되었다. 특히 우테코는 다른 부트캠프와 달리 특정 기술, 프레임 워크보다는 자바와 같은 프로그래밍의 본질에 대해 집중하고 있었다. 기본의 중요성을 엄청 느끼고 있는 나였기 때문에, 우테코에 더 지원하고 싶었다.
자소서
https://www.youtube.com/watch?v=QVItR4OTgP4
1년전에도 우테코 자소서를 작성했기 때문에 자소서 질문은 어느정도 예상하고 있었다. 특히 우테코에서는 몰입의 경험을 중요시한다. 자소서는 최대한 내가 할 수 있는 것보다는 내가 어떤 사람인지 적었다. 우테코는 기업이 아니고, 부트캠프이기 때문에 개발자 취준 자소서와는 성격이 다르다. 몰입의 경험을 중요시하는 것도, 우테코의 핵심 가치가 몰입이기 이전에, 1년동안 교육 과정을 탈선하지 않을 사람을 판단하기 위함이라고 알고 있다. 다른 포스팅에서 우테코 설명회를 잘들어야한다는 이야기도 있었기 때문에, 우테코 설명회에 있었던 새로운 키워드인 "메타인지"와 몰입의 경험안에 녹이기 위해 노력했다. 몰입의 경험은 자세히 이야기하긴 어렵지만, 학업과 관련되지 않은 취미와 관련된 이야기를 썼다. 다소 몰입의 경험이라고 느껴지지 않을 수도 있지만, 가장 진실된 경험을 작성했다. 다른 자소서 항목도 기존 우테코 자소서와 거이 유사했고, 나머지 내용도 최대한 진실되게 작성했다. 그렇다보니 개발내용을 자소서에 거의 작성하지 않았다. 이부분이 탈락에 다소 화근이 되었다고 생각한다.
프리코스
우테코를 지원하면 합격 여부와 상관없이 프리코스를 진행할 수 있다. 우테코에 합격하는 것은 정말 어렵다고 생각했기 때문에, 합격을 위한 프리코스보다 공부를 위한 프리코스를 진행하고자 하였다. 앞서 말했듯이 OOP에 대해 잘 몰랐기 때문에 프리코스가 나에게는 아주 적합했다. 과제랑 별개로 프리코스 커뮤니티가 상당히 활성화 되어있기 때문에 사람들이 같이 진행할 수 있었다. 커뮤니티 덕분에 더 열심히 했다고 생각한다. 프리코스 과제를 진행하는 것과 별개로 OOP 공부를 위해 책을 병행하였다. "객체지향의 사실과 오해"와 "오브젝트"를 읽었는데, 상당히 큰 도움을 받았다. 또한 프리코스 과제와 별개로 과제 리뷰를 하면서 많이 배웠다. 다른 참가자도 열심히 진행한 과제였기 때문에 과제를 제출하는 것 보다 리뷰하면서 배울 수 있었던 내용이 많았다. 프리코스를 진행하는 사람에게 리뷰도 같이 하는 것을 꼭 추천한다.
프리코스기간 동안 OOP와 자바에 대해 모두 학습할 수 없었지만, 그래도 자바와 OOP에 대해서 이야기해볼 수 있는 정도 되었다고 생각한다. 그리고 프리코스에서 여러 리뷰를 진행하면서, 코드에 대해 바라보는 시각도 달라질 수 있었다.
결과
1차 결과는 아쉽게 탈락하였다. 현재 취준생으로 탈락으로 인해 내년 계획이 불투명해짐이 확정났다. 우테코을 내년에 한번 더 지원할 확률을 아주 희박하다고 생각하고 있는데, 인연이 생긴다면 만날지도 모르겠다.
약 2달간 우테코 지원부터 프리코스까지 진행하면서, 도움을 주었던 리뷰원들 스터디원들에게 감사합니다 :)