ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 메가테라 웹 개발자 과정 23주차 주간 회고
    주간 회고 2022. 12. 5. 14:27

     

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

    주간 작업 목표
    : 앱의 핵심 기능인 글 작성, 신청 기능의 사용성을 보완한다.

    상세 목표
    - 핵심 기능의 사용성을 보완하는 기능을 추가한다.
        - 참가 신청, 수락 이벤트를 편리하게 확인할 수 있는 '알림' 기능을 추가한다.
    - 동작하는 기능의 사용성을 보완한다.
    - 동작하는 기능의 예외처리 상황을 찾아 보완한다.
    - 이후 개발 주차에서 기능 확장에 무리가 없도록 서버 애플리케이션을 리팩터링한다.

     

    6주차 스토리 포인트 사용량 분석

    작업 그룹 사용자 스토리 작업명 예상 실제 비고
    리팩터링 - 백엔드 애플리케이션 리팩터링 10 22 월-수
    리팩터링 작업 합계 10 22  
    예외처리 게시글 작성 입력 내용 예외처리 6 1
    게시글 작성 시 작성자를 참가자 목록에 항상 포함 1 0.5
    운동 참가 신청 수락 참가 정원 만료 시 작성자의 참가 신청 수락 제산 4 2
    예외처리 작업 합계 11 3.5  
    기능 추가 알림 사용자별 알림 조회 기능 구현 7 9 금-토
    알림 생성
    (사용자 참가 신청 -> 작성자)
    (작성자 참가 신청 수락 -> 신청자)
    1 3
    기능 추가 작업 합계 8 12  
    사용성 게시글 목록 보기 메인 화면 교체
    (링크 화면 -> 게시글 목록 조회)
    5 5
    게시글 목록 보기 화면에서 참가 신청 기능 삭제 1 0.5
    게시글 상세 정보 보기 게시글 상세 조회 시 사용자 상황별 출력 버튼 구분 4 4
    Modal Modal 사용법 학습
    등록/확인 관련 동작 Modal 추가
    취소/재확인 관련 동작 Modal 추가
    5 12
    로그인 로그인 완료 시 헤더에 사용자 이름 출력 1 1
    비로그인 상태로 로그인 필요 기능 접근 시 로그인 안내 Modal 출력 1 1.5
    게시글 작성 운동 시간 선택 방식 수정
    : 드롭다운 -> 입력창에 직접 입력
    2 4
    컴포넌트 CSS 배치 2 2
    - 뒤로 가기 기능 버그 수정 2 2.5
    사용성 작업 합계 23 32.5  
    총 작업 합계 52 70  

     

     

     

    { ...SMASH }

    https://github.com/hsjkdss228/smash-backend/pull/25

     

    한 주가 시작되는 월요일, 아샬님으로부터 게임을 신청하는 로직과 관련된 많은 부분을 리팩터링받았다.

    Service 레이어에 기능에 필요한 데이터를 찾는 동작과 기능을 수행하는 핵심 동작이 같이 몰려 있었고, 테스트 코드가 유지보수가 어려울 정도로 복잡해져 있었다. 이런 상태에서 해당 기능의 동작이 수정된다면 수정된 동작을 검증하는 테스트 코드 역시 지나치게 많은 부분을 수정해야 하기 때문에 테스트 코드가 오히려 유지보수에 걸림돌이 되고 있는 상황이었다.


    아샬님의 리팩터링으로부터 하나의 기능을 수행하는 Service와 객체 간의 역할을 미약하게나마 정립할 수 있었다.

     

    • Service 레이어는 동작에 필요한 데이터를 가져오는 것 이상의 역할은 맡지 않는다.

    • 작업의 핵심 로직은 그 작업을 수행하기 적절한 객체가 맡아 수행한다. 객체는 필요 시 다른 객체의 동작으로부터 협력을 요청해 작업을 수행한다.

    객체가 적절한 작업을 수행하게 구현하는 로직을 구현하면서 느낀 부분은 테스트 코드의 크기가 작아지고, 정말 필요한 동작만을 테스트하게 되었다는 점이다. 필요한 동작을 수행하기 위해 객체를 상황에 맞게 준비하는 fake 메서드의 인터페이스가 어떻게 구성되어야 할지 명확해지는 것을 느낄 수 있었다.

     

    작업 효율을 고민하다

    작업을 진행할 때, 프론트엔드 테스트 코드를 어느 수준으로까지 작성해야 하는지 고민하기 시작했다. 사실 UI를 테스트하는 방법은 존재하고, UI를 테스트하는 방법을 우리는 모두 알고 있다. 그렇지만 UI에 대한 테스트는 크리티컬한 검증의 영역이라고 하기에는 무리가 있다. 프론트엔드 애플리케이션에서도 결국 중요한 테스트는 핵심적인 동작을 검증하는 테스트여야 한다.

     

    지금까지는 프론트엔드의 단위 테스트를 작성할 때, 가능하면 츨력되는 거의 모든 영역을 테스트해 통제 하에 두려고 했다. 문제는 UI로 나타날 수 있는 경우의 수가 너무 많았다. 그리고 애플리케이션의 기능이 조금씩 확장되는 과정에서 UI는 언제든지 바뀔 수 있기 때문에 UI가 조금만 바뀌어도 많은 영역의 테스트 코드가 오류를 출력했고, 오류를 잡기 위해 많은 시간을 들여야 했다. 작업 효율을 내기 위해 꼭 필요한 테스트가 뭔지 정말로 생각하고 작성해야 할 것이라는 생각이 들었다.

     

    남은 주차 동안에는 프론트엔드 테스트를 화면에 나타나는 것에 대해서는 최소한의 수준으로만 작성하고, 보여지는 것의 변화를 이끌어내는 '동작'의 수행이나 동작 수행 시도를 검증하는 위주의 테스트 방식을 택해보려고 한다.

     

     

    한 번의 끝맺음을 생각하다

    지난 월요일에 노아 스프린트 매니저님으로부터 디자인 기획서를 요청받았다. 그때부터 이제는 8주 동안 진행되는 이 프로젝트의 1차적인 '마감'을 생각해야 할 시기임이 그려지기 시작했다.

     

    개인적으로는 포트폴리오 4주차에 기획을 엎고 사실상 다시 시작한 만큼 정상 범위 기준 3~4주차 정도 수준의 작업 진척도를 보이고 있다고 생각하고 있다. 하지만 지금 엄연히 수행하고 있는 주차는 7주차이다. 8주차가 끝나는 시점에 내가 보일 수 있어야 하는 애플리케이션은 '적정 수준의 복잡도를 갖고 핵심 기능을 오류 없이 깔끔하게 수행할 수 있는' 애플리케이션이다. 과정이 끝나고 못 다한 작업을 이어간다고 하더라도, 이제는 한 번의 끝맺음을 맺기 위한 준비가 시작되어야 할 시점인 것 같았다.

     

    메타인지를 시도하면서 현재 상황에서 할 수 있는 최선의 결정을 내리기 위해 노력했다. 노아 스프린트 매니저님이 말씀해주셨던 '앱이 실제처럼 문제 없이 작동해야 한다'는 말을 생각하면서 내 앱이 구현된 정도를 살펴보았다. 글을 작성하고, 볼 수 있고, 참가신청/참가를 하고 변화된 상태를 확인할 수 있는 핵심 기능은 완성이 되어 있었지만, 세밀하지 못한 부분들이 눈에 많이 들어왔다.

     

    완전히 다른 영역의 새로운 기능을 추가하는 것과 구현되어 있는 기능을 보완하는 작업 방향 중에서 고민했다. 이미 백엔드 애플리케이션의 리팩터링 내용을 이해하고 적용하는 데 2~3일을 투자한 상황에서 때문에 실질적으로 완전히 새로운 영역의 구현을 시도하는 데 쓸 수 있는 시간은 4일 가량이었다. 8주차는 실질적으로 디자인 작업에 많은 시간을 투자해야 하기 때문에 다른 작업에 많은 시간을 쓸 수 없을 것이므로, 내 상황에서 지금 7주차에는 완전히 새로운 기능을 구현하기보다는 오류들을 수정하면서 핵심 기능의 사용성을 강화하는 방향으로 작업을 진행하는 것이 최선이겠다는 판단을 했다.

     

    핵심 동작들의 기능을 보완하고, 간단한 알림 기능을 구현하는 방식으로 주간 작업을 진행해 구현된 기능의 완성도를 높이는 데 집중했다. 그러면서 말끔하지 않게 진행되었던 오류들을 최대한 잡아낼 수 있었고, 남은 1주일 동안 마저 수행할 작업들을 고민할 수 있게 되었다.

     

     

    중요한 것은 꺾이지 않는 마음

    온라인으로 과정을 듣던 시기, 매 주마다 빠르게 올라가던 과정의 수준에 '도대체 23주차쯤 되면 얼마나 어려운 걸 배우게 되는 건지' 궁금해했었던 적이 있었고, 로지 트레이너님께서 '그때가 되면 해야 하는 것들을 알아서 찾아서 하고 있을 것이다'는 언질을 주셨던 기억이 있다.

     

    그 23주차가 지났다.

    오긴 오나? 싶었던 마지막 주차가 내일이면 시작된다.

     

    단언코 이야기할 수 있다. 28년을 살아오면서 지금처럼 몰입하고, 정신력을 쏟아부으면서 무언가에 도전했던 적은 없었다. 그런 만큼 누군가 나에게 지금까지 살아오면서 가장 고통스러운 시기가 언제였냐고 묻는다면 바로 지금이라고 답할 것이다.

     

    고통스럽지만, 어쨌든 붙잡은 끈을 놓치지 않고 버텨내고 있고, 살아 있다.

    '어렵다. 할 수 있을까.' 포트폴리오 주간 동안 서로 탄식하면서 공유했던 말들인 것 같다. 그럼에도 동료들은 해냈다. 포트폴리오 중간에 잠시 눈물을 머금고 뒤로 돌아갔던 나도 어쨌든 다시 그 시점 쯤에는 다들 구현하는 수준까지 돌아왔다.

     

    모두들 해낸 만큼, 해낼 수 있을 것이라 생각한다면 시간은 걸릴지언정 나도 해낼 것이라 믿는다.

    중요한 것은 꺾이지 않는 마음이라 했다.

     

     

     

     

    댓글

Designed by Tistory.