Child pages
  • 소프트웨어 공학 다섯번째 수업 - 우선순위 선정 및 일정 추정

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

지난 주 무더기 지각 사태를 경험한 후에 이번 주부터 수업을 저녁 7시에 진행하는 것으로 결정했다. next는 학생들의 학습을 위해서라면 어떤 시도와 어떤 방식으로 수업을 진행해도 괜찮다는 것이 좋다. 나는 형식에 구애받지 않고 내용에 충실한 것을 좋아하는데 지금의 next의 현재 상태가 그렇지 않을까 생각한다.

이번 주 수업은 지난 주에 작성한 사용자 스토리에 대한 우선순위를 결정하고 일정 추정을 하는 과정을 거쳤다. 먼저 수업을 하기 전에 현재 소프트웨어 공학 수업과 프로젝트 진행에 대한 중간 회고를 했다. 최초 프로젝트 주도로 진행하기로 했는데 시간이 지나면서 학생들의 참여도가 낮아 프로젝트 기반으로 할 수 있을 것인지에 대한 회고도 했다. 각자 현재의 상황과 느낌을 공유해 보기로 했다. 회고 결과 대부분이 소프트웨어 공학에 더 많은 시간을 투자해서 프로젝트 기반으로 진행했으면 좋겠다는 의견을 제시했다. 지금까지 부족한 부분이 있었지만 앞으로 좀 더 달려가는 것으로 결정하고 수업을 진행했다. 대부분 무엇인가 시작할 때 열정이 충만하지만 시간이 지나면서 열정이 사그러질 때가 온다. 지금까지가 그 시간이었고, 앞으로는 다시금 올라가야 할 단계라고 다들 생각하고 있었다.

먼저 서비스의 핵심 기능에 대한 우선순위를 정했다. 우선순위를 정말 우선순위 기반으로 할 것인지, 아니면 가중치 기반으로 할 것인지 논의한 결과 가중치 기반으로 점수를 부여하는 것으로 결정했다. 가중치가 높은 10개의 사용자 스토리를 먼저 결정하고 가중치가 낮은 사용자 스토리는 추후 여력이 될 때 개발하기로 결정했다. 가중치를 어디서부터 시작하는 것이 좋을지 논의했는데 무려 500부터 시작하잖다. 간 큰 놈들. 기능도 많지 않은데 500이라니... 500에서 시작해서 사용자 스토리 하나마다 10씩 가중치를 줄여나가는 방식으로 진행했다.

사용자 스토리와 사용자 스티로 사이에 가중치 간격을 1씩 하지 않고 5나 10 정도로 간격을 두는 이유는 우선 순위를 논의하거나 일정 추정을 하면서 새로운 사용자 스토리가 추가되는 경우가 있기 때문이다. 역시 예상한 대로 우선 순위를 정하면서 새로운 사용자 스토리가 추가되거나 사용자 스토리를 분리하는 경우가 생겼다.

우선 순위를 정한 후 planning poker를 활용해 일정 추정하는 시간을 가졌다. 기본적으로 planning poker 자체에 상당한 관심을 보여 시작부터 흥미롭게 진행할 수 있었다. 아무래도 그냥 말로만 우선순위를 정하고 일정을 추정하기 보다 무엇인가 활동을 하면서 진행하니까 더 적극적으로 참여하고 더 많은 이야기를 주고 받을 수 있었다. 그리고 이런 자리에 빠지면 안되는 것이 먹을꺼리이다. 몇 가지 먹을꺼리도 가져오니 이렇게 좋아할 수가... 큰 것은 아니였지만 소소한 재미를 느끼면서 수업을 진행할 수 있었다.

planning poker는 다음과 같은 방식으로 진행한다.

  • 우선순위에 따라 사용자 스토리를 하나 선정한다.
  • 투표를 하기 전에 해당 사용자 스토리에 대한 설명을 한다. 투표를 하기 전에 약간의 토론을 하면서 기능에 대한 이해도가 생길 때까지 계속해서 논의를 한다. 논의를 하면서 사용자 스토리를 분리하거나 우선순위를 변경하는 경우도 생긴다.
  • 일정 수준으로 사용자 스토리에 대한 이해도 높아지면 투표를 한다.
  • 투표한 결과가 같지 않으면 각자의 생각을 공유한다. 왜 이 같은 일정을 추정하게 되었는지에 대해 설득하는 과정을 거친다.
  • 일정 추정 결과에 모두가 공감할 때까지 이 과정을 거친다.

 

Info

planning poker를 하는 것이 일정을 추정하기 위한 목적이 가장 클 수도 있다. 하지만 이 과정 또한 각 사용자 스토리에 대해 모든 프로젝트 구성원의 이해도를 높이고 공감대를 형성하는 일환으로 진행한다. 앞에서 진행했던 사용자 분석, 화면 흐름, 사용자 스토리 작성, 우선 순위 선정, 일정 추정의 모든 과정이 우리가 만들려고 하는 서비스에 대한 이해도를 높이는 과정이며, 각자가 다르게 생각하는 부분에 대해 같은 생각을 하도록 유도하는 과정이라고 생각한다.

원할한 프로젝트를 하려면 우리가 만들려고 하는 서비스에 대해 프로젝트에 참여하는 구성원이 같은 모습을 보고 달려가는 것이 무엇보다 중요하다고 생각한다. 실질적인 프로그래밍을 하기 전 과정에 이런 활동이 더 많아졌으면 좋겠다. 물론 사용자 스토리 하나씩 구현해 가는 단계에서도 이 같은 활동은 지속되어야 할 것이다. 나는 경험을 쌓으면서 서비스에 대한 이해도가 높아지고 이로 인해 사용자가 진정 원하는 서비스를 만들 수 있을 것이라 생각하기 때문이다.

위 과정을 거친 후에 우선순위가 높은 12개의 사용자 스토리에 대해서 일정 추정을 완료했다. 모든 사용자 스토리에 대한 일정 추정을 하기 보다 서비스의 핵심 기능이라고 생각하는 사용자 스토리에 대해서만 우선순위를 정하고 일정 추정을 했다. 처음부터 전체 기능을 파악하고 관리할 필요는 없지 않을까 생각한다. 어차피 경험이 쌓이면서 구현할 기능은 달라질 가능성이 높기 때문이다. 이제 서비스를 시작할 준비가 끝났다.

 
지난 주 수업이 끝나고 회고를 하는데 학생 중의 한명이 다음과 같은 요구를 했다. "교수님이 팀장 역할을 하신다고 했는데 우리끼리 실습을 하는 것보다 교수님도 같은 팀의 팀원이라 생각하고 같이하면 좋겠습니다."

그 당시까지 내가 가지고 있던 생각은 내가 너무 관여하면 내 의견 주도로 프로젝트가 진행될 우려가 있어 한발 물러서서 조언만 하는 것이 좋은 선택이라고 생각했다. 그리고 학생들에게 그렇게 이야기했다. 그런데 곰곰히 생각해본 결과 적극적으로 참여해 보는 것도 좋겠다는 생각이 들어 오늘 planning poker를 진행할 때는 팀원의 한명이라 생각하고 참여했다. 그리고 가장 많은 의견을 제시하고 이야기를 나눴다. 하지만 내가 처음에 우려했던 상황은 발생하지 않았다. 오히려 학생들이 더 주도적으로 자신들의 의견을 개진했고, 실습 과정도 훨씬 더 자연스럽게 진행할 수 있었다.

수업이 끝나고 회고하는 시간을 가졌는데 학생들 또한 나와 똑같은 경험을 했다는 것을 알았다. "교수님이 참여하면 교수님 주도로 진행될 가능성이 높다고 생각했는데 그렇지 않아서 넘 좋았어요."라는 피드백을 받았다. 이런 피드백을 듣고 나니 앞으로는 정말 한 팀의 팀원이라는 생각으로 좀 더 깊이 있게 관여해도 좋겠다는 생각이 든다. 그렇게 깊이 있게 참여할 때 학생들이 느끼는 부분도 더 많아지고, 자신들의 의견을 적극적으로 개진해 나갈 것이라는 생각이 들었다.

이번주까지 개발을 위한 기본적인 작업은 완료되었다. 다음 주부터 본격적인 개발을 시작할 계획이다. 하지만 처음부터 본격적으로 달려나가는 것이 아니라 달리기 위한 준비 운동을 하는 시간으로 몇 주를 투자할 계획이다. 아직까지 개발 환경도 준비가 되지 않았고, 학생들 개개인의 기술적인 지식도 다르기 때문에 일정 수준으로 끌어올리는 과정을 거친 후에 속도를 내서 개발에 박차를 가할 생각이다.

실무 프로젝트에서도 똑같은 과정을 거쳤으면 좋겠다. 기획이 완료되고, 우선순위 선정과 일정 추정이 끝났다고 무작정 달려 나가는 것이 아니라 달리기 위한 준비 단계를 가졌으면 좋겠다. 준비 단계를 거치는 것이 더 빨리 가고, 멀리 갈 수 있는 길이라는 것을 느꼈으면 한다. trello도 깔끔하게 정리하고 프로그래밍을 준비작업 단계로 넘어가고 있다.