오늘 진행한 Task를 정리하면서 작업 과정을 돌아보았다.
작업 |
예상 스토리 포인트 |
실제 스토리 포인트 |
회고 |
백엔드 개발 환경 세팅 |
2 |
1 |
기본 Security 화면을 제거하고 WelcomeController를 생성하는 작업까지 진행했다.
추후 실시간 채팅 구현 시 Spring Web이 Spring Reactive Web으로 변경될 가능성이 있을까? |
헤더 생성 및 디자인 잡기 |
1 |
2.5 |
단순히 헤더 컴포넌트를 추가하고 요소 배치, 링크로 끝날 것이라고 생각해 스토리 포인트를 매우 작게 부여했다. 그러나 작업에 들어갔을 때 라이브러리 설치, URI 네이밍, 인수 테스트, 단위 테스트 작성 등 구현을 위해 같이 해줘야 하는 작업들을 생각하지 못했다. 설치한 라이브러리를 어떻게 사용하는지도 꽤나 자주 돌아보면서 작업을 진행했다.
프로젝트에서 특정 라이브러리나 구조를 처음 짜는 작업은 생각한 스토리 포인트보다 1~2포인트를 더 부여하거나, 라이브러리 사용법 복습을 위한 1~2 스토리 포인트 정도의 Task를 추가해도 좋을 것 같다. |
데이터베이스 테이블의 속성이 배열을 가질 수 있는지 조사 |
2 |
1 |
동료가 쇼핑몰 상품 상세정보에서 볼 수 있는 댓글들을 데이터베이스로 어떻게 설계할 수 있을지 물어왔다. 내 프로젝트에도 운동 모집글에 작성자가 추가하는 포지션이라는 속성이 하나의 글에 여럿 추가될 수 있었기 때문에 모델 정의를 미리 내린다고 생각하고 Todo에 새로 작업을 추가하고 조사를 시작했다.
상세정보가 댓글들 리스트를 갖는 식으로 Entity 객체가 컬렉션 형태의 데이터를 포함할 수 있는지 지난 레벨 테스트 프로그램으로 실험을 시도했지만 가능하지 않았다. 의외로 방법이 생각보다 일찍 떠올랐는데, 마카오뱅크 강의에서 거래 내역을 조회할 때 거래 내역을 모아놓은 테이블에서 송금인의 id 값을 갖는 거래 내역을 갖고 오는 것처럼 댓글 테이블에서 해당 상품 상세정보 id 값을 갖는 댓글들만을 가져온 뒤, 상품 상세정보와 DTO로 묶어서 전달하는 방식을 취하도록 할 수 있었다.
해당 방식의 설계가 실제로 가능한지 확인하기 위해 모델과 데이터베이스 정의를 지금 내려보도록 하자. |
메인 화면에서 각 기능으로 링크하기 위한 메뉴 생성, 링크 연결 |
2 |
2 |
메인 화면에서 각 기능으로 이동할 수 있는 링크 컴포넌트들을 배치했다. react-router-dom을 설치하고 컴포넌트들을 배치하고 링크를 연결시켰다.
기본적인 CSS 배치 정도를 해 주는 것도 시도했다. 그동안 잘 쓰지 않았던 grid 레이아웃으로 배치를 시도했는데 생각만큼 복잡하지는 않았다. 하지만 전체 화면 크기 설정, 헤더 화면 고정을 위한 CSS 기법 적용이 잘 되지 않아 일단은 소스코드 상에 TODO로 남겨두었다. |
전반적으로 들었던 생각은 바로바로 소스코드를 치기 생각보다 쉽지 않았다. 주어진 스토리 포인트 내에서 작업 설계를 하면서 구현을 하는 것으로 생각하고 있었는데, 빠르게 설계를 하다 보니 실제로 소스코드를 칠 때 '여기는 어떻게 해야 하지' 고민하면서 소스코드를 치지 못하고 손을 놓고 있는 구간이 상당 부분 나왔다.
특정 작업을 시작하기 전 최소 1 스토리 포인트 이상은 작업을 설계하거나, 과정이 생각나지 않는다면 강의를 돌려보면서 다시 한 번 인출하는 Task를 기꺼이 추가할 수도 있어야 할 것이라는 생각이 들었다. 애매하게 생각나는 것들을 처음에 잘 잡고 가야 다음에 비슷한 작업을 진행하면서 속도를 낼 수 있을 것이다.