Home
All Posts
🎄

[우아한테크코스] 프리코스 크리스마스 미션 회고

Created
2023/11/15
Tags
JavaScript
Category
Project
2 more properties
개인적으로는 미션 수행을 통해 성장한 과정을 기록하고,
누군가에게는 이 글이 도움이 되었으면 하는 마음입니다 :)

결과물

프로모션 실행 화면과 테스트 통과 화면
테스트 커버리지 비율

목표

지난주 목표는 함수 분리와 함수별 테스트 작성이었다. 이번 주는 지난 주처럼 (1) 클래스(객체)를 분리하는 연습, (2) 도메인 로직에 대한 단위 테스트 작성 연습 두 가지를 더 연습하며 지금까지 배운 내용을 더 '고도화'하고자 한다.
이번주는 특히 클래스(객체)를 분리하는 것에 대해 더 깊게 고민해 볼 수 있도록 예시 클래스와 요구사항이 추가되었다. 그리고 미션을 하면서 클래스의 역할과 책임을 생각하고, 클래스를 작성할 때는 도메인 로직에 집중하는 방향으로 구현하는 것, 그리고 UI는 도메인 로직과 분리하는 방향으로 생각하라는 피드백이 있었다. 이는 3주 차 때 연습했던 것이었어서 4주 차 미션에서는 '더 잘하는 연습'을 하리라 결심했다.

피드백

아래는 3주 차 미션 마감 후, 모든 프리코스 참여 인원에게 발송된 공통 피드백이다. 확실히 1주 차 때를 생각하면 더 클린코드와 객체지향 프로그래밍, 그리고 테스트 코드에 관련된 깊은 조언이 있었다. 지난 미션 때 아쉬웠던 부분인 테스트코드 리팩토링과 필드 수 줄이기를 더 연습해 보기로 했다. 그리고 지난 미션에 이어 이번에도 객체 지향적으로 생각하기, 빈틈없이 예외 처리를 잘하리라 마음먹었다.
공통 피드백 목록

요구 사항

1.
설명
미션에 대한 자세한 내용은 우테코 프리코스 레포에 있으니 참고하길 바라며, 간단히 미션 설명을 하자면 고객들이 식당에 방문할 날짜와 메뉴를 미리 선택하면 정보가 담긴 이벤트 플래너를 보여주는 프로모션을 개발하는 것이다.
2.
출력 예시와 요구 사항
출력 예시
요구 사항
3.
프로그래밍 요구 사항
실행 환경
추가된 요구 사항

배운 점

계획에 따라 시간 관리하기
설계에 시간들이기
서비스 레이어의 클래스 네이밍
자바스크립트 내장함수의 세계

리팩토링

아쉬운 점

1.
확장성을 더 고려할걸
미션 제출을 하고 나서야 요구사항 상단에 이벤트 목표로 '내년 1월 새해 이벤트'가 언급된 이유가 확장성을 고려하라는 것이 아닐까.. 생각했다. 예를 들어 크리스마스 디데이 할인은 날짜별로 다르게 할인이 적용되는데, constants 파일에서 날짜를 하나하나 써두었던 것, 평일과 주말도 날짜를 써두는 형식으로 코드를 짰던 게 마음에 걸린다.
물론 다음에는 이벤트 형식이 바뀔 수도 있고, 확장성을 고려하다 추상화를 과하게 하면 또 안 좋긴 하지만, 이 부분은 조금 더 신경 썼더라면 좋지 않았을까. 최종 코딩테스트 때는 다르게 해 봐야겠다.
2.
컨디션 관리
4주 차의 아쉬움이라기보다, 지난 3주간의 컨디션 조절을 잘 못했던 것이 아쉽다. 3주 동안은 새벽 4-5시쯤 늦게 자거나 밤을 새고, 다음날 점심때가 다 되어서야 일어났는데 이렇게 되니 잠을 자도 잔 것 같지 않고, 오후 내내 집중력이 흐트러졌다. 무엇보다 늦게 일어나니 '기상의 뿌듯함'이 없었다.
불안해서 새벽까지 붙들고 있다 보면 뭔가 하고 있기는 한데, 사실 불안한 마음이 커서 큰 소득이 없었다. 어차피 점심때쯤 일어나는 거면 수면시간은 똑같기에 조삼모사 같았다. 사람마다 다르겠지만 나는 확실히 일찍 자고 일찍 일어나는 게 맞는 것 같았다. 그래서 4주 차부터는 과감하게 생활 패턴을 바꿨다.
4주 차부터는 제출 직전 날을 제외하고는 새벽 2시면 무조건 자고, 다음날 아침 7시에는 일어났다. 그랬더니 '기상의 뿌듯함'을 느끼면서 아침에 환기 겸 창문을 열면 기분이 좋아졌다. 커피를 내리고, 아침밥을 먹으며 코딩하니 행복하기까지 했다. 역시 몸은 정신을 지배한다는 것을 느꼈다. 컨디션 조절도 하나의 역량이라고도 생각했다.

☕️ 4주 차 소감

1.
4주 차 미션을 받고
4주 차 미션을 처음 접했을 때는 요구사항의 길이로 압도당했지만, 실제 개발자로 일하며 업무를 배정받았다는 생각을 가지고 임하니 재미있었다. 앞으로는 문제의 내용이 많으면 압도당하기보다, 오히려 친절한 설명이라는 생각에 감사하고 침착할 수 있을 것 같다.
2.
4주 차 미션 수행 과정
마지막 미션인 만큼 지난 3주간 배운 것들을 모두 녹여내고자 했다. 이를 위해 지난 1주 차부터 3주 차까지의 모든 피드백과 교육 자료를 총 복습했고, 학습 내용을 미션의 요구사항에 적용하며 설계에 공을 많이 들였다. 예를 들어, 메뉴 / 주문 / 배지 등 각 객체들이 가지는 역할을 분리하여 필요한 메서드들을 미리 고민하고 적어두었다.
앞서 이야기한 것처럼 지난 미션들에서 적용해 보았던 MVC 패턴과 Layered Architecture은 이번 프로젝트에도 적용하며 컨트롤러의 역할이 너무 커지지 않도록 서비스 레이어를 추가했다. 컨트롤러는 입출력과 같은 사용자 인터페이스 로직만을 담당하고, 비즈니스 로직은 서비스 레이어가 담당할 수 있게 했다.
더 작게 파고들자면, 함수 라인의 제한이 있었던 덕분에 메서드들이 하나의 역할만을 할 수 있도록 고민했고, 이는 나에게 매우 유의미한 경험이었다. 또한 코드리뷰를 하며 JSDoc 덕분에 코드를 이해하기 더 편했던 기억이 있어, Controller와 Service Layer에 문서화를 하기도 했다. 이로써 객체 지향적인 사고를 비롯해, 아키텍처와 디자인 패턴의 중요성, 그리고 보기 좋은 코드의 중요성을 스스로 체감하며 적용할 수 있었다.
또한 커뮤니티 안에서 지원자들과 이야기 나누며 스스로 공부할 주제를 만들어 나가기도 했다. 예를 들어 클린한 소스코드와 테스트 코드를 쓰기 위해서는 어떤 점에 신경 써야 하는지에 대한 시야를 넓혀나갈 수 있었다. 덕분에 지금까지 받은 소중한 코드리뷰들을 모아 체크리스트를 만들어, 코드를 짜며 잘 지키고 있는지 점검하기도 했다.
다만, 설계나 리팩토링 측면에서는 아직 시야가 좁다고 생각하기에 프리코스 기간 동안 겉핥기 수준으로 공부했던 것들을 차차 학습해 나갈 계획이다. 프리코스 기간 동안 매주 성취감을 느끼기도 했지만, 공통 피드백이나 코드리뷰를 통해 매주 아쉬움을 남기기도 했다. 하지만 이 아쉬움을 느낄 수 있음에 감사하기도 했다. 이로써 피드백은 성장의 큰 자산이라는 것을 다시 한번 체감할 수 있었고, 프리코스가 끝난 이후에도 지원자들과의 인연을 유지하며 피드백을 주고받고자 한다.
3.
잘 해낼 수 있는 환경 만들기
지난 3주 차 미션 이후, 멘탈 관리를 잘해야겠다는 생각이 크게 들었다. 미션을 하던 당시에는 하루하루 풀리지 않는 문제에 힘이 들었다. 하지만 이는 미션이 나를 힘들게 하는 것이 아니라, 나를 둘러싼 것들이 힘들게 만드는 것이었다.
3주 차 때 컨디션 조절을 잘하지 못해 힘든 상황 속에서 미션을 수행하다 보니 몸도 마음도 지쳤다. 하지만 4주 차부터는 집중이 되지 않을 때는 디스코드 모각코 방에서 지원자들과 함께 이겨내고, 최소한의 수면 시간을 확보해 다음날 컨디션에 무리가 없도록 했다. 생활 패턴을 단숨에 바꾸는 것은 어려운 일이라 생각했지만 절실한 마음 덕분이었는지 무리 없이 잠에서 깰 수 있었다. 이처럼 스스로가 ‘잘 해낼 수 있는 환경’을 만들며 성장하는 개발자가 되고자 한다.