본문 바로가기
우아한테크코스/회고

[우아한테크코스] Lv. 1 - 7, 8주차 회고: 레벨 종료

by shyun00 2024. 4. 5.

이번주는  방학이 있어 7, 8주 차를 묶어서 한 번에 돌아보려고 한다.

 

체스 미션 마무리

먼저, 3/26 ~ 4/1은 체스 미션을 마무리하는 기간이었다.

워낙 악명 높았던 미션이라 걱정을 많이 했었는데 걱정했던 것보다는 잘 마무리할 수 있었던 것 같다.

 

6주 차에 체스말 이동과 같은 기본적인 기능에 대한 구현을 했다면, 이번 기간에는 ① 점수와 승패를 계산하는 기능, ② DB를 연결해 게임을 종료했다가 다시 시작하더라도 이전 데이터를 불러올 수 있는 기능을 구현해야 했다.

 

이번 미션을 하면서 가장 많은 시간을 투자한 부분은 DB 연결과 테스트였다.

이전에 다른 부트캠프에서 DB 사용을 해본 적은 있었으나, 스프링과 함께 사용했었기에 구현 방식이 완전히 달랐다.

순수 자바를 사용해 DB 연결을 해보니 데이터베이스 연동과 동작 방식에 대해 이해할 수 있었다.

(직접 쿼리를 보내본다거나, 받아온 데이터를 다시 도메인으로 변동한다거나 하는)

 

그리고 데이터베이스를 연결하고 나니 테스트는 어떻게 해야 하는가? 하는 의문이 생겼다.

기존 애플리케이션은 실행이 종료되면 데이터는 모두 삭제되고, 재실행하면 모든 데이터가 초기화되었었다.

그러나 지금은 데이터가 남아있어야 했고, 테스트를 하면서 데이터에 변동이 생기면 안 됐다.

 

총 두 가지 방법으로 테스트를 구현해 보았다.

 

1. 테스트용 / 애플리케이션용 테이블 분리

테스트 상황일 때, 실제 애플리케이션 실행중일 때 두 가지 상황에 따라 다른 테이블을 사용하도록 했다.

테스트 코드를 실행하면 환경변수 "test_condition"을 true로 설정해 주고, 테스트가 종료되면 다시 false로 설정한다.

도메인에서 test_condition 환경변수를 검증해 테스트 상황이면 테스트용 테이블에 쿼리를 보내고,

테스트가 아니라면 실제 애플리케이션용 테이블에 쿼리를 보내도록 했다.

이렇게 하니 테스트용과 실제 애플리케이션에 다른 테이블을 사용하게 되어 데이터에 영향을 주지 않게 되었다.

사실 이 방식은 지금 생각해 보면 올바른 방향은 아닌 것 같다. (테스트를 위한 내용이 도메인에 아주아주 많이 들어간다.)

 

그래서 두 번째 방법을 고민하게 되었다.

 

2. 테스트 / 애플리케이션용 데이터베이스 분리

chess, chess-test 두 개의 데이터베이스를 사용했다.

ConnectionGenerator라는 객체를 생성해 어떤 데이터베이스를 사용해 Connection을 생성할지 정해주었다.

그리고 Dao에 ConnectionGenerator를 주입해 해당 Connection을 사용하도록 했다.

이렇게 하니 테스트를 위한 코드를 도메인에 작성하지 않아도 되었고, 필요한 데이터베이스 정보를 Dao 외부에서 주입해 줄 수 있었다.

 

이 외에도 리뷰어님과 함께 DB와 도메인의 역할 및 연관관계, 정규화, 트랜잭션 등에 대한 이야기를 나누어볼 수 있었다.

이전에 스프링으로 코드를 작성했을 때 보다 오히려 어렵다는 느낌이 들기도 했다. (스프링은 알아서 해주던데...🤦🏻‍♀️)

물론 아직 스프링의 정확한 개념과 동작 원리를 알고 있는 것이 아니라서,

지금 이 방식대로 다음 레벨이 진행된다면 또 얼마나 많은 것들을 배울 수 있을지 기대된다.

 

이렇게 레벨 1의 마지막 미션이 종료되었다. 그래도 지난 두 달을 돌아보면 처음에 비해 여러 방면에서 변화하고 성장했다고 느낀다.

리뷰어들로부터 받은 피드백을 봐도 내가 조금씩 변화하고 있다고 느껴져서 기분이 좋았다.

리뷰어님의 피드백 중 일부를 끝으로 1단계 미션 회고를 마무리하고자 한다.

 

굉장히 코드를 잘 짜는 느낌이 들었다. 리뷰에 대한 것도 반영이 굉장히 빠르고 잘 반영해 주셨다.
지금과 같이 한다면 꾸준히 성장할 수 있을 것 같다.

 

글쓰기 미션 마무리

우테코에는 하드 스킬 외에도 소프트 스킬 강의도 진행한다. 그중 한 가지로 '글쓰기' 과정이 있었다.

정확히 말하면, 글을 쓰는 방법을 알려주는 것이 아니라 간단한 주제를 제공해 주고 해당 주제로 글을 쓰면,

정해진 조 안에서 서로의 글을 읽고 리뷰를 하면서 발전시켜 나가도록 한다. (크루들 간 피드백!!)

마지막 과제와 함께 진행해야 해서 바쁜 감이 조금 있었지만 솔직한 내 생각을 담다 보니 생각보다는 글이 잘 써졌다.

 

이번 기수에 제공된 주제는 '유연성 강화'와 관련된 경험이다.

앞으로 진행될 레벨 1~4 동안 레벨마다 한 개의 글을 쓰게 되고, 각 글은 시리즈물로 연결되어야 한다.

그래서 나는 내가 유연성 강화 목표를 세우게 된 이유와 현재 어떻게 변화하고 있는지를 중점적으로 작성했다.

내가 작성한 글을 다른 크루들에게 보여준다는 것이 처음에는 부끄럽기도 했다.

그래도 내용을 공유하고 피드백을 받아보니 더 자연스러운 글이 되기도 했다.

 

글에는 내 평소 말투가 묻어나게 된다. 그러다 보니 나도 모르게 사용하던 표현들 중 불필요한 것이 있다는 것도 알게 되고,

내 말투 혹은 글 쓰는 스타일이 어떤지 확인할 수 있는 계기가 되었다.

 

또한 다른 크루들의 글도 읽어보게 되었는데 다들 어떤 생각을 하고 있는지, 어떤 어려움이 있었는지 혹은 어떻게 해결했는지를 공유할 수 있어서 좋았다.

그 과정을 통해 서로 공감하면서 위안도 되고 힘도 된 것 같다.

 

그리고, 특히 와닿았던 점은 "리뷰를 하는 것은 생각보다 어렵다"는 점이었다.

이때까지 코드 리뷰를 받기만 했지 리뷰를 해보는 것은 처음이었다. (코드 리뷰는 아니지만)

이렇게 리뷰를 남기는 것도 '애정이 있어야 할 수 있겠구나' 하는 생각이 들었다. 그냥 읽기만 하면 되는 것이 아니었다.

잘한 점 혹은 개선하면 좋을 점을 고려하면서 글을 읽어야 했고, 코멘트를 남길 때에는 상대방을 존중하며 의견을 남겨야 했다.

 

그런 의미에서 매번 우리에게 코드 리뷰를 남겨주시는 리뷰어분들도 대단하다는 생각이 들었다.

(모두 현업에 계신 분들이니 리뷰 문화가 익숙할 수도 있으나... 관심과 애정이 없다면 쉽게 할 수 없는 일이라고 생각한다.)

나도 언젠가는 다른 사람들의 코드 혹은 내 코드를 보면서 긍정적인 변화를 이끌어낼 수 있는 사람이 될 수 있기를 기대해 본다.