TIL

메가테라 5주차 주간회고(프로젝트)

혹등고래1호기 2022. 7. 22. 23:45

이번 주 토요일 부터 시작된 레벨테스트 겸 첫번째(?) 개인 프로젝트를 진행하면서 최종적으로 회고를 하는 글을 작성하고자 한다.

 

토요일 아침 9시 강의올라왔나?~~ 라고 생각을 하면서 메가테라 노션을 켰더니 ""레벨 테스트"" 당연히 다시 할 거라고 생각은 했지만 

3주전이 생각이나서 레벨 테스트라는 글을 보니 숨이 턱 막히는 듯한 느낌이 들었다. 후.. 일단은 침착해라

 

그래도 이월당하고 다시 공부 했으니 저번 보다는 나을 것이다. 라는 생각으로 일단은 프로젝트의 컨셉을 짜기 시작했다. 저번과 똑같은 게시판 기능이 들어가는 개인 프로젝트인데 저번에 사실상 게시판기능도 다 못만들었기 때문에 이번에도 게시판 만들기로 컨셉을 잡았다.

 

일단은 뭘 만들지가 중요한게 아니라는 것을 알고 있었기 때문에 월요일 MVP발표도 있고 빠르게 작업에 돌입 했다. 토요일날 작업계획으로 게시판 기능을 다 만들고 일요일부터는 부수적인 기능들을 추가하려고 계획을 했으나 역시 계획대로 진행하기라는 것은 참 어렵다. 토요일은 사실 게시판 기능 만들기에서 진도는 빨리 나가서 오늘 다 만들 수 있겠구나 라고 생각을 했었는데 저번 레벨 테스트에서도 내 발목을 

잡았던 수정하기와 삭제하기 기능이 발목을 잡았다.

 

 

토요일날 TIL제목 꽤나 스트레스를 받았다. 하지만 토요일에는 일단은 아직 토요일 이니까 내일 수정하자 라는 생각으로 빨리 자러 갔었던 것 같다. 이렇게 내일 하자 라는 생각은 반드시 안 좋은 결과를 만들어 내게 되는 것 같다. 당일 잡은 목표는 반드시 해낸 다는 마인드로 임해야 하며 만약 달성하지 못했다면 어째서 목표에 달성하지 못했는지 회고를 하도록 하자 토요일에 이슈는 패널들의 가시성에 대한 이슈 때문에 꽤나 시간을 많이 날렸다.

그렇게 문제를 어떻게 해결을 하고 일요일날 수정하기와 삭제하기 기능을 구현을 하는데 예상외로 빠르게 되는 데? 라고 생각을 했는데 저번 과 똑같이 어김없이 화면에 갱신이 안된다. 

 

삭제하기 수정하기 덕분에 1차 넉다운에 빠져버렸다. 일요일 하루종일을 어떻게 해결할까 고민을하다가 결국은 수정하기, 삭제하기를 구현한 동료의 구조를 참고 해야 겠다고 생각하고 구조를 바꾸긴 했는데 그래도 안된다.... 월요일 새벽에 정말 우울했다.. 결국 해결을 못하고 자포자기 시점으로 일단은 3시간이라도 잠을 자야 겠다고 생각을 하고 자고 일어 난 뒤 다시 동료에게 물어 보았다.

 

혹시 내가 참고한 구조를 내가 잘못이해하고 코드를 작성을 했나? 근데 진짜 였다. 그렇게 극적으로 MVP발표가 있는 오후 1시 이전에 점심 시간에 문제를 해결했다. 

 

메가테라 교육을 듣는 동안 코딩으로 느낀 가장 큰 카타르시스 였다. 1차 관문을 드디어 지나치고 다음으로 구현 하기로 마음 먹었었 던 로그인 기능은 MVP발표에 이어서 트레이너님의 피드백으로 굳이 사용자의DB를 이용해서 무언가를 처리 할 기능이 없다면 필요 없다고 판단을 해서 바로 댓글 기능으로 들어 갔는데 다시 2차 고비가 왔다. 패널들의 구조가 내가 코드를 짰는데도 뭐가 뭔지 모르겠는 거다..

 

그렇게 해서 2시간 가량을 프로그램을 실행 시키면서 여기는 이 친구가 처리를 해주고 이렇게 저렇게 처리하는 구나를 내 코드 구조를 다시 한번 천천히 돌아 봤고 대대적으로 코드를 다시 고치게 되었다. 물론 처음부터 코드를 잘 짜는 건 힘들지만 되도록이면 처음 부터 코드를 잘 짜야 한다. 그러기 위해서 테스트 코드의 작성이 필수 적으로 필요하다..

 

어쨌든 댓글기능은 대대적인 공사를 통해서 해결을 했고 도메인 모델도 Comment라는 객체를 추가 했다. 하지만 여기서 중대한 고민 사항이 생겼다. 어떻게 게시물과 댓글을 연동시키지??..  그렇게 해서 생각을 해낸게 바로 등록 번호이다. 커뮤니티 사이트를 참고해보니 게시글에 대한 등록 번호가 있는데 댓글을 작성하면 아마 이 게시물의 등록번호를 댓글도 가지는 게 아닐까 라는 생각을 했고 등록번호를 게시물과 댓글에 속성값을 추가 해줬다. 놀랍게도 내가 생각했던 대로 됬다.

 

사실 처음에는 이게 왜 되지? 라는 생각도 했지만 하다 보니 어느 정도 이해가 가더라 댓글 기능을 구상을 할 때 가장 난감 했던 부분인데 생각 외로 간단하게 처리를 해서 다행이였던 부분이라고 생각한다. 

 

그리고 수요일날 구현을 시작했던 검색하기 기능 검색하기 기능은 별로 문제가 없었던 것 같다. 사실 이미 검색하기 기능을 완성한 동료가 있어서 먼저 조언을 받고 시작을 했는데 확실히 빨리 끝나기는 했다. 물론 이렇게 하면 결과는 빨리 만들어 낼 수 있지만 내 실력 성장에는 그 다지 도움이 되지 않는 것 같다. 구현을 하다가 막혀서 막막한 부분이 있어서 도움을 청하는 상황이 아닌 시작하기도 전에 먼저 뭔가 답지를 조금 보고 답을 적는 느낌이였다. 이러면 안된다 어쨌든 어떤 문제를 해결하기 위해 집요하게 파고드는 것도 개발자로서 정말 중요한 부분이 라고 판단을 하기 때문에 

 

이번 프로젝트를 하면서 재미있었던 점은 내가 구현하고자 하는 기능을 새롭게 알아낸 메서드나 클래스를 사용해서 해결했을 때가 가장 재미있었던 것 같다. 특히 목요일 새벽에 기능을 추가 해야겠다고 생각을 조회수 좋아요 순 내림차순 정렬이 그것인데 Comparator를 사용해서 객체가 가지고 있는 특정한 값에 대해서 정렬을 해주는 방식을 사용해서 내가 해결하고자 하는 것을 해결했을 때 그럴 때가 개발하면서 정말 보람 차고 재미있는 순간인 것 같다.

 

그렇게 오늘 발표를 마치고 트레이너 님의 피드백 결국 내가 처음부터 뭔가 구조가 이상해서 수정에 수정을 거치지 않을려면 테스트 주도 개발을 해야 하는 것이다. 테스트 코드 작성을 통해서 내 프로그램에 대한 확신을 조금 더 가질 수도 있다. 오늘 발표를 하면서 시현을 하는데 혹시 안되면 어떻게 하지 하고 내심 많이 쫄았는데 다행이 내가 구현한 기능들이 문제없이 작동이 잘 되었다. 

 

현재 tdd가 안되는 점이 테스트 코드의 작성의 부재 부터 시작하는 것 같다. 의도적으로 테스트 코드를 작성하려고 하지 않았다. 그냥 늘 하던대로 일단은 프로그램 실행시켜 보면서 결과 확인하기 지물론 지금은 내가 만든 프로그램의 코드량도 적고 하기 때문에 이렇게 할 수 있지만 프로그램의 규모가 커진다면 이렇게 확인 하는 것도 상당한 시간이 걸릴 수도 있는 비효율적인 방법이 될 수도 있다. 그렇기 때문에 미리 작을 때 부터 테스트 코드를 작성하는 습관을 들이 도록 하자 의도적으로 테스트 코드 작성하기 배운 것을 사용해보려고 하기!!!!!!1