ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 메가테라 웹 개발자 과정 21주차 주간 회고
    주간 회고 2022. 11. 21. 15:31

     

    4주차 스프린트 주간 작업 목표

    주간 작업 목표
    : 운동 모집 글을 게시하면 신청을 받을 수 있는 게시판을 완성한다.

    상세 목표
    - '핵심 가치'를 사용성에 반영
        - '모집'을 하기 위해 가장 필요한 내용을 찾아 모델에 반영
    - 기능 구현
        - 게시글 상세 정보 보기
        - 운동 참가 신청 수락
        - 운동 참가 신청 거절
        - 게시글 작성
        - 게시글 삭제
        - 게시글 수정

     

    최소한의 기능만을 제공하던 앱에 가장 핵심적인 기능을 추가해 앱의 사용성을 한 단계 확장시키는 스프린트 주간을 진행했다.

     

    지난 주까지는 이미 등록되어 있는 게시물에만 접속한 사용자가 신청하면 참가자로 추가되고, 신청을 취소하면 참가자에서 삭제되는 단순한 구조였다. 이번 주에는 사용자가 인원을 모집하는 글을 올리면 다른 사용자가 해당 글을 보고 참가를 신청하면, 작성자가 신청을 수락하거나 거절해 참가 여부를 결정할 수 있게끔 기능을 세분화시키고, 게시글을 새로 추가할 수 있는 새로운 기능을 추가하는 것을 목표로 잡았다.

     

    4주차 스토리 포인트 사용량 및 성과 분석

    사용자 스토리 작업명 예상 실제 비고
    게시글 목록 보기 게시물 상세 정보 보기 링크 이동 2 1
    게시글 상세 정보 보기 (정보만 출력) UI 컴포넌트 4 6
    상태, API 요청 7 7 수-목
    GET API 요청 처리 6 9 목-금
    게시글 상세 정보 보기 (사용자별 상태, 동작 구분) 사용자별 UI 구분, 동작 핸들러 함수 정의 3 6
    운동 참가 신청 '참가자' 모델을 '신청' 모델로 변경 6 15 금-토
    운동 참가 상태 변경 상태 변경 API 요청 3 3
    PATCH API 요청 처리 5 9
    로그인 User Id 식별자로 사용자 구분 3 9 화-수
    중도 추가
    Identifier로 사용자 구분 6 0 중도 추가
    게시글 작성 Form UI, 페이지, 상태 관리, API 요청 6 0  
    POST 요청 처리 6 0  
    인수 테스트 작성 게시글 목록 보기 3 3 일-수
    운동 참가 상태 변경 2 2 일-수
    인수 테스트 리팩터링 5 진행 중  
    기타 뒤로 가기 기능 1 1
    UI 최소 CSS 작업 2 0  
    합계   64 71 중도 추가 작업을 제외하면 예상 스토리 포인트는 55

     

    작업이 추가되더라도 통제 범위 안에는 있게끔

    이번 주에도 예상치 못한 작업이 추가되는 경우가 많았고, 남은 작업 일정을 고려하면서 계획을 짜는 흐름을 조금씩 어긋나게 만들었다. 새 스프린트 주간 시작일에 한 주간 진행할 작업 목록을 일단 티켓으로 끊어온 뒤에, 기존에 작성했던 인수 테스트를 통과시키기 위한 방법을 고민하고 있었다. 고민 끝에 내린 결론은 개발 과정에서는 해킹과 같은 방식으로 진행하고 있던 사용자 식별 데이터 설정을 실제 사용할 수 있는 로그인 기능으로 구현하는 것이었다. 그것이 인수 테스트를 작성하는 의도에 맞는 방식이기도 했다.

     

    주차에 사용하기 위해 계획한 스토리 포인트를 지난 주에 사용했던 스토리 포인트보다 다소 높게 잡아놓은 상태였는데, 여기에 새로운 기능 구현을 추가한다는 것은 기존의 작업 일정 어딘가에는 차질이 생긴다는 것을 의미했다.

     

    기존의 작업 일정에 생길 수 있는 차질에 대응하기 위해 생각한 방법은 추가되는 작업의 크기를 나눠 단계별로 구현하는 것이었다. 예상에 없던 로그인 기능의 구현은 일단은 '사용자가 누군지 구별한다'는 개발 과정에서의 최소한의 목적을 맞추기 위해 일단 개별 사용자의 식별자를 이용해 로그인을 하게 하는 '가짜' 기능으로 먼저 구현한 뒤에, 원래 작업 계획을 진행한 이후 사용자가 진짜로 사용할 수 있는 로그인 형태로 바꾸는 것으로 계획을 나눠 추가했다. 주차 안에 실제 로그인으로 전환시키지 못하더라도 일단 사용자를 구별한다는 최소한의 목적은 가져가기 위한 결정이었다.

     

    새로운 작업의 추가뿐만 아니라 계획했던 작업이 예상했던 것보다 커지는 경우도 어김없이 등장했다. 기존의 모델을 다른 모델로 변경하는 과정에서 단순히 모델을 사용하는 지점에서 이름이나 시그니쳐를 바꾸는 것 이상으로 레이어가 추가되고 요청, 응답 구조가 바뀌면서 작업이 커지기 시작했다.

     

    원하는 결과를 내기 위해서는 커진 작업이라도 의도대로 작동할 수 있도록 구현해야 했다. 그 안에서 선택할 수 있는 방법은 커진 작업을 부분적으로 나누고, 작업 수행 단계를 단계적으로 나누는 것이었다.

     

    모델 변경에 따른 작업을 해결하기 위해서 우선 영향받는 부분을 파악하기 위해 설계 문서를 다시 보면서 모델이 사용되는 지점의 설계를 모두 수정했다. 그리고 먼저 수정된 내용에 맞게 백엔드 레이어의 동작 형태와 시그니쳐를, 테스트 코드를 모두 고치거나, 아예 새로 작성하는 편이 낫겠다는 생각이 든 부분은 새로 작성했다. 모두 고친 뒤에 테스트 코드를 작동시키면서 테스트가 의도한 결과를 내도록 동작을 다시 수정했다.

     

    결국 모든 작업을 계획대로 마치지 못하고 작업이 뒤로 밀리는 것은 피할 수 없었지만, 시간을 들여서라도 커진 작업을 쪼개고 하나씩 해결하는 과정을 경험해볼 수 있었다.

     

     

    5주차 스프린트 주간 작업 목표

    프로젝트 주간 종료까지 3주의 시간이 남았다. 매 주 사용자 가치를 확장시키면서 어떤 작업을 구현할지 정하면서 추가하고 있어 사용자 가치 측면뿐만 아니라 주도적인 개발 경험을 가져가는 부분에서도 어떤 영역에 도전해야 할지 고민하고 있다.

     

    크게는 기존 기능을 수행하는 모델과 상호작용하는 모델을 추가해 모델들 간 관계의 복잡도를 늘리는 방식으로 앱에 기능을 추가하는 작업을 계획으로 세우거나, 앱 외적인 기능을 앱에 접목시키는 작업을 계획으로 세울 수 있다. 디자인 위주로 진행되는 마지막 주를 제외하면 2주라는 남은 시간 동안 할 수 있는 것은 무엇일까.

     

    가장 최우선으로 생각할 수 있는 영역은 미완성된 기능을 완성해 4주차에 목표했던 '완성'된 애플리케이션 구조를 갖추는 것이다. 기능을 마저 완성시키면서, 프로젝트의 방향성을 계속해서 고민하도록 하자.

     

    주간 작업 목표
    : 게시판에 운동 게시글의 내용을 수정하거나 삭제할 수 있는 기능을 추가한다.

    상세 목표
    - 사용자는 게시글 작성 시 필수 내용을 입력하지 않으면 안내 메세지를 전달받는다.
    - 작성자는 게시글을 수정하거나 삭제할 수 있다.
    - 운동 게시글 삭제 시 운동에 신청하거나 참가하는 사용자가 안내를 확인할 수 있다.
    - 기능 구현
        - 로그인
        - 게시글 작성/수정/삭제

    댓글

Designed by Tistory.