Thinking

Waterfall X Sprint 회고

코딩하는 Jay 2020. 4. 28. 14:15
반응형

 

제가 근무하는 회사는 전통적인 Waterfall 방식의 개발을 하고 있습니다. 

요구사항 - 설계 - 구현 - 테스트

 

PM(Project Manager)이 요구사항을 정의하고 개발자는 요구사항을 바탕으로 설계와 구현을 합니다. 구현이 마무리되면 테스터는 요구사항에 맞게 구현이 제대로 되었는지 테스트를 합니다. 

 

이러한 전통적인 Waterfall 방식은 몇 가지 단점이 있습니다. 제가 실제 업무에서 느낀 단점은 크게 두 가지입니다.

 

첫 째, PM이 생각한 결과물과 실제 결과물이 다른 문제.

구현 막바지에 실제 결과물을 확인하면 PM이 초기에 생각한 결과물과 비슷하지만 다른 결과물이 나올 때가 있습니다. 아무리 요구사항 리뷰와 설계 리뷰를 한다고 해도 한 사람이 ‘요구사항-설계-구현-테스트’ 모든 부분을 담당하지 않는 이상 완벽하게 PM의 생각과 일치하는 프로그램을 만들기란 쉽지 않은 것 같습니다.

 

둘 째, 업무 효율성 문제.

사람마다 다르긴 하겠지만, 사람이 하는 일이다보니 확실히 기간이 길어지면 초반에는 조금 느슨하게 일을 처리하게 되고 막바지에 조금 타이트하게 일을 하게 되는 경향이 있는 것 같습니다. 그래서 막판에 바빠지니 실수가 잦아지는 느낌을 받습니다.

 

이러한 문제를 해결해보고자, 구현 기간에 라도 Sprint 단위로 개발을 진행 해보자라는 의견이 나왔습니다. 사실 Sprint라고 하면 단기간에 프로젝트의 모든 부분(요구사항-설계-구현-테스트)를 모두 진행해야합니다만 구현 기간이라도 Sprint를 적용해 위 단점들을 해결할 수 있다면 괜찮지 않을까 생각했습니다.

 

저희가 Sprint를 적용한 방법은 아주 간단합니다. 설계 기간에 나온 공수 이용하여 3개의 Sprint로 나누었습니다. 그리고 Sprint가 끝날 시점에 Sprint 리뷰 시간을 갖고 담당 PM, 개발자, 테스터와 함께 해당 Sprint에서 완성된 데모를 시연해보고 제대로 구현되고 있는가 확인합니다. 이러한 방법으로 스프린트를 계획하고 구현을 시작했습니다.

 

 

총 두 가지 feature에서 구현 단계 Sprint를 진행했습니다. 그 중 한 프로젝트가 제가 담당한 프로젝트입니다. 구현이 끝난 시점에서 돌이켜보면 위 단 점들은 해결했지만, 아직 개선할 부분이 많이 보이는 것 같습니다.

 

장점

  • 프로그램이 올바른 방향으로 개발되고 있는지 확인할 수 있었다.
    • 중간 중간 프로그램의 데모를 PM과 테스터가 확인하니 PM은 요구사항을 정의한 의도대로 프로그램이 개발되고 있는가 확인할 수 있는 시간이었고, 테스터는 미리 테스트의 방향을 설정할 수 있는 시간이었던 것 같습니다.
  • 업무 효율성이 증가했다.
    • 확실히 업무의 마감이 Sprint 단위로 바뀌니 개발자 입장에서 어느정도 균등하게 일이 진행되는 느낌을 받았습니다.

 

개선할 점

  • 일정
    • 버퍼의 필요성. 이번 제가 맡은 feature의 공수는 구현 기간보다 조금 넘치는 공수였습니다 (초기 공수는 거의 딱맞춰졌었는데, 중간에 빼먹은 task가 있었어요ㅜㅜ). 그런데, Sprint 리뷰를 하면 개선할 부분들이 생기고 그 부분들을 수정할 시간도 필요함을 느꼈습니다.
  • 코드 리뷰
    • 코드 리뷰의 필요성을 알면서도 일정 문제로 코드 리뷰를 제대로 받지 못했습니다. 다음엔 task 단위로 코드리뷰 받는게 어렵다면 Sprint 단위로 코드리뷰를 받는 것도 좋을 것 같다는 생각입니다.
  • Sprint 리뷰
    • 사전 데모 준비
      • Sprint 리뷰 시간에 개발자가 사용하는 것을 보여주는 것 만으로는 부족하다고 느꼈습니다. Sprint 리뷰 시간 전/후로 미리 사용해보고 개발자에게 의견을 제시하는 것이 더 바람직해보입니다.
    • 체계적으로 진행하기
      • 처음으로 하다보니 어떻게 진행해야할까? 서툰 부분이 많았던 같습니다. 자료를 찾아보고 우리가 적용할 있는 부분을 도출해 Sprint 리뷰가 체계적으로 진행될 있도록 하는 것이 필요해보입니다.
반응형