221003 순서 잊지않기

샨티(shanti)·2022년 10월 3일
1

TIL

목록 보기
121/145
post-thumbnail

하루를 마무리 하기 전, 오늘 있었던 일들을 잔잔히 되짚어봅니다.
성공과 실패의 모든 요소에서 '배울 점'을 찾아내어 기록하고,
더 성장하는 내일의 나를 위해 'action plan'을 세웁니다.

주말에 레벨테스트 요구사항이 주어졌지만 주말에 코딩을 하는것과 일과시간에 코딩을 하는 것이 뭔가 사뭇 다른 느낌이다 ㅎㅎ.
아마 주말에는 프로젝트를 어떻게 할 것인지에 대한 문서를 작성하기도 했고 배포 때문에 시간을 꽤 썼던 이유도 있을거고..
어쨌거나 오늘은 꽤 오랜시간 오로지 '프로젝트'를 위한 시간을 썼던 것 같다.

어제 TDD 스터디도 다녀왔으니 머릿속에서 '테스트 먼저'라는 메시지를 지우지 않고자 노력했다.

물론 테스트를 먼저 짜는 것은 어렵다. (아직 내 기준에선 어렵다.)
뭔가 될 것 같은데~ 하면서 되지 않을 땐 테스트를 들여다보기 보다는 무작정 코드부터 건들고 싶기 때문이다.
그리고 그냥 이정도면 바로 코드를 적어도 되지 않을까? 하는 마음도 불쑥 불쑥 들어오기 때문이다.
어쨌든. 평소보다는 조금이라도 더 '테스트'를 신경쓰려 했고, 중복이 발생하더라도 어쨌거나 그 중복이 거슬린다 하여 테스트를 작성하지 않는 선택을 하기보다는 그럼에도 불구하고 무엇 하나라도 더 적어내려가려 노력했다.

오늘 일과시간에 제일 헷갈리면서도 어려웠던 점은 문서 순서를 따라가는 점이었다.
지난주 강의 순서를 떠올려보면 로그인과 회원가입, 인가 등의 내용은 가장 마지막에 위치하고 있다. 그런데 작성한 문서를 보니 회원가입과 로그인이 가장 앞쪽에 위치하고 있다.

솔직히 고민이 되었다.
다른 기능을 구현할 엄두는 나지 않았지만 그렇다고 뭔가 회원가입이나 로그인을 먼저 구현하는 것이 나은 선택인가? 라는 의문도 동시에 들었기 때문이다.

그래서 먼저는 눈에 보이는 것들 중에서 '내가 할 수 있는 것'에 집중하기로 했다. 문서 순서를 지키면서 회원가입 폼을 만들 수 있다면 폼을 만들었고, 로그인 폼을 만들수 있다면 만들고, 또 상품목록 페이지 중에서 헤드라인이라도 만들어 볼 수 있는 것은 만들었다.
물론 어떻게 해야 할지 몰라서 막막한 부분은 단순히 점을 몇 개 찍어놓더라도 아주 작은 것을 만들어놓고는 넘어갔다.

그리고 로그인과 회원가입을 만들기 시작했다.

로그인, 회원가입에서는 지난 과제에서 내가 놓치고간 부분이 너무나 분명했기 때문에 이번에도 놓칠 수 없다는 생각에 상태관리를 잘 구현했던 동료의 코드를 참고하며 배웠다. 헷갈리는 부분은 동료에게 물어보기도 하면서 아주 답답했던 그 부분에 대해 한번 쳐보는 프로세스를 거쳤는데 다행이라고 생각하면서도 한편으론 몰랐던 스스로에 대해 자괴감도 들긴 했다.

어쨌든, 한 번 또 해보았으니 다음에 더 시간을 줄이고, 더 익숙하게 하면 된다는 마음으로 회원가입 쪽을 만들어나가고 있었는데. 분명히 테스트까지 다 통과한 백엔드의 로직이 프론트엔드 쪽에서 영 이상하게 출력되는 것이었다.

뭐지...? 싶어서 30분, 40분 오만가지 오타까지 다 들여다보는데도 해결이 되지 않았다.

그러다 갑자기. 정말 갑자기.
h2 console의 column과 내용이 일치하지 않는게 눈에 들어왔다.
user_id 컬럼에 내 이름이 들어가있고 name에는 내가 집어넣은 user id가 위치한 것이었다.

뭐여.....

순서는 문서읽기에서만 중요한게 아니었다.
정말 별 것 아닌 실수인데 이런 부분들이 굉장히 큰 시간을 잡아먹는다.
특히나 자바스크립트 같은 경우에는 엄청난 오타가 아닌 이상 잡아주는 것 같지 않고, 자바는 타입이 같은 인자라면 뭐 이렇게나 친절하게 데이터를 받아주기에 ㅠㅠㅎ.

그렇게 갑자기 발견한 오류가 1차 트리거가 되었고, 의심스런 상황에 전체 테스트를 돌려보았는데 분명 깨지지 않던 테스트가 깨져서 찾아가보니 거기에서 2차 오류의 실마리를 잡았다.

결국 오늘은 처음부터 끝까지 '순서'가 다 했다. ㅋㅋㅋ... 순서.

시간은 많이 썼지만 그래도 오류가 나지 않는 서비스를 만드는 것 역시 중요하기에, 제대로 잡고가니 이제 마음이 좀 놓인다.

한가지 더.

오늘 레벨테스트 과제를 하면서 회원가입 기능을 구현할 때 User 객체를 optional로 지정하고 싶은데 막상 떠올려보니 이걸 어떻게 지정해야 하는건지 갑자기 머리가 새하얘졌다.

엥? 싶어서 예전 과제들 깃허브를 들여다보는데 어노테이션이 나오고... 왜...때문에...
분명 뭔가 스무스하게 얘네들이 옵셔널이 되는 마법같은 일이 있었는데... 어떻게 하는거지...?

결론적으론 Repository에서 findByUserId() 에 대한 결과값을 Optional로 지정해서 받으면 되더라.
간혹 이런 사소하고 어찌보면 당연한 것들을 잊는 바람에, 길 걷다가 돌뿌리에 걸리는 기분.

어쨌든 오늘 일과시간을 보내면서 정말 '순서', 그리고 '배우기'에 좀 더 집중하니 시간이 꽤 빨리 지나간 것 같다.

남은 시간도 어떤 상황을 통해서든 하나라도 더 배우고 남기는 시간을 보내고싶다.
뭔가 다행(?)스러운건, 문서를 남겨놓으니 헷갈릴 때마다 가이드처럼 활용하고 들여다볼 수 있어서 좋다. 이런 문서들이 분명 나 자신에게만 도움이 되는 게 아니라 함께 협업하는 사람들과 소통하는데도 중요한 요소가 되리라.

뭔가 협업이라 하니 오랜만에 일하는 느낌이다.
오늘 12시가 되기 전까지 문서 잘 들여다보면서 순서 지키기! 그리고 테스트 먼저 짜기. 화이팅하자.

profile
가벼운 사진, 그렇지 못한 글

0개의 댓글