[Capstone] 스프린트 1 회고

2023. 5. 20. 11:49Project/Capstone Design

캡스톤 디자인을 진행하면서 첫 번째 스프린트를 마쳤다. 캡스톤 디자인을 진행하면서 처음으로 마주한 스프린트를 마쳤다는 것에서 의미가 뜻깊었다. 회고는 간단하면서 효과적인 3L(Liked-Learned-Lacked) 방법을 활용하였다. 스프린트 기간은 2주였다.

스프린트 목표

팀이 설정한 이번 스프린트 목표는 사용자 기본 기능이었다. 기본 기능이라 함은 회원가입, 로그인, 포스트 CRUD였다.

진행도

  • 회원가입 - 완료
  • 로그인 - 완료
  • 포스트 CRUD - 미완료

회원가입 및 로그인은 현재 이메일 인증 기반으로 구현하였다. 포스트 CRUD는 백엔드에서는 어느 정도 구현이 되었지만 프론트엔드에서 개발이 늦어져 완성되지 못했다.

3L

다음은 필자가 스프린트를 하면서 경험한 3L이다.

Liked

  1. Jira를 활용한 애자일 방법론을 도입하여 진행하여 서로 간의 업무 및 진행도를 파악하고 서로 도와주면서 개발 속도를 높일 수 있었다.
  2. 팀원 간 PR에 대해 코드 리뷰를 하면서 클린 코드에 대해 고민하는 시간을 가졌다.
  3. 팀원들이 Git과 GitHub를 활용한 협업 흐름을 충분히 이해한 점이 만족스럽다.

1. 애자일 도입

애자일 방법론을 도입한 이유는 여러 가지가 있다. 먼저 프로젝트 초기에는 각자 역할을 나누고 업무를 수행하는 방법으로  진행했었다. 그런데 이렇게 진행하다 보니 문제가 생기기 시작했다.

  1. 서로가 어떤 일을 하고 있는지 명확하지 않아 프로젝트가 어떻게 진행되고 있는지 알기 어려웠다. 이 때문에 프로젝트에 대한 동기부여가 약해졌다.
  2. 업무에 있어서 병목 사항이 생겼을 때 자신의 일이라 판단하고 도움을 요청하지 않는다는 것도 알게 되었다.

그러나 이런 사항은 프로젝트의 효율적인 진행에 있어서 문제라고 생각했다. 그러던 중 '함께 자라기' 라는 책을 읽게 되었다. 이 책에서는 팀이 함께 성장하는 방식, 문제를 효율적으로 해결하는 업무 방식인 애자일 방법론을 추천하고 있었다. 이것이 현재 문제에 대한 해결책이 될 수 있을거라 판단했고 팀원들과 협의를 거친 후에 적용하게 되었다.

진행 방식

애자일 방법론 중 가장 유명한 스크럼 방식을 채택하였다.

  • 매일 15분 가량 가더 타운에서 데일리 스크럼을 진행하여 어제 한 일, 오늘 할 일, 문제 사항을 공유했다. 이를 통해 현재 팀원들의 상황에 대해 알 수 있었다. 또한 문제 사항을 듣고 아는 사람이 있다면 해결책을 공유하여 프로젝트 진행의 병목 사항을 최대한 해결하였다.
  • Jira를 활용하여 스프린트, 백로그, 이슈 등을 관리하고 공유했다. 이를 통해 프로젝트가 어떻게 진행되고 있는지 알 수 있었다.

스프린트 1

효과

  • 프로젝트가 어떻게 진행되는지 가시적으로 확인하여 업무의 동기부여를 할 수 있었다.
  • 문제 사항을 빠르게 공유하고 해결하는 방식을 통해 프로젝트 진행을 빠르게 진행할 수 있었다.
  • 팀원 간 신뢰가 상승하고 문제 공유에 대해 거리낌이 없어졌다.
  • 혼자 일하는 게 아닌 팀으로서 일하는 느낌을 받았다.

애자일 도입 회고

애자일, 스크럼이라고는 하지만 현재는 간단하게만 사용하고 있다(에픽, 스프린트, 백로그 생성 정도). 그럼에도 기존 방식의 문제사항은 충분히 해소하였다. 실제 회사에 들어가면 이보다 훨씬 체계적인 방법으로 업무를 수행할 것이다. 그럼에도 작게나마 업무 방식에 대해 고민하고 개선해나가면서 더 좋은 방법을 찾아나가는 게 좋은 자세라고 생각한다.

2. Git & GitHub, PR

팀원들은 프로젝트 시작 전에 Git, GitHub를 활용한 협업 방식을 처음 접해보았다. 그래서 팀장인 필자가 이 부분을 알려줄 필요가 있었다. 기본적으로 git push & pull 정도는 해보았다고 하여 기초 지식은 있다고 판단했다. 그래서 Git-Flow를 활용한 브랜치 관리, origin과 upstream, PR을 생성하는 방법과 주의사항에 대해 알려주었다.

PR 목록
PR 템플릿을 기반으로 작성한 PR

https://somuchthings.tistory.com/261

 

[GitHub] fork 기반 협업 시 주의 사항

팀 프로젝트 진행을 위해 upstream 레포를 fork해서 origin에 레포를 만들고 작업을 하게 되었다. 팀 단위이기 때문에 upstream 레포를 clone해서 하면 간편했지만 레포 권한을 얻기 어려운 환경이라서 오

somuchthings.tistory.com

PR을 활용한 코드 리뷰

현재 프로젝트 개발을 시작한지 2달 정도 되었고 이제 다들 충분히 Git & GitHub, PR을 잘 활용하는 것을 보고 뿌듯했다. 교수님께서 우리 팀이 GitHub를 사용하는 것을 보고 칭찬해주신 건 안 비밀 ㅎㅎ

Learned

  • Jira를 활용한 애자일 방법론을 진행하는 방법에 대해서 배웠다.
  • Ant Design을 기반으로 한 리액트 컴포넌트 개발 방법을 배웠다.
  • 회원가입 기능을 구현하면서 인증 코드 관리를 위해 Redis를 도입하였다. 또한 내장 Redis를 적용하여 개발 단계에서 외부 환경과 관계 없이 애플리케이션이 동작하도록 하였다.
  • 인증 코드 생성 방법으로 암호학적으로 안전한 SecureRandom 패키지를 활용하였다.
  • 회원가입 기능을 구현하면서 이메일 인증 기반 회원가입 로직에 대해서 구현할 수 있었다.
  • AJAX 기반 로그인 기능을 구현하면서 Spring Security를 커스텀하는 방법을 배웠다.
  • 코드의 신뢰성을 높이기 위해 Controller, Service, Repository의 테스트 코드를 작성하는 방법을 배웠다.

이 부분은 대부분 기술적인 부분들이라 다른 글에서 다루도록 하겠다.

Lacked

  • 일정 관리 부분이 아쉬웠다.
    • 처음엔 해당 기간이면 충분히 할 수 있을거라 생각했지만 구현을 해나가다 보니 예외 사항이 많이 생겼고 그에 대한 이슈를 처리하기 위해 시간이 더 소요되었다.
    • 이 부분은 경험이 쌓아가면서 극복할 수 있을거라고 생각한다.

일정 관리 이슈

팀원 모두가 느꼈던 문제는 일정 관리이다. 아무래도 모두가 본격적인 프로젝트는 처음이다 보니 일정을 어떻게 잡아야 하는지 어려웠던 것 같다. 이 정도면 충분할 거라 생각했음에도 구현하면서 발생하는 이슈들을 처리하다 보면 어느새 처음 생각했던 일정이 짧게 느껴졌다. 기능 구현에 있어서 어떤 부분을 고려해야 하는지에 대한 경험이 없다보니 개발하면서 그런 부분들을 생각하게 되고 그러다 초기 일정을 맞추지 못하게 되는 거라고 느꼈다. 이 부분은 개발을 더 해보면서 경험을 쌓아야 보이는 것 같다.

마치며

처음으로 애자일 방법론을 활용하여 프로젝트를 진행 중에 있다. 팀장으로서 목표했던 부분을 스프린트 내에 끝내지 못함에 아쉬움을 느낀다. 하지만 그 과정에서 많은 것을 배우고 프로젝트에 적용하면서 더 나은 방향을 추구하였다. 앞으로 진행될 스프린트에서도 애자일의 의미를 생각하며 팀으로서 더 효율적인 문제 해결 방법을 고민해 나갈 것이다.