Skip to content

프론트엔드 개발 과정과 두 모자

들어가며

여기서 정리하는 것은 두 가지로 프론트엔드 개발 과정과 두 모자에 대해서 업무 스트레스를 최소화하기 위한 나만의 방법론을 정리한다.

프론트엔드 개발 과정에서는 개발자가 마크업 영역까지 담당하는 역할을 가졌다고 가정하고 정리한 내용이다.

두 모자는 마틴 파울러의 리팩토링 원칙 중 두 모자(Two hats)라는 메타포가 등장하는데, 해당 메타포와 비슷하게 일하는 방법에 대한 정리한 내용이다.

프론트엔드 개발 과정

게시판 목록을 조회하는 페이지를 만들었다고 가정했을 때, 프론트엔드 개발 과정은 다음과 같다.

(Task) 게시글 목록 조회 페이지 개발
(Sub Task) 마크업 개발
- (commit) REST API interface 작성
- (commit) 목업 데이터 작성
- (commit) 마크업 및 접근성 작업
- (commit) 스타일 작업
(Sub Task) REST API 연동
- (commit) API 유틸 추가
- (commit) API 유틸 적용
- (commit) 에러 케이스 처리
  • Task: 지라 티켓이나 칸반 보드의 테스크 단위다.
  • Sub Task: Task의 하위로 등록하는 테스크다.
  • commit: Sub Task의 업무 완료 조건이며 Git commit message로 사용한다.

두 모자

두 모자는 일하는 방법에 대해 설명하기 위한 메타포이다. 일을 할 때 두 모자를 쓰곤 한다. 하나는 일을 시키는 모자, 다른 하나는 일을 하는 모자이다.

게시글 목록을 조회하는 페이지를 만들었다고 가정하겠다.

할 일

  • 게시글 목록 조회 페이지 개발

이때는 일하는 모자를 쓰고 무엇을 해야 하는지 작성한다. 기획서를 보면서 되도록 업무를 잘게 쪼갠다고 생각하고 작업하는 게 좋다.

첫 번째 스탭으로는 이렇게 된다.

할 일

  • (Task) 게시글 목록 조회 페이지 개발
    • (Sub Task) 마크업 개발
    • (Sub Task) REST API 연동

두 번째 스탭으로는 이렇게 된다.

할 일

  • (Task) 게시글 목록 조회 페이지 개발
    • (Sub Task) 마크업 개발
      • (commit) REST API interface 작성
      • (commit) 목업 데이터 작성
      • (commit) 마크업 및 접근성 작업
      • (commit) 스타일 작업
    • (Sub Task) REST API 연동
      • (commit) API 유틸 추가
      • (commit) API 유틸 적용
      • (commit) 에러 케이스 처리

이렇게 일을 시키는 모자를 쓰고 작성이 완료되면 잠깐 스트레칭을 하고 일을 하는 모자를 착용한다.

그리고 일을 하나씩 해결해 간다.

할 일

  • (Task) 게시글 목록 조회 페이지 개발
    • (Sub Task) 마크업 개발
      • (commit) REST API interface 작성
      • (commit) 목업 데이터 작성
      • (commit) 마크업 및 접근성 작업
      • (commit) 스타일 작업
    • (Sub Task) REST API 연동
      • (commit) API 유틸 추가
      • (commit) API 유틸 적용
      • (commit) 에러 케이스 처리

첫 번째 Sub Task의 3가지를 해결하고 마지막 하나가 남았다. 하지만 여기서 현실적인 문제가 있다. 디자인과 REST API는 UX나 기능 변경의 이유로 변경이 될 수 있다.

이때는 일하는 모자는 잠깐 내려두고 일을 시키는 모자를 착용한다.

이때 하나의 원칙이 더 나온다. 일은 전진만 하고 후진을 하지 않는다. 디자인이 변경되었다고 할 일을 다시 하는 게 아니고 새로운 일로 등록해야 한다.

디자인은 API 연동 작업 전에 마무리 해야 하므로 API 연동 업무 앞에 배치하고 API 변경 대응은 API 연동 작업 때 진행해도 충분하다. 업무를 다시 재배치한 상황은 이렇다.

할 일

  • (Task) 게시글 목록 조회 페이지 개발
    • (Sub Task) 마크업 개발
      • (commit) REST API interface 작성
      • (commit) 목업 데이터 작성
      • (commit) 마크업 및 접근성 작업
      • (commit) 스타일 작업
    • (Sub Task) 디자인 변경 대응
      • (commit) 마크업 및 접근성 작업
      • (commit) 스타일 작업
    • (Sub Task) REST API 연동
      • (commit) API 변경 대응
      • (commit) API 유틸 추가
      • (commit) API 유틸 적용
      • (commit) 에러 케이스 처리

디자인 변경할 때는 마크업과 스타일 모두 수정이 필요하므로 테스크를 새로 등록하고, 했던 일은 Pull Request를 해서 마무리한다. API 변경은 interface 대응만 필요하므로 마이너한 작업이라 API 연동할 때 선작업한다.

전반적인 작업이 완료되었는데 마크업과 API가 변경된다면 어떻게 해야 할까? 이런 상황은 둘 다 한 테스크에 작업해도 작업에 무리가 없고 Pull Request의 파일 변경량이 리뷰어의 부담이 적기 때문에 하나의 테스크로 만들어서 작업한다.

할 일

  • (Task) 게시글 목록 조회 페이지 개발
    • (Sub Task) 마크업 개발
    • (Sub Task) 디자인 변경 대응
    • (Sub Task) REST API 연동
    • (Sub Task) 기능 변경 대응
      • (commit) 마크업 및 접근성 작업
      • (commit) 스타일 작업
      • (commit) API 변경 대응

마치며

업무를 잘게 쪼개고 일하는 방법을 스스로 정해두니 컨텍스트 스위칭에 도움되서 개발 중간에 치고 들어오는 Pull Request나 협업에 도움이 된다.