study/우아한테크코스

우아한테크코스 7기 백엔드 레벨1 로또 미션 회고

듀2 2025. 3. 17. 21:42

원래는 회고를 레벨별로 쓰려고 했었다.

그런데 프리코스 때처럼 미션별로 잊기 전에 기록해 두는 것도 괜찮을 것 같았다.
또, 첫 번째 로또 미션의 페어 레오가 왔다 갔다 지하철 안에서 티스토리 앱으로 써 보는 게 어떻겠냐고 해서 시도하게 되었다.

물론 언제까지 갈지, 언제 또 생각이 바뀌어서 레벨별로 쓸래! 할진 모른다😅

로또 미션은 최소 세 번은 풀어본 미션이어서 잘 알고 있다고 생각했는데도 페어 프로그래밍으로 하니 어려웠다.
게다가 우테코 시작 전에 한 달 정도는 미션을 들여다보지도 않았으니 더 낯설기도 했다.

첫 번째 페어 프로그래밍

그나마 다행인 것은 랜덤이었는데도 같은 연극조인 레오가 첫 페어가 된 것이었다.

기존에 풀었던 로또의 요구사항과는 다르게 굉장히 짧고 간결한(불친절한ㅋㅋ) 요구사항이었고, 페어와 함께 대부분의 기준을 잡고 미션을 풀어나가야 했다.
신기한 것은 레오의 코딩 스타일?이라고 해야 할까 문제를 해결하는 방식이 나와 비슷하다고 느꼈다.
나도 프리코스 문제를 풀어가면서 ’controller는 왜 존재해야 하지? service는 왜 있는 거지? dto는 왜 사용하지?‘ 이런 질문에 대해 내가 필요성을 직접적으로 느끼지 못했다면 사용하지 않는 편이었는데, 레오가 미션 초반 내게 던진 질문도 controller의 사용 이유를 모르겠으니 우선 main에 작성하는 게 어떻겠냐였다.

우테코에 오기 전에 안 맞는 페어와 함께 하게 되면 혼자서 미션을 제출하기도 한다, 싸우기도 한다 등등.. 의 이야기들을 듣기도 해서 혹시 나에게도 그런 경우가 생기면 어떻게 해결해야 할지 고민을 하기도 했다.

그렇지만 실제 그 상황에 닥친 것이 아니기도 했고, 나는 안 맞는 사람이더라도 주로 내가 맞추는 편이기 때문에 괜찮지 않을까?라고 생각했다.
그렇지만 이런 걱정은 기우였다는 듯이 레오는 나와 잘 맞는 편이었고, 본인의 의견을 주장하기보다 나에게 잘 맞춰주는 페어여서 운이 좋았다고 느꼈다.

나에게 잘 맞춰준 듯한 느낌이 들어 너무 내 주장만 한 것은 아닌가 생각하고 이렇게 피드백을 작성했었는데, 신기하게도 레오는 내 의견을 더 어필했으면 한다는 피드백을 해주었다.

피드백 작성하라고 할 때 엄청 어려워하더니 생각보다 좋은 이야기들만 써줘서 확인하고 놀라웠다ㅋㅋㅋ

그리고 내가 프리코스 중 어려워했던 EnumMap 사용에 대해서도 잘 알고 있고, 문제 해결력도 좋아 내가 배우는 점이 더 많았다.

특히 나는 피드백에도 있듯이 커밋 메시지를 자세히 적지 않는 편이었는데 간결한 커밋이 더 가독성 좋다고 생각하기 때문이었다.
그렇지만 커밋 메시지를 자세히 적으면서 스스로 기준이 확립된다고 느껴 로또 미션 이후로 최대한 의식하면서 자세히 커밋하려고 노력하게 되었다.

실제로 이렇게 한 커밋 메시지를 자세히 작성하니 구현하면서도 생각을 정리할 수 있었다.

우테코 생활에서 첫 페어를 레오와 함께 하게 되어서 배우는 것도 많고 참 감사한 일이었다.

현직자 리뷰

프리코스 때 6기 선배의 리뷰는 받아본 적이 있었는데, 현직자 리뷰는 이번에 처음 받아보게 되었다.

그래서인지 기대 반 걱정 반으로 리뷰 요청을 했는데, 다행히 첫 리뷰여서인지 1단계 리뷰는 미션 사이클을 경험할 수 있도록 컨벤션이나 질문에 대한 답변이 주를 이루었다.

2단계에서는 조금 더 도메인에 집중할 수 있는 피드백을 받았다.

특히 리팩토링을 진행하면서 ‘Application은 프로그램을 실행하는 역할만 담당한다’는 말에 설득당해 controller를 만들었는데, 여전히 controller의
역할에 대해서는 답을 찾지 못했었다.

이런 나의 의문에 리뷰어 아서는 이런 답변을 해주셨다.

controller는 정확히 MVC 역할에 맞는 기능을 하도록 만들어야 된다고 생각할 필요는 없습니다.
MVC 패턴이라는 개념 자체가 조금 모호하기 때문에 이에 대한 뚜렷한 답변을 얻기는 어렵습니다.
지금 하신 것처럼 적절히 비즈니스 로직과 화면 구성단을 분리하고 그 사이에서 상호작용을 하는 역할 정도로 받아들이면 적절할 것 같습니다.
아래 글을 읽어봐도 좋을 것 같아요ㅎㅎ
https://velog.io/@eddy_song/mvc


아티클에 나와있듯 MVC를 엄격하게 나누기가 어렵고, MVC가 탄생한 배경을 생각하면 controller의 역할은 단순히 model과 view를 연결해 주는 정도로만 생각해도 된다고 이해했다.
controller보다 도메인 그 자체에 대해 더 집중하는 것이 좋겠다는 생각이 들었다.

도메인에 집중하니 처음엔 LottoMachine이라는 객체에서 당첨 결과인 WinningStatics를 생성하고 있었는데, ‘로또를 발행하는 기계가 당첨 결과를 생성하는 것이 올바른 책임을 가진 객체인가?’라는 물음을 던져볼 수 있었고, 당첨 결과는 WinningStatics 객체 스스로가 생성하는 것이 더 맞는 책임이라고 생각해 변경하게 되었다.

첫 리뷰이다 보니 리뷰어의 의견이 다 맞는 거야!라고 생각하고 웬만하면 모든 리뷰를 반영하려고 했더니 이런 피드백을 받았다.

회고를 작성하는 시점인 세 번째 미션을 끝낸 지금은 아서가 왜 이렇게 피드백을 해주셨는지 알 것도 같다.

우테코에서 크루들이 레벨 1에 배우길 바라는 것이 나만의 기준을 찾는 것이기 때문 아닐까?
네오의 수업에서도 그렇고, 리뷰어의 리뷰에서도 그렇고 당연하게 생각하고 짰던 코드들에서 항상 나의 의견, 의도를 묻기 때문에 앞으로 나에게 집중하는 시간이 주를 이룰 것 같다.

로또 미션 레포지토리: https://github.com/ljhee92/java-lotto

 

GitHub - ljhee92/java-lotto: 우아한테크코스 BE 7기 레벨1 - 자바로 구현하는 로또

우아한테크코스 BE 7기 레벨1 - 자바로 구현하는 로또. Contribute to ljhee92/java-lotto development by creating an account on GitHub.

github.com

728x90